Este documento explica as Google Cloud contas de serviço e as chaves de que precisa para criar clusters na sua implementação do Google Distributed Cloud.
As instruções aqui apresentadas estão completas. Para uma introdução mais breve à utilização de uma conta de serviço, consulte o artigo Configure a infraestrutura mínima.
Antes de começar
Vista geral das contas de serviço
Antes de criar os clusters de administrador e de utilizador, tem de ter estas contas de serviço:
- Conta de serviço de acesso a componentes
- Associe e registe uma conta de serviço
- Conta de serviço de registo e monitorização
Consoante as funcionalidades que quer ativar, também pode ter de ter algumas contas de serviço opcionais.
Compreender as contas de serviço e os Google Cloud projetos
Quando cria uma conta de serviço, associa-a a um Google Cloud projeto.
Este Google Cloud projeto é denominado projeto principal da conta de serviço. Neste documento, todos os comandos gcloud iam service-accounts create
usam a variável de marcador de posição PROJECT_ID
, que é o ID do projeto principal da conta de serviço.
Pode determinar o projeto principal de uma conta de serviço consultando o endereço de email da conta de serviço. Por exemplo, aqui está o endereço de email
de uma conta de serviço denominada logger
. O projeto principal é alice-123
.
logger@alice-123.iam.gserviceaccount.com
Quando concede uma função de gestão de identidade e de acesso (IAM) a uma conta de serviço, concede a função à conta de serviço numGoogle Cloud projeto específico. Isto segue o padrão geral de conceder uma função a um principal num recurso.
Por exemplo, pode conceder a função bigquery.dataEditor
à conta de serviço logger@alice-123.iam.gserviceaccount.com
no projeto bob-456
. Neste caso, a conta de serviço é o princípio e o projeto é o recurso. Google Cloud
Pode conceder uma função a uma conta de serviço num Google Cloud projeto que não seja o projeto principal da conta de serviço, ou os projetos podem ser os mesmos. Para permitir esta flexibilidade, neste documento, os comandos gcloud projects add-iam-policy-binding
para a conta de serviço de acesso aos componentes, a conta de serviço de registo de associação e a conta de serviço de registo e monitorização usam a variável de marcador de posição FLEET_HOST_PROJECT_ID
. Este é o ID do projeto anfitrião da frota.
O ID que especificar como FLEET_HOST_PROJECT_ID
nos comandos gcloud projects add-iam-policy-binding
tem de ser o mesmo.
Autorizações para conceder funções a contas de serviço
Cada uma das suas contas de serviço tem de receber determinadas funções noGoogle Cloud projeto relevante. Por exemplo, a sua conta de serviço connect-register tem de ter a função gkehub.editor
no projeto anfitrião da frota.
Para conceder funções num Google Cloud projeto, tem de
ter determinadas autorizações no projeto. Para obter detalhes, consulte a secção
roles/resourcemanager.projectIamAdmin
em
Compreender as funções.
Se tiver as autorizações necessárias, pode conceder as funções. Caso contrário, outra pessoa da sua organização tem de lhe conceder as funções.
Usar o gkeadm
para criar automaticamente contas de serviço
Esta página mostra como criar manualmente contas de serviço e conceder funções a contas de serviço. Em alternativa à execução manual destes passos, pode usar a ferramenta de linha de comandos gkeadm
para criar algumas das contas de serviço e conceder funções quando cria uma estação de trabalho de administrador. Mesmo que permita que o gkeadm
crie contas de serviço, tem de criar manualmente a conta de serviço de acesso aos componentes e conceder as funções do IAM necessárias, conforme descrito na secção seguinte. Para mais informações acerca das contas de serviço que o gkeadm
pode criar, consulte o artigo Crie a sua estação de trabalho de administrador.
Conta de serviço de acesso a componentes
O Google Distributed Cloud usa esta conta de serviço para transferir componentes do cluster em seu nome a partir do Artifact Registry.
Crie uma conta de serviço de acesso a componentes:
gcloud iam service-accounts create component-access-sa \ --display-name "Component Access Service Account" \ --project PROJECT_ID
Substitua
PROJECT_ID
pelo ID do Google Cloud projeto que quer que seja o projeto principal da sua conta de serviço.Obtenha o endereço de email da conta de serviço de acesso ao componente criada recentemente:
gcloud iam service-accounts list \ --project PROJECT_ID
Crie uma chave JSON para a sua conta de serviço de acesso a componentes:
gcloud iam service-accounts keys create component-access-key.json \ --iam-account COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL
Substitua
COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL
pelo endereço de email da sua conta de serviço de acesso aos componentes.
Atribua funções à conta de serviço de acesso aos componentes
A conta de serviço de acesso aos componentes tem de ter as seguintes funções de IAM no seu projeto. Estas funções são necessárias para que o Google Distributed Cloud possa fazer verificações prévias:
serviceusage.serviceUsageViewer
iam.roleViewer
iam.serviceAccountViewer
compute.viewer
Para conceder as funções:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \ --role "roles/serviceusage.serviceUsageViewer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.roleViewer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.serviceAccountViewer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \ --role "roles/compute.viewer"
Substitua FLEET_HOST_PROJECT_ID
pelo ID do projeto anfitrião da sua frota. Pode ser o mesmo projeto no qual a conta de serviço foi criada ou pode ser um projeto diferente. O ID do projeto que especificar
aqui tem de ser o mesmo ID que especificar quando conceder funções do IAM
à conta de serviço connect-register e à conta de serviço
logging-monitoring.
Associe e registe uma conta de serviço
O Google Distributed Cloud usa esta conta de serviço para registar os seus clusters numa frota.
Crie uma conta de serviço connect-register:
gcloud iam service-accounts create connect-register-sa \ --display-name "Connect-register Service Account" \ --project PROJECT_ID
Substitua
PROJECT_ID
pelo ID do Google Cloud projeto que quer que seja o principal da sua conta de serviço connect-register.Obtenha o endereço de email da conta de serviço de registo de ligação criada recentemente:
gcloud iam service-accounts list \ --project PROJECT_ID
Crie uma chave JSON para a sua conta de serviço connect-register:
gcloud iam service-accounts keys create connect-register-key.json \ --iam-account CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL
Substitua
CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL
pelo endereço de email da sua conta de serviço connect-register.Conceda a função
gkehub.editor
à sua conta de serviço connect-register:gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL" \ --role "roles/gkehub.editor"
O ID do projeto que especificar aqui tem de ser o mesmo ID que especificar quando conceder funções de IAM à conta de serviço de acesso aos componentes e à conta de serviço de registo e monitorização.
Conta de serviço de registo e monitorização
O Google Distributed Cloud usa esta conta de serviço para exportar registos e métricas de clusters para o Cloud Logging e o Cloud Monitoring.
Crie uma conta de serviço de registo e monitorização:
gcloud iam service-accounts create logging-monitoring-sa \ --display-name "Logging-monitoring Service Account" \ --project=PROJECT_ID
Substitua
PROJECT_ID
pelo ID do projeto que quer que seja o principal da sua conta de serviço de registo e monitorização.Google CloudObtenha o endereço de email da conta de serviço de monitorização de registos criada recentemente:
gcloud iam service-accounts list \ --project PROJECT_ID
Crie uma chave JSON para a sua conta de serviço de registo e monitorização:
gcloud iam service-accounts keys create logging-monitoring-key.json \ --iam-account LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL
Substitua
LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL
pelo endereço de email da sua conta de serviço de registo e monitorização.
Conceda funções à sua conta de serviço de monitorização de registos
A sua conta de serviço de registo e monitorização tem de receber as seguintes funções no seu projeto:
opsconfigmonitoring.resourceMetadata.writer
logging.logWriter
monitoring.metricWriter
monitoring.dashboardEditor
kubernetesmetadata.publisher
Para conceder as funções necessárias à sua conta de serviço de monitorização de registos:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/opsconfigmonitoring.resourceMetadata.writer" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/logging.logWriter" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.metricWriter" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.dashboardEditor" gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \ --role "roles/kubernetesmetadata.publisher"
O ID do projeto que especificar aqui tem de ser o mesmo ID que especificar quando concede funções do IAM à conta de serviço de acesso aos componentes e à conta de serviço de registo de ligação.
Contas de serviço opcionais
As contas de serviço descritas nesta secção são opcionais.
Conta de serviço de registo de auditoria
O Google Distributed Cloud usa esta conta de serviço para enviar registos de auditoria do Kubernetes do seu cluster para os registos de auditoria da nuvem.
Se planeia criar clusters com a funcionalidade de cluster avançada ativada, (que é necessária para configurar domínios de topologia), use a conta de serviço e a chave de registo e monitorização para o registo de auditoria em vez de criar outra conta de serviço.
Crie uma conta de serviço de registo de auditoria:
gcloud iam service-accounts create audit-logging-sa \ --project PROJECT_ID
Substitua
PROJECT_ID
pelo ID do projeto que quer que seja o principal da sua conta de serviço de registo de auditoria.Google CloudObtenha o endereço de email da conta de serviço de registo de auditoria recém-criada:
gcloud iam service-accounts list \ --project PROJECT_ID
Crie uma chave JSON para a sua conta de serviço de registo de auditoria:
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
Substitua
AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
pelo endereço de email da sua conta de serviço de registo de auditoria.
Não precisa de conceder funções à sua conta de serviço de registo de auditoria.
Conta de serviço da Autorização binária
O Google Distributed Cloud usa esta conta de serviço para chamar a API Binary Authorization.
Para ver informações sobre como criar uma conta de serviço da Autorização binária, consulte o artigo Autorização binária no GKE on-prem.
O que se segue?
Crie uma estação de trabalho de administrador