Este documento descreve como configurar e usar a autenticação de cluster de identidade de carga de trabalho para o Google Distributed Cloud (apenas software) em bare metal. Em vez de chaves de contas de serviço, a autenticação de clusters de identidade da carga de trabalho usa tokens de curta duração e a federação de identidades da carga de trabalho para criar e proteger os seus clusters. As credenciais de curta duração para a conta de serviço estão no formato de chaves de acesso OAuth 2.0. As chaves de acesso expiram após 1 hora por predefinição. Da mesma forma, os tokens de obtenção de imagens também expiram após 1 hora por predefinição.
Por outro lado, o modo com chave, o método padrão para criar e proteger clusters, usa chaves de contas de serviço transferidas. Quando cria um cluster autogerido (administrador, híbrido ou autónomo), especifica o caminho para as chaves transferidas. As chaves são, em seguida, armazenadas como segredos no cluster e em quaisquer clusters de utilizadores geridos. Por predefinição, as chaves de contas de serviço não expiram e representam um risco de segurança se não forem geridas corretamente. Para ver informações sobre a definição de um prazo de validade para as chaves de conta de serviço, consulte o artigo Prazos de validade das chaves geridas pelo utilizador.
A autenticação de cluster do Workload Identity oferece duas vantagens principais em relação à utilização de chaves de contas de serviço:
Segurança melhorada: as chaves de contas de serviço representam um risco de segurança se não forem geridas corretamente. Os tokens OAuth 2.0 e a federação de identidades da carga de trabalho são considerados alternativas de práticas recomendadas às chaves de contas de serviço. Para mais informações sobre tokens de contas de serviço, consulte o artigo Credenciais de contas de serviço de curta duração. Para mais informações sobre a federação de identidades da carga de trabalho, consulte o artigo Federação de identidades da carga de trabalho.
Manutenção reduzida: as chaves de contas de serviço requerem mais manutenção. Alternar e proteger regularmente estas chaves pode ser um encargo administrativo significativo.
A autenticação de cluster de identidade de carga de trabalho foi introduzida para pré-visualização com o lançamento 1.30 e está em GA para o lançamento 1.33 e superior. A autenticação de cluster do Workload Identity só pode ser ativada quando cria novos clusters. Não pode configurar um cluster existente para usar a autenticação de cluster de identidade de carga de trabalho durante uma atualização ou uma atualização principal. Para ver restrições adicionais, consulte a secção Limitações.
Esta página destina-se a administradores, arquitetos e operadores que configuram, monitorizam e gerem o ciclo de vida da infraestrutura tecnológica subjacente. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no Google Cloud conteúdo, consulte o artigo Funções de utilizador e tarefas comuns do GKE.
Antes de começar
Nas secções seguintes, cria contas de serviço e concede as funções necessárias para a autenticação de clusters de identidade da carga de trabalho. As instruções de configuração neste documento não substituem as instruções em Configurar Google Cloud recursos. São necessárias além dos pré-requisitos de instalação apenas de software padrão do Google Distributed Cloud. As contas de serviço necessárias para a autenticação de cluster de identidade de carga de trabalho são semelhantes às contas de serviço descritas em Configurar Google Cloud recursos, mas têm nomes únicos, pelo que não interferem com os clusters que usam as chaves da conta de serviço predefinidas.
As contas de serviço necessárias para a autenticação de clusters de identidade de carga de trabalho diferem para as ofertas de pré-visualização e DG, conforme descrito na tabela seguinte:
1.33 e posterior
| Conta de serviço | Finalidade | Funções |
|---|---|---|
admin-sa |
Use esta conta de serviço para gerar tokens. Cada token tem os privilégios associados às funções da conta de serviço. |
roles/gkehub.adminroles/iam.serviceAccountAdminroles/iam.serviceAccountTokenCreatorroles/logging.adminroles/monitoring.adminroles/resourcemanager.projectIamAdmin
|
baremetal-gcr |
O Google Distributed Cloud usa esta conta de serviço para transferir imagens de contentores do Artifact Registry. | Nenhum |
1,30-1,32
| Conta de serviço | Finalidade | Funções |
|---|---|---|
admin-sa |
Use esta conta de serviço para gerar tokens. Cada token tem os privilégios associados às funções da conta de serviço. |
roles/gkehub.adminroles/iam.serviceAccountAdminroles/iam.serviceAccountTokenCreatorroles/logging.adminroles/monitoring.admin
|
baremetal-controller |
O Connect Agent
usa esta conta de serviço para manter uma ligação entre o seu cluster e
Google Cloud e para registar os seus clusters com
uma frota.
Esta conta de serviço também atualiza os tokens da conta de serviço baremetal-gcr.
|
roles/gkehub.adminroles/monitoring.dashboardEditorroles/serviceusage.serviceUsageViewer
|
baremetal-cloud-ops |
O agente do Stackdriver usa esta conta de serviço para exportar registos e métricas de clusters para o Cloud Logging e o Cloud Monitoring. |
roles/kubernetesmetadata.publisherroles/logging.logWriterroles/monitoring.dashboardEditorroles/monitoring.metricWriterroles/monitoring.viewerroles/opsconfigmonitoring.resourceMetadata.writerroles/serviceusage.serviceUsageViewerroles/stackdriver.resourceMetadata.writer
|
baremetal-gcr |
O Google Distributed Cloud usa esta conta de serviço para transferir imagens de contentores do Artifact Registry. | Nenhum |
Configure contas de serviço
As secções seguintes contêm instruções para criar as contas de serviço necessárias e conceder-lhes as funções necessárias para a autenticação de clusters de identidade de carga de trabalho. Para ver uma lista das contas de serviço e das respetivas funções necessárias, consulte a tabela na secção anterior.
Crie contas de serviço
Para criar as contas de serviço para a autenticação de cluster de identidade da carga de trabalho, siga estes passos:
Na estação de trabalho de administração, inicie sessão na CLI Google Cloud:
gcloud auth loginCrie as contas de serviço necessárias para a autenticação de cluster de identidade de carga de trabalho:
O nome da conta de serviço
admin-saé arbitrário. Pode alterar o nome se causar um conflito no seu projeto. As outras contas de serviço para a autenticação de cluster de identidade de carga de trabalho têm nomes predeterminados que podem ser personalizados, se quiser.1.33 e posterior
gcloud iam service-accounts create admin-sa \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-gcr \ --project=PROJECT_IDSubstitua
PROJECT_IDpelo ID do seu projetoGoogle Cloud .1,30-1,32
gcloud iam service-accounts create admin-sa \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-controller \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-cloud-ops \ --project=PROJECT_ID gcloud iam service-accounts create baremetal-gcr \ --project=PROJECT_IDSubstitua
PROJECT_IDpelo ID do seu projetoGoogle Cloud .
Adicione associações de políticas de gestão de identidade e de acesso para contas de serviço
Siga estes passos para aplicar as associações de políticas de gestão de identidade e de acesso necessárias às novas contas de serviço:
1.33 e posterior
Adicione associações de políticas IAM para as funções necessárias para a
admin-saconta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/resourcemanager.projectIamAdmin
1,30-1,32
Adicione associações de políticas IAM para as funções necessárias para a
admin-saconta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.adminAdicione associações de políticas IAM para as funções necessárias para a
baremetal-controllerconta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/gkehub.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/serviceusage.serviceUsageViewerAdicione associações de políticas IAM para as funções necessárias para a
baremetal-cloud-opsconta de serviço:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/kubernetesmetadata.publisher gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.dashboardEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/opsconfigmonitoring.resourceMetadata.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/serviceusage.serviceUsageViewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/stackdriver.resourceMetadata.writerConceda à conta de serviço
baremetal-controllera capacidade de gerar chaves de acesso em nome da conta de serviçobaremetal-gcr:gcloud iam service-accounts add-iam-policy-binding \ baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Configure a autenticação
Os passos seguintes configuram o fluxo de autenticação que usa um token de curta duração para autenticar operações de cluster:
Na estação de trabalho de administração, inicie sessão na CLI Google Cloud:
gcloud auth loginNa estação de trabalho do administrador, crie e transfira uma chave para a
admin-saconta de serviço:Esta chave é necessária para autorizar o acesso à conta de serviço
admin-sa.gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=admin-sa@PROJECT_ID.iam.gserviceaccount.comSubstitua
TMP_KEY_FILE_PATHpelo caminho, incluindo o nome do ficheiro, do ficheiro de chave transferido.Na estação de trabalho do administrador, crie uma
GOOGLE_APPLICATION_CREDENTIALSvariável de ambiente com o valor da chave da conta de serviço transferida:export GOOGLE_APPLICATION_CREDENTIALS=TMP_KEY_FILE_PATHNa estação de trabalho do administrador, crie uma
GCP_ACCESS_TOKENvariável de ambiente com o valor de um token de acesso criado pelaadmin-saconta de serviço:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)Por predefinição, o token de acesso tem uma duração de 1 hora.
Verifique se o token é gerado pela conta de serviço
admin-sacom a data de validade correta:curl "https://oauth2.googleapis.com/tokeninfo?access_token=$GCP_ACCESS_TOKEN"A resposta deve incluir linhas semelhantes às seguintes:
... "exp": "1759512810", "expires_in": "3589", ...O valor de expiração está em segundos e deve ser inferior a
3600, o que indica que o token expira em menos de uma hora.
Configure a federação de identidades de cargas de trabalho para os seus clusters
Para conceder Google Cloud acesso com a federação de identidade da força de trabalho para o GKE, cria uma política de autorização do IAM que concede acesso a um Google Cloud recurso específico a um principal que corresponde à identidade da sua aplicação. Neste caso, a Workload Identity Federation concede acesso a operadores específicos no cluster. Para mais informações sobre a federação de identidade da carga de trabalho para o GKE, consulte o artigo Federação de identidade da carga de trabalho na documentação do IAM.
1.33 e posterior
Para versões de clusters em que a autenticação de clusters do Workload Identity está em disponibilidade geral, usa o comando bmctl configure
projects para configurar a federação de identidade da força de trabalho para os seus clusters. Este comando está incorporado nos passos para criar um cluster de administrador e criar um cluster de utilizador.
1,30-1,32
Para versões de clusters em que a autenticação de clusters do Workload Identity está em pré-visualização, tem de configurar manualmente a Workload Identity Federation para os seus clusters, conforme descrito nas secções seguintes.
Adicione vinculações de políticas IAM para o operador do cluster
Os seguintes comandos concedem à conta de serviço do Kubernetes anthos-cluster-operator a capacidade de usar a identidade da conta de serviço baremetal-controller e interagir com os recursos Google Cloud em nome do cluster:
Para cada cluster configurado para a autenticação de cluster do Workload Identity (ou planeado para usar a autenticação de cluster do Workload Identity), incluindo o cluster de arranque, conceda
anthos-cluster-operatorno cluster a capacidade de se fazer passar pela conta de serviçobaremetal-controller:No comando seguinte, o
principalSetconsiste no Workload Identity Pool e numa conta de serviço do Kubernetes,anthos-cluster-operator, no espaço de nomeskube-system.gcloud iam service-accounts add-iam-policy-binding \ baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/anthos-cluster-operator \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_IDSubstitua o seguinte:
PROJECT_NUM: o identificador único gerado automaticamente para o seu projeto.REGION: a localização da subscrição da frota para o seu cluster, que églobalpor predefinição. Para mais informações, consulte o artigo Localização da subscrição de frota.CLUSTER_NAME: o nome do cluster. Por predefinição, o nome do cluster de arranque ébmctl-MACHINE_NAME.
Valide as associações de políticas da conta de serviço
baremetal-controller:gcloud iam service-accounts get-iam-policy \ baremetal-controller@PROJECT_ID.iam.gserviceaccount.comA resposta deve ser semelhante à seguinte:
bindings: - members: - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/anthos-cluster-operator - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/anthos-cluster-operator - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/anthos-cluster-operator role: roles/iam.workloadIdentityUser etag: BwYoN3QLig0= version: 1
Adicione associações de políticas IAM para os operadores do Google Cloud Observability
Os seguintes comandos concedem às contas de serviço do Kubernetes do Google Cloud Observability a capacidade de usar a identidade da baremetal-cloud-opsconta de serviço Google Cloud e interagir com recursos em nome do cluster:
cloud-audit-logginggke-metrics-agentkubestore-collectormetadata-agentstackdriver-log-forwarder
Para cada cluster configurado para a autenticação de cluster de identidade de carga de trabalho (ou planeado para usar a autenticação de cluster de identidade de carga de trabalho), incluindo o cluster de arranque, conceda aos operadores do Google Cloud Observability no cluster a capacidade de se fazerem passar pela conta de serviço
baremetal-cloud-ops:Em cada um dos seguintes comandos, o
principalSetconsiste no Workload Identity Pool e numa conta de serviço do Kubernetes, comocloud-audit-logging, no espaço de nomeskube-system.gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/cloud-audit-logging \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/gke-metrics-agent \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/kubestore-collector \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/metadata-agent \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_ID gcloud iam service-accounts add-iam-policy-binding \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \ --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/stackdriver-log-forwarder \ --role=roles/iam.workloadIdentityUser \ --project=PROJECT_IDValide as associações de políticas da conta de serviço
baremetal-cloud-ops:gcloud iam service-accounts get-iam-policy \ baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.comA resposta deve ser semelhante à seguinte:
bindings: - members: - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/stackdriver-log-forwarder - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/stackdriver-log-forwarder - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/cloud-audit-logging - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/gke-metrics-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/kubestore-collector - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/metadata-agent - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/stackdriver-log-forwarder role: roles/iam.workloadIdentityUser etag: BwYhT4gL-dY= version: 1
Crie um cluster de administrador
Os passos para criar um cluster de administrador diferem ligeiramente para as ofertas de pré-visualização (versões 1.30 a 1.32) e GA (versões 1.33 e superiores). Os passos do GA usam o comando bmctl configure
projects para configurar a Workload Identity Federation para os seus clusters.
1.33 e posterior
A diferença de configuração de cluster mais óbvia para clusters que usam a autenticação de cluster de identidade de carga de trabalho é que não especifica caminhos para chaves de conta de serviço transferidas.
Quando preencher as definições do cluster no ficheiro de configuração, deixe os caminhos das chaves da conta de serviço em branco na secção de credenciais, conforme mostrado no exemplo seguinte:
gcrKeyPath: sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: gkeConnectRegisterServiceAccountKeyPath: cloudOperationsServiceAccountKeyPath: --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...Adicione a anotação
baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true"ao ficheiro de configuração do cluster:gcrKeyPath: sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: gkeConnectRegisterServiceAccountKeyPath: cloudOperationsServiceAccountKeyPath: --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME annotations: baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...Na estação de trabalho do administrador, atualize a variável de ambiente
GCP_ACCESS_TOKENcom uma chave de acesso recentemente obtida:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)Por predefinição, a chave de acesso tem uma duração de 3600 segundos (1 hora). Quando usa a autenticação de cluster de identidade de carga de trabalho, o
bmctlverifica a hora de expiração do token. Se a expiração do token estiver dentro de 1800 segundos (30 minutos),bmctlcomunica um erro e sai.Configure a federação de identidade da carga de trabalho para o cluster que está a criar:
bmctl configure projects --project-id=PROJECT_ID \ --admin-cluster=ADMIN_CLUSTER_NAMEExecute o comando
bmctl create clusterpara criar o cluster de administrador.
1,30-1,32
A diferença de configuração de cluster mais óbvia para clusters que usam a autenticação de cluster de identidade de carga de trabalho é que não especifica caminhos para chaves de conta de serviço transferidas.
Quando preencher as definições do cluster no ficheiro de configuração, deixe os caminhos das chaves da conta de serviço em branco na secção de credenciais, conforme mostrado no exemplo seguinte:
gcrKeyPath: sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: gkeConnectRegisterServiceAccountKeyPath: cloudOperationsServiceAccountKeyPath: --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...Na estação de trabalho do administrador, crie e transfira uma chave para a conta de serviço:
admin-saEsta chave é necessária para autorizar o acesso da conta de serviço
admin-sae deve eliminá-la imediatamente após a autorização da conta de serviço.gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=admin-sa@PROJECT_ID.iam.gserviceaccount.comSubstitua
TMP_KEY_FILE_PATHpelo caminho, incluindo o nome do ficheiro, do ficheiro de chave transferido.Autorize o acesso a Google Cloud com a conta de serviço
admin-sa:gcloud auth activate-service-account admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --key-file=TMP_KEY_FILE_PATHElimine o ficheiro de chave JSON transferido:
rm TMP_KEY_FILE_PATHO token de acesso tem uma duração curta, pelo que normalmente tem de o regenerar antes de executar comandos
bmctlpara operações de cluster, como criar, atualizar ou repor um cluster.Na estação de trabalho do administrador, crie uma
GCP_ACCESS_TOKENvariável de ambiente com o valor de um token de acesso criado pelaadmin-saconta de serviço:export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \ --impersonate-service-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com)Por predefinição, a chave de acesso tem uma duração de 3600 segundos (1 hora).
Execute o comando
bmctl create clusterpara criar o cluster de administrador.
Crie um cluster de utilizadores
Os passos para criar um cluster de administrador diferem ligeiramente para as ofertas de pré-visualização (versões 1.30 a 1.32) e GA (versões 1.33 e superiores). Os passos do GA usam o comando bmctl configure
projects para configurar a Workload Identity Federation para os seus clusters.
1.33 e posterior
Adicione a anotação
baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true"ao ficheiro de configuração do cluster:apiVersion: v1 kind: Namespace metadata: name: cluster-USER_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: USER_CLUSTER_NAME namespace: cluster-USER_CLUSTER_NAME annotations: baremetal.cluster.gke.io/enable-workload-identity-cluster-authentication: "true" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...O token de acesso tem uma duração curta, pelo que normalmente tem de o regenerar antes de executar comandos
bmctlpara operações de cluster, como criar, atualizar ou repor um cluster.Na estação de trabalho do administrador, atualize a variável de ambiente
GCP_ACCESS_TOKENcom uma chave de acesso recentemente obtida:export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)Por predefinição, a chave de acesso tem uma duração de 3600 segundos (1 hora).
Configure a federação de identidade da carga de trabalho para o cluster que está a criar:
bmctl configure projects --project-id=PROJECT_ID \ --user-clusters=USER_CLUSTER_NAMEUse
kubectlpara implementar o manifesto do cluster de utilizadores:kubectl apply -f USER_CLUSTER_CONFIG \ --kubeconfig ADMIN_KUBECONFIG
Substitua o seguinte:
USER_CLUSTER_CONFIG: o caminho do ficheiro de configuração do cluster de utilizadores.ADMIN_KUBECONFIG: o caminho do ficheiro kubeconfig do cluster de administrador.
1,30-1,32
Na estação de trabalho do administrador, crie e transfira uma chave para a
admin-saconta de serviço:Esta chave é necessária para autorizar o acesso da conta de serviço
admin-sae deve eliminá-la imediatamente após a autorização da conta de serviço.gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \ --iam-account=admin-sa@PROJECT_ID.iam.gserviceaccount.comSubstitua
TMP_KEY_FILE_PATHpelo caminho, incluindo o nome do ficheiro, do ficheiro de chave transferido.Autorize o acesso a Google Cloud com a conta de serviço
admin-sa:gcloud auth activate-service-account admin-sa@PROJECT_ID.iam.gserviceaccount.com \ --key-file=TMP_KEY_FILE_PATHElimine o ficheiro de chave JSON transferido:
rm TMP_KEY_FILE_PATHO token de acesso tem uma duração curta, pelo que normalmente tem de o regenerar antes de executar comandos
bmctlpara operações de cluster, como criar, atualizar ou repor um cluster.Na estação de trabalho do administrador, crie uma
GCP_ACCESS_TOKENvariável de ambiente com o valor de um token de acesso criado pelaadmin-saconta de serviço:export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \ --impersonate-service-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com)Por predefinição, a chave de acesso tem uma duração de 3600 segundos (1 hora).
Execute o comando
bmctl create clusterpara criar o cluster de utilizadores.
Outras operações de cluster
Para clusters que usam a autenticação de cluster de identidade de carga de trabalho, os seguintes comandos bmctl requerem que a variável de ambiente GCP_ACCESS_TOKEN seja definida como um token de acesso válido e ativo:
bmctl configure projectsbmctl create clusterbmctl reset clusterbmctl upgrade cluster
Se bmctl detetar que a variável de ambiente GCP_ACCESS_TOKEN foi definida, executa a validação do token:
Se o token for válido, o
bmctlusa-o para operações de cluster.Se o token não for válido, obtenha um novo:
O token de acesso tem uma duração curta, pelo que normalmente tem de o regenerar antes de executar comandos
bmctlpara operações de cluster, como criar, atualizar ou repor um cluster. Na estação de trabalho do administrador, atualize a variável de ambienteGCP_ACCESS_TOKENcom um token de acesso recuperado recentemente:1.33 e posterior
export GCP_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)1,30-1,32
export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \ --impersonate-service-account=admin-sa@PROJECT_ID.iam.gserviceaccount.com)Por predefinição, a chave de acesso tem uma duração de 3600 segundos (1 hora). Quando usa a autenticação de cluster de identidade de carga de trabalho, o
bmctlverifica a hora de expiração do token. Se a expiração do token estiver dentro de 1800 segundos (30 minutos),bmctlcomunica um erro e sai.
Personalização
Pode usar contas de serviço com nomes únicos para a autenticação de clusters de identidade de carga de trabalho, desde que tenham associações para as funções necessárias.
1.33 e posterior
Por predefinição, a autenticação de cluster de identidade da carga de trabalho para clusters da versão 1.33 e posteriores usa apenas a conta de serviço baremetal-gcr. Por isso, esta é a única conta de serviço que pode ser personalizada.
Certifique-se de que a conta de serviço que quer usar tem as funções identificadas na tabela em Antes de começar.
Anote o ficheiro de configuração do cluster para especificar o nome personalizado da conta de serviço de autenticação do cluster de identidade da carga de trabalho:
apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: my-cluster namespace: cluster-my-cluster annotations: ... baremetal.cluster.gke.io/gcr-service-account: "CUSTOM_AR_GSA" spec: type: admin profile: default anthosBareMetalVersion: 1.33.0-gke.799 ...
Substitua CUSTOM_AR_GSA pelo nome do email da conta de serviço usada pelo Google Distributed Cloud para transferir imagens de contentores do Artifact Registry.
1,30-1,32
Certifique-se de que as contas de serviço que quer usar têm as funções identificadas na tabela em Antes de começar.
Anote o ficheiro de configuração do cluster para especificar os nomes personalizados das contas de serviço do serviço de autenticação de cluster do Workload Identity:
A especificação de nomes personalizados permite-lhe usar contas de serviço existentes. Certifique-se de que os nomes das contas de serviço personalizadas que especificar são distintos entre si. Não suportamos a utilização de uma única conta de serviço para substituir duas ou mais das contas de serviço predefinidas.
apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: my-cluster namespace: cluster-my-cluster annotations: ... baremetal.cluster.gke.io/controller-service-account: "CUSTOM_CONTROLLER_GSA" baremetal.cluster.gke.io/cloud-ops-service-account: "CUSTOM_CLOUD_OPS_GSA" baremetal.cluster.gke.io/gcr-service-account: "CUSTOM_AR_GSA" spec: type: admin profile: default anthosBareMetalVersion: 1.30.0-gke.1930 ...
Substitua o seguinte:
CUSTOM_CONTROLLER_GSA: o nome do email da conta de serviço usada pelo agente Connect para manter uma ligação entre o seu cluster e o Google Cloud, e para registar os seus clusters.CUSTOM_CLOUD_OPS_GSA: o nome do email da conta de serviço usada pelo agente do Stackdriver para exportar registos e métricas de clusters para o Cloud Logging e o Cloud Monitoring.CUSTOM_AR_GSA: o nome do email da conta de serviço usada pelo Google Distributed Cloud para transferir imagens de contentores do Artifact Registry.
Limitações
As seguintes funcionalidades e capacidades não são suportadas quando usa a autenticação de cluster de identidade de carga de trabalho para o Google Distributed Cloud (apenas software) em hardware simples:
- Usar um servidor proxy
- VPC Service Controls
- Atualize os clusters do modo com chave existentes para usar a autenticação de cluster do Workload Identity
- Gestão do ciclo de vida do cluster através de clientes da API GKE On-Prem, como a Google Cloud CLI, o Terraform ou a Google Cloud consola