Alternar chaves de contas de serviço

Esta página descreve como alternar as chaves das seguintes contas de serviço:

Para alternar as chaves da conta de serviço:

  1. Crie um diretório para armazenar uma cópia de segurança dos seus segredos atuais:

    mkdir backup
  2. Tenha em atenção as seguintes informações para a conta de serviço relevante:

    Acesso aos componentes

    Cluster Secreto Espaço de nomes
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Administrador private-registry-creds kube-system
    Utilizador private-registry-creds kube-system
    • Se não estiver a usar um registo privado, o private-registry-credssegredo contém a chave para a sua conta de serviço de acesso aos componentes.
    • Se estiver a usar um registo privado, o segredo contém as credenciais para o seu registo privado e não a chave da conta de serviço de acesso aos componentes.private-registry-creds

    Connect-register

    Cluster Secreto Espaço de nomes
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt

    Registo e monitorização

    Cluster Secreto Espaço de nomes
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Utilizador google-cloud-credentials kube-system
    Utilizador stackdriver-service-account-key knative-serving

    Registo de auditoria

    Cluster Secreto Espaço de nomes
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Administrador kube-apiserver CLUSTER_NAME

    Stackdriver

    Cluster Secreto Espaço de nomes
    Administrador admin-cluster-creds kube-system
    Administrador user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt
    Utilizador google-cloud-credentials kube-system
    Utilizador stackdriver-service-account-key knative-serving
  3. Crie uma cópia de segurança de cada segredo com o seguinte comando:

    kubectl get secret SECRET --namespace NAMESPACE \
        --kubeconfig KUBECONFIG -o json > backup/SECRET-NAMESPACE.json

    Substitua o seguinte:

    • NAMESPACE: o espaço de nomes onde o segredo está localizado. Por exemplo, kube-system.
    • KUBECONFIG: o caminho para o ficheiro kubeconfig do cluster de administrador ou de utilizador.
    • SECRET: o nome do segredo. Por exemplo, admin-cluster-creds.

    Por exemplo, execute os seguintes comandos para a conta do serviço de registo de auditoria:

    kubectl get secret admin-cluster-creds --namespace kube-system \
            --kubeconfig KUBECONFIG -o json > backup/admin-cluster-creds-kube-system.json
    
    kubectl get secret user-cluster-creds --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/user-cluster-creds-NAMESPACE.json
    
    kubectl get secret kube-apiserver --namespace NAMESPACE \
            --kubeconfig KUBECONFIG -o json > backup/kube-apiserver-NAMESPACE.json
  4. Para criar um novo ficheiro de chave de conta de serviço, execute o seguinte comando:

    gcloud iam service-accounts keys create NEW_KEY_FILE --iam-account IAM_ACCOUNT

    Substitua o seguinte:

    • NEW_KEY_FILE: o nome do novo ficheiro de chave da conta de serviço
    • IAM_ACCOUNT: o endereço de email da conta de serviço
  5. No ficheiro de configuração do cluster de administrador, encontre o campo componentAccessServiceAccountKeyPath, a secção gkeConnect, a secção stackdriver e a secção cloudAuditLogging. Nesses locais, substitua os caminhos para os ficheiros de chaves de contas de serviço.

  6. No ficheiro de configuração do cluster de utilizadores, encontre o campo componentAccessServiceAccountKeyPath, a secção gkeConnect, a secção stackdriver e a secção cloudAudigLogging. Nesses locais, substitua os caminhos para os ficheiros de chaves da conta de serviço.

  7. Guarde as alterações que fez executando os seguintes comandos:

    Pode rodar as chaves de um componente de cada vez ou rodar todas as chaves em simultâneo definindo o componente como sakeys.

    gkectl update credentials COMPONENT \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG \
        --admin-cluster
    
    gkectl update credentials COMPONENT \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG
    

    Substitua o seguinte:

    • COMPONENT: um dos seguintes:

      • componentaccess
      • register
      • cloudauditlogging
      • stackdriver
      • sakeys (roda todas as chaves de componentes)
    • ADMIN_CLUSTER_KUBECONFIG: o caminho para o ficheiro kubeconfig do cluster de administrador.

    • ADMIN_CLUSTER_CONFIG: o caminho para o ficheiro de configuração do cluster de administrador.

    • USER_CLUSTER_CONFIG: o caminho para o ficheiro de configuração do cluster do utilizador.

Recriação do nó

Algumas rotações de chaves de contas de serviço podem demorar mais tempo porque é necessária a recriação do nó:

Conta de serviço É necessária a recriação de nós
Acesso a componentes Se usar o Artifact Registry: sim
Se usar um registo privado: não
Registo de auditoria Cluster de administrador: sim, mas apenas nós do plano de controlo
Cluster de utilizador com kubeception: não
Cluster de utilizador com Controlplane V2: sim, mas apenas nós do plano de controlo
Registo-monitorização Não
Connect-register Não

Para uma rotação de chaves que requer a recriação de nós, os nós são substituídos num processo de atualização contínua, ou seja, os nós são recriados um a um.

O possível tempo de inatividade durante uma rotação de chaves é semelhante ao tempo de inatividade de uma atualização do cluster. Para ver detalhes, consulte o artigo Tempo de inatividade durante as atualizações.

Restaurar cópias de segurança

Se precisar de restaurar as cópias de segurança dos segredos que criou anteriormente, execute o seguinte comando:

kubectl apply -f backup/

Diferenças avançadas de clusters para a rotação de chaves de contas de serviço

O comando gkectl update credentials só é parcialmente suportado para clusters avançados. A tabela seguinte apresenta as variações de comandos suportadas e não suportadas:

Comando Descrição Apoio técnico
gkectl update credentials certificate-authorities rotate Rode as autoridades de certificação. Suportado
gkectl update credentials certificate-authorities status (Pré-visualização) Veja o estado de rotação das autoridades de certificação. Suportado
gkectl update credentials certificate-authorities update-kubeconfig Transfira um ficheiro kubeconfig com o certificado de cliente mais recente. Suportado
gkectl update credentials cloudauditlogging Atualize as credenciais dos registos de auditoria do Cloud. Não suportado
gkectl update credentials componentaccess Atualize as credenciais da chave da conta de serviço de acesso aos componentes para os clusters criados com o Google Distributed Cloud para VMware. Suportado
gkectl update credentials f5bigip Atualize as credenciais do balanceador de carga F5 BIG-IP. Não necessário
gkectl update credentials ksa-signing-key rotate Alterne a chave de assinatura do token da conta de serviço do Kubernetes (KSA). Não suportado
gkectl update credentials ksa-signing-key status Veja o estado de uma rotação de chaves de assinatura de tokens da KSA em curso. Não suportado
gkectl update credentials Atualize as credenciais do cluster. Suportado
gkectl update credentials privateregistry Atualize as credenciais do registo privado para um cluster. Suportado
gkectl update credentials register Atualize as credenciais da chave da conta de serviço de registo. Suportado
gkectl update credentials sakeys Atualize as credenciais das chaves de contas de serviço para um cluster. Suportado
gkectl update credentials stackdriver (Pré-visualização) Atualize as credenciais da observabilidade do Google Cloud. Suportado
gkectl update credentials vsphere Atualize as credenciais do vSphere para um cluster. Suportado

Para uma lista abrangente das funcionalidades e capacidades do Google Distributed Cloud para VMware que são ou não suportadas para clusters avançados, consulte o artigo Diferenças ao executar clusters avançados.