Anthos VM 런타임은 VM과 연관된 다양한 범위의 리소스를 관리합니다. 이러한 리소스에는 Anthos 정의 리소스, KubeVirt 정의 리소스, Kubernetes 리소스가 포함됩니다. Anthos VM 런타임은 역할 기반 액세스 제어(RBAC)를 사용하여 관리형 리소스의 권한을 설정하고 적용합니다. 이러한 리소스 작업을 지원하고 VM을 관리하기 위해 4개의 사전 구성된 ClusterRole이 제공됩니다.
kubevm.admin
kubevm.edit
kubevm.view
kubevm.cluster.view
이러한 기본 제공되는 역할은 Anthos VM 런타임과 관련된 커스텀 리소스에 대해 일반화된 액세스 모델을 제공합니다. 각 역할에는 리소스 작업을 위해 사전 설정된 권한이 포함되어 있습니다. 이 문서에는 클러스터 관리자가 고유 액세스 모델을 맞춤설정할 수 있도록 Anthos VM 런타임으로 관리되는 리소스 정보가 포함되어 있습니다.
사전 정의된 ClusterRole
이 섹션에서는 사전 정의된 각 ClusterRole에 대해 설명합니다. 이러한 ClusterRole은 Anthos VM 런타임이 사용 설정되었을 때만 사용 가능합니다.
- Anthos VM 런타임이 사용 설정되었으면 4개의 사전 정의된 ClusterRole가 자동으로 생성됩니다.
- Anthos VM 런타임이 사용 중지되어 있으면 4개의 사전 정의된 ClusterRole이 삭제됩니다.
다음 표에서는 클러스터 역할 및 관련 권한을 보여줍니다.
클러스터 역할 | 설명 | 액세스 동사 |
---|---|---|
kubevm.admin |
모든 Anthos 리소스에 대해 전체 액세스 권한을 부여합니다. |
|
kubevm.edit |
모든 Anthos 리소스에 대해 읽기/쓰기 액세스 권한을 부여합니다. |
|
kubevm.view |
모든 Anthos 리소스에 대해 읽기 액세스 권한을 부여합니다. |
|
kubevm.cluster.view |
클러스터별 리소스에 대해 읽기 액세스 권한을 부여합니다. 이 클러스터 역할은 클러스터별 리소스에 대한 액세스가 필요하지만 수정/보기 역할이 네임스페이스에 바인딩된 경우에 필요합니다. |
|
집계된 ClusterRole
kubevm.admin
, kubevm.view
, kubevm.edit
ClusterRole은 직접 사용되지 않습니다. 대신 이 세 가지 역할이 Kubernetes 기본 admin
, view
, edit
ClusterRole에 각각 집계됩니다. 이러한 집계는 기본 Kubernetes 역할을 확장하므로, 이를 사용해서 Anthos 리소스를 관리할 수 있습니다. 집계된 ClusterRole에서는 Kubernetes 기본 역할을 사용하여 Anthos 리소스에 대한 액세스 권한을 관리하거나 사전 정의된 ClusterRole을 기반으로 자체 역할을 만들 수 있습니다.
집계 라벨 예시
kubevm.edit
ClusterRole에는 Kubernetes edit
ClusterRole로 집계되는 rbac.authorization.k8s.io/aggregate-to-edit: "true"
라벨이 있습니다. kubevm.edit
ClusterRole의 권한은 Kubernetes 기본 edit
역할에 부여됩니다. kubevm.admin
및 kubevm.view
ClusterRole은 aggregate-to-admin
또는 aggregate-to-view
주석과 비슷하게 집계됩니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubevm.edit
labels:
kubevm: kubevm.edit
rbac.authorization.k8s.io/aggregate-to-edit: "true"
...
일반 사용자 시나리오
다음 시나리오에서는 RoleBinding 및 ClusterRoleBinding을 사용하여 사전 정의된 ClusterRole에 지정된 권한을 사용자 또는 사용자 집합에 부여하는 방법을 설명합니다.
클러스터 관리자
사용자 또는 사용자 집합에 관리자 권한을 부여하려면 Kubernetes 기본 admin
ClusterRole을 사용하여 ClusterRoleBinding을 만듭니다.
ClusterRoleBinding 예시
다음 admin-charlie
ClusterRoleBinding 예시는 사용자에게 charlie
관리자 권한을 부여합니다. ClusterRoleBinding은 집계를 통해 사전 정의된 kubevm.admin
ClusterRole의 권한이 포함된 기본 Kubernetes admin
ClusterRole의 권한을 사용합니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-charlie
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
클러스터 뷰어
사용자 또는 사용자 집합에 뷰어 권한을 부여하려면 Kubernetes 기본 view
ClusterRole을 사용하여 ClusterRoleBinding을 만듭니다. 비슷한 ClusterRoleBinding 예시는 ClusterRoleBinding 예시를 참조하세요.
클러스터 편집자
사용자 또는 사용자 집합에 편집자 권한을 부여하려면 Kubernetes 기본 edit
ClusterRole을 사용하여 ClusterRoleBinding을 만듭니다. 비슷한 ClusterRoleBinding 예시는 ClusterRoleBinding 예시를 참조하세요.
네임스페이스 편집자
사용자 또는 사용자 집합에 네임스페이스 편집자 권한을 부여하려면 두 개의 개별 바인딩을 만들어야 합니다.
네임스페이스에 RoleBinding을 만들고 기본 Kubernetes
edit
ClusterRole을 참조합니다.사전 정의된
kubevm.cluster.view
ClusterRole을 참조하는 ClusterRoleBinding을 만듭니다.virtualmachinetypes
및storageclasses
와 같은 일부 리소스가 네임스페이스되지 않기 때문에 이 ClusterRoleBinding이 필요합니다.
역할 바인딩 예시(네임스페이스 편집자)
다음 RoleBinding 및 ClusterRoleBinding 예시는 charlie
사용자 default
에게 네임스페이스의 리소스에 대한 편집자 권한을 부여합니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: edit-charlie
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: edit
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubevm-cluster-view-charlie
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubevm.cluster.view
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
네임스페이스 뷰어
사용자 또는 사용자 집합에 네임스페이스 뷰어 권한을 부여하려면 두 개의 개별 바인딩을 만들어야 합니다.
네임스페이스에 RoleBinding을 만들고 기본 Kubernetes
view
ClusterRole을 참조합니다.사전 정의된
kubevm.cluster.view
ClusterRole을 참조하는 ClusterRoleBinding을 만듭니다.
비슷한 RoleBinding 및 ClusterRoleBinding 예시는 역할 바인딩 예시(네임스페이스 편집자)를 참조하세요.
Anthos VM 런타임에 사용되는 리소스
다음 섹션에는 Anthos VM 런타임에 사용되는 리소스 테이블이 포함되어 있습니다. 이 섹션은 정보 제공 목적으로만 사용됩니다. 앞에 표시된 섹션에 설명된 일반적인 사용자 시나리오에서 사전 정의된 역할을 사용하려는 경우 이 정보는 정해진 특정 용도가 없습니다.
그러나 사전 정의된 역할을 사용하지 않으려면 이 리소스 정보에 따라 자신의 맞춤설정된 역할을 만들 수 있습니다.
Anthos 정의 리소스
사전 정의된 ClusterRole은 Anthos 정의 리소스에 대한 액세스에 집중되어 있습니다. 다음 표에서는 Anthos 리소스 및 사전 정의된 각 ClusterRole로 부여된 액세스 권한을 보여줍니다.
리소스 | 생성됨 | 클러스터별 | kubevm.admin |
kubevm.view |
kubevm.edit |
kubevm.cluster.view |
---|---|---|---|---|---|---|
virtualmachineaccessrequests |
– | – | 전체 | 읽기 | 읽기 쓰기 겸용 | – |
virtualmachinedisks |
– | – | 전체 | 읽기 | 읽기 쓰기 겸용 | – |
virtualmachines |
– | – | 전체 | 읽기 | 읽기 쓰기 겸용 | – |
gpuallocations |
– | – | 전체 | 읽기 | 읽기 쓰기 겸용 | – |
guestenvironmentdata |
예 | – | 전체 | 읽기 | 읽기 쓰기 겸용 | – |
vmruntimes |
– | 예 | 전체 | 읽기 | 읽기 쓰기 겸용 | 읽기 |
virtualmachinetypes |
– | 예 | 전체 | 읽기 | 읽기 쓰기 겸용 | 읽기 |
vmhighavailabilitypolicies |
– | 예 | 전체 | 읽기 | 읽기 쓰기 겸용 | 읽기 |
networkinterfaces |
예 | – | 전체 | 읽기 | 읽기 쓰기 겸용 | – |
networks |
– | 예 | 전체 | 읽기 | 읽기 쓰기 겸용 | 읽기 |
KubeVirt 리소스
Anthos VM 런타임은 KubeVirt 오픈소스 프로젝트를 기반으로 합니다. 기본적으로 KubeVirt 리소스의 권한은 Anthos 관리 리소스와 비슷하게 기본 Kubernetes 역할에 자동으로 집계됩니다. 다음 표의 리소스 정보에 따라 자체 맞춤설정된 역할을 만듭니다.
리소스 | 생성됨 | 클러스터별 |
---|---|---|
virtualmachineinstances /console |
– | – |
virtualmachineinstances /vnc |
– | – |
virtualmachineinstances /portforward |
– | – |
virtualmachineinstances /start |
– | – |
virtualmachineinstances /stop |
– | – |
virtualmachineinstances /restart |
– | – |
virtualmachines |
예 | – |
virtualmachineinstances |
예 | – |
datavolumes |
– | – |
storageprofiles |
– | 예 |
cdiconfigs |
– | 예 |
Kubernetes 리소스
Anthos VM 런타임 및 VM을 사용할 때는 다음 Kubernetes 리소스에 대한 액세스를 관리해야 할 수 있습니다. 다음 표의 리소스 정보에 따라 자체 맞춤설정된 역할을 만듭니다.
리소스 | 생성됨 | 클러스터별 |
---|---|---|
pods |
예 | – |
services |
– | – |
persistentvolumeclaims |
– | – |
secrets |
– | – |
nodes |
– | 예 |
storageclasses |
– | 예 |
configmaps |
– | – |
ClusterRole YAML 예시
다음 kubectl
명령어를 사용하여 ClusterRole에 대해 YAML을 검색할 수 있습니다.
kubectl get ClusterRole CLUSTERROLE_NAME -o yaml --kubeconfig KUBECONFIG_PATH
다음을 바꿉니다.
CLUSTERROLE_NAME
: ClusterRole의 이름입니다(예:kubevm.cluster.view
).KUBECONFIG_PATH
: 클러스터의 kubeconfig 파일 경로입니다.
다음은 4개의 사전 정의된 각 ClusterRole에 대한 명령어 출력 예시입니다.
kubevm.admin
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.admin rbac.authorization.k8s.io/aggregate-to-admin: "true" name: kubevm.admin resourceVersion: "16654950" uid: 3296c279-6e85-4ea6-b250-548bf0c3e935 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - delete - create - update - patch - list - watch - deletecollection - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - delete - create - update - patch - list - watch - deletecollection
kubevm.edit
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.edit rbac.authorization.k8s.io/aggregate-to-edit: "true" name: kubevm.edit resourceVersion: "16654951" uid: 237bf9ae-b2c8-4303-94dc-e6425a2df331 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - delete - create - update - patch - list - watch - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - delete - create - update - patch - list - watch
kubevm.view
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.view rbac.authorization.k8s.io/aggregate-to-view: "true" name: kubevm.view resourceVersion: "16654953" uid: b5b54e2d-0097-4698-abbd-aeac212d0a34 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - list - watch - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - list - watch
kubevm.cluster.view
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.cluster.view name: kubevm.cluster.view resourceVersion: "16654956" uid: b25dde64-67da-488b-81d2-1a08f9a4a7c1 rules: - apiGroups: - vm.cluster.gke.io resources: - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - list - watch - apiGroups: - networking.gke.io resources: - networks verbs: - get - list - watch