O ambiente de execução de VMs no GDC gerencia uma ampla variedade de recursos relacionados às suas VMs. Entre eles estão os recursos definidos pela edição do Google Kubernetes Engine (GKE) Enterprise, os definidos pelo KubeVirt e os recursos do Kubernetes. O ambiente de execução de VMs no GDC usa o controle de acesso baseado em papéis (RBAC, na sigla em inglês) para definir e aplicar permissões a recursos gerenciados. Para ajudar você a trabalhar com esses recursos e gerenciar suas VMs, fornecemos quatro ClusterRoles pré-configurados:
kubevm.admin
kubevm.edit
kubevm.view
kubevm.cluster.view
Esses papéis integrados fornecem um modelo de acesso generalizado aos recursos personalizados relacionados ao VM Runtime no GDC. Cada papel tem permissões predefinidas para operar nos recursos. Neste documento, você encontra informações sobre os recursos que o VM Runtime no GDC gerencia para que os administradores do cluster possam personalizar o próprio modelo de acesso.
ClusterRoles predefinidos
Nesta seção, descrevemos cada um dos ClusterRoles predefinidos. Esses ClusterRoles estão disponíveis apenas quando o ambiente de execução da VM no GDC está ativado:
- Quando o ambiente de execução de VM no GDC está ativado, os quatro ClusterRoles predefinidos são criados automaticamente.
- Quando o ambiente de execução da VM no GDC é desativado, os quatro ClusterRoles predefinidos são excluídos.
A tabela a seguir lista os papéis do cluster e as permissões relacionadas a eles:
Função do cluster | Descrição | Verbos de acesso |
---|---|---|
kubevm.admin |
Concede acesso total a todos os recursos da edição Google Kubernetes Engine (GKE) Enterprise. |
|
kubevm.edit |
Concede acesso de leitura/gravação a todos os recursos da edição Google Kubernetes Engine (GKE) Enterprise. |
|
kubevm.view |
Concede acesso de leitura a todos os recursos da edição Google Kubernetes Engine (GKE) Enterprise. |
|
kubevm.cluster.view |
Concede acesso de leitura a recursos do cluster. Essa função de cluster é necessária quando a função de edição/visualização está vinculada a um namespace, enquanto o acesso a recursos do cluster é necessário. |
|
ClusterRoles agregados
Os ClusterRoles kubevm.admin
, kubevm.view
e kubevm.edit
não são usados
diretamente. Em vez disso, esses três papéis são agregados aos ClusterRoles padrão admin
, view
e edit
do Kubernetes, respectivamente. Essa agregação estende os papéis padrão do Kubernetes para que eles possam ser usados para gerenciar os recursos da edição Google Kubernetes Engine (GKE) Enterprise. Com
ClusterRoles agregados,
é possível usar os papéis padrão do Kubernetes para gerenciar o acesso aos recursos da edição Enterprise
do Google Kubernetes Engine (GKE) ou criar seus próprios papéis com base nos ClusterRoles predefinidos.
Exemplo de rótulo de agregação
O ClusterRole kubevm.edit
tem o rótulo
rbac.authorization.k8s.io/aggregate-to-edit: "true"
, que o agrega ao
ClusterRole edit
do Kubernetes. As permissões do ClusterRole kubevm.edit
são concedidas à função edit
padrão do Kubernetes. Os ClusterRoles kubevm.admin
e kubevm.view
são agregados de maneira semelhante às
anotações aggregate-to-admin
ou 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"
...
Cenários típicos de usuários
As seções a seguir descrevem como usar RoleBinding e ClusterRoleBinding para conceder as permissões especificadas nos ClusterRoles predefinidos a um usuário ou a um conjunto de usuários.
Administrador de clusters
Para conceder permissões de administrador a um usuário ou conjunto de usuários, crie um
ClusterRoleBinding com o ClusterRole admin
padrão do Kubernetes.
ClusterRoleBinding de exemplo
O exemplo de ClusterRoleBinding admin-charlie
a seguir fornece permissões de administrador charlie
ao usuário. O ClusterRoleBinding usa permissões do ClusterRole admin
padrão do Kubernetes, que inclui permissões do ClusterRole kubevm.admin
predefinido por 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
Leitor de cluster
Para conceder permissões de leitor a um usuário ou conjunto de usuários, crie um
ClusterRoleBinding com o ClusterRole view
padrão do Kubernetes. Consulte ClusterRoleBinding de exemplo para ver um exemplo de ClusterRoleBinding.
Editor de cluster
Para conceder permissões de edição a um usuário ou a um conjunto de usuários, crie um
ClusterRoleBinding com o ClusterRole edit
padrão do Kubernetes. Consulte ClusterRoleBinding de exemplo para ver um exemplo de ClusterRoleBinding.
Editor com namespace
Para conceder permissões de editor com namespace a um usuário ou a um conjunto de usuários, você precisa criar duas vinculações separadas:
Crie um "RoleBinding" no namespace e faça referência ao ClusterRole
edit
padrão do Kubernetes.Crie um ClusterRoleBinding que faça referência ao ClusterRole
kubevm.cluster.view
predefinido. Esse ClusterRoleBinding é necessário porque alguns recursos, comovirtualmachinetypes
estorageclasses
, não são namespaces.
Exemplos de vinculação de funções (editor com namespace)
Os seguintes exemplos de RoleBinding e ClusterRoleBinding oferecem ao usuáriocharlie
permissões de editor para recursos no namespace 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 namespace
Para conceder permissões de leitor com namespace a um usuário ou a um conjunto de usuários, você precisa criar duas vinculações separadas:
Crie um "RoleBinding" no namespace e faça referência ao ClusterRole
view
padrão do Kubernetes.Crie um ClusterRoleBinding que faça referência ao ClusterRole
kubevm.cluster.view
predefinido.
Consulte Exemplos de vinculação de papéis (editor de namespace) para exemplos semelhantes de RoleBinding e ClusterRoleBinding.
Recursos usados pelo ambiente de execução da VM no GDC
As seções a seguir contêm tabelas de recursos usados pelo VM Runtime na GDC. Essas seções são apenas para fins informativos. Se você pretende usar funções predefinidas nos cenários comuns de usuário descritos nas seções anteriores, não há uso específico para essas informações.
No entanto, se você não quiser usar os papéis predefinidos, use essas informações dos recursos para criar seus próprios papéis personalizados.
Recursos definidos pela edição do Google Kubernetes Engine (GKE) Enterprise
Os ClusterRoles predefinidos se concentram no acesso aos recursos definidos pela edição do Google Kubernetes Engine (GKE) Enterprise. A tabela a seguir lista os recursos da edição Google Kubernetes Engine (GKE) Enterprise e as permissões de acesso concedidas por cada um dos ClusterRoles predefinidos.
Recurso | Gerado | Em relação ao cluster | kubevm.admin |
kubevm.view |
kubevm.edit |
kubevm.cluster.view |
---|---|---|---|---|---|---|
virtualmachineaccessrequests |
– | – | Completa | Ler | Leitura/gravação | – |
virtualmachinedisks |
– | – | Completa | Ler | Leitura/gravação | – |
virtualmachines |
– | – | Completa | Ler | Leitura/gravação | – |
gpuallocations |
– | – | Completa | Ler | Leitura/gravação | – |
guestenvironmentdata |
Sim | – | Completa | Ler | Leitura/gravação | – |
vmruntimes |
– | Sim | Completa | Ler | Leitura/gravação | Ler |
virtualmachinetypes |
– | Sim | Completa | Ler | Leitura/gravação | Ler |
vmhighavailabilitypolicies |
– | Sim | Completa | Ler | Leitura/gravação | Ler |
networkinterfaces |
Sim | – | Completa | Ler | Leitura/gravação | – |
networks |
– | Sim | Completa | Ler | Leitura/gravação | Ler |
Recursos do KubeVirt
O ambiente de execução de VMs no GDC é baseado no projeto de código aberto KubeVirt (em inglês). Por padrão, as permissões dos recursos do KubeVirt são agregadas automaticamente aos papéis padrão do Kubernetes, semelhantes aos recursos gerenciados pela edição Google Kubernetes Engine (GKE) Enterprise. Use as informações do recurso na tabela a seguir se quiser criar os próprios papéis personalizados:
Recurso | Gerado | Em relação ao cluster |
---|---|---|
virtualmachineinstances /console |
– | – |
virtualmachineinstances /vnc |
– | – |
virtualmachineinstances /portforward |
– | – |
virtualmachineinstances /start |
– | – |
virtualmachineinstances /stop |
– | – |
virtualmachineinstances /restart |
– | – |
virtualmachines |
Sim | – |
virtualmachineinstances |
Sim | – |
datavolumes |
– | – |
storageprofiles |
– | Sim |
cdiconfigs |
– | Sim |
Recursos do Kubernetes
Quando você trabalha com o ambiente de execução de VMs em GDC e VMs, pode ser necessário gerenciar o acesso aos seguintes recursos do Kubernetes. Use as informações do recurso na tabela a seguir se quiser criar os próprios papéis personalizados:
Recurso | Gerado | Em relação ao cluster |
---|---|---|
pods |
Sim | – |
services |
– | – |
persistentvolumeclaims |
– | – |
secrets |
– | – |
nodes |
– | Sim |
storageclasses |
– | Sim |
configmaps |
– | – |
Exemplos de YAML do ClusterRole
É possível recuperar YAML para os ClusterRoles com o seguinte comando kubectl
:
kubectl get ClusterRole CLUSTERROLE_NAME -o yaml --kubeconfig KUBECONFIG_PATH
Substitua:
CLUSTERROLE_NAME
: o nome do ClusterRole, comokubevm.cluster.view
.KUBECONFIG_PATH
: o caminho do arquivo kubeconfig do cluster.
Veja abaixo exemplos de resposta ao 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