Configurar o Config Controller
Esta página mostra como configurar o Config Controller. O Config Controller é um serviço hospedado que oferece um endpoint de API que pode provisionar, atuar e orquestrar recursos do Google Cloud como parte do Anthos Config Management. Para saber mais sobre o Config Controller, consulte Visão geral do Config Controller.
Antes de começar
Antes de configurar o Config Controller, você precisa concluir as seguintes etapas:
Instale e inicialize a Google Cloud CLI, que fornece os comandos
gcloud
,kubectl
enomos
usados nestas instruções. Se você usa o Cloud Shell, a Google Cloud CLI já vem pré-instalada.O
kubectl
não é instalado por padrão pela Google Cloud CLI. Para instalar okubectl
, execute o seguinte comando:gcloud components install kubectl
Defina o projeto do Google Cloud em que o Config Controller será hospedado:
export PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
Substitua
PROJECT_ID
pelo projeto do Google Cloud em que o Config Controller será hospedado.Para permitir que o Config Connector gerencie os serviços no projeto, ative a API Service Usage:
gcloud services enable serviceusage.googleapis.com
Se você não tiver uma rede padrão no seu projeto, crie uma executando o seguinte comando:
gcloud compute networks create default --subnet-mode=auto
Como alternativa, é possível selecionar uma rede diferente usando a sinalização
--network
no comandogcloud anthos config controller create
ao configurar o Config Controller.
Configurar o Config Controller
Crie um Config Controller com os seguintes comandos da CLI gcloud:
Ative os serviços no projeto para usar os comandos subsequentes da CLI gcloud:
gcloud services enable krmapihosting.googleapis.com \ container.googleapis.com \ cloudresourcemanager.googleapis.com
Crie sua instância do Config Controller. Essa operação pode levar mais de 15 minutos. É possível criar uma instância do Config Controller com o suporte de um cluster padrão do Google Kubernetes Engine (GKE) particular ou de um cluster do Autopilot no GKE particular (pré-lançamento).
Padrão
Para criar uma instância do Config Controller com o suporte de um cluster particular padrão do GKE, execute o seguinte comando:
gcloud anthos config controller create CONFIG_CONTROLLER_NAME \ --location=LOCATION
Substitua:
CONFIG_CONTROLLER_NAME
: o nome que você quer dar ao controlador.LOCATION
: adicione uma das seguintes regiões:us-central1
us-east1
northamerica-northeast1
northamerica-northeast2
europe-north1
europe-west1
europe-west3
australia-southeast1
australia-southeast2
asia-northeast1
asia-northeast2
Nenhuma outra região é compatível.
É possível definir parâmetros opcionais, como
--man-blocks
, que permite especificar um intervalo CIDR para permitir que endereços IP nesses intervalos acessem o plano de controle do Kubernetes para maior segurança. Para ver a lista completa de opções, consulte a documentação dogcloud anthos config controller create
.Piloto automático
Para criar uma instância do Config Controller com suporte de um cluster particular do Autopilot do GKE, execute o seguinte comando:
gcloud alpha anthos config controller create CONFIG_CONTROLLER_NAME \ --location=LOCATION \ --full-management
Substitua:
CONFIG_CONTROLLER_NAME
: o nome que você quer dar ao controlador.LOCATION
: adicione uma das seguintes regiões:us-central1
us-east1
northamerica-northeast1
northamerica-northeast2
europe-north1
europe-west1
europe-west3
australia-southeast1
australia-southeast2
asia-northeast1
asia-northeast2
Nenhuma outra região é compatível.
Depois que a instância for criada, ela vai aparecer na lista de instâncias. Para ver a lista de instâncias, execute o seguinte comando:
gcloud anthos config controller list --location=LOCATION
Para aplicar manifestos, faça a autenticação com a instância:
gcloud anthos config controller get-credentials CONFIG_CONTROLLER_NAME \ --location LOCATION
Conceda permissão ao Config Controller para gerenciar os recursos do Google Cloud no projeto:
export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \ -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)" gcloud projects add-iam-policy-binding "${PROJECT_ID}" \ --member "serviceAccount:${SA_EMAIL}" \ --role "roles/owner" \ --project "${PROJECT_ID}"
Para usar o pacote de operações do Google Cloud para monitorar o Config Controller, conceda outras permissões à conta de serviço padrão do Compute Engine:
# Cloud Monitoring metrics permissions gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --role=roles/monitoring.metricWriter \ --condition=None \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --role=roles/stackdriver.resourceMetadata.writer \ --condition=None \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --role=roles/opsconfigmonitoring.resourceMetadata.writer \ --condition=None --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" # Cloud Logging permissions gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --role=roles/logging.logWriter \ --condition=None \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" # Cloud Trace permissions gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --role=roles/cloudtrace.agent \ --condition=None \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
Substitua
PROJECT_NUMBER
pelo número do projeto do Google Cloud.
Fazer upgrade do Config Controller
Como o Config Controller é um serviço gerenciado, ele é atualizado automaticamente pelo Google. Para detalhes sobre as versões incluídas de componentes e novos recursos, consulte as notas da versão do Config Controller.
Gerenciar recursos do Google Cloud com o Config Controller
Depois de configurar o Config Controller, é possível usar o Config Connector para gerenciar muitos serviços e recursos do Google Cloud usando ferramentas e APIs do Kubernetes. Para uma lista completa dos recursos que é possível gerenciar, consulte Recursos do Config Connector.
Neste exemplo, você cria um repositório no Cloud Source Repositories que pode ser usado na seção Configurar o GitOps.
Crie um arquivo chamado
service.yaml
e copie o arquivo YAML a seguir nele.# service.yaml apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sourcerepo.googleapis.com namespace: config-control
Aplique o manifesto e aguarde para ativar o Cloud Source Repositories:
kubectl apply -f service.yaml kubectl wait -f service.yaml --for=condition=Ready
Crie um arquivo chamado
repo.yaml
e copie o arquivo YAML a seguir nele.# repo.yaml apiVersion: sourcerepo.cnrm.cloud.google.com/v1beta1 kind: SourceRepoRepository metadata: name: REPO_NAME namespace: config-control
Substitua
REPO_NAME
pelo nome que você quer dar para o Cloud Source Repositories.Para criar o repositório, aplique o manifesto:
kubectl apply -f repo.yaml
Configure o GitOps
É possível sincronizar configurações no seu repositório Git com o Config Controller usando o Config Sync. No exemplo desta seção, você usará o Cloud Source Repositories criado na seção anterior.
Crie um arquivo chamado
gitops-iam.yaml
e copie o arquivo YAML a seguir nele.# gitops-iam.yaml apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMServiceAccount metadata: name: config-sync-sa namespace: config-control spec: displayName: ConfigSync --- apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: config-sync-wi namespace: config-control spec: member: serviceAccount:PROJECT_ID.svc.id.goog[config-management-system/root-reconciler] role: roles/iam.workloadIdentityUser resourceRef: apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMServiceAccount name: config-sync-sa --- apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: allow-configsync-sa-read-csr namespace: config-control spec: member: serviceAccount:config-sync-sa@PROJECT_ID.iam.gserviceaccount.com role: roles/source.reader resourceRef: apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 kind: Project external: projects/PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto em que o Config Controller está em execução.
Para conceder acesso ao repositório para o Config Sync, aplique o manifesto:
kubectl apply -f gitops-iam.yaml
O Config Controller ativa automaticamente as APIs RootSync e RepoSync do Config Sync. Essas APIs dão acesso a outros recursos do Config Sync, como sincronização de vários repositórios e renderização automática de configurações do Kustomize e do Helm.
Se você quiser configurar o Config Sync, crie um objeto RootSync. Para criar esse objeto, crie um arquivo chamado
root-sync.yaml
e copie o seguinte texto nele:# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: unstructured git: repo: https://source.developers.google.com/p/PROJECT_ID/r/REPO_NAME branch: main dir: REPO_PATH auth: gcpserviceaccount gcpServiceAccountEmail: config-sync-sa@PROJECT_ID.iam.gserviceaccount.com
Substitua:
PROJECT_ID
: o ID do projeto que contém a conta de serviço e o repositório Git.REPO_NAME
: o nome do repositório Git para extrair a configuração e observar as alterações.REPO_PATH
: o caminho do diretório de onde sincronizar em relação à raiz do repositório Git. O valor padrão é/
.
Para saber mais sobre os campos em
root-sync.yaml
, consulte Campos RootSync e RepoSync.Para aplicar a configuração do Config Sync, aguarde a instalação da API RootSync no cluster. Em seguida, aplique o manifesto para criar um objeto RootSync usando a API:
kubectl wait --for condition=established --timeout=10s crd/rootsyncs.configsync.gke.io kubectl apply -f root-sync.yaml
Verificar o resultado
Siga estas etapas para verificar a configuração inicial:
Verifique se todos os controladores foram configurados com sucesso no Config Controller:
kubectl wait pod --all --all-namespaces --for=condition=Ready
Verifique se o repositório Git está sincronizado com o Config Controller com o Config Sync usando o comando
nomos
ou o comandogcloud alpha anthos config sync repo
:nomos status --contexts $(kubectl config current-context) # or gcloud alpha anthos config sync repo list --targets config-controller
Excluir o Config Controller
Se você decidir parar de usar o Config Controller, limpe todos os recursos criados. Primeiro, você precisa remover recursos do Config Controller antes de excluir o próprio Config Controller.
Excluir o controlador de configuração sem primeiro excluir os recursos provisionados deixa os recursos em um estado abandonado. Os recursos ainda existem no Google Cloud (e geram cobranças de faturamento), mas não são gerenciados pela configuração declarativa.
Depois que todos os recursos forem excluídos, será possível excluir o Config Controller usando a CLI gcloud:
gcloud anthos config controller delete --location=LOCATION CONFIG_CONTROLLER_NAME
Considerações de produção
Na produção, confira as considerações de alta disponibilidade para o Config Controller.
A seguir
- Resolver problemas do Config Controller
- Se você tiver recursos do Google Cloud que queira usar com o Config Controller, saiba mais sobre Como importar e exportar recursos.
- Saiba mais sobre os papéis e as permissões do Config Controller.
- Saiba mais sobre como sincronizar as configurações e políticas com o Config Sync.
- Saiba mais sobre como aplicar políticas com o Policy Controller.