Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e inicialize a
gcloud CLI. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando o comando
gcloud components update. Talvez as versões anteriores da gcloud CLI não sejam compatíveis com a execução dos comandos neste documento.
Funções exigidas
Para ter as permissões necessárias para gerenciar contas de serviço e papéis do IAM, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Administrador de segurança (
roles/iam.securityAdmin) no projeto do cluster -
Configure as contas de serviço em um projeto separado:
Administrador de segurança (
roles/iam.securityAdmin) no projeto da conta de serviço
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Conceder o papel mínimo necessário para o GKE
O GKE usa contas de serviço do IAM anexadas aos nós para
executar tarefas do sistema, como geração de registros e monitoramento. No mínimo, essas contas de serviço de nó
precisam ter o papel
Conta de serviço de nó padrão do Kubernetes Engine
(roles/container.defaultNodeServiceAccount) no seu projeto. Por padrão, o GKE usa a conta de serviço padrão do Compute Engine, que é criada automaticamente no seu projeto, como a conta de serviço do nó.
Se a organização aplicar a restrição da política da organização iam.automaticIamGrantsForDefaultServiceAccounts, a conta de serviço padrão do Compute Engine no projeto talvez não receba automaticamente as permissões necessárias para o GKE.
As seções a seguir mostram como conceder o papel
roles/container.defaultNodeServiceAccount à conta de serviço padrão do
Compute Engine ou a uma nova conta de serviço personalizada que
você criar.
Configurar a conta de serviço padrão do Compute Engine
Para conceder o papel roles/container.defaultNodeServiceAccount à conta de serviço padrão do Compute Engine, siga estas etapas:
Console
- Acesse a página Boas-vindas:
- No campo Número do projeto, clique em Copiar para a área de transferência.
- Acesse a página do IAM:
- Clique em Conceder acesso.
- No campo Novos principais, especifique o seguinte valor:
SubstituaPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERpelo número do projeto que você copiou. - No menu Selecionar um papel, escolha o papel Conta de serviço de nó padrão do Kubernetes Engine.
- Clique em Salvar.
gcloud
- Encontre o Google Cloud número do projeto:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Substitua
PROJECT_IDpela ID do seu projeto.O resultado será o seguinte:
12345678901
- Conceda o papel
roles/container.defaultNodeServiceAccountà conta de serviço padrão do Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Substitua
PROJECT_NUMBERpelo número do projeto da etapa anterior.
Configurar uma conta de serviço de nó personalizada
Para criar uma conta de serviço personalizada e conceder a ela o papel necessário para o GKE, siga estas etapas:
Console
- Acessar a página Contas de serviço
- Clique em Criar conta de serviço.
- Insira um nome para a conta de serviço. O campo ID da conta de serviço gera automaticamente um ID exclusivo para a conta de serviço com base no nome.
- Clique em Criar e continuar.
- No menu Selecionar um papel, escolha o papel Conta de serviço de nó padrão do Kubernetes Engine.
- Clique em Concluído.
gcloud
- Crie a conta de serviço:
gcloud iam service-accounts create SA_NAME
Substitua
SA_NAMEpor um nome exclusivo que identifique a conta de serviço. - Conceda o papel
Conta de serviço de nó padrão do Kubernetes Engine
(
roles/container.defaultNodeServiceAccount) à conta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/container.defaultNodeServiceAccount
Substitua:
PROJECT_ID: o ID do projeto Google Cloud .SA_NAME: o nome da conta de serviço que você criou.
Terraform
Crie uma conta de serviço do IAM e conceda a ela o papel
roles/container.defaultNodeServiceAccount no projeto:
Config Connector
Observação: esta etapa requer o Config Connector. Siga estas instruções para instalar o Config Connector no cluster.
- Para criar a conta de serviço, faça o download do seguinte recurso como
service-account.yaml:Substitua:
[SA_NAME]: o nome da nova conta de serviço.[DISPLAY_NAME]: um nome de exibição para a conta de serviço.
- Crie a conta de serviço:
kubectl apply -f service-account.yaml
- Aplique o papel
roles/logging.logWriterà conta de serviço:- Faça o download do seguinte recurso como
policy-logging.yaml.Substitua:
[SA_NAME]: o nome da conta de serviço.[PROJECT_ID]: o ID do projeto Google Cloud .
- Aplique o papel à conta de serviço:
kubectl apply -f policy-logging.yaml
- Faça o download do seguinte recurso como
- Aplique o papel
roles/monitoring.metricWriterà conta de serviço:- Faça o download do seguinte recurso como
policy-metrics-writer.yaml. Substitua[SA_NAME]e[PROJECT_ID]pelas suas informações.Substitua:
[SA_NAME]: o nome da conta de serviço.[PROJECT_ID]: o ID do projeto Google Cloud .
- Aplique o papel à conta de serviço:
kubectl apply -f policy-metrics-writer.yaml
- Faça o download do seguinte recurso como
- Aplique o papel
roles/monitoring.viewerà conta de serviço:- Faça o download do seguinte recurso como
policy-monitoring.yaml.Substitua:
[SA_NAME]: o nome da conta de serviço.[PROJECT_ID]: o ID do projeto Google Cloud .
- Aplique o papel à conta de serviço:
kubectl apply -f policy-monitoring.yaml
- Faça o download do seguinte recurso como
- Aplique o papel
roles/autoscaling.metricsWriterà conta de serviço:- Faça o download do seguinte recurso como
policy-autoscaling-metrics-writer.yaml.Substitua:
[SA_NAME]: o nome da conta de serviço.[PROJECT_ID]: o ID do projeto Google Cloud .
- Aplique o papel à conta de serviço:
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- Faça o download do seguinte recurso como
Também é possível usar essa conta de serviço para recursos em outros projetos. Para instruções, consulte Como ativar a representação da conta de serviço em projetos.
Permitir que os principais anexem contas de serviço personalizadas
É possível anexar uma conta de serviço personalizada ao criar um cluster ou um pool de nós. Para permitir que um principal (como um administrador da plataforma) use uma conta de serviço personalizada para criar recursos do GKE, conceda a função Usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço personalizada a esse principal. Para conceder essa função, selecione uma das seguintes opções:
Console
No console Google Cloud , acesse a página Contas de serviço:
No seletor de recursos, escolha o projeto que contém sua conta de serviço personalizada.
Marque a caixa de seleção da conta de serviço personalizada que você criou para usar com os nós do GKE.
Clique em Gerenciar acesso. O painel Gerenciar acesso é aberto.
Clique em adicionar conta principal. O painel Conceder acesso será aberto.
No campo Novos principais, especifique o principal, como um grupo de administradores.
No menu suspenso Selecionar um papel, escolha o papel Usuário da conta de serviço.
Clique em Salvar. O painel Conceder acesso será fechado.
Feche o painel Gerenciar acesso.
gcloud
Conceda o papel roles/iam.serviceAccountUser:
gcloud iam service-accounts add-iam-policy-binding \
SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
--member=PRINCIPAL \
--role=roles/iam.serviceAccountUser
Substitua:
SA_NAME: o nome da conta de serviço personalizada.SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto que contém a conta de serviço personalizada.PRINCIPAL: o identificador principal, comouser:baklavainthebalkans@example.com.
Config Connector
Observação: esta etapa requer o Config Connector. Siga as instruções de instalação para instalar o Config Connector no cluster.
Aplique o papel iam.serviceAccountUser à sua conta de serviço. Faça o download do seguinte recurso como policy-service-account-user.yaml. Substitua [SA_NAME] e [PROJECT_ID] por suas próprias informações.
kubectl apply -f policy-service-account-user.yaml
Depois de conceder o papel à conta de serviço, esses principais poderão usar essa conta para criar clusters e pools de nós. Para mais informações, consulte os seguintes documentos:
- Criar um cluster do Autopilot
- Como criar um cluster regional
- Adicionar um pool de nós a um cluster padrão
Configurar o uso da conta de serviço em vários projetos
Se a conta de serviço do nó não estiver no mesmo projeto do cluster, os agentes de serviço no projeto do cluster vão precisar de mais permissões na conta de serviço. Para mais informações, consulte Contas de serviço de nós e agentes de serviço de projetos.
Para conceder os papéis necessários em contas de serviço de nós que não estão no projeto do cluster, siga estas etapas:
- Para ativar a vinculação de conta de serviço entre projetos, atualize as políticas da organização.
Para conceder os papéis necessários na conta de serviço personalizada aos agentes de serviço no projeto do cluster, selecione uma das seguintes opções:
Console
No console Google Cloud , acesse a página Contas de serviço.
Marque a caixa de seleção da conta de serviço personalizada que você criou para usar com nós do GKE.
Clique em Gerenciar acesso. O painel Gerenciar acesso é aberto.
Conceda o papel Criador de token da conta de serviço ao agente de serviço do Compute Engine no projeto do cluster:
- No painel Gerenciar acesso, clique em Adicionar principal. O painel Conceder acesso é aberto.
No campo Novos principais, especifique o endereço de e-mail do agente de serviço do Compute Engine no projeto do cluster:
service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.comSubstitua
CLUSTER_PROJECT_NUMBERpelo número do projeto do cluster.No menu Selecionar papel, escolha o papel Criador de token de conta de serviço.
Clique em Salvar. O painel Conceder acesso será fechado.
Conceda o papel de usuário da conta de serviço ao agente de serviço do GKE no projeto de cluster:
- No painel Gerenciar acesso, clique em Adicionar principal. O painel Conceder acesso é aberto.
No campo Novos principais, especifique o endereço de e-mail do agente de serviço do GKE no projeto do cluster:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comNo menu Selecionar um papel, escolha o papel Usuário da conta de serviço.
Clique em Salvar. O painel Conceder acesso será fechado.
Feche o painel Gerenciar acesso.
gcloud
Confira o número do projeto do cluster:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Substitua
CLUSTER_PROJECT_IDpelo ID do projeto do cluster.A saída é semelhante a
123456789.Conceda o papel
roles/iam.serviceAccountTokenCreatorna conta de serviço personalizada ao agente de serviço do Compute Engine no projeto do cluster:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorSubstitua:
SA_NAME: o nome da conta de serviço personalizada.SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto que contém sua conta de serviço personalizada.CLUSTER_PROJECT_NUMBER: o número do projeto do cluster.
Conceda o papel
roles/iam.serviceAccountUserna conta de serviço personalizada ao agente de serviço do GKE no projeto do cluster:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Permitir extrações de imagens de repositórios particulares
Se você tiver imagens em repositórios particulares do Artifact Registry, conceda à conta de serviço do nó acesso a esses repositórios. Mesmo que você use a conta de serviço padrão do Compute Engine, talvez seja necessário dar acesso a ela ao repositório se ele estiver em outro projeto.
Para extrair imagens particulares do Artifact Registry, conceda o
papel de leitor do Artifact Registry
(roles/artifactregistry.reader) no repositório à conta de serviço do nó.
Console
No console do Google Cloud , acesse a página Repositórios.
Marque a caixa de seleção do seu repositório.
Clique em Mostrar painel de informações. O painel de informações do repositório é aberto.
Na guia Permissões, clique em Adicionar principal. O painel Conceder acesso será aberto.
No campo Novos principais, especifique o endereço de e-mail da conta de serviço do nó.
Clique em Selecionar um papel para abrir a caixa de diálogo de seleção de papel.
Selecione o papel Leitor do Artifact Registry.
Clique em Salvar.
gcloud
Conceda o papel roles/artifactregistry.reader no repositório:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY_NAME \
--member=serviceAccount:SERVICE_ACCOUNT_EMAIL \
--project=REPOSITORY_PROJECT_ID \
--role=roles/artifactregistry.reader
Substitua:
REPOSITORY_NAME: o nome do repositório do Artifact Registry.SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço do nó.REPOSITORY_PROJECT_ID: o ID do projeto que contém seu repositório.
Config Connector
Observação: esta etapa requer o Config Connector. Siga estas instruções para instalar o Config Connector no cluster.
Salve o seguinte manifesto como
policy-artifact-registry-reader.yaml:Substitua:
- SA_NAME: o nome da conta de serviço do IAM.
- PROJECT_ID: o ID do projeto Google Cloud .
- REPOSITORY_NAME: o nome do repositório do Artifact Registry.
Conceda o papel de leitor do Artifact Registry à conta de serviço:
kubectl apply -f policy-artifact-registry-reader.yaml
A seguir
- Criar um cluster do Autopilot
- Criar um cluster regional
- Adicionar um pool de nós a um cluster padrão