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

Nesta página, descrevemos como autenticar o Config Sync na sua imagem OCI ou repositório 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 fonte.

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 Não é necessário fazer nenhuma configuração adicional. Só funciona se sua fonte de verdade for pública.
Par de chaves SSH Git Compatível com a maioria dos provedores do Git. Requer gerenciamento de chaves. Não é compatível com OCI ou Helm.
token Git, Helm Compatível com a maioria dos provedores do Git. Uma boa alternativa se sua organização não permitir o uso de chaves SSH. Compatível com nome de usuário e senha para Helm. Exige gerenciamento de tokens. Os tokens podem expirar. Não é compatível com a 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. Exige que a federação de identidade da carga de trabalho do 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 do GKE esteja ativada no cluster. Requer configuração antes e depois da instalação do Config Sync nos clusters. Não é compatível com 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 detalhadas. Só é compatível com repositórios hospedados no GitHub. Compatível apenas com o Config Sync versão 1.19.1 e mais recentes.

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 o 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 de 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 OCI

Esta seção descreve como conceder ao Config Sync acesso somente leitura 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 uma conta de serviço do Kubernetes

Para autenticar com uma conta de serviço 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 da frota para GKE ativada.

Para conceder acesso somente leitura do Config Sync à sua imagem do OCI usando uma conta de serviço 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 para conceder a você o papel do IAM de Administrador da conta de serviço (roles/iam.serviceAccountAdmin) na conta de serviço. 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 do IAM de leitor do Artifact Registry (roles/artifactregistry.reader) à conta de serviço do Kubernetes que inclui o pool da Federação de Identidade da Carga de Trabalho para GKE:

    • 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="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • 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="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • 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.
    • REPOSITORY: o ID da imagem.
    • LOCATION é o local regional ou multirregional do repositório.

Ao instalar o Config Sync, use a conta de serviço 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 acesso somente leitura do Config Sync 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 conta de serviço do Kubernetes

Para autenticar usando uma conta de serviço do Kubernetes, você precisa atender aos seguintes requisitos:

Para usar uma conta de serviço do Kubernetes e conceder ao Config Sync acesso somente leitura 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 para conceder a você o papel do IAM de Administrador da conta de serviço (roles/iam.serviceAccountAdmin) na conta de serviço. 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. Para usar uma conta de serviço do Kubernetes e conceder ao Config Sync acesso somente leitura ao seu repositório do Helm, conceda o papel do IAM de leitor do Artifact Registry (roles/artifactregistry.reader) à conta de serviço do Kubernetes que inclui o pool da Federação de Identidade da Carga de Trabalho para GKE:

    • 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="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • 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="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • 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.
    • REPOSITORY: o ID da imagem.
    • LOCATION é o local regional ou multirregional do repositório.

Ao instalar o Config Sync, use a conta de serviço 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