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.admin roles/iam.serviceAccountAdmin roles/iam.serviceAccountTokenCreator roles/logging.admin roles/monitoring.admin roles/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.admin roles/iam.serviceAccountAdmin roles/iam.serviceAccountTokenCreator roles/logging.admin roles/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.admin roles/monitoring.dashboardEditor roles/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.publisher roles/logging.logWriter roles/monitoring.dashboardEditor roles/monitoring.metricWriter roles/monitoring.viewer roles/opsconfigmonitoring.resourceMetadata.writer roles/serviceusage.serviceUsageViewer roles/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 login
Crie 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_ID
Substitua
PROJECT_ID
pelo 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_ID
Substitua
PROJECT_ID
pelo 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-sa
conta 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-sa
conta 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
Adicione associações de políticas IAM para as funções necessárias para a
baremetal-controller
conta 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.serviceUsageViewer
Adicione associações de políticas IAM para as funções necessárias para a
baremetal-cloud-ops
conta 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.writer
Conceda à conta de serviço
baremetal-controller
a 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 login
Na estação de trabalho do administrador, crie e transfira uma chave para a
admin-sa
conta 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.com
Substitua
TMP_KEY_FILE_PATH
pelo caminho, incluindo o nome do ficheiro, do ficheiro de chave transferido.Na estação de trabalho do administrador, crie uma
GOOGLE_APPLICATION_CREDENTIALS
variável de ambiente com o valor da chave da conta de serviço transferida:export GOOGLE_APPLICATION_CREDENTIALS=TMP_KEY_FILE_PATH
Na estação de trabalho do administrador, crie uma
GCP_ACCESS_TOKEN
variável de ambiente com o valor de um token de acesso criado pelaadmin-sa
conta 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-sa
com 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-operator
no cluster a capacidade de se fazer passar pela conta de serviçobaremetal-controller
:No comando seguinte, o
principalSet
consiste 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_ID
Substitua 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 églobal
por 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.com
A 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-ops
conta de serviço Google Cloud e interagir com recursos em nome do cluster:
cloud-audit-logging
gke-metrics-agent
kubestore-collector
metadata-agent
stackdriver-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
principalSet
consiste 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_ID
Valide 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.com
A 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_TOKEN
com 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
bmctl
verifica a hora de expiração do token. Se a expiração do token estiver dentro de 1800 segundos (30 minutos),bmctl
comunica 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_NAME
Execute o comando
bmctl create cluster
para 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-sa
Esta chave é necessária para autorizar o acesso da conta de serviço
admin-sa
e 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.com
Substitua
TMP_KEY_FILE_PATH
pelo 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_PATH
Elimine o ficheiro de chave JSON transferido:
rm TMP_KEY_FILE_PATH
O token de acesso tem uma duração curta, pelo que normalmente tem de o regenerar antes de executar comandos
bmctl
para operações de cluster, como criar, atualizar ou repor um cluster.Na estação de trabalho do administrador, crie uma
GCP_ACCESS_TOKEN
variável de ambiente com o valor de um token de acesso criado pelaadmin-sa
conta 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 cluster
para 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
bmctl
para 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_TOKEN
com 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_NAME
Use
kubectl
para 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-sa
conta de serviço:Esta chave é necessária para autorizar o acesso da conta de serviço
admin-sa
e 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.com
Substitua
TMP_KEY_FILE_PATH
pelo 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_PATH
Elimine o ficheiro de chave JSON transferido:
rm TMP_KEY_FILE_PATH
O token de acesso tem uma duração curta, pelo que normalmente tem de o regenerar antes de executar comandos
bmctl
para operações de cluster, como criar, atualizar ou repor um cluster.Na estação de trabalho do administrador, crie uma
GCP_ACCESS_TOKEN
variável de ambiente com o valor de um token de acesso criado pelaadmin-sa
conta 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 cluster
para 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 projects
bmctl create cluster
bmctl reset cluster
bmctl 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
bmctl
usa-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
bmctl
para 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_TOKEN
com 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
bmctl
verifica a hora de expiração do token. Se a expiração do token estiver dentro de 1800 segundos (30 minutos),bmctl
comunica 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