Esta página mostra como configurar o Config Controller.
O Config Controller oferece um plano de controlo gerido baseado no Kubernetes. Além disso, as instâncias do Config Controller são pré-instaladas com o Policy Controller, o Config Sync e o Config Connector. Ao usar estes componentes, pode usar as ferramentas e os fluxos de trabalho do Kubernetes para gerir Google Cloud recursos e alcançar a consistência através de um fluxo de trabalho GitOps. Para saber mais, consulte a vista geral do Config Controller.
Se estiver a criar uma instância do Config Controller pela primeira vez, consulte o Início rápido: faça a gestão de recursos com o Config Controller.
Limitações
- Uma vez que as instâncias do Config Controller são totalmente geridas, não pode registá-las numa frota.
Antes de começar
Antes de configurar o Config Controller, conclua os seguintes passos:
- Instale e inicialize a Google Cloud CLI, que fornece a CLI do Google Cloud usada nestas instruções. Se usar o Cloud Shell, a Google Cloud CLI já está instalada.
Uma vez que o
kubectl
não está instalado por predefinição na Google CloudCLI, instale-o:gcloud components install kubectl
Defina o Google Cloud projeto onde quer alojar o Config Controller:
gcloud config set project PROJECT_ID
Substitua
PROJECT_ID
pelo projeto Google Cloud que vai alojar o Config Controller.Ative as APIs necessárias:
gcloud services enable krmapihosting.googleapis.com \ container.googleapis.com \ cloudresourcemanager.googleapis.com \ serviceusage.googleapis.com
Crie uma instância do Config Controller
Pode criar uma instância do Config Controller suportada por um cluster padrão ou um cluster do Autopilot. Ambos os tipos de clusters são privados.
Selecione um cluster padrão se quiser mais opções de personalização. Selecione um cluster do Autopilot se quiser uma instalação mais rápida, escala automática de pods horizontal e vertical, e funcionalidades de segurança melhoradas, como o SO otimizado para contentores, os nós do GKE protegidos, a federação de identidades da carga de trabalho para o GKE e o arranque seguro.
A criação de um novo cluster pode demorar até 15 minutos. Se quiser observar o que está a acontecer durante a criação, pode ver o Explorador de registos naGoogle Cloud consola.
Aceda ao Explorador de registos
Se encontrar erros durante a criação, consulte o artigo Resolva problemas do Config Controller para obter orientações sobre a resolução de problemas comuns.
Crie um cluster do Autopilot
Para criar uma instância do Config Controller num cluster do Autopilot, execute o seguinte comando:
gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
--location=LOCATION \
--full-management
Substitua o seguinte:
CONFIG_CONTROLLER_NAME
: o nome que quer dar à sua instância do Config Controller.LOCATION
: a localização onde quer criar a instância do Config Controller, por exemplo,us-central
. Para ver uma lista das localizações suportadas, consulte o artigo Localizações.
Crie um cluster padrão
Para criar uma instância do Config Controller num cluster Standard, execute o seguinte comando:
gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
--location=LOCATION
Substitua o seguinte:
CONFIG_CONTROLLER_NAME
: o nome que quer dar à sua instância do Config Controller.LOCATION
: a localização onde quer criar a instância do Config Controller, por exemplo,us-central
. Para ver uma lista das localizações suportadas, consulte o artigo Localizações.
Pode definir vários parâmetros opcionais quando cria uma instância do
Config Controller padrão. Para ver a lista completa de opções, consulte a
gcloud anthos config controller create
documentação.
Confirme a sua instância do Config Controller
Para confirmar que a instância do Config Controller está configurada, conclua os passos seguintes:
Para verificar se as instâncias do Config Controller foram criadas, veja a lista de instâncias do Config Controller:
gcloud anthos config controller list --location=LOCATION
Deve ver um valor de
RUNNING
na coluna de estado. Se o estado forCREATING
, a instância do controlador de configuração ainda está a ser criada e deve continuar a aguardar. Se virERROR
, significa que encontrou um problema que não pode resolver sozinho. Contacte o Google Cloud apoio técnico para receber assistência.Para comunicar com o ponto final do Config Controller, obtenha as credenciais e as informações do ponto final adequadas:
gcloud anthos config controller get-credentials CONFIG_CONTROLLER_NAME \ --location LOCATION
Use a sua instância do Config Controller
Agora que criou uma instância do Config Controller, pode começar a usar os componentes instalados e concluir as seguintes tarefas:
Use o Config Connector para criar Google Cloud recursos. Se tiver Google Cloud recursos existentes que quer usar com o Config Controller, saiba como adquirir um recurso existente.
Use o Policy Controller para aplicar restrições que aplicam a conformidade regulamentar e as normas do Kubernetes.
Depois de configurar o Config Sync, na secção seguinte, sincronize a instância do Config Controller com as configurações (incluindo restrições do Policy Controller e recursos do Config Connector) que estão armazenadas numa fonte de verdade.
Para ver um exemplo guiado que mostra como concluir estas tarefas com o Config Controller, consulte o artigo Início rápido: faça a gestão de recursos com o Config Controller.
Configure a instância do Config Controller
As secções seguintes explicam como configurar os componentes da sua instância do Config Controller.
Configure o Config Connector
Não tem de gerir nenhuma definição para a instalação do Config Connector. No entanto, tem de conceder autorizações do Config Controller para gerir Google Cloud recursos:
Defina uma variável de ambiente para o email da sua conta de serviço:
export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \ -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"
Crie a associação de políticas:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:${SA_EMAIL}" \ --role "ROLE" \ --project PROJECT_ID
Substitua o seguinte:
PROJECT_ID
: o ID do seu projetoROLE
: um conjunto de funções predefinidas ou funções personalizadas que satisfazem as suas necessidades. Em alternativa, pode usarroles/owner
para ambientes de não produção. Para saber mais sobre as autorizações de IAM do Config Controller, leia o artigo Autorizações de IAM para o Config Controller.
Se a operação anterior falhar, verifique se os controladores estão prontos:
kubectl wait pod --all --all-namespaces --for=condition=Ready
Depois de conceder estas autorizações, pode começar a criar Google Cloud recursos.
Configure o Controlador de políticas
Pode ter de adicionar ou atualizar a política de IAM para permitir que o Policy Controller envie métricas.
Permita que o Policy Controller envie métricas executando este comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[gatekeeper-system/gatekeeper-admin]" \
--role=roles/monitoring.metricWriter
Substitua PROJECT_ID
pelo ID do projeto do Google Cloud cluster.
Configure o Config Sync
Se quiser que a instância do Config Controller seja sincronizada a partir de configurações armazenadas numa fonte de verdade, tem de configurar o Config Sync.
Se quiser usar o Config Sync para criar recursos do Config Connector, certifique-se de que também concedeu autorização ao Config Controller para gerir recursos.
Para configurar o Config Sync, crie e edite um objeto RootSync:
Para sincronizar a partir de um repositório externo (por exemplo, o GitHub), configure o Cloud NAT com o GKE. Tem de o fazer porque os nós do cluster privado não têm acesso à Internet de saída.
Guarde um dos seguintes manifestos como
root-sync.yaml
. Use a versão do manifesto que corresponde ao tipo de origem das suas configurações.Git
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: git sourceFormat: ROOT_FORMAT git: repo: ROOT_REPOSITORY revision: ROOT_REVISION branch: ROOT_BRANCH dir: ROOT_DIRECTORY auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL secretRef: name: ROOT_SECRET_NAME noSSLVerify: ROOT_NO_SSL_VERIFY caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
Substitua o seguinte:
ROOT_SYNC_NAME
: adicione o nome do objeto RootSync.ROOT_FORMAT
: adicioneunstructured
para usar um repositório não estruturado ou adicionehierarchy
para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido éhierarchy
. Recomendamos que adicioneunstructured
, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.ROOT_REPOSITORY
: adicione o URL do repositório Git a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
usa o protocolo HTTPS. Este campo é obrigatório.ROOT_REVISION
: adicione a revisão do Git (etiqueta ou hash) ou o ramo a partir do qual sincronizar. Este campo é opcional e o valor predefinido éHEAD
. Quando usar um hash, tem de ser um hash completo e não uma forma abreviada.ROOT_BRANCH
: adicione a ramificação do repositório a partir da qual quer sincronizar. Este campo é opcional e o valor predefinido émaster
. Recomendamos que use o camporevision
para especificar um nome de ramificação para simplificar. Se o camporevision
e o campobranch
forem especificados,revision
tem prioridade sobrebranch
.ROOT_DIRECTORY
: adicione o caminho no repositório Git ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/
) do repositório.ROOT_AUTH_TYPE
: adicione um dos seguintes tipos de autenticação:none
: Não usar autenticaçãossh
: Use um par de chaves SSHcookiefile
: use umcookiefile
token
: usar um tokengcpserviceaccount
: use uma conta de serviço Google para aceder a um Cloud Source Repositories.gcenode
: use uma conta de serviço Google para aceder a um Cloud Source Repositories. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
Para mais informações sobre estes tipos de autenticação, consulte o artigo Conceder acesso só de leitura do Config Sync ao Git.
Este campo é obrigatório.
ROOT_EMAIL
: se adicionougcpserviceaccount
como o seuROOT_AUTH_TYPE
, adicione o endereço de email da conta de serviço Google. Por exemplo,acm@PROJECT_ID.iam.gserviceaccount.com
.ROOT_SECRET_NAME
: adicione o nome do seu segredo. Se este campo estiver definido, tem de adicionar a chave pública do segredo ao fornecedor do Git. Este campo é opcional.ROOT_NO_SSL_VERIFY
: para desativar a validação do certificado SSL, defina este campo comotrue
. O valor predefinido éfalse
.ROOT_CA_CERT_SECRET_NAME
: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de Git tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nomecert
. Este campo é opcional.Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação
Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo
spec
, consulte Campos RootSync.Este manifesto cria um objeto
RootSync
que usa o Git como origem.OCI
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: oci sourceFormat: ROOT_FORMAT oci: image: ROOT_IMAGE dir: ROOT_DIRECTORY auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
Substitua o seguinte:
ROOT_SYNC_NAME
: adicione o nome do objeto RootSync.ROOT_FORMAT
: adicioneunstructured
para usar um repositório não estruturado ou adicionehierarchy
para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido éhierarchy
. Recomendamos que adicioneunstructured
, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.ROOT_IMAGE
: o URL da imagem OCI a usar como repositório raiz, por exemplo,LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME
. Por predefinição, a imagem é extraída da etiquetalatest
, mas pode extrair imagens através deTAG
ouDIGEST
. EspecifiqueTAG
ouDIGEST
emPACKAGE_NAME
:- Para puxar por
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Para puxar por
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Para puxar por
ROOT_DIRECTORY
: adicione o caminho no repositório ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/
) do repositório.ROOT_AUTH_TYPE
: adicione um dos seguintes tipos de autenticação:none
: Não usar autenticaçãogcenode
: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.gcpserviceaccount
: use uma conta de serviço Google para aceder a uma imagem.
Este campo é obrigatório.
ROOT_EMAIL
: se adicionougcpserviceaccount
como o seuROOT_AUTH_TYPE
, adicione o endereço de email da conta de serviço Google. Por exemplo,acm@PROJECT_ID.iam.gserviceaccount.com
.ROOT_CA_CERT_SECRET_NAME
: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de OCI tem de estar a usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nomecert
. Este campo é opcional.
Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação
Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo
spec
, consulte Campos RootSync.Este manifesto cria um objeto
RootSync
que usa uma imagem OCI como origem.Leme
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: helm sourceFormat: ROOT_FORMAT helm: repo: ROOT_HELM_REPOSITORY chart: HELM_CHART_NAME version: HELM_CHART_VERSION releaseName: HELM_RELEASE_NAME namespace: HELM_RELEASE_NAMESPACE values: foo: bar: VALUE_1 baz: - qux: VALUE_2 xyz: VALUE_3 includeCRDs: HELM_INCLUDE_CRDS auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL secretRef: name: ROOT_SECRET_NAME caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAME
Substitua o seguinte:
ROOT_SYNC_NAME
: adicione o nome do objeto RootSync.ROOT_FORMAT
: adicioneunstructured
para usar um repositório não estruturado ou adicionehierarchy
para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido éhierarchy
. Recomendamos que adicioneunstructured
, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.ROOT_HELM_REPOSITORY
: o URL do repositório Helm a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
usa o protocolo HTTPS. Este campo é obrigatório.HELM_CHART_NAME
: adicione o nome do seu gráfico Helm. Este campo é obrigatório.HELM_CHART_VERSION
: a versão do seu gráfico. Este campo é opcional. Se não for especificado nenhum valor, é usada a versão mais recente.HELM_RELEASE_NAME
: o nome do lançamento do Helm. Este campo é opcional.HELM_RELEASE_NAMESPACE
: o espaço de nomes de destino para uma versão. Só define um espaço de nomes para recursos que contenhamnamespace: {{ .Release.Namespace }}
nos respetivos modelos. Este campo é opcional. Se não for especificado nenhum valor, é usado o espaço de nomes predefinidoconfig-management-system
.HELM_INCLUDE_CRDS
: defina comotrue
se quiser que o modelo Helm também gere uma CustomResourceDefinition. Este campo é opcional. Se não for especificado nenhum valor, a predefinição éfalse
e não é gerado nenhum CRD.VALUE
: valores a usar em vez dos valores predefinidos que acompanham o gráfico Helm. Formate este campo da mesma forma que o ficheiro values.yaml do gráfico Helm. Este campo é opcional.ROOT_AUTH_TYPE
: adicione um dos seguintes tipos de autenticação:none
: Não usar autenticaçãotoken
: use um nome de utilizador e uma palavra-passe para aceder a um repositório Helm privado.gcenode
: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.gcpserviceaccount
: use uma conta de serviço Google para aceder a uma imagem.
Este campo é obrigatório.
ROOT_EMAIL
: se adicionougcpserviceaccount
como o seuROOT_AUTH_TYPE
, adicione o endereço de email da conta de serviço Google. Por exemplo,acm@PROJECT_ID.iam.gserviceaccount.com
.ROOT_SECRET_NAME
: adicione o nome do seu segredo setoken
for oROOT_AUTH_TYPE
. Este campo é opcional.ROOT_CA_CERT_SECRET_NAME
: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor do Helm tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nomecert
. Este campo é opcional.
Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação
Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo
spec
, consulte Campos RootSync.Este manifesto cria um objeto
RootSync
que usa o Helm como origem.Para criar a configuração do Config Sync, crie um objeto RootSync aplicando o manifesto:
kubectl apply -f root-sync.yaml
Para verificar se as alterações foram aplicadas, veja o objeto RootSync:
kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
Atualize o controlador de configuração
Uma vez que o Config Controller é um serviço gerido, a Google atualiza-o automaticamente. Para ver detalhes sobre as novas funcionalidades e saber que versões do Config Sync, Policy Controller e Config Connector o Config Controller usa, consulte as notas de lançamento do Config Controller.
Elimine a instância do Config Controller
Se decidir deixar de usar uma instância do Config Controller, limpe todos os recursos do Config Connector criados antes de eliminar o próprio cluster do Config Controller.
Se eliminar a instância do Config Controller sem eliminar primeiro os recursos aprovisionados, os recursos ficam num estado abandonado. Os recursos continuam a existir em Google Cloud (e incorrem em custos de faturação), mas não são geridos a partir da configuração declarativa.
Depois de eliminar todos os seus recursos, elimine o cluster do Config Controller:
gcloud anthos config controller delete \
--location=LOCATION CONFIG_CONTROLLER_NAME
Considerações de produção
Quando passar para a produção, deve rever primeiro as considerações de alta disponibilidade para o Config Controller.
O que se segue?
- Saiba mais sobre as práticas recomendadas para a escalabilidade do Config Controller
- Implemente cargas de trabalho personalizadas em clusters do Config Controller
- Resolva problemas do controlador de configuração.
- Receba apoio técnico.
- Saiba mais sobre a sincronização de configurações e políticas com o Config Sync.
- Saiba mais sobre a aplicação de políticas com o Policy Controller.
- Saiba mais sobre os recursos do Config Connector.