Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize a
CLI gcloud. Se instalou anteriormente a CLI gcloud, execute o comando
gcloud components updatepara obter a versão mais recente. As versões anteriores da CLI gcloud podem não suportar a execução dos comandos neste documento.
Funções necessárias
Para receber as autorizações de que precisa para gerir as funções e as contas de serviço do IAM, peça ao seu administrador que lhe conceda as seguintes funções do IAM:
-
Administrador de segurança (
roles/iam.securityAdmin) no projeto do cluster -
Configurar contas de serviço num projeto separado:
Administrador de segurança (
roles/iam.securityAdmin) no projeto da conta de serviço
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Conceda a função mínima necessária para o GKE
O GKE usa contas de serviço da IAM anexadas aos seus nós para
executar tarefas do sistema, como registo e monitorização. No mínimo, estas contas de serviço de nós
têm de ter a função
Conta de serviço de nós predefinida do Kubernetes Engine
(roles/container.defaultNodeServiceAccount) no seu projeto. Por predefinição,
o GKE usa a
conta de serviço predefinida do Compute Engine,
que é criada automaticamente no seu projeto, como a conta de serviço do nó.
Se a sua organização aplicar a restrição da política da organização iam.automaticIamGrantsForDefaultServiceAccounts, a conta de serviço do Compute Engine predefinida no seu projeto pode não receber automaticamente as autorizações necessárias para o GKE.
As secções seguintes mostram como conceder a função
roles/container.defaultNodeServiceAccount à conta de serviço predefinida do
Compute Engine ou a uma nova conta de serviço personalizada que
criar.
Configure a conta de serviço predefinida do Compute Engine
Para conceder a função roles/container.defaultNodeServiceAccount à conta de serviço predefinida do Compute Engine, conclua os seguintes passos:
Consola
- Aceda à página Boas-vindas:
- No campo Número do projeto, clique em Copiar para a área de transferência.
- Aceda à página IAM:
- Clique em Conceder acesso.
- No campo Novos responsáveis, especifique o seguinte valor:
SubstituaPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERpelo número do projeto que copiou. - No menu Selecionar uma função, selecione a função Conta de serviço do nó predefinido do Kubernetes Engine.
- Clique em Guardar.
gcloud
- Encontre o seu Google Cloud número do projeto:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Substitua
PROJECT_IDpelo ID do seu projeto.O resultado é semelhante ao seguinte:
12345678901
- Conceda a função
roles/container.defaultNodeServiceAccountà conta de serviço predefinida 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 do passo anterior.
Configure uma conta de serviço de nó personalizada
Para criar uma conta de serviço personalizada e conceder-lhe a função necessária para o GKE, conclua os seguintes passos:
Consola
- Aceda à página Contas de serviço:
- Clique em Criar conta de serviço.
- Introduza 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 uma função, selecione a função Conta de serviço do nó predefinido 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 a função
Conta de serviço do nó predefinido 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 o seguinte:
PROJECT_ID: o ID do seu Google Cloud projeto.SA_NAME: o nome da conta de serviço que criou.
Terraform
Crie uma conta de serviço de IAM e conceda-lhe a função
roles/container.defaultNodeServiceAccount no projeto:
Config Connector
Nota: este passo requer o Config Connector. Siga as instruções de instalação para instalar o Config Connector no seu cluster.
- Para criar a conta de serviço, transfira o seguinte recurso como
service-account.yaml:Substitua o seguinte:
[SA_NAME]: o nome da nova conta de serviço.[DISPLAY_NAME]: um nome a apresentar para a conta de serviço.
- Crie a conta de serviço:
kubectl apply -f service-account.yaml
- Aplique a função
roles/logging.logWriterà conta de serviço:- Transfira o
seguinte recurso como
policy-logging.yaml.Substitua o seguinte:
[SA_NAME]: o nome da conta de serviço.[PROJECT_ID]: o ID do seu Google Cloud projeto.
- Aplique a função à conta de serviço:
kubectl apply -f policy-logging.yaml
- Transfira o
seguinte recurso como
- Aplique a função
roles/monitoring.metricWriterà conta de serviço:- Transfira o seguinte recurso como
policy-metrics-writer.yaml. Substitua[SA_NAME]e[PROJECT_ID]pelas suas próprias informações.Substitua o seguinte:
[SA_NAME]: o nome da conta de serviço.[PROJECT_ID]: o ID do seu Google Cloud projeto.
- Aplique a função à conta de serviço:
kubectl apply -f policy-metrics-writer.yaml
- Transfira o seguinte recurso como
- Aplique a função
roles/monitoring.viewerà conta de serviço:- Transfira o seguinte recurso como
policy-monitoring.yaml.Substitua o seguinte:
[SA_NAME]: o nome da conta de serviço.[PROJECT_ID]: o ID do seu Google Cloud projeto.
- Aplique a função à conta de serviço:
kubectl apply -f policy-monitoring.yaml
- Transfira o seguinte recurso como
- Aplique a função
roles/autoscaling.metricsWriterà conta de serviço:- Transfira o seguinte recurso como
policy-autoscaling-metrics-writer.yaml.Substitua o seguinte:
[SA_NAME]: o nome da conta de serviço.[PROJECT_ID]: o ID do seu Google Cloud projeto.
- Aplique a função à conta de serviço:
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- Transfira o seguinte recurso como
Também pode usar esta conta de serviço para recursos noutros projetos. Para ver instruções, consulte o artigo Ativar a representação de contas de serviço em vários projetos.
Permitir que os principais anexem contas de serviço personalizadas
Pode anexar uma conta de serviço personalizada quando cria um cluster ou um conjunto 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 Utilizador da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço personalizada a esse principal. Para conceder esta função, selecione uma das seguintes opções:
Consola
Na Google Cloud consola, aceda à página Contas de serviço:
No seletor de recursos, escolha o projeto que contém a sua conta de serviço personalizada.
Selecione a caixa de verificação da conta de serviço personalizada que criou para usar com os nós do GKE.
Clique em Gerir acesso. É aberto o painel Gerir acesso.
Clique em Adicionar responsável. O painel Conceder acesso é aberto.
No campo Novos responsáveis, especifique o responsável, como um grupo de administradores.
No menu pendente Selecionar uma função, selecione a função Utilizador da conta de serviço.
Clique em Guardar. O painel Conceder acesso é fechado.
Feche o painel Gerir acesso.
gcloud
Conceda a função de 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 o seguinte:
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
Nota: este passo requer o Config Connector. Siga as instruções de instalação para instalar o Config Connector no seu cluster.
Aplique a função iam.serviceAccountUser à sua conta de serviço. Transfira o seguinte recurso como policy-service-account-user.yaml. Substitua [SA_NAME]
e [PROJECT_ID] pelas suas próprias informações.
kubectl apply -f policy-service-account-user.yaml
Depois de conceder a função na conta de serviço, esses responsáveis podem usar essa conta de serviço para criar clusters e conjuntos de nós. Para mais informações, consulte os seguintes documentos:
- Crie um cluster do Autopilot
- Criar um cluster regional
- Adicione um conjunto de nós a um cluster Standard
Configure a utilização da conta de serviço em vários projetos
Se a conta de serviço do nó não estiver no mesmo projeto que o cluster, os agentes de serviço no projeto do cluster precisam de autorizações adicionais na conta de serviço. Para mais informações, consulte o artigo Contas de serviço de nós e agentes de serviço de projetos.
Para conceder as funções necessárias em contas de serviço de nós que não estão no projeto do cluster, siga estes passos:
- Para ativar a associação de contas de serviço entre projetos, atualize as políticas da sua organização.
Para conceder as funções necessárias na conta de serviço personalizada aos agentes de serviço no projeto do cluster, selecione uma das seguintes opções:
Consola
Na Google Cloud consola, aceda à página Contas de serviço.
Selecione a caixa de verificação da conta de serviço personalizada que criou para usar com os nós do GKE.
Clique em Gerir acesso. É aberto o painel Gerir acesso.
Conceda a função Criador de tokens de contas de serviço ao agente de serviço do Compute Engine no projeto do cluster:
- No painel Gerir acesso, clique em Adicionar principal. O painel Conceder acesso é aberto.
No campo Novos membros, especifique o endereço de email 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 seu projeto de cluster.No menu Selecionar uma função, selecione a função Criador de tokens de contas de serviço.
Clique em Guardar. O painel Conceder acesso é fechado.
Conceda a função de utilizador da conta de serviço ao agente de serviço do GKE no projeto do cluster:
- No painel Gerir acesso, clique em Adicionar principal. O painel Conceder acesso é aberto.
No campo Novos membros, especifique o endereço de email do agente de serviço do GKE no projeto do cluster:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comNo menu Selecionar uma função, selecione a função Utilizador da conta de serviço.
Clique em Guardar. O painel Conceder acesso é fechado.
Feche o painel Gerir acesso.
gcloud
Obtenha o número do projeto do projeto do cluster:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Substitua
CLUSTER_PROJECT_IDpelo ID do projeto do cluster.O resultado é semelhante a
123456789.Conceda a função
roles/iam.serviceAccountTokenCreatorà 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 o seguinte:
SA_NAME: o nome da conta de serviço personalizada.SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto que contém a sua conta de serviço personalizada.CLUSTER_PROJECT_NUMBER: o número do projeto do seu projeto de cluster.
Conceda a função
roles/iam.serviceAccountUserà 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
Permita a obtenção de imagens de repositórios privados
Se tiver imagens em repositórios privados do Artifact Registry, tem de conceder à conta de serviço do nó acesso a esses repositórios. Mesmo que use a conta de serviço do Compute Engine predefinida, pode ter de conceder à conta de serviço acesso ao seu repositório se este estiver noutro projeto.
Para extrair imagens privadas do Artifact Registry, conceda a
função Leitor do Artifact Registry
(roles/artifactregistry.reader) no repositório à conta de serviço do nó.
Consola
Na Google Cloud consola, aceda à página Repositórios.
Selecione a caixa de verificação do seu repositório.
Clique em Mostrar painel de informações. É aberto o painel de informações do repositório.
No separador Autorizações, clique em Adicionar principal. O painel Conceder acesso é aberto.
No campo Novos membros, especifique o endereço de email da conta de serviço do nó.
Clique em Selecionar uma função para abrir a caixa de diálogo de seleção de funções.
Selecione a função Leitor do Artifact Registry.
Clique em Guardar.
gcloud
Conceda a função de 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 o seguinte:
REPOSITORY_NAME: o nome do repositório do Artifact Registry.SERVICE_ACCOUNT_EMAIL: o endereço de email da sua conta de serviço do nó.REPOSITORY_PROJECT_ID: o ID do projeto do projeto que contém o seu repositório.
Config Connector
Nota: este passo requer o Config Connector. Siga as instruções de instalação para instalar o Config Connector no seu cluster.
Guarde o seguinte manifesto como
policy-artifact-registry-reader.yaml:Substitua o seguinte:
- SA_NAME: o nome da sua conta de serviço de IAM.
- PROJECT_ID: o ID do seu Google Cloud projeto.
- REPOSITORY_NAME: o nome do seu repositório do Artifact Registry.
Conceda a função Leitor do Artifact Registry à conta de serviço:
kubectl apply -f policy-artifact-registry-reader.yaml
O que se segue?
- Crie um cluster do Autopilot
- Crie um cluster regional
- Adicione um conjunto de nós a um cluster Standard