Nesta página, descrevemos como autenticar o Config Sync no seu repositório Git. 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.
Autenticação com pacotes da frota
Se você usa pacotes de frota, não precisa seguir as instruções nesta página. Os pacotes de frota usam o Cloud Build para autenticar no Git, o que permite autenticar uma vez por projeto para que não seja necessário conceder acesso sempre que você instala o Config Sync em um cluster.
Antes de começar
Antes de conceder acesso somente leitura do Config Sync ao seu repositório Git, conclua as seguintes tarefas:
Prepare ou tenha acesso a um repositório Git onde você armazena os arquivos de configuração que quer que o Config Sync sincronize. Para saber mais, acesse os recursos a seguir (links em inglês):
- 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.
Usar um par de chaves SSH
Um par de chaves SSH consiste em dois arquivos, uma chave pública e uma chave privada. O Config Sync não é compatível com a criação de senhas longas. Dependendo dos seus requisitos de segurança e conformidade, é possível usar um único par de chaves para todos os clusters ou um par de chaves por cluster.
Para conceder acesso somente leitura do Config Sync ao repositório Git usando um par de chaves SSH, conclua as seguintes etapas:
Crie ou peça ao administrador de segurança para fornecer um par de chaves SSH. Se você precisar criar um par de chaves SSH, execute o comando a seguir para criar uma chave RSA de 4096 bits:
ssh-keygen -t rsa -b 4096 \ -C "GIT_REPOSITORY_USERNAME" \ -N '' \ -f /path/to/KEYPAIR_FILENAME
Substitua:
GIT_REPOSITORY_USERNAME
: o nome de usuário que você quer que o Config Sync use para se autenticar no repositório. Se você usa um host de repositório Git de terceiros, como o GitHub, ou quer usar uma conta de serviço com o Secure Source Manager, recomendamos que você use uma conta separada para autenticação./path/to/KEYPAIR_FILENAME
: o caminho para o arquivo do par de chaves.
Configure o repositório para reconhecer a chave pública recém-criada. Consulte a documentação do seu provedor de hospedagem Git. Confira instruções para alguns provedores de hospedagem Git comuns na lista a seguir:
Crie o Secret
git-creds
com a chave privada:kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=ssh=/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
Substitua
/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
pelo nome da chave privada.Opcional, mas recomendado: para configurar a verificação de hosts conhecidos ao usar a autenticação SSH, adicione a chave de hosts conhecidos ao campo
data.known_hosts
no secretgit_creds
.Para adicionar a chave de hosts conhecida, execute o seguinte comando:
kubectl edit secret git-creds --namespace=config-management-system
Para adicionar a entrada
known_hosts
emdata
, execute o seguinte comando:known_hosts: KNOWN_HOSTS_KEY
Substitua
KNOWN_HOSTS_KEY
pela chave de hosts conhecidos.
Para desativar a verificação de
known_hosts
, remova o campoknown_hosts
do Secret.
Ao instalar o Config Sync,
use o par de chaves SSH (ssh
) como o tipo de autenticação.
Ao inserir o URL do repositório Git, ele precisa usar o formato do protocolo SSH. O formato do URL varia de acordo com o provedor do Git.
Usar um cookiefile
O processo para adquirir um cookiefile
depende da configuração no
repositório. Geralmente, as credenciais são armazenadas em um arquivo .gitcookies
em um diretório principal ou são fornecidas por um administrador de segurança.
Para conceder acesso somente leitura do Config Sync ao seu repositório Git usando um cookiefile
, siga estas etapas:
Depois de criar ou conseguir o cookiefile
, adicione-o a um novo Secret no
cluster. Recomendamos que você use HTTPS por motivos de segurança:
kubectl create ns config-management-system && \
kubectl create secret generic git-creds \
--namespace=config-management-system \
--from-file=cookie_file=/path/to/COOKIEFILE
Substitua /path/to/COOKIEFILE
pelo caminho e nome do arquivo.
Ao instalar o Config Sync,
use cookiefile (cookiefile
) como o tipo de autenticação.
Usar um token
Se sua organização não permitir o uso de chaves SSH, talvez você prefira usar um token.
Para conceder acesso somente leitura do Config Sync ao seu repositório Git usando um token, siga estas etapas:
Gere um token do seu provedor Git. Consulte a documentação do seu provedor de hospedagem Git para ver as instruções. Confira instruções para alguns provedores de hospedagem Git comuns na lista a seguir:
- GitHub: crie um PAT.
Conceda ao token o escopo
repo
para que ele possa ler os repositórios particulares. Como você vincula um PAT a uma conta do GitHub, também recomendamos criar um usuário de máquina e vincular seu PAT a ele. - GitLab: crie um PAT ou um token de implantação.
- Bitbucket: crie uma senha de app.
- GitHub: crie um PAT.
Conceda ao token o escopo
Depois de criar ou receber um token, adicione-o a um novo secret no cluster. Recomendamos que você use HTTPS por motivos de segurança:
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-literal=username=USERNAME \ --from-literal=token=TOKEN
Substitua:
USERNAME
: o nome de usuário que você quer usar.TOKEN
: o token criado na etapa anterior.
Ao instalar o Config Sync,
use o token (token
) como o tipo de autenticação.
Usar uma conta de serviço do Google
É possível conceder ao Config Sync acesso a um repositório no mesmo projeto que o cluster gerenciado usando uma conta de serviço do Google. Você precisa atender aos seguintes requisitos:
- Seu repositório está no Secure Source Manager ou no Cloud Source Repositories.
- O cluster tem a federação de identidade da carga de trabalho do GKE ou a federação de identidade da carga de trabalho do GKE da frota ativada.
Para conceder ao Config Sync acesso somente leitura ao seu repositório Git usando uma conta de serviço do Google, siga estas etapas:
-
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.
Se você não tiver uma conta de serviço, crie uma.
Conceda o papel do IAM à conta de serviço do Google, dependendo do tipo de repositório que você está usando:
Secure Source Manager
Conceda os papéis do IAM Acessador da instância do Secure Source Manager (
roles/securesourcemanager.instanceAccessor
) e Leitor do repositório do Secure Source Manager (roles/securesourcemanager.repoReader
) à conta de serviço do Google: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/securesourcemanager.instanceAccessor \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/securesourcemanager.repoReader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
Substitua:
PROJECT_ID
: o ID do projeto.GSA_NAME
: o nome da conta de serviço do Google que você quer conectar ao Secure Source Manager.
Para conceder permissões específicas do repositório, consulte a documentação do Secure Source Manager sobre Conceder papéis no nível do repositório aos usuários.
Ao instalar o Config Sync, use a Identidade da carga de trabalho (
gcpserviceaccount
) como o tipo de autenticação. Você também precisa adicionar o e-mail da sua conta de serviço.O Secure Source Manager exige um formato específico para o URL do repositório:
https://SSM_INSTANCE_ID-PROJECT_NUMBER-git.INSTANCE_LOCATION.sourcemanager.dev/PROJECT_ID/REPO_NAME.git
.Cloud Source Repositories
Conceda o papel do IAM de Leitor do Cloud Source Repositories (
roles/source.reader
) à conta de serviço do Google: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/source.reader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
Substitua:
PROJECT_ID
: o ID do projeto.GSA_NAME
: o nome da conta de serviço do Google que você quer conectar ao Cloud Source Repositories.
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 source repos set-iam-policy REPOSITORY POLICY_FILE --project=PROJECT_ID
Substitua:
PROJECT_ID
: o ID do projeto.REPOSITORY
: o nome do repositório.POLICY_FILE
: o arquivo JSON ou YAML que contém a política do Identity and Access Management.
Ao instalar o Config Sync, use a Identidade da carga de trabalho (
gcpserviceaccount
) como o tipo de autenticação. Você também precisa adicionar o e-mail da sua conta de serviço.
A etapa a seguir precisa ser concluída depois de configurar o Config Sync porque a conta de serviço do Kubernetes não é criada até que você configure o Config Sync pela primeira vez. Você só precisa fazer isso uma vez por frota. Para criar a vinculação que permite que a conta de serviço do Kubernetes atue como a conta de serviço do Google, execute o seguinte comando:
gcloud iam service-accounts add-iam-policy-binding \
GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--role=roles/iam.workloadIdentityUser \
--member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
--project=PROJECT_ID
Substitua:
FLEET_HOST_PROJECT_ID
: se você usa a Federação de Identidade da Carga de Trabalho para GKE, o valor é o mesmo quePROJECT_ID
. Se você usa a Federação de Identidade da Carga de Trabalho para GKE da frota, use o ID do projeto da frota em que o cluster está registrado como o valor.GSA_NAME
: a conta de serviço personalizada do Google que você quer usar para se conectar ao Secure Source Manager ou ao Cloud Source Repositories.KSA_NAME
: a conta de serviço do Kubernetes do reconciliador. Na maioria dos casos, o valor éroot-sync
porque o Config Sync cria automaticamente um objeto RootSync chamadoroot-sync
quando instalado com o console Google Cloud ou a Google Cloud CLI. Caso contrário, useroot-reconciler-ROOT_SYNC_NAME
como o valor.
Se você tiver problemas para se conectar ao Config Sync com uma conta de serviço do Google, consulte Resolver problemas de permissão com uma conta de serviço do Google.
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. Esse método é compatível apenas com repositórios no Secure Source Manager e no Cloud Source Repositories.
Para conceder ao Config Sync acesso somente leitura ao seu repositório usando uma
conta de serviço padrão do Compute Engine, conceda à conta de serviço padrão o papel
roles/source.reader
:
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/source.reader \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
Substitua:
PROJECT_ID
: ID do projeto;PROJECT_NUMBER
: com o número do projeto.
Ao instalar o Config Sync,
use o Google Cloud Repository (gcenode
) como o tipo de autenticação.
Usar um app GitHub
Se o repositório estiver no GitHub, use o app GitHub para conectá-lo ao Config Sync:
Siga as instruções no GitHub para provisionar um app do GitHub e conceder a ele permissão para ler seu repositório.
Adicione a configuração do GitHub App a um novo Secret no cluster usando o ID do cliente ou do aplicativo:
ID do cliente
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-literal=github-app-client-id=CLIENT_ID \ --from-literal=github-app-installation-id=INSTALLATION_ID \ --from-file=github-app-private-key=/path/to/GITHUB_PRIVATE_KEY \ --from-literal=github-app-base-url=BASE_URL
- Substitua
CLIENT_ID
pelo ID do cliente do app GitHub. - Substitua
INSTALLATION_ID
pelo ID de instalação do app GitHub. - Substitua
/path/to/GITHUB_PRIVATE_KEY
pelo nome do arquivo que contém a chave privada. - Substitua
BASE_URL
pelo URL base do endpoint de API do GitHub. Esse valor só é necessário quando o repositório não está hospedado em www.github.com. Caso contrário, o argumento pode ser omitido e o padrão éhttps://api.github.com/
.
ID do aplicativo
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-literal=github-app-application-id=APPLICATION_ID \ --from-literal=github-app-installation-id=INSTALLATION_ID \ --from-file=github-app-private-key=/path/to/GITHUB_PRIVATE_KEY \ --from-literal=github-app-base-url=BASE_URL
- Substitua
APPLICATION_ID
pelo ID do aplicativo do GitHub. - Substitua
INSTALLATION_ID
pelo ID de instalação do app GitHub. - Substitua
/path/to/GITHUB_PRIVATE_KEY
pelo nome do arquivo que contém a chave privada. - Substitua
BASE_URL
pelo URL base do endpoint de API do GitHub. Esse valor só é necessário se o repositório não estiver hospedado em www.github.com. Caso contrário, o argumento pode ser omitido e o padrão seráhttps://api.github.com/
.
- Substitua
Ao instalar o Config Sync,
use o app GitHub (githubapp
) como o tipo de autenticação.
Solução de problemas
Para resolver problemas relacionados à conexão do Config Sync com sua fonte de verdade, consulte os seguintes tópicos de solução de problemas: