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

Nesta página, descrevemos como autenticar o Config Sync no seu repositório de imagens OCI ou Helm. O Config Sync exige acesso somente leitura à sua fonte da verdade para ler as configurações, aplicá-las aos clusters e mantê-las sincronizadas.

Escolher um método de autenticação

O método de autenticação usado depende do que é compatível com seu tipo de origem.

A tabela a seguir resume os métodos de autenticação que podem ser usados com o Config Sync:

Método Fontes compatíveis Descrição Limitações
Sem autenticação Git, OCI, Helm Nenhuma configuração adicional é necessária. Só funciona se a fonte da verdade for pública.
Par de chaves SSH Git Compatível com a maioria dos provedores do Git. Exige gerenciamento de chaves. Não é compatível com OCI ou Helm.
token Git, OCI, Helm Compatível com a maioria dos provedores do Git. Boa alternativa se sua organização não permitir o uso de chaves SSH. Compatível com nome de usuário e senha para OCI e Helm. Exige gerenciamento de tokens. Os tokens podem expirar.
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. Exige que a Federação de Identidade da Carga de Trabalho para GKE esteja ativada no cluster. Não é compatível com o Git.
Conta de serviço do Google Git Usa o IAM, o que evita o armazenamento de credenciais em secrets do Kubernetes. Recomendado para o Secure Source Manager e o Cloud Source Repositories. Exige que a Federação de Identidade da Carga de Trabalho para GKE esteja ativada no cluster. Exige configuração antes e depois da instalação do Config Sync nos clusters. Indisponível para repositórios hospedados fora do Secure Source Manager ou do Cloud Source Repositories.
App GitHub Git Integração direta com o GitHub. Permite permissões refinadas. Só é compatível com repositórios hospedados no GitHub.

O Config Sync também é compatível com os seguintes métodos de autenticação. No entanto, eles só são recomendados se você não puder usar uma das opções listadas na tabela anterior:

  • cookiefile:pode não ser compatível com todos os provedores do Git. Não é compatível com OCI ou Helm.
  • Conta de serviço padrão do Compute Engine (gcenode): não é recomendada porque esse método só funciona se a Federação de Identidade da Carga de Trabalho para GKE estiver desativada. Compatível com Git, OCI e Helm.
  • Conta de serviço do Google para Helm e OCI:compatível, mas não recomendado porque o método da conta de serviço do Kubernetes exige menos configuração.

Antes de começar

Antes de conceder acesso somente leitura do Config Sync à sua fonte de verdade, conclua as seguintes tarefas:

Conceder acesso a uma imagem do OCI

Nesta seção, descrevemos como conceder acesso somente leitura do Config Sync a imagens do OCI usando um método de autenticação compatível.

É necessário armazenar imagens OCI no Artifact Registry para autenticar o Config Sync.

Usar um token

Para usar um token e conceder acesso somente leitura do Config Sync ao seu repositório OCI, crie um Secret que use o nome de usuário e a senha do repositório OCI:

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

Substitua:

  • SECRET_NAME: um nome para o Secret.
  • USERNAME: seu nome de usuário do repositório OCI.
  • PASSWORD: a senha do repositório OCI.

Ao instalar o Config Sync, use o token (token) como o tipo de autenticação. Também é necessário especificar o nome do Secret no campo spec.oci.secretRef.name.

Usar uma ServiceAccount do Kubernetes

Para autenticar com uma ServiceAccount do Kubernetes, o cluster precisa ter a Federação de Identidade da Carga de Trabalho para GKE ou a Federação de Identidade da Carga de Trabalho para GKE da frota ativada.

Para conceder acesso somente leitura do Config Sync à sua imagem do OCI usando uma ServiceAccount do Kubernetes, siga estas etapas:

  1. Para receber as permissões necessárias para criar uma vinculação de política, peça ao administrador que conceda a você os seguintes papéis do IAM:

    Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

  2. Conceda o papel de leitor do Artifact Registry (roles/artifactregistry.reader) no projeto ou repositório à ServiceAccount do Kubernetes:

    • Conceda permissão a todo o projeto se as mesmas permissões se aplicarem a todos os repositórios no projeto.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \
           --condition=None
      
    • Conceda permissã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 projeto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \
          --project=PROJECT_ID \
          --condition=None
      

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • FLEET_HOST_PROJECT_NUMBER: se você usa a Federação de Identidade da Carga de Trabalho para GKE, esse valor é o mesmo que o número do seu projeto. Se você usa a Federação de Identidade da Carga de Trabalho para GKE da frota, esse valor é o número do projeto da frota em que o cluster está registrado.
    • FLEET_HOST_PROJECT_ID: se você usa a Federação de Identidade da Carga de Trabalho para GKE, esse valor é igual ao ID do projeto. Se você usa a Federação de Identidade da Carga de Trabalho para GKE da frota, esse valor é o ID do projeto da frota em que o cluster está registrado.
    • KUBERNETES_SERVICEACCOUNT: a conta de serviço do Kubernetes do reconciliador. Na maioria dos casos, o valor é root-reconciler porque o Config Sync cria automaticamente um objeto RootSync chamado root-sync quando instalado com o console do Google Cloud ou a Google Cloud CLI. Caso contrário, use root-reconciler-ROOT_SYNC_NAME como o valor.
    • REPOSITORY: o ID do repositório.
    • LOCATION é o local regional ou multirregional do repositório.

Ao instalar o Config Sync, use a ServiceAccount do Kubernetes (k8sserviceaccount) como o tipo de autenticação.

Usar uma conta de serviço padrão do Compute Engine

Como alternativa a uma conta de serviço do Google, se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada, use uma conta de serviço do Compute Engine para autenticar.

Para usar uma conta de serviço padrão do Compute Engine e conceder ao Config Sync acesso somente leitura ao seu repositório, conceda à conta de serviço do Compute Engine permissão de leitura para o Artifact Registry:

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

Substitua:

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

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

Conceder acesso a um repositório do Helm

Esta seção descreve como conceder ao Config Sync acesso somente leitura aos gráficos do Helm armazenados em um repositório.

Usar um token

Para usar um token e conceder acesso somente leitura do Config Sync ao seu repositório do Helm, crie um Secret que use o nome de usuário e a senha do repositório do Helm:

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

Substitua:

  • SECRET_NAME: um nome para o Secret.
  • USERNAME: seu nome de usuário do repositório do Helm.
  • PASSWORD: a senha do repositório do Helm.

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

Usar uma ServiceAccount do Kubernetes

Para autenticar usando uma ServiceAccount do Kubernetes, é necessário atender aos seguintes requisitos:

Para usar uma ServiceAccount do Kubernetes e conceder acesso somente leitura do Config Sync ao seu repositório do Helm, siga estas etapas:

  1. Para receber as permissões necessárias para criar uma vinculação de política, peça ao administrador que conceda a você os seguintes papéis do IAM:

    Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

    Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

  2. Conceda o papel de leitor do Artifact Registry (roles/artifactregistry.reader) no projeto ou repositório à ServiceAccount do Kubernetes:

    • Conceda permissão a todo o projeto se as mesmas permissões se aplicarem a todos os repositórios no projeto.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \
           --condition=None
      
    • Conceda permissã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 projeto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="principal://iam.googleapis.com/projects/FLEET_HOST_PROJECT_NUMBER/locations/global/workloadIdentityPools/FLEET_HOST_PROJECT_ID.svc.id.goog/subject/ns/config-management-system/sa/KUBERNETES_SERVICEACCOUNT" \
          --project=PROJECT_ID \
          --condition=None
      

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • FLEET_HOST_PROJECT_NUMBER: se você usa a Federação de Identidade da Carga de Trabalho para GKE, esse valor é o mesmo que o número do seu projeto. Se você usa a Federação de Identidade da Carga de Trabalho para GKE da frota, esse valor é o número do projeto da frota em que o cluster está registrado.
    • FLEET_HOST_PROJECT_ID: se você usa a Federação de Identidade da Carga de Trabalho para GKE, esse valor é igual ao ID do projeto. Se você usa a Federação de Identidade da Carga de Trabalho para GKE da frota, esse valor é o ID do projeto da frota em que o cluster está registrado.
    • KUBERNETES_SERVICEACCOUNT: a conta de serviço do Kubernetes do reconciliador. Na maioria dos casos, o valor é root-reconciler porque o Config Sync cria automaticamente um objeto RootSync chamado root-sync quando instalado com o console do Google Cloud ou a Google Cloud CLI. Caso contrário, use root-reconciler-ROOT_SYNC_NAME como o valor.
    • REPOSITORY: o ID do repositório.
    • LOCATION é o local regional ou multirregional do repositório.

Ao instalar o Config Sync, use a ServiceAccount do Kubernetes (k8sserviceaccount) como o tipo de autenticação.

Usar uma conta de serviço padrão do Compute Engine

Como alternativa a uma conta de serviço do Google, se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada, use uma conta de serviço do Compute Engine para autenticar.

Para usar uma conta de serviço padrão do Compute Engine e conceder ao Config Sync acesso somente leitura ao seu repositório, conceda à conta de serviço do Compute Engine permissão de leitura para o Artifact Registry:

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

Substitua:

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

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

A seguir