Configurar o Config Sync com comandos kubectl

Nesta página, explicamos como configurar o Config Sync usando comandos kubectl depois de instalar o Config Sync usando o console do Google Cloud ou a CLI do Goggle Cloud.

É possível fazer muitas alterações de configuração usando o console ou a CLI, mas você precisa usar comandos kubectl para substituir alguns padrões do Config Sync a fim de controlar a verificação de certificados SSL e usar uma autoridade certificadora.

Criar e editar o arquivo de configuração RootSync

Para configurar o Config Sync usando comandos kubectl, edite um objeto RootSync criando um arquivo YAML.

Quando você instala o Config Sync usando o Console do Google Cloud ou a CLI do Google Cloud, o Config Sync cria automaticamente um objeto RootSync chamado root-sync. Esse objeto contém as informações de configuração mais recentes do Config Sync. Sempre que você faz uma alteração no console do Google Cloud ou na CLI do Google Cloud, root-sync é atualizado.

Saiba mais sobre os campos que podem ser editados com kubectl

É possível fazer alterações avançadas em root-sync usando comandos kubectl para os campos não suportados no console do Google Cloud ou na Google Cloud CLI. Se você quiser criar e atualizar objetos RootSync ou RepoSync diretamente usando comandos kubectl, consulte Campos RootSync e RepoSync.

Antes de fazer qualquer alteração no arquivo YAML criado na próxima seção, conheça a tabela a seguir. Esta tabela lista os campos que podem ser editados e adicionados. Se você editar campos não listados nesta tabela, o Config Sync reverterá automaticamente as alterações para os valores definidos na última configuração no Console do Google Cloud ou na CLI do Google Cloud.

Chave Descrição
spec.git.noSSLVerify noSSLVerify especifica se a verificação do certificado SSL será ativada ou desativada. Padrão: false.
Se noSSLVerify for definido como true, vai instruir o Git a pular a verificação do certificado SSL.
spec.git.caCertSecretRef.name O nome do secret que contém o certificado da autoridade de certificação (CA). Se este campo for preenchido, o servidor Git precisará usar um certificado emitido por essa CA. O certificado de CA precisa ser armazenado no secret em uma chave chamada "cert".
spec.override.resources A lista de solicitações de recursos do contêiner e substituições de limite. Opcional.
Cada item da lista contém três campos:
  • containerName: este campo pode ser git-sync, oci-sync, hydration-controller, ou reconciler.
  • cpuRequest (opcional)
  • cpuLimit (opcional)
  • memoryRequest (opcional)
  • memoryLimit (opcional)

Quando um valor de substituição para um limite ou uma solicitação de recurso não é fornecido, o valor padrão do recurso para o limite ou a solicitação é usado.
spec.override.gitSyncDepth gitSyncDepth permite substituir o número de confirmações do Git a serem buscadas.
Precisa ser menor que 0.
O Config Sync fará um clone completo se esse campo for 0 e um clone superficial se ele for maior que 0.
Se esse campo não for fornecido, o Config Sync o configurará automaticamente.
spec.override.statusMode statusMode permite ativar ou desativar a captura do status no nível do recurso.
O padrão é enabled.
Para desativar a captura do status no nível do recurso, defina esse campo como disabled.
spec.override.reconcileTimeout reconcileTimeout permite substituir o limite de tempo para aguardar que os recursos em um grupo de aplicação sejam reconciliados antes de desistir. Todos os recursos em uma confirmação podem estar em vários grupos de aplicação com base nas dependências.
O tempo limite padrão é 5m.
Use strings para especificar o valor deste campo, por exemplo, 30s e 5m.
spec.override.enableShellInRendering enableShellInRendering especifica se o acesso ao shell será ativado ou desativado no processo de renderização. As bases remotas do Kustomize precisam de acesso ao shell. Definir esse campo como true permite o acesso ao shell no processo de renderização e permite extrair bases remotas de repositórios públicos.
O padrão é false.

Criar o arquivo

Para criar e editar um arquivo de configuração para root-sync, siga estas etapas:

  1. Para garantir que você esteja recuperando as informações de configuração do cluster correto, configure o acesso da linha de comando de kubectl:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --zone ZONE \
        --project PROJECT_ID
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster que tem a configuração do Config Sync que você quer alterar
    • ZONE: a zona em que você criou o cluster
    • PROJECT_ID: ID do projeto
  2. Copie as informações de configuração do objeto RootSync que o Config Sync criou em um arquivo YAML:

    kubectl get rootsync root-sync -n config-management-system -o yaml >
    FILE_NAME.yaml
    

    Substitua FILE_NAME por um nome para o arquivo de configuração.

  3. Abra o arquivo YAML que você criou e faça as alterações de configuração necessárias. Por exemplo, para substituir o limite de memória do contêiner git-sync, adicione os seguintes campos em negrito:

    apiVersion: v1
    items:
    - apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
    annotations:
      configmanagement.gke.io/managed-by-hub: "true"
      configmanagement.gke.io/update-time: "1644945169"
    creationTimestamp: "2022-02-15T17:12:52Z"
    generation: 1
    name: root-sync
    namespace: config-management-system
    resourceVersion: "211980457"
    uid: aa30a94b-2825-4590-ad30-5af848403502
    spec:
    git:
      auth: none
      branch: main
      dir: /quickstart/config-sync
      period: 15s
      repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      revision: HEAD
      secretRef: {}
    override:
      resources:
      - containerName: "git-sync"
        memoryLimit: "400Mi"
    sourceFormat: unstructured
    # Remainder of RootSync omitted
    
  4. Aplique as alterações ao arquivo YAML:

    kubectl apply -f FILE_NAME.yaml
    
  5. Para verificar se o Config Sync aplicou suas alterações, consulte o objeto RootSync:

    kubectl describe rootsync root-sync -n config-management-system
    
  6. Para verificar se as mudanças não introduziram erros, use o comando nomos status:

    nomos status
    

Configurar a autoridade certificadora

No caso dos servidores configurados com certificados de uma autoridade certificadora (CA, na sigla em inglês) que ainda não é confiável, o Config Sync pode ser configurado para usar um certificado CA para verificar as conexões HTTPS com o servidor. Isso é compatível com servidores Git, Helm ou OCI. O certificado de CA precisa incluir certificados SSL completos (raiz/intermediário/folha). Se o servidor já estiver usando uma CA confiável ou se você não estiver se conectando por HTTPS, pule esta etapa e deixe caCertSecretRef não definido.

RootSync

  1. Busque e salve o certificado de CA usado para emitir o certificado do seu servidor Git.

  2. Para objetos RootSync, o Secret precisa ser criado no namespace config-management-system. Por exemplo:

    kubectl create secret generic ROOT_CA_CERT_SECRET_NAME 
    --namespace=config-management-system
    --from-file=cert=/path/to/CA_CERT_FILE

  3. Ao configurar o objeto RootSync, defina o valor do campo caCertSecretRef.name no objeto RootSync como ROOT_CA_CERT_SECRET_NAME.

RepoSync

  1. Busque e salve o certificado de CA usado para emitir o certificado do seu servidor Git.

  2. Para objetos RepoSync, o Secret precisa ser criado no mesmo namespace que o RepoSync. Por exemplo:

    kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME 
    --namespace=REPO_SYNC_NAMESPACE
    --from-file=cert=/path/to/CA_CERT_FILE

  3. Ao configurar o RepoSync, defina o valor do campo caCertSecretRef.name no objeto RepoSync como NAMESPACE_CA_CERT_SECRET_NAME.

Remover o objeto RootSync

Para excluir root-sync, execute o seguinte comando:

kubectl delete -f FILE_NAME

Substitua FILE_NAME pelo nome do arquivo de configuração RootSync. Por exemplo, root-sync.yaml.

A exclusão de um objeto RootSync ou RepoSync não limpa as anotações e os identificadores do Config Sync. Para limpar todos os recursos gerenciados, sincronize em um diretório Git vazio.

A seguir