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:
Prepare ou tenha acesso a uma imagem OCI ou um repositório Helm em que você armazena os arquivos de configuração que quer que o Config Sync sincronize. Para saber mais, acesse estes recursos:
- Adicionar configs a uma fonte de verdade: informações conceituais sobre configurações.
- Práticas recomendadas do GitOps: dicas e práticas recomendadas gerais para organizar e gerenciar seu repositório.
- Usar um repositório não estruturado: recomendações para usar e organizar um repositório não estruturado.
Crie ou tenha acesso a um cluster do GKE. Antes de criar um cluster, analise os requisitos e as recomendações de configuração do cluster para o Config Sync.
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:
-
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:
-
Conceder acesso a todo o projeto:
Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin) no projeto -
Conceda acesso específico ao repositório:
Administrador do Artifact Registry (
roles/artifactregistry.admin) no repositório
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.
-
Conceder acesso a todo o projeto:
Administrador do IAM do projeto (
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=NoneConceda 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-reconcilerporque o Config Sync cria automaticamente um objetoRootSyncchamadoroot-syncquando instalado com o console do Google Cloud ou a Google Cloud CLI. Caso contrário, useroot-reconciler-ROOT_SYNC_NAMEcomo 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:
- Seu repositório está no Artifact Registry.
- O cluster tem 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 usar uma ServiceAccount do Kubernetes e conceder acesso somente leitura do Config Sync ao seu repositório do Helm, siga estas etapas:
-
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:
-
Conceder acesso a todo o projeto:
Administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin) no projeto -
Conceda acesso específico ao repositório:
Administrador do Artifact Registry (
roles/artifactregistry.admin) no repositório
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.
-
Conceder acesso a todo o projeto:
Administrador do IAM do projeto (
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=NoneConceda 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-reconcilerporque o Config Sync cria automaticamente um objetoRootSyncchamadoroot-syncquando instalado com o console do Google Cloud ou a Google Cloud CLI. Caso contrário, useroot-reconciler-ROOT_SYNC_NAMEcomo 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.