Com o Config Sync, é possível gerenciar seus recursos do Kubernetes sincronizando configurações de uma fonte central de informações, como um repositório Git, uma imagem OCI ou um gráfico Helm. Se as instruções de instalação padrão não atenderem às suas necessidades, talvez seja necessário personalizar a instalação do Config Sync.
Nesta página, mostramos como fazer uma instalação e configuração avançada do Config Sync. O processo de instalação inclui o seguinte:
- Instalar o Config Sync em clusters individuais usando o consoleGoogle Cloud , a Google Cloud CLI ou o Terraform.
- Configurar o repositório raiz, incluindo tipo de origem, formato e autenticação.
- Verificar se a instalação e a configuração do Config Sync foram bem-sucedidas.
Limitações
O Config Sync não oferece suporte à configuração de helm
como o tipo de origem
usando o console Google Cloud ou a Google Cloud CLI. É possível configurar o objeto
RootSync
ou RepoSync
para sincronizar de um repositório do Helm usando a
API Kubernetes ou
declará-lo em outra origem de verdade.
Consulte
Configuração do repositório Helm
para mais informações.
Antes de começar
Antes de instalar o Config Sync, prepare sua fonte de verdade e um cluster adequado.
Conceder acesso do Config Sync à sua fonte de verdade
Para sincronizar a configuração de uma fonte de verdade com seus clusters, o Config Sync exige acesso somente leitura ao seu repositório. Para autorizar o Config Sync a ler suas configurações, siga estas etapas:
Crie ou tenha acesso a uma fonte de verdade que contenha os arquivos de configuração que você quer que o Config Sync sincronize com seus clusters. 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.
Se a fonte de verdade for pública, não será necessário fazer mais nada. O Config Sync não exige permissões extras.
Se sua fonte de verdade for particular, siga as instruções em uma das seguintes páginas:
Revisar os requisitos do cluster
Antes de criar um cluster, consulte os requisitos de cluster.
Instalar o Config Sync
Quando você instala o Config Sync usando o console Google Cloud ou a
Google Cloud CLI, o Config Sync cria automaticamente um objeto RootSync chamado
root-sync
. É possível usar comandos kubectl
para modificar root-sync
e adicionar
outras configurações do Config Sync. Para mais informações, consulte
Configurar o Config Sync com comandos kubectl
.
Console
Instalar o Config Sync
Para instalar o Config Sync, todos os clusters precisam estar registrados em uma frota. Ao instalar o Config Sync no console do Google Cloud , a seleção de clusters individuais os registra automaticamente na frota.
- No console Google Cloud , acesse a página Configuração na seção Recursos.
- Clique em add Instalar o Config Sync.
- Selecione a versão do Config Sync que você quer usar.
- Em Opções de instalação, selecione uma das seguintes opções:
- Instalar o Config Sync em toda a frota (recomendado): o Config Sync é instalado em todos os clusters da frota.
- Instalar o Config Sync em clusters individuais: o Config Sync é instalado nos clusters selecionados. Todos os clusters selecionados são registrados automaticamente na sua frota.
- Se você estiver instalando o Config Sync em clusters individuais, selecione aqueles em que você quer instalar o Config Sync na tabela Clusters disponíveis.
- Clique em Instalar o Config Sync. Na guia Configurações, após alguns minutos, a mensagem Ativado vai aparecer na coluna Status dos clusters na sua frota.
Implantar um pacote
Depois de registrar os clusters em uma frota e instalar o Config Sync, é possível configurar o Config Sync para implantar um pacote em um cluster de uma fonte de verdade. É possível implantar o mesmo pacote em vários clusters ou implantar pacotes diferentes em clusters diferentes. É possível editar um pacote após a implantação, exceto algumas configurações, como o nome do pacote e o tipo de sincronização. Para mais informações, consulte Gerenciar pacotes.
Para implantar um pacote, siga estas etapas:
No console Google Cloud , acesse o painel do Config Sync.
Clique em Implantar pacote.
Na tabela Selecionar clusters para implantação do pacote, selecione o cluster em que quer implantar um pacote e clique em Continuar.
Selecione Pacote hospedado no Git ou Pacote hospedado na OCI como tipo de origem e clique em Continuar.
Na seção Package details, insira um Package name, que identifica o objeto RootSync ou RepoSync.
No campo Sync type, escolha Cluster scoped sync ou Namespace scoped sync como o tipo de sincronização.
A sincronização com escopo de Cluster cria um objeto RootSync, e a sincronização com escopo de Namespace cria um objeto RepoSync. Para mais informações sobre esses objetos, consulte Arquitetura do Config Sync.
Na seção Origem, faça o seguinte:
Para fontes hospedadas em um repositório Git, insira os seguintes campos:
- Digite o URL do repositório Git que você está usando como fonte de verdade como o URL do repositório.
- Opcional: atualize o campo Revisão para verificar se você não está usando
o
HEAD
padrão. - Opcional: atualize o campo Path se você não quiser sincronizar a partir do repositório raiz.
- Opcional: atualize o campo Ramificação se você não estiver usando a ramificação
main
padrão.
Para fontes hospedadas em uma imagem OCI, insira os seguintes campos:
- Insira o URL da imagem OCI que você está usando como fonte de verdade como a Imagem.
- Insira o caminho do diretório de onde sincronizar, relativo ao diretório raiz, como o Diretório.
(Opcional): expanda a seção Configurações avançadas para concluir o seguinte:
Selecione um Tipo de autenticação. O Config Sync precisa de acesso somente leitura à sua fonte de verdade para ler os arquivos de configuração na origem e aplicá-los aos clusters. A menos que a origem não exija autenticação, como um repositório público, conceda acesso somente leitura ao Config Sync ao repositório Git, imagem OCI ou gráfico Helm (somente na gcloud CLI). Escolha o mesmo tipo de autenticação que você configurou ao instalar o Config Sync:
- Nenhum: não usar autenticação.
- SSH: faça a autenticação usando um par de chaves SSH.
- Cookiefile: faça a autenticação usando um
cookiefile
. - Token: faça a autenticação usando um token de acesso ou uma senha.
- Google Cloud Repository: use uma conta de serviço do Google para acessar um repositório do Cloud Source Repositories. Selecione esta opção somente se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada no cluster.
- Identidade da carga de trabalho: use uma conta de serviço do Google para acessar um repositório do Cloud Source Repositories.
Insira um número em segundos para definir o Tempo de espera da sincronização, que determina quanto tempo o Config Sync espera entre as tentativas de extração da fonte de verdade.
Insira um URL de proxy Git para o proxy HTTPS a ser usado ao se comunicar com a fonte da verdade.
Escolha Hierarquia para mudar o Formato de origem.
O valor padrão Não estruturado é recomendado na maioria dos casos, porque permite organizar a fonte de verdade como você quiser.
Clique em Implantar pacote.
Você será redirecionado para a página Pacotes do Config Sync. Após alguns minutos, a mensagem Sincronizado vai aparecer na coluna Status da sincronização do cluster configurado.
gcloud
Antes de continuar, registre seus clusters em uma fleet.
Ative o recurso de frota
ConfigManagement
:gcloud beta container fleet config-management enable
Prepare a configuração criando um arquivo chamado
apply-spec.yaml
e copiando o arquivo YAML a seguir nele.É possível definir todos os campos
spec.configSync
opcionais que são necessários ao criar o manifesto e depois usar comandoskubectl
para a configuração. Também é possível definir apenas o campospec.configSync.enabled
comotrue
e omitir os campos opcionais. Posteriormente, é possível usar comandoskubectl
para criar outros objetos RootSync ou RepoSyncs que poderão ser gerenciados totalmente mais tarde por meio de comandoskubectl
.# apply-spec.yaml applySpecVersion: 1 spec: configSync: enabled: true # If you don't have a source of truth yet, omit the # following fields. You can configure them later. sourceType: SOURCE_TYPE sourceFormat: FORMAT syncRepo: REPO syncRev: REVISION secretType: SECRET_TYPE gcpServiceAccountEmail: EMAIL metricsGcpServiceAccountEmail: METRICS_EMAIL policyDir: DIRECTORY preventDrift: false
Substitua:
SOURCE_TYPE
: adicionegit
para sincronizar a partir de um repositório Git,oci
para sincronizar a partir de uma imagem OCI ouhelm
para sincronizar a partir de um gráfico Helm. Se nenhum valor for especificado, o padrão serágit
.FORMAT
: adicioneunstructured
para usar um repositório não estruturado ouhierarchy
para usar um repositório hierárquico. Esses valores diferenciam maiúsculas de minúsculas. Este campo é opcional e o valor padrão éhierarchy
. Recomendamos que você adicioneunstructured
como esse formato para organizar suas configurações da melhor maneira para você.REPO
: adicione o URL da fonte da verdade. Os URLs de repositórios Git e Helm usam o protocolo HTTPS ou SSH. Por exemplo,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
. Se você planeja usar o SSH como osecretType
, digite o URL com o protocolo SSH. Esse campo é obrigatório e, caso você não insira um protocolo, o URL será tratado como HTTPS URL.Os URLs da OCI usam o seguinte formato:
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
. Por padrão, a imagem é extraída da taglatest
, mas é possível extrair imagens porTAG
ouDIGEST
. EspecifiqueTAG
ouDIGEST
noPACKAGE_NAME
:- Para extrair por
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Para extrair por
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Para extrair por
REVISION
: a revisão do Git (tag ou hash) ou o nome da ramificação para sincronizar. Ao usar um hash, ele precisa ser um hash completo, e não uma forma abreviada.SECRET_TYPE
: uma das seguintes opçõessecretTypes
:git
none
: não usa autenticação.ssh
: usa um par de chaves SSH.cookiefile
: Use umcookiefile
.token
: usar um token.gcpserviceaccount
: use uma conta de serviço do Google para acessar um repositório do Cloud Source Repositories ou do Secure Source Manager. Se você selecionar esse tipo de autenticação, precisará criar uma vinculação de política do IAM depois de concluir a configuração do Config Sync. Para mais detalhes, consulte a guia "Conta de serviço do Google" da seção Conceder acesso do Config Sync ao Git com uma conta de serviço do Google.gcenode
: use uma conta de serviço do Google para acessar um Cloud Source Repositories. Selecione esta opção somente se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada no cluster.githubapp
: use um app do GitHub para autenticar um repositório do GitHub.
Para mais informações sobre esses tipos de autenticação, consulte Conceder acesso do Config Sync ao Git.
OCI
none
: nenhuma autenticação é usadagcenode
: use a conta de serviço padrão do Compute Engine para acessar uma imagem no Artifact Registry. Selecione esta opção somente se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada no cluster.gcpserviceaccount
: use uma conta de serviço do Google para acessar uma imagem.
helm
token
: usar um token.gcenode
: use a conta de serviço padrão do Compute Engine para acessar uma imagem no Artifact Registry. Selecione esta opção somente se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada no cluster.gcpserviceaccount
: use uma conta de serviço do Google para acessar uma imagem.
EMAIL
: se você adicionougcpserviceaccount
comosecretType
, adicione o endereço de e-mail da sua conta de serviço do Google. Por exemplo,acm@PROJECT_ID.iam.gserviceaccount.com
.METRICS_EMAIL
: o e-mail da conta de serviço (GSA) do Google Cloud usada para exportar as métricas do Config Sync para o Cloud Monitoring. A GSA precisa ter o papel do IAM de gravador de métricas do Monitoring (roles/monitoring.metricWriter
). A conta de serviço do Kubernetesdefault
no namespaceconfig-management-monitoring
precisa ser vinculada à GSA.DIRECTORY
: o caminho do diretório de onde sincronizar em relação à raiz do repositório Git. Todos os subdiretórios que você especificar serão incluídos e sincronizados com o cluster. O valor padrão é o diretório raiz do repositório.
Para uma lista completa de campos que podem ser adicionados ao campo
spec
, consulte gcloud.Aplique o arquivo
apply-spec.yaml
. Se estiver usando um manifesto atual, aplique o arquivo ao cluster que quer configurar com as configurações encontradas no comando anterior:gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=CONFIG_YAML_PATH \ --project=PROJECT_ID
Substitua:
MEMBERSHIP_NAME
: o nome da assinatura da frota escolhida ao registrar o cluster. É possível encontrar o nome comgcloud container fleet memberships list
.CONFIG_YAML_PATH
: o caminho para o arquivoapply-spec.yaml
.PROJECT_ID
: o ID do projeto.
Terraform
Para cada cluster em que você quer configurar o Config Sync,
aplique um bloco de recursos google_gkehub_feature_membership
que contenha
um bloco configmanagement
e config_sync
, como no exemplo a seguir:
git
Substitua:
REPO
: o URL do repositório Git que contém os arquivos de configuração.BRANCH
: a ramificação do repositório, por exemplo,main
.DIRECTORY
: o caminho no repositório Git que representa o nível superior do repositório para sincronizar.SECRET
: o tipo de autenticação secreta.
OCI
Substitua:
REPO
: o URL do repositório de imagens OCI que contém os arquivos de configuração.DIRECTORY
: o caminho absoluto do diretório que contém os recursos para sincronizar. Para usar o diretório raiz, deixe este campo em branco.SECRET
: o tipo de autenticação secreta.
Repita esse processo para cada cluster que quiser sincronizar.
Para mais informações sobre como usar o Terraform, consulte Suporte do Terraform para o Config Sync.
Depois de configurar o repositório raiz, você pode configurar a sincronização de vários repositórios, incluindo outros repositórios raiz e de namespace. Os repositórios de namespace são úteis caso você queira um repositório que contenha configurações com escopo de namespace sincronizadas com um namespace específico nos clusters.
Verifique a instalação
Depois de instalar e configurar o Config Sync, verifique se a instalação foi concluída com sucesso.
gcloud
Execute este comando:
nomos status
Uma instalação bem-sucedida mostra um status de SYNCED
ou PENDING
.
Para mais detalhes sobre as informações fornecidas por nomos status
, incluindo
erros informados, consulte Verificar o status do Config Sync
na documentação da ferramenta de linha de comando nomos
.
Console
Siga estas etapas:
- No console Google Cloud , acesse a página Configuração na seção Recursos.
- Na guia Pacotes, verifique a coluna Status da sincronização na tabela de clusters. Uma instalação bem-sucedida do Config Sync tem o status Instalado. Uma fonte de verdade configurada tem o status Sincronizado.
A seguir
- Saiba como fazer upgrades do Config Sync.
- Saiba mais sobre os comandos
gcloud
para configurar o Config Sync. - Descubra como configurar a sincronização a partir de repositórios de namespace.
- Use o comando
nomos
- Leia a Introdução à solução de problemas do Config Sync.
- Saiba como desinstalar o Config Sync.
- Consulte as permissões padrão do Config Sync.