Anthos VM Runtime gestisce un'ampia gamma di risorse correlate alle VM. Queste risorse includono risorse definite da Anthos, risorse definite da KubeVirt e risorse Kubernetes. Anthos VM Runtime utilizza il controllo dell'controllo dell'accesso basato sui ruoli (RBAC) per impostare e applicare le autorizzazioni per le risorse gestite. Per aiutarti a utilizzare queste risorse e gestire le VM, abbiamo fornito quattro ClusterCluster preconfigurati:
kubevm.admin
kubevm.edit
kubevm.view
kubevm.cluster.view
Questi ruoli integrati forniscono un modello di accesso generalizzato alle risorse personalizzate correlate al runtime VM di Anthos. Ogni ruolo dispone di autorizzazioni predefinite per utilizzare le risorse. Questo documento fornisce informazioni sulle risorse gestite da Anthos VM Runtime, in modo che gli amministratori dei cluster possano personalizzare il proprio modello di accesso.
ClusterCluster predefiniti
Questa sezione descrive ciascuno dei ClusterRole predefiniti. Questi ClusterRole sono disponibili solo quando è abilitato Anthos VM Runtime:
- Quando Anthos VM Runtime è abilitato, vengono creati automaticamente i quattro ClusterRole predefiniti.
- Quando Anthos VM Runtime è disabilitato, i quattro ClusterRole predefiniti vengono eliminati.
La tabella seguente elenca i ruoli del cluster e le relative autorizzazioni:
Ruolo cluster | Descrizione | Verbi di accesso |
---|---|---|
kubevm.admin |
Concede l'accesso completo a tutte le risorse Anthos. |
|
kubevm.edit |
Concede l'accesso in lettura/scrittura a tutte le risorse Anthos. |
|
kubevm.view |
Concede l'accesso in lettura a tutte le risorse Anthos. |
|
kubevm.cluster.view |
Concede l'accesso in lettura alle risorse a livello di cluster. Questo ruolo 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 rispettivamente a admin
, view
e edit
ClusterRoles di Kubernetes. Questa aggregazione estende i ruoli Kubernetes predefiniti in modo che possano essere utilizzati per gestire le risorse Anthos. Con i ClusterRole aggregati, puoi utilizzare i ruoli predefiniti di Kubernetes per gestire l'accesso alle risorse Anthos o creare i tuoi ruoli basati sui ClusterRole predefiniti.
Esempio di etichetta di aggregazione
L'etichetta ClusterRole kubevm.edit
è rbac.authorization.k8s.io/aggregate-to-edit: "true"
, in modo da aggregarlo dal ClusterRole edit
di Kubernetes. Le autorizzazioni nel campo ClusterCluster kubevm.edit
vengono concesse al ruolo edit
predefinito di Kubernetes. I kubevm.admin
e i ClusterRole kubevm.view
sono aggregati in modo simile alle 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 amministratore a un utente o a un insieme di utenti, crea un ClusterRoleBinding con il ClusterRole admin
predefinito di Kubernetes.
Esempio di ClusterRoleBinding
Nel seguente admin-charlie
esempio di ClusterRoleBinding vengono concesse all'utente charlie
autorizzazioni di amministratore. ClusterRoleBinding utilizza le autorizzazioni del ClusterRole admin
predefinito di Kubernetes, che include le autorizzazioni del ClusterRole kubevm.admin
predefinito tramite 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. Consulta
Esempio di ClusterRoleBinding 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. Consulta
Esempio di ClusterRoleBinding per un esempio di ClusterRoleBinding simile.
Editor con 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:
Creare un RoleBinding nello spazio dei nomi e fare riferimento al ClusterRole
edit
di Kubernetes predefinito.Crea un ClusterRoleBinding che faccia riferimento al ClusterRole
kubevm.cluster.view
predefinito. Questo ClusterRoleBinding è necessario perché alcune risorse, comevirtualmachinetypes
estorageclasses
, non hanno uno spazio dei nomi apposito.
Esempi di associazione dei ruoli (editor con spazio dei nomi)
I seguenti esempi di RoleBinding e ClusterRoleBinding assegnano all'utente charlie
le autorizzazioni di editor 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
Spettatore con nomi
Per concedere le autorizzazioni di visualizzazione con spazio dei nomi a un utente o a un gruppo di utenti, devi creare due associazioni separate:
Creare un RoleBinding nello spazio dei nomi e fare riferimento al ClusterRole
view
di Kubernetes predefinito.Crea un ClusterRoleBinding che faccia riferimento al ClusterRole
kubevm.cluster.view
predefinito.
Vedi Esempi di associazione di ruoli (editor con spazio dei nomi) per esempi di RoleBinding e ClusterRoleBinding simili.
Risorse utilizzate da Anthos VM Runtime
Le seguenti sezioni contengono le tabelle delle risorse utilizzate da Anthos VM Runtime. Queste sezioni hanno uno scopo puramente informativo. Se prevedi di utilizzare i ruoli predefiniti negli scenari utente tipici descritti nelle sezioni precedenti, non c'è un utilizzo specifico di queste informazioni.
Tuttavia, se non vuoi utilizzare i ruoli predefiniti, puoi utilizzare queste informazioni sulle risorse per creare ruoli personalizzati.
Risorse definite da Anthos
I ClusterRole predefiniti si concentrano sull'accesso alle risorse definite da Anthos. La tabella seguente elenca le risorse Anthos 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
Anthos VM Runtime si basa sul progetto open source KubeVirt. Per impostazione predefinita, le autorizzazioni per le risorse KubeVirt sono aggregate automaticamente ai ruoli Kubernetes predefiniti, in modo simile alle risorse gestite da Anthos. Utilizza le informazioni sulle risorse nella tabella seguente se vuoi creare ruoli personalizzati e personalizzati:
Risorsa | Generato | A livello di cluster |
---|---|---|
virtualmachineinstances /console |
– | – |
virtualmachineinstances /vnc |
– | – |
virtualmachineinstances /portforward |
– | – |
virtualmachineinstances /inizio |
– | – |
virtualmachineinstances /stop |
– | – |
virtualmachineinstances /riavvia |
– | – |
virtualmachines |
Sì | – |
virtualmachineinstances |
Sì | – |
datavolumes |
– | – |
storageprofiles |
– | Sì |
cdiconfigs |
– | Sì |
Risorse Kubernetes
Quando lavori con Anthos VM Runtime e le VM, potresti dover gestire l'accesso alle seguenti risorse Kubernetes. Se vuoi creare ruoli personalizzati e personalizzati, utilizza le informazioni sulle risorse nella tabella seguente:
Risorsa | Generato | A livello di cluster |
---|---|---|
pods |
Sì | – |
services |
– | – |
persistentvolumeclaims |
– | – |
secrets |
– | – |
nodes |
– | Sì |
storageclasses |
– | Sì |
configmaps |
– | – |
Esempi YAML ClusterRole
Puoi recuperare YAML per i ClusterRole 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 esempi di output comando per ciascuno dei quattro ClusterRole 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