Conceda acesso do Config Sync à sua imagem OCI ou repositório Helm

Esta página descreve como autenticar o Config Sync no seu repositório de imagens OCI ou Helm. O Config Sync requer acesso só de leitura à sua fonte de verdade para poder ler as suas configurações, aplicá-las aos seus clusters e mantê-las sincronizadas.

Escolha um método de autenticação

O método de autenticação que usa depende do que é suportado para o seu tipo de origem.

A tabela seguinte resume os métodos de autenticação que pode usar com a sincronização de configuração:

Método Fontes suportadas Descrição Limitações
Sem autenticação Git, OCI e Helm Não é necessária nenhuma configuração adicional. Só funciona se a sua fonte de informação fidedigna for pública.
Par de chaves SSH Git Suportado pela maioria dos fornecedores de Git. Requer gestão de chaves. Não suportado para OCI nem Helm.
token Git, Helm Suportado pela maioria dos fornecedores de Git. Boa alternativa se a sua organização não permitir a utilização de chaves SSH. Suporta nome de utilizador e palavra-passe para o Helm. Requer gestão de tokens. Os tokens podem expirar. Não suportado para OCI.
Conta de serviço do Kubernetes OCI, Helm Usa o IAM para conceder acesso ao Artifact Registry diretamente a uma conta de serviço do Kubernetes. Requer que a Workload Identity Federation para o GKE esteja ativada no seu cluster. Não suportado para o Git.
Conta de serviço Google Git Usa o IAM, o que evita o armazenamento de credenciais em segredos do Kubernetes. Recomendado para o Secure Source Manager e os Cloud Source Repositories. Requer que a Workload Identity Federation para o GKE esteja ativada no seu cluster. Requer configuração antes e depois de instalar o Config Sync nos seus clusters. Não suportado para repositórios alojados fora do Secure Source Manager ou dos Cloud Source Repositories.
App GitHub Git Integração direta com o GitHub. Permite autorizações detalhadas. Apenas suportado para repositórios alojados no GitHub. Apenas suportado na versão 1.19.1 e posteriores do Config Sync.

A sincronização de configuração também suporta os seguintes métodos de autenticação. No entanto, estes métodos só são recomendados se não conseguir usar uma das opções indicadas na tabela anterior:

  • cookiefile: pode não ser suportado para todos os fornecedores do Git. Não suportado para OCI nem Helm.
  • Conta de serviço predefinida do Compute Engine (gcenode): não recomendado porque este método só funciona se a federação de identidades da carga de trabalho para o GKE estiver desativada. Suportado para Git, OCI e Helm.
  • Conta de serviço Google para Helm e OCI: suportada, mas não recomendada porque o método de conta de serviço do Kubernetes requer menos configuração.

Antes de começar

Antes de conceder acesso só de leitura ao Config Sync à sua fonte de verdade, conclua as seguintes tarefas:

Conceda acesso a uma imagem OCI

Esta secção descreve como conceder acesso só de leitura do Config Sync a imagens OCI através de um método de autenticação suportado.

Tem de armazenar imagens OCI no Artifact Registry para fazer a autenticação no Config Sync.

Use uma conta de serviço do Kubernetes

Para se autenticar com uma conta de serviço do Kubernetes, o seu cluster tem de ter a federação de identidades da carga de trabalho para o GKE ou a federação de identidades da carga de trabalho da frota para o GKE ativada.

Para conceder acesso só de leitura ao Config Sync à sua imagem OCI através de uma conta de serviço do Kubernetes, conclua os seguintes passos:

  1. Para obter as autorizações de que precisa para criar uma associação de políticas, peça ao seu administrador para lhe conceder a função IAM de administrador da conta de serviço (roles/iam.serviceAccountAdmin) na 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.

  2. Conceda a função de IAM Artifact Registry Reader (roles/artifactregistry.reader) à conta de serviço do Kubernetes que inclui a federação de identidades da carga de trabalho para o pool do GKE:

    • Conceda autorização ao nível do projeto se as mesmas autorizações se aplicarem a todos os repositórios no projeto.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Conceda autorização específica do repositório quando quiser que as contas de serviço tenham diferentes níveis de acesso para cada repositório no seu projeto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • FLEET_HOST_PROJECT_ID: se usar a Workload Identity Federation para o GKE, este valor é igual ao ID do projeto. Se usar a Workload Identity Federation para o GKE, este valor é o ID do projeto da frota na qual o seu cluster está registado.
    • REPOSITORY: o ID da imagem.
    • LOCATION: a localização regional ou multirregional do repositório.

Quando instala o Config Sync, use a conta de serviço do Kubernetes (k8sserviceaccount) como o tipo de autenticação.

Use uma conta de serviço predefinida do Compute Engine

Como alternativa a uma conta de serviço Google, se não tiver a Workload Identity Federation para o GKE ativada, pode usar uma conta de serviço do Compute Engine para autenticar.

Para usar uma conta de serviço predefinida do Compute Engine para conceder acesso só de leitura ao Config Sync ao seu repositório, conceda autorização de leitura da conta de serviço do Compute Engine ao Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto
  • PROJECT_NUMBER: o número do seu projeto.

Quando instala o Config Sync, use a conta de serviço do Compute Engine (gcenode) como o tipo de autenticação.

Conceda acesso a um repositório Helm

Esta secção descreve como conceder acesso de leitura ao Config Sync a gráficos Helm armazenados num repositório.

Use um token

Para usar um token para conceder acesso só de leitura ao Config Sync ao seu repositório Helm, crie um segredo que use o nome de utilizador e a palavra-passe do seu repositório Helm:

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

Substitua o seguinte:

  • SECRET_NAME: um nome para o seu segredo.
  • USERNAME: o seu nome de utilizador do repositório Helm.
  • PASSWORD: a palavra-passe do seu repositório Helm.

Quando instalar o Config Sync, use o token (token) como o tipo de autenticação. Também tem de especificar o nome do Secret no campo spec.helm.secretRef.name.

Use uma conta de serviço do Kubernetes

Para fazer a autenticação através de uma conta de serviço do Kubernetes, tem de cumprir os seguintes requisitos:

Para usar uma conta de serviço do Kubernetes para conceder acesso de leitura apenas ao Config Sync ao seu repositório Helm, conclua os seguintes passos:

  1. Para obter as autorizações de que precisa para criar uma associação de políticas, peça ao seu administrador para lhe conceder a função IAM de administrador da conta de serviço (roles/iam.serviceAccountAdmin) na 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.

  2. Para usar uma conta de serviço do Kubernetes para conceder acesso só de leitura ao Config Sync ao seu repositório Helm, conceda a função de IAM leitor do Artifact Registry (roles/artifactregistry.reader) à conta de serviço do Kubernetes que inclui a Federação do Workload Identity para o pool do GKE:

    • Conceda autorização ao nível do projeto se as mesmas autorizações se aplicarem a todos os repositórios no projeto.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Conceda autorização específica do repositório quando quiser que as contas de serviço tenham diferentes níveis de acesso para cada repositório no seu projeto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • FLEET_HOST_PROJECT_ID: se usar a Workload Identity Federation para o GKE, este valor é igual ao ID do projeto. Se usar a Workload Identity Federation para o GKE, este valor é o ID do projeto da frota na qual o seu cluster está registado.
    • REPOSITORY: o ID da imagem.
    • LOCATION: a localização regional ou multirregional do repositório.

Quando instala o Config Sync, use a conta de serviço do Kubernetes (k8sserviceaccount) como o tipo de autenticação.

Use uma conta de serviço predefinida do Compute Engine

Como alternativa a uma conta de serviço Google, se não tiver a Workload Identity Federation para o GKE ativada, pode usar uma conta de serviço do Compute Engine para autenticar.

Para usar uma conta de serviço predefinida do Compute Engine para conceder acesso só de leitura ao Config Sync ao seu repositório, conceda autorização de leitura da conta de serviço do Compute Engine ao Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto
  • PROJECT_NUMBER: o número do seu projeto.

Quando instala o Config Sync, use a conta de serviço do Compute Engine (gcenode) como o tipo de autenticação.

O que se segue?