VM Runtime su Google Distributed Cloud gestisce un'ampia gamma di risorse relative alle tue VM. Queste risorse includono risorse definite da GKE Enterprise, risorse definite da KubeVirt e risorse Kubernetes. Il runtime VM su Google Distributed Cloud utilizza il controllo controllo dell'accesso basato su ruoli (RBAC) per impostare e applicare le autorizzazioni per le risorse gestite. Per aiutarti a lavorare con queste risorse e a gestire le tue VM, abbiamo fornito quattro ClusterRoles preconfigurati:
kubevm.admin
kubevm.edit
kubevm.view
kubevm.cluster.view
Questi ruoli integrati forniscono un modello di accesso generalizzato alle risorse personalizzate relative al runtime VM su Google Distributed Cloud. Ogni ruolo dispone di autorizzazioni prestabilite per operare sulle risorse. Questo documento fornisce informazioni sulle risorse gestite da VM Runtime su Google Distributed Cloud in modo che gli amministratori dei cluster possano personalizzare il proprio modello di accesso.
ClusterRole predefiniti
Questa sezione descrive tutti i ClusterRole predefiniti. Questi ClusterRoles sono disponibili solo quando il runtime VM su Google Distributed Cloud è abilitato:
- Quando il runtime VM su Google Distributed Cloud è abilitato, vengono creati automaticamente i quattro ClusterRoles predefiniti.
- Quando il runtime VM su Google Distributed Cloud è disabilitato, i quattro ClusterRoles predefiniti vengono eliminati.
La tabella seguente elenca i ruoli nel cluster e le relative autorizzazioni:
Ruolo nel cluster | Descrizione | Accedi ai verbi |
---|---|---|
kubevm.admin |
Concede l'accesso completo a tutte le risorse GKE Enterprise. |
|
kubevm.edit |
Concede l'accesso in lettura/scrittura a tutte le risorse GKE Enterprise. |
|
kubevm.view |
Concede l'accesso in lettura a tutte le risorse GKE Enterprise. |
|
kubevm.cluster.view |
Concede l'accesso in lettura alle risorse a livello di cluster. Questo ruolo nel cluster è necessario quando il ruolo di modifica/visualizzazione è associato a uno spazio dei nomi, mentre è necessario l'accesso alle risorse a livello di cluster. |
|
ClusterRole aggregati
I ClusterRole kubevm.admin
, kubevm.view
e kubevm.edit
non vengono utilizzati
direttamente. Questi tre ruoli vengono invece aggregati ai ClusterRole predefiniti
admin
, view
e edit
di Kubernetes rispettivamente. Questa aggregazione estende i ruoli Kubernetes predefiniti in modo che possano essere utilizzati per gestire le risorse GKE Enterprise. Con i clusterRoles aggregati, puoi utilizzare i ruoli predefiniti di Kubernetes per gestire l'accesso alle risorse GKE Enterprise o creare ruoli personalizzati in base ai ClusterRoles predefiniti.
Esempio di etichetta di aggregazione
Il ClusterRole kubevm.edit
ha l'etichetta rbac.authorization.k8s.io/aggregate-to-edit: "true"
, che la aggrega nel ClusterRole edit
di Kubernetes. Le autorizzazioni in ClusterRole kubevm.edit
vengono concesse al ruolo edit
predefinito di Kubernetes. I valori ClusterRole kubevm.admin
e kubevm.view
vengono aggregati in modo simile con le annotazioni aggregate-to-admin
o 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"
...
Scenari utente tipici
Le seguenti sezioni descrivono come utilizzare RoleBinding e ClusterRoleBinding per concedere le autorizzazioni specificate nei ClusterRole predefiniti a un utente o a un insieme di utenti.
Amministratore cluster
Per concedere le autorizzazioni di amministrazione a un utente o a un insieme di utenti, crea un ClusterRoleBinding con il ClusterRole admin
predefinito di Kubernetes.
ClusterRoleBinding di esempio
Il seguente esempio di admin-charlie
ClusterRoleBinding concede all'utente charlie
le autorizzazioni amministrative. ClusterRoleBinding utilizza le autorizzazioni del ClusterRole admin
predefinito di Kubernetes, che include le autorizzazioni del ClusterRole kubevm.admin
predefinito tramite l'aggregazione.
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
Visualizzatore cluster
Per concedere le autorizzazioni di visualizzazione a un utente o a un insieme di utenti, crea un ClusterRoleBinding con il ClusterRole view
predefinito di Kubernetes. Vedi ClusterRoleBinding di esempio per un esempio di ClusterRoleBinding simile.
Editor cluster
Per concedere le autorizzazioni di editor a un utente o a un insieme di utenti, crea un ClusterRoleBinding con il ClusterRole edit
predefinito di Kubernetes. Vedi ClusterRoleBinding di esempio per un esempio di ClusterRoleBinding simile.
Editor del pacing dei nomi
Per concedere le autorizzazioni di editor con spazio dei nomi a un utente o a un insieme di utenti, devi creare due associazioni separate:
Crea un oggetto RoleBinding nello spazio dei nomi e fai riferimento al ClusterRole
edit
predefinito di Kubernetes.Crea un ClusterRoleBinding che faccia riferimento al ClusterRole
kubevm.cluster.view
predefinito. Questo ClusterRoleBinding è necessario, perché alcune risorse, comevirtualmachinetypes
estorageclasses
, non hanno spazi dei nomi.
Esempi di associazione dei ruoli (editor con spazio dei nomi)
I seguenti esempi di RoleBinding e ClusterRoleBinding forniscono all'utente charlie
le autorizzazioni di modifica per le risorse nello spazio dei nomi 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
Visualizzatore con limiti di nomi
Per concedere autorizzazioni di visualizzatore con spazio dei nomi a un utente o a un insieme di utenti, devi creare due associazioni separate:
Crea un oggetto RoleBinding nello spazio dei nomi e fai riferimento al ClusterRole
view
predefinito di Kubernetes.Crea un ClusterRoleBinding che faccia riferimento al ClusterRole
kubevm.cluster.view
predefinito.
Vedi Esempi di associazione dei ruoli (editor con spazio dei nomi) per esempi simili di RoleBinding e ClusterRoleBinding.
Risorse utilizzate dal runtime VM su Google Distributed Cloud
Le seguenti sezioni contengono tabelle di risorse utilizzate dal runtime VM su Google Distributed Cloud. Queste sezioni sono solo a scopo informativo. Se prevedi di utilizzare i ruoli predefiniti negli scenari utente tipici descritti nelle sezioni precedenti, non è previsto alcun impiego specifico di queste informazioni.
Se, tuttavia, non vuoi utilizzare i ruoli predefiniti, puoi utilizzare queste informazioni sulle risorse per creare i tuoi ruoli personalizzati.
Risorse definite da GKE Enterprise
I ClusterRole predefiniti sono incentrati sull'accesso alle risorse definite da GKE Enterprise. La tabella seguente elenca le risorse GKE Enterprise e le autorizzazioni di accesso concesse da ciascuno dei ClusterRole predefiniti.
Risorsa | Generato | A livello di cluster | kubevm.admin |
kubevm.view |
kubevm.edit |
kubevm.cluster.view |
---|---|---|---|---|---|---|
virtualmachineaccessrequests |
– | – | Completa | Lettura | Lettura/scrittura | – |
virtualmachinedisks |
– | – | Completa | Lettura | Lettura/scrittura | – |
virtualmachines |
– | – | Completa | Lettura | Lettura/scrittura | – |
gpuallocations |
– | – | Completa | Lettura | Lettura/scrittura | – |
guestenvironmentdata |
Sì | – | Completa | Lettura | Lettura/scrittura | – |
vmruntimes |
– | Sì | Completa | Lettura | Lettura/scrittura | Lettura |
virtualmachinetypes |
– | Sì | Completa | Lettura | Lettura/scrittura | Lettura |
vmhighavailabilitypolicies |
– | Sì | Completa | Lettura | Lettura/scrittura | Lettura |
networkinterfaces |
Sì | – | Completa | Lettura | Lettura/scrittura | – |
networks |
– | Sì | Completa | Lettura | Lettura/scrittura | Lettura |
Risorse KubeVirt
VM Runtime su Google Distributed Cloud si basa sul progetto open source KubeVirt. Per impostazione predefinita, le autorizzazioni per le risorse KubeVirt vengono aggregate automaticamente nei ruoli Kubernetes predefiniti, in modo simile alle risorse gestite da GKE Enterprise. Utilizza le informazioni sulle risorse nella seguente tabella se vuoi creare ruoli personalizzati:
Risorsa | Generato | A livello di cluster |
---|---|---|
virtualmachineinstances /console |
– | – |
virtualmachineinstances /vnc |
– | – |
virtualmachineinstances /portforward |
– | – |
virtualmachineinstances /inizio |
– | – |
virtualmachineinstances /scalo |
– | – |
virtualmachineinstances /riavvia |
– | – |
virtualmachines |
Sì | – |
virtualmachineinstances |
Sì | – |
datavolumes |
– | – |
storageprofiles |
– | Sì |
cdiconfigs |
– | Sì |
Risorse Kubernetes
Quando lavori con il runtime VM su Google Distributed Cloud e sulle VM, potrebbe essere necessario gestire l'accesso alle seguenti risorse Kubernetes. Utilizza le informazioni sulle risorse nella tabella seguente se vuoi creare ruoli personalizzati:
Risorsa | Generato | A livello di cluster |
---|---|---|
pods |
Sì | – |
services |
– | – |
persistentvolumeclaims |
– | – |
secrets |
– | – |
nodes |
– | Sì |
storageclasses |
– | Sì |
configmaps |
– | – |
Esempi YAML ClusterRole
Puoi recuperare YAML per i ClusterRoles con il seguente comando kubectl
:
kubectl get ClusterRole CLUSTERROLE_NAME -o yaml --kubeconfig KUBECONFIG_PATH
Sostituisci quanto segue:
CLUSTERROLE_NAME
: il nome del ClusterRole, ad esempiokubevm.cluster.view
.KUBECONFIG_PATH
: il percorso del file kubeconfig per il cluster.
Di seguito sono riportati alcuni esempi dell'output comando per ciascuno dei quattro ClusterRoles predefiniti:
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