O tempo de execução de VMs no GDC gere uma vasta gama de recursos relacionados com as suas VMs. Estes recursos incluem recursos definidos pelo GKE, recursos definidos pelo KubeVirt e recursos do Kubernetes. O tempo de execução de VMs no GDC usa o controlo de acesso baseado em funções (RBAC) para definir e aplicar autorizações para recursos geridos. Para ajudar a trabalhar com estes recursos e gerir as suas VMs, disponibilizámos quatro ClusterRoles pré-configurados:
kubevm.admin
kubevm.edit
kubevm.view
kubevm.cluster.view
Estas funções integradas fornecem um modelo de acesso generalizado nos recursos personalizados relacionados com o VM Runtime no GDC. Cada função tem autorizações pré-estabelecidas para operar nos recursos. Este documento fornece informações sobre os recursos que o VM Runtime no GDC gere para que os administradores do cluster possam personalizar o respetivo modelo de acesso.
ClusterRoles predefinidos
Esta secção descreve cada um dos ClusterRoles predefinidos. Estes ClusterRoles só estão disponíveis quando o tempo de execução de VMs no GDC está ativado:
- Quando o tempo de execução da VM no GDC está ativado, os quatro ClusterRoles predefinidos são criados automaticamente.
- Quando o tempo de execução de VMs no GDC está desativado, os quatro ClusterRoles predefinidos são eliminados.
A tabela seguinte apresenta as funções de cluster e as respetivas autorizações relacionadas:
Função do cluster | Descrição | Verbos de acesso |
---|---|---|
kubevm.admin |
Concede acesso total a todos os recursos do GKE. |
|
kubevm.edit |
Concede acesso de leitura/escrita a todos os recursos do GKE. |
|
kubevm.view |
Concede acesso de leitura a todos os recursos do GKE. |
|
kubevm.cluster.view |
Concede acesso de leitura a recursos ao nível do cluster. Esta função de cluster é necessária quando a função de edição/visualização está associada a um espaço de nomes, enquanto o acesso a recursos ao nível do cluster é necessário. |
|
ClusterRoles agregados
Os ClusterRoles kubevm.admin
, kubevm.view
e kubevm.edit
não são usados diretamente. Em alternativa, estas três funções são agregadas às ClusterRoles admin
, view
e edit
predefinidas do Kubernetes, respetivamente. Esta agregação expande as funções predefinidas do Kubernetes para que possam ser usadas para gerir recursos do GKE. Com as ClusterRoles agregadas, pode usar as funções predefinidas do Kubernetes para gerir o acesso aos recursos do GKE ou criar as suas próprias funções com base nas ClusterRoles predefinidas.
Etiqueta de agregação de exemplo
O kubevm.edit
ClusterRole tem a etiqueta
rbac.authorization.k8s.io/aggregate-to-edit: "true"
, que o agrega ao
ClusterRole edit
do Kubernetes. As autorizações no kubevm.edit
ClusterRole são concedidas à função edit
predefinida do Kubernetes. Os kubevm.admin
e os ClusterRoles são agregados de forma semelhante com anotações aggregate-to-admin
ou aggregate-to-view
.kubevm.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"
...
Cenários de utilizador típicos
As secções seguintes descrevem como usar RoleBinding e ClusterRoleBinding para conceder as autorizações especificadas nos ClusterRoles predefinidos a um utilizador ou conjunto de utilizadores.
Administrador do cluster
Para conceder autorizações de administrador a um utilizador ou a um conjunto de utilizadores, crie um
ClusterRoleBinding com o admin
ClusterRole predefinido do Kubernetes.
Exemplo de ClusterRoleBinding
O seguinte admin-charlie
exemplo de ClusterRoleBinding concede ao utilizador charlie
autorizações de administrador. O ClusterRoleBinding usa autorizações do ClusterRole do Kubernetes admin
predefinido, que inclui autorizações do ClusterRole kubevm.admin
predefinido através da agregação.
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
Visitante do cluster
Para conceder autorizações de visualizador a um utilizador ou a um conjunto de utilizadores, crie um ClusterRoleBinding com o ClusterRole predefinido do Kubernetes view
. Consulte o
exemplo ClusterRoleBinding para ver um exemplo
ClusterRoleBinding semelhante.
Editor de clusters
Para conceder autorizações de editor a um utilizador ou a um conjunto de utilizadores, crie um ClusterRoleBinding com o ClusterRole predefinido do Kubernetes edit
. Consulte o
exemplo ClusterRoleBinding para ver um exemplo
ClusterRoleBinding semelhante.
Editor com espaço de nomes
Para conceder autorizações de editor com espaço de nomes a um utilizador ou a um conjunto de utilizadores, tem de criar duas associações separadas:
Crie uma RoleBinding no espaço de nomes e referencie a ClusterRole do Kubernetes
edit
predefinida.Crie uma ClusterRoleBinding que faça referência à ClusterRole
kubevm.cluster.view
predefinida. Esta ClusterRoleBinding é necessária porque alguns recursos, comovirtualmachinetypes
estorageclasses
, não têm espaço de nomes.
Exemplos de associação de funções (editor com espaço de nomes)
Os exemplos de RoleBinding e ClusterRoleBinding seguintes concedem ao utilizador charlie
autorizações de editor para recursos no espaço de nomes 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
Leitor com espaço de nomes
Para conceder autorizações de visualizador com espaço de nomes a um utilizador ou a um conjunto de utilizadores, tem de criar duas associações separadas:
Crie uma RoleBinding no espaço de nomes e referencie a ClusterRole do Kubernetes
view
predefinida.Crie uma ClusterRoleBinding que faça referência à ClusterRole
kubevm.cluster.view
predefinida.
Consulte Exemplos de associações de funções (editor com espaço de nomes) para ver exemplos semelhantes de RoleBinding e ClusterRoleBinding.
Recursos usados pelo VM Runtime no GDC
As secções seguintes contêm tabelas de recursos usados pelo VM Runtime no GDC. Estas secções destinam-se apenas a fins informativos. Se planeia usar funções predefinidas nos cenários de utilizador típicos descritos nas secções anteriores, não existe uma utilização específica para estas informações.
No entanto, se não quiser usar as funções predefinidas, pode usar estas informações de recursos para criar as suas próprias funções personalizadas.
Recursos definidos pelo Google Kubernetes Engine
Os ClusterRoles predefinidos focam-se no acesso a recursos definidos pelo GKE. A tabela seguinte apresenta os recursos do GKE e as autorizações de acesso concedidas por cada uma das ClusterRoles predefinidas.
Recurso | Gerado | Ao nível do cluster | kubevm.admin |
kubevm.view |
kubevm.edit |
kubevm.cluster.view |
---|---|---|---|---|---|---|
virtualmachineaccessrequests |
– | – | Completo | Leitura | Leitura/escrita | – |
virtualmachinedisks |
– | – | Completo | Leitura | Leitura/escrita | – |
virtualmachines |
– | – | Completo | Leitura | Leitura/escrita | – |
gpuallocations |
– | – | Completo | Leitura | Leitura/escrita | – |
guestenvironmentdata |
Sim | – | Completo | Leitura | Leitura/escrita | – |
vmruntimes |
– | Sim | Completo | Leitura | Leitura/escrita | Leitura |
virtualmachinetypes |
– | Sim | Completo | Leitura | Leitura/escrita | Leitura |
vmhighavailabilitypolicies |
– | Sim | Completo | Leitura | Leitura/escrita | Leitura |
networkinterfaces |
Sim | – | Completo | Leitura | Leitura/escrita | – |
networks |
– | Sim | Completo | Leitura | Leitura/escrita | Leitura |
Recursos do KubeVirt
O tempo de execução da VM no GDC baseia-se no projeto de código aberto KubeVirt. Por predefinição, as autorizações para os recursos do KubeVirt são agregadas automaticamente às funções predefinidas do Kubernetes, de forma semelhante aos recursos geridos pelo GKE. Use as informações dos recursos na tabela seguinte se quiser criar as suas próprias funções personalizadas:
Recurso | Gerado | Ao nível do cluster |
---|---|---|
virtualmachineinstances /consola |
– | – |
virtualmachineinstances /vnc |
– | – |
virtualmachineinstances /portforward |
– | – |
virtualmachineinstances /start |
– | – |
virtualmachineinstances /paragem |
– | – |
virtualmachineinstances /restart |
– | – |
virtualmachines |
Sim | – |
virtualmachineinstances |
Sim | – |
datavolumes |
– | – |
storageprofiles |
– | Sim |
cdiconfigs |
– | Sim |
Recursos do Kubernetes
Quando trabalha com o tempo de execução de VMs no GDC e nas VMs, pode ter de gerir o acesso aos seguintes recursos do Kubernetes. Use as informações dos recursos na tabela seguinte se quiser criar as suas próprias funções personalizadas:
Recurso | Gerado | Ao nível do cluster |
---|---|---|
pods |
Sim | – |
services |
– | – |
persistentvolumeclaims |
– | – |
secrets |
– | – |
nodes |
– | Sim |
storageclasses |
– | Sim |
configmaps |
– | – |
Exemplos de YAML de ClusterRole
Pode obter o YAML para os ClusterRoles com o seguinte comando kubectl
:
kubectl get ClusterRole CLUSTERROLE_NAME -o yaml --kubeconfig KUBECONFIG_PATH
Substitua o seguinte:
CLUSTERROLE_NAME
: o nome do ClusterRole, comokubevm.cluster.view
.KUBECONFIG_PATH
: o caminho para o ficheiro kubeconfig do cluster.
Seguem-se exemplos da saída do comando para cada um dos quatro ClusterRoles predefinidos:
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