Personalize a instalação do Config Sync

Com o Config Sync, pode gerir os seus recursos do Kubernetes sincronizando configurações a partir de uma fonte central de verdade, como um repositório Git, uma imagem OCI ou um gráfico Helm. Se as instruções de instalação predefinidas não forem adequadas às suas necessidades, pode ter de personalizar a instalação do Config Sync.

Esta página mostra como fazer uma instalação e uma configuração avançadas do Config Sync. O processo de instalação inclui o seguinte:

  • Instalar o Config Sync em clusters individuais através da Google Cloud consola, da CLI do Google Cloud ou do Terraform.
  • Configurar o repositório raiz, incluindo o tipo de origem, o formato e a autenticação.
  • Validar a instalação e a configuração bem-sucedidas do Config Sync.

Limitações

A sincronização de configuração não suporta a configuração de helm como o tipo de origem usando a consola Google Cloud ou a CLI Google Cloud. Pode configurar o objeto RootSync ou RepoSync para sincronizar a partir de um repositório Helm através da API Kubernetes ou declará-lo noutra fonte de verdade. Consulte a Configuração do repositório Helm para mais informações.

Antes de começar

Antes de instalar o Config Sync, prepare a sua fonte de verdade e um cluster adequado.

Conceda acesso do Config Sync à sua fonte de informação

Para sincronizar a configuração de uma fonte de verdade com os seus clusters, o Config Sync requer acesso só de leitura ao seu repositório. Para autorizar o Config Sync a ler as suas configurações, conclua os seguintes passos:

Reveja os requisitos do cluster

Antes de criar um cluster, reveja os requisitos do cluster.

Instale o Config Sync

Quando instala o Config Sync através da Google Cloud consola ou da CLI Google Cloud, o Config Sync cria automaticamente um objeto RootSync denominado root-sync. Pode usar comandos kubectl para modificar root-sync e adicionar configurações do Config Sync adicionais. Para mais informações, consulte o artigo Configure o Config Sync com comandos kubectl.

Consola

Instale o Config Sync

Para instalar o Config Sync, todos os clusters têm de estar registados numa frota. Quando instala o Config Sync na Google Cloud consola, a seleção de clusters individuais regista automaticamente esses clusters na sua frota.

  1. Na Google Cloud consola, aceda à página Configuração na secção Funcionalidades.

    Aceda à configuração

  2. Clique em Instalar Config Sync.
  3. Selecione a versão do Config Sync que quer usar.
  4. 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 que selecionar. Todos os clusters selecionados são registados automaticamente na sua frota.
  5. Se estiver a instalar o Config Sync em clusters individuais, na tabela Clusters disponíveis, selecione os clusters nos quais quer instalar o Config Sync.
  6. Clique em Instalar Config Sync. No separador Definições, após alguns minutos, deve ver Ativado na coluna Estado para os clusters na sua frota.

Implemente um pacote

Depois de registar os seus clusters numa frota e instalar o Config Sync, pode configurar o Config Sync para implementar um pacote num cluster a partir de uma fonte de verdade. Pode implementar o mesmo pacote em vários clusters ou implementar pacotes diferentes em clusters diferentes. Pode editar um pacote após a implementação, exceto algumas definições, como o nome do pacote e o tipo de sincronização. Para mais informações, consulte o artigo Faça a gestão de pacotes.

Para implementar um pacote, conclua os seguintes passos:

  1. Na Google Cloud consola, aceda ao painel de controlo do Config Sync.

    Aceda ao painel de controlo do Config Sync

  2. Clique em Implementar pacote.

  3. Na tabela Selecionar clusters para implementação de pacotes, selecione o cluster ao qual quer implementar um pacote e, de seguida, clique em Continuar.

  4. Selecione Pacote alojado no Git ou Pacote alojado no OCI como o tipo de origem e, de seguida, clique em Continuar.

  5. Na secção Detalhes do pacote, introduza um Nome do pacote, que identifica o objeto RootSync ou RepoSync.

  6. No campo Tipo de sincronização, escolha Sincronização ao nível do cluster ou Sincronização ao nível do espaço de nomes como o tipo de sincronização.

    A sincronização com âmbito de cluster cria um objeto RootSync e a sincronização com âmbito de espaço de nomes cria um objeto RepoSync. Para mais informações sobre estes objetos, consulte o artigo Arquitetura da sincronização de configuração.

  7. Na secção Origem, conclua o seguinte:

    • Para origens alojadas num repositório Git, introduza os seguintes campos:

      1. Introduza o URL do repositório Git que está a usar como fonte de informação como o URL do repositório.
      2. Opcional: atualize o campo Revisão para verificar se não está a usar o HEAD predefinido.
      3. Opcional: atualize o campo Caminho se não quiser sincronizar a partir do repositório raiz.
      4. Opcional: atualize o campo Branch se não estiver a usar a ramificação main predefinida.
    • Para origens alojadas numa imagem OCI, introduza os seguintes campos:

      1. Introduza o URL da imagem OCI que está a usar como fonte de dados fidedignos como imagem.
      2. Introduza o caminho do diretório a partir do qual quer sincronizar, relativo ao diretório raiz, como o Directory.
  8. (Opcional): expanda a secção Definições avançadas para concluir o seguinte:

    1. Selecione um Tipo de autenticação. O Config Sync precisa de acesso só de leitura à sua fonte de informações verdadeiras para ler os ficheiros de configuração na origem e aplicá-los aos seus clusters. A menos que a sua origem não exija autenticação, como um repositório público, certifique-se de que concede ao Config Sync acesso apenas de leitura ao seu repositório Git, imagem OCI ou gráfico Helm (apenas na CLI gcloud). Escolha o mesmo tipo de autenticação que configurou quando instalou o Config Sync:

      • Nenhuma: não use autenticação.
      • SSH: autentique-se através de um par de chaves SSH.
      • Cookiefile: autentique-se através de um cookiefile.
      • Token: autentique-se através de um token de acesso ou de uma palavra-passe.
      • Google Cloud Repository: use uma conta de serviço Google para aceder a um repositório do Cloud Source Repositories. Selecione esta opção apenas se a Federação de identidades de carga de trabalho para o GKE não estiver ativada no seu cluster.
      • Workload Identity: use uma conta de serviço Google para aceder a um repositório do Cloud Source Repositories.
    2. Introduza um número em segundos para definir o Tempo de espera de sincronização, que determina durante quanto tempo o Config Sync aguarda entre tentativas de obtenção da fonte de verdade.

    3. Introduza um URL de proxy Git para o proxy HTTPS a usar quando comunicar com a fonte de informações fidedignas.

    4. Escolha Hierarquia para alterar o Formato de origem.

      O valor predefinido Não estruturado é recomendado na maioria dos casos, uma vez que lhe permite organizar a sua fonte de dados fidedignos da forma que quiser.

  9. Clique em Implementar pacote.

    É feito o redirecionamento para a página Packages do Config Sync. Após alguns minutos, deve ver Sincronizado na coluna Estado da sincronização para o cluster que configurou.

gcloud

Antes de continuar, certifique-se de que registou os seus clusters numa frota.

  1. Ative a funcionalidade de frota ConfigManagement:

    gcloud beta container fleet config-management enable
    
  2. Prepare a configuração criando um ficheiro denominado apply-spec.yaml e copiando o seguinte ficheiro YAML para o mesmo.

    Pode definir todos os campos spec.configSync opcionais de que precisa quando cria o manifesto e, mais tarde, usar os comandos kubectl para a configuração. Também só pode definir o campo spec.configSync.enabled como true e omitir os campos opcionais. Posteriormente, pode usar comandos kubectl para criar objetos RootSync adicionais ou RepoSyncs que pode gerir totalmente com comandos kubectl mais tarde.

    # 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 o seguinte:

    • SOURCE_TYPE: adicione git para sincronizar a partir de um repositório Git, oci para sincronizar a partir de uma imagem OCI ou helm para sincronizar a partir de um gráfico Helm. Se não for especificado nenhum valor, o valor predefinido é git.
    • FORMAT: adicione unstructured para usar um repositório não estruturado ou adicione hierarchy 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 adicione unstructured, porque este formato permite organizar as configurações da forma mais conveniente para si.
    • REPO: adicione o URL da fonte de confiança. Os URLs dos repositórios Git e Helm usam o protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples. Se planeia usar o SSH como o seu secretType, introduza o URL com o protocolo SSH. Este campo é obrigatório e, se não introduzir um protocolo, o URL é tratado como um URL HTTPS.

      Os URLs de OCI usam o seguinte formato: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Por predefinição, a imagem é extraída da etiqueta latest, mas pode extrair imagens através de TAG ou DIGEST. Especifique TAG ou DIGEST no PACKAGE_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
    • REVISION: a revisão de Git (etiqueta ou hash) ou o nome do ramo a partir do qual sincronizar. Quando usar um hash, tem de ser um hash completo e não uma forma abreviada.

    • SECRET_TYPE: uma das seguintes opções secretTypes:

      git

      • none: Não usar autenticação.
      • ssh: Use um par de chaves SSH.
      • cookiefile: use um cookiefile.
      • token: use um token.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a um repositório do Cloud Source Repositories ou do Secure Source Manager. Se selecionar este tipo de autenticação, tem de criar uma associação de políticas do IAM depois de concluir a configuração do Config Sync. Para ver detalhes, consulte o separador Conta de serviço Google da secção Conceda acesso do Config Sync ao Git com uma conta de serviço Google.
      • 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.
      • githubapp: use uma app GitHub para autenticar um repositório do GitHub.

      Para mais informações sobre estes tipos de autenticação, consulte o artigo Conceda acesso do Config Sync ao Git.

      oci

      • none: Não usar autenticação
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione apenas esta opção 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.

      leme

      • token: use um token.
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione apenas esta opção 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.
      • EMAIL: se adicionou gcpserviceaccount como secretType, adicione o endereço de email da conta do serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

      • METRICS_EMAIL: o email da Google Cloud conta de serviço (GSA) usada para exportar métricas do Config Sync para o Cloud Monitoring. O GSA deve ter a função do IAM Monitoring Metric Writer (roles/monitoring.metricWriter). A ServiceAccount do Kubernetes default no espaço de nomes config-management-monitoring deve estar associada à GSA.

      • DIRECTORY: o caminho do diretório a sincronizar, relativo à raiz do repositório Git. Todos os subdiretórios do diretório especificado são incluídos e sincronizados com o cluster. O valor predefinido é o diretório de raiz do repositório.

    Para ver uma lista completa dos campos que pode adicionar ao campo spec, consulte campos gcloud.

  3. Aplique o ficheiro apply-spec.yaml. Se estiver a usar um manifesto existente, deve aplicar o ficheiro ao cluster que quer configurar com as definições que obteve no comando anterior:

    gcloud beta container fleet config-management apply \
        --membership=MEMBERSHIP_NAME \
        --config=CONFIG_YAML_PATH \
        --project=PROJECT_ID
    

    Substitua o seguinte:

    • MEMBERSHIP_NAME: o nome do membro da frota que escolheu quando registou o cluster. Pode encontrar o nome com gcloud container fleet memberships list.
    • CONFIG_YAML_PATH: o caminho para o ficheiro apply-spec.yaml.
    • PROJECT_ID: o ID do seu projeto.

Terraform

Para cada cluster no qual 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 seguinte:

git

data "google_project" "default" {}

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-basic"
  location = "us-central1"

  fleet {
    project = data.google_project.default.project_id
  }

  enable_autopilot = true
}

resource "google_gke_hub_feature" "configmanagement_feature" {
  name     = "configmanagement"
  location = "global"
}

resource "google_gke_hub_feature_membership" "configmanagement_feature_member" {
  location = "global"

  feature             = google_gke_hub_feature.configmanagement_feature.name
  membership          = google_container_cluster.default.fleet[0].membership_id
  membership_location = google_container_cluster.default.fleet[0].membership_location

  configmanagement {
    config_sync {
      # The field `enabled` was introduced in Terraform version 5.41.0, and
      # needs to be set to `true` explicitly to install Config Sync.
      enabled = true
      git {
        sync_repo   = "REPO"
        sync_branch = "BRANCH"
        policy_dir  = "DIRECTORY"
        secret_type = "SECRET"
      }
    }
  }
}

Substitua o seguinte:

  • REPO: o URL do repositório Git que contém os seus ficheiros 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 que quer sincronizar.
  • SECRET: o tipo de autenticação secreta.

oci

data "google_project" "default" {}

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-basic"
  location = "us-central1"

  fleet {
    project = data.google_project.default.project_id
  }

  enable_autopilot = true
}

resource "google_gke_hub_feature" "configmanagement_feature" {
  name     = "configmanagement"
  location = "global"
}

resource "google_gke_hub_feature_membership" "configmanagement_feature_member" {
  location = "global"

  feature             = google_gke_hub_feature.configmanagement_feature.name
  membership          = google_container_cluster.default.fleet[0].membership_id
  membership_location = google_container_cluster.default.fleet[0].membership_location

  configmanagement {
    config_sync {
      # The field `enabled` was introduced in Terraform version 5.41.0, and
      # needs to be set to `true` explicitly to install Config Sync.
      enabled = true
      oci {
        sync_repo   = "REPO"
        policy_dir  = "DIRECTORY"
        secret_type = "SECRET"
      }
    }
  }
}

Substitua o seguinte:

  • REPO: o URL para o repositório de imagens da OCI que contém os seus ficheiros de configuração.
  • DIRECTORY: o caminho absoluto do diretório que contém os recursos que quer sincronizar. Para usar o diretório raiz, deixe este campo em branco.
  • SECRET: o tipo de autenticação secreta.

Repita este processo para cada cluster que quer sincronizar.

Para mais informações sobre a utilização do Terraform, consulte o artigo Apoio técnico do Terraform para o Config Sync.

Depois de configurar o repositório raiz, pode, opcionalmente, configurar a sincronização a partir de vários repositórios, incluindo outros repositórios raiz e repositórios de espaço de nomes. Os repositórios de espaços de nomes são úteis se quiser um repositório que contenha configurações com âmbito de espaço de nomes sincronizadas com um espaço de nomes específico em todos os clusters.

Valide a instalação

Depois de instalar e configurar o Config Sync, pode verificar se a instalação foi concluída com êxito.

gcloud

Execute o seguinte comando:

nomos status

Uma instalação bem-sucedida mostra um estado de SYNCED ou PENDING.

Para mais detalhes sobre as informações fornecidas pelo nomos status, incluindo erros comunicados, consulte o artigo Verifique o estado da sincronização da configuração na documentação da ferramenta de linha de comandos nomos.

consola

Conclua os seguintes passos:

  1. Na Google Cloud consola, aceda à página Configuração na secção Funcionalidades.

    Aceda à configuração

  2. No separador Pacotes, verifique a coluna Estado da sincronização na tabela de clusters. Uma instalação bem-sucedida do Config Sync tem o estado Instalado. Uma fonte única de informações fidedignas configurada com êxito tem o estado Sincronizado.

O que se segue?