Configure o Config Sync com comandos kubectl

Esta página explica como configurar a sincronização de configuração através de comandos kubectl depois de instalar a sincronização de configuração através da consola Google Cloud ou da CLI Google Cloud.

Embora possa fazer muitas alterações de configuração através da consola ou da CLI, tem de usar comandos kubectl para substituir algumas predefinições do Config Sync, controlar a validação do certificado SSL e usar uma autoridade de certificação.

Crie e edite o ficheiro de configuração do RootSync

Para configurar o Config Sync através de comandos kubectl, edita um objeto RootSync criando um ficheiro YAML.

Quando instala o Config Sync através da consola Google Cloud ou da CLI Google Cloud, o Config Sync cria automaticamente um objeto RootSync denominado root-sync. Este objeto contém as informações de configuração mais recentes para o Config Sync. Sempre que faz uma alteração na Google Cloud consola ou na CLI do Google Cloud, o root-sync é atualizado.

Saiba mais sobre os campos que pode editar através do kubectl

Pode fazer alterações avançadas a root-sync através de comandos kubectl para os campos não suportados na consola Google Cloud ou na CLI do Google Cloud. Se quiser criar e, em seguida, atualizar objetos RootSync ou RepoSync diretamente através de comandos kubectl, consulte os campos RootSync e RepoSync.

Antes de fazer alterações ao ficheiro YAML que criar na secção seguinte, familiarize-se com a tabela seguinte. Esta tabela apresenta os campos que pode editar e adicionar. Se editar campos que não constam nesta tabela, a sincronização de configuração reverte automaticamente as alterações para os valores que definiu quando configurou a sincronização de configuração pela última vez na Google Cloud consola ou na CLI do Google Cloud.

Chave Descrição
spec.git.noSSLVerify noSSLVerify especifica se a validação do certificado SSL deve ser ativada ou desativada. Predefinição: false.
Se noSSLVerify estiver definido como true, indica ao Git para ignorar a validação do certificado SSL.
spec.git.caCertSecretRef.name O nome do segredo que contém o certificado da autoridade de certificação (CA). Se este campo for fornecido, o servidor Git tem de usar um certificado emitido por esta AC. O certificado da CA tem de ser armazenado no Secret com a chave "cert".
spec.override.resources A lista de pedidos de recursos do contentor e substituições de limites. Opcional.
Cada item na 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 não é fornecido um valor de substituição para um pedido ou um limite de recursos, é usado o valor de recurso predefinido para o pedido ou o limite.
spec.override.gitSyncDepth gitSyncDepth permite-lhe substituir o número de commits do Git a obter.
Tem de ser, pelo menos, 0.
O Config Sync faz uma clonagem completa se este campo for 0 e uma clonagem superficial se este campo for superior a 0.
Se este campo não for fornecido, o Config Sync configura-o automaticamente.
spec.override.statusMode statusMode permite-lhe ativar ou desativar a captura do estado ao nível do recurso.
A predefinição é enabled.
Para desativar a captura do estado ao nível do recurso, defina este campo como disabled.
spec.override.reconcileTimeout reconcileTimeout permite-lhe substituir o limite de tempo de espera por recursos num grupo de aplicação para reconciliar antes de desistir. Todos os recursos num commit podem estar em vários grupos de aplicação com base nas dependências.
O tempo limite predefinido é 5m.
Use uma string para especificar o valor deste campo, por exemplo, 30s, 5m.
spec.override.enableShellInRendering enableShellInRendering especifica se o acesso à shell deve ser ativado ou desativado no processo de renderização. As bases remotas do Kustomize requerem acesso à shell. Se definir este campo como true, ativa o acesso à shell no processo de renderização e suporta a obtenção de bases remotas de repositórios públicos.
A predefinição é false.

Crie o ficheiro

Para criar e editar um ficheiro de configuração para root-sync, conclua os seguintes passos:

  1. Para se certificar de que está a obter as informações de configuração para o cluster correto, configure o acesso à linha de comandos:kubectl

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

    Substitua o seguinte:

    • CLUSTER_NAME: o nome do cluster que tem a configuração do Config Sync que quer alterar
    • ZONE: a zona na qual criou o cluster
    • PROJECT_ID: o ID do seu projeto
  2. Copie as informações de configuração do objeto RootSync que o Config Sync criou para um ficheiro YAML:

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

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

  3. Abra o ficheiro YAML que criou e faça as alterações de configuração necessárias. Por exemplo, para substituir o limite de memória do contentor git-sync, adicione os seguintes campos a 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 ficheiro YAML:

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

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

    nomos status
    

Configure a autoridade de certificação

Para servidores configurados com certificados de uma autoridade de certificação (AC) que ainda não seja fidedigna, o Config Sync pode ser configurado para usar um certificado da AC para validar as ligações HTTPS ao servidor. Isto é suportado para servidores Git, Helm ou OCI. O certificado da AC tem de incluir certificados SSL completos (raiz/intermédio/folha). Se o seu servidor já estiver a usar uma AC fidedigna ou não estiver a estabelecer ligação através de HTTPS, pode ignorar este passo e deixar caCertSecretRef não definido.

RootSync

  1. Obtenha o certificado da CA que foi usado para emitir o certificado para o seu servidor Git e guarde-o num ficheiro.

  2. Para objetos RootSync, o Secret tem de ser criado no espaço de nomes 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. Quando configurar o objeto RootSync, defina o valor do campo caCertSecretRef.name no objeto RootSync para ROOT_CA_CERT_SECRET_NAME.

RepoSync

  1. Obtenha o certificado da CA que foi usado para emitir o certificado para o seu servidor Git e guarde-o num ficheiro.

  2. Para objetos RepoSync, o segredo tem de ser criado no mesmo espaço de nomes 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. Quando configurar o RepoSync, defina o valor do campo caCertSecretRef.name no objeto RepoSync como NAMESPACE_CA_CERT_SECRET_NAME.

Remova o objeto RootSync

Para eliminar root-sync, execute o seguinte comando:

kubectl delete -f FILE_NAME

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

A eliminação de um objeto RootSync ou RepoSync não limpa as anotações e as etiquetas do Config Sync. Para limpar todos os recursos geridos, sincronize a partir de um diretório Git vazio.

O que se segue?