Personalizar a instalação do Config Sync

Com o Config Sync, é possível gerenciar seus recursos do Kubernetes sincronizando configurações de uma fonte central de informações, como um repositório Git, uma imagem OCI ou um gráfico Helm. Se as instruções de instalação padrão não atenderem às suas necessidades, talvez seja necessário personalizar a instalação do Config Sync.

Nesta página, mostramos como fazer uma instalação e configuração avançada do Config Sync. O processo de instalação inclui o seguinte:

  • Instalar o Config Sync em clusters individuais usando o consoleGoogle Cloud , a Google Cloud CLI ou o Terraform.
  • Configurar o repositório raiz, incluindo tipo de origem, formato e autenticação.
  • Verificar se a instalação e a configuração do Config Sync foram bem-sucedidas.

Limitações

O Config Sync não oferece suporte à configuração de helm como o tipo de origem usando o console Google Cloud ou a Google Cloud CLI. É possível configurar o objeto RootSync ou RepoSync para sincronizar de um repositório do Helm usando a API Kubernetes ou declará-lo em outra origem de verdade. Consulte Configuração do repositório Helm para mais informações.

Antes de começar

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

Conceder acesso do Config Sync à sua fonte de verdade

Para sincronizar a configuração de uma fonte de verdade com seus clusters, o Config Sync exige acesso somente leitura ao seu repositório. Para autorizar o Config Sync a ler suas configurações, siga estas etapas:

Revisar os requisitos do cluster

Antes de criar um cluster, consulte os requisitos de cluster.

Instalar o Config Sync

Quando você instala o Config Sync usando o console Google Cloud ou a Google Cloud CLI, o Config Sync cria automaticamente um objeto RootSync chamado root-sync. É possível usar comandos kubectl para modificar root-sync e adicionar outras configurações do Config Sync. Para mais informações, consulte Configurar o Config Sync com comandos kubectl.

Console

Instalar o Config Sync

Para instalar o Config Sync, todos os clusters precisam estar registrados em uma frota. Ao instalar o Config Sync no console do Google Cloud , a seleção de clusters individuais os registra automaticamente na frota.

  1. No console Google Cloud , acesse a página Configuração na seção Recursos.

    Acessar a configuração

  2. Clique em Instalar o Config Sync.
  3. Selecione a versão do Config Sync que você 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 selecionados. Todos os clusters selecionados são registrados automaticamente na sua frota.
  5. Se você estiver instalando o Config Sync em clusters individuais, selecione aqueles em que você quer instalar o Config Sync na tabela Clusters disponíveis.
  6. Clique em Instalar o Config Sync. Na guia Configurações, após alguns minutos, a mensagem Ativado vai aparecer na coluna Status dos clusters na sua frota.

Implantar um pacote

Depois de registrar os clusters em uma frota e instalar o Config Sync, é possível configurar o Config Sync para implantar um pacote em um cluster de uma fonte de verdade. É possível implantar o mesmo pacote em vários clusters ou implantar pacotes diferentes em clusters diferentes. É possível editar um pacote após a implantação, exceto algumas configurações, como o nome do pacote e o tipo de sincronização. Para mais informações, consulte Gerenciar pacotes.

Para implantar um pacote, siga estas etapas:

  1. No console Google Cloud , acesse o painel do Config Sync.

    Acessar o painel do Config Sync

  2. Clique em Implantar pacote.

  3. Na tabela Selecionar clusters para implantação do pacote, selecione o cluster em que quer implantar um pacote e clique em Continuar.

  4. Selecione Pacote hospedado no Git ou Pacote hospedado na OCI como tipo de origem e clique em Continuar.

  5. Na seção Package details, insira um Package name, que identifica o objeto RootSync ou RepoSync.

  6. No campo Sync type, escolha Cluster scoped sync ou Namespace scoped sync como o tipo de sincronização.

    A sincronização com escopo de Cluster cria um objeto RootSync, e a sincronização com escopo de Namespace cria um objeto RepoSync. Para mais informações sobre esses objetos, consulte Arquitetura do Config Sync.

  7. Na seção Origem, faça o seguinte:

    • Para fontes hospedadas em um repositório Git, insira os seguintes campos:

      1. Digite o URL do repositório Git que você está usando como fonte de verdade como o URL do repositório.
      2. Opcional: atualize o campo Revisão para verificar se você não está usando o HEAD padrão.
      3. Opcional: atualize o campo Path se você não quiser sincronizar a partir do repositório raiz.
      4. Opcional: atualize o campo Ramificação se você não estiver usando a ramificação main padrão.
    • Para fontes hospedadas em uma imagem OCI, insira os seguintes campos:

      1. Insira o URL da imagem OCI que você está usando como fonte de verdade como a Imagem.
      2. Insira o caminho do diretório de onde sincronizar, relativo ao diretório raiz, como o Diretório.
  8. (Opcional): expanda a seção Configurações avançadas para concluir o seguinte:

    1. Selecione um Tipo de autenticação. O Config Sync precisa de acesso somente leitura à sua fonte de verdade para ler os arquivos de configuração na origem e aplicá-los aos clusters. A menos que a origem não exija autenticação, como um repositório público, conceda acesso somente leitura ao Config Sync ao repositório Git, imagem OCI ou gráfico Helm (somente na gcloud CLI). Escolha o mesmo tipo de autenticação que você configurou ao instalar o Config Sync:

      • Nenhum: não usar autenticação.
      • SSH: faça a autenticação usando um par de chaves SSH.
      • Cookiefile: faça a autenticação usando um cookiefile.
      • Token: faça a autenticação usando um token de acesso ou uma senha.
      • Google Cloud Repository: use uma conta de serviço do Google para acessar um repositório do Cloud Source Repositories. Selecione esta opção somente se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada no cluster.
      • Identidade da carga de trabalho: use uma conta de serviço do Google para acessar um repositório do Cloud Source Repositories.
    2. Insira um número em segundos para definir o Tempo de espera da sincronização, que determina quanto tempo o Config Sync espera entre as tentativas de extração da fonte de verdade.

    3. Insira um URL de proxy Git para o proxy HTTPS a ser usado ao se comunicar com a fonte da verdade.

    4. Escolha Hierarquia para mudar o Formato de origem.

      O valor padrão Não estruturado é recomendado na maioria dos casos, porque permite organizar a fonte de verdade como você quiser.

  9. Clique em Implantar pacote.

    Você será redirecionado para a página Pacotes do Config Sync. Após alguns minutos, a mensagem Sincronizado vai aparecer na coluna Status da sincronização do cluster configurado.

gcloud

Antes de continuar, registre seus clusters em uma fleet.

  1. Ative o recurso de frota ConfigManagement:

    gcloud beta container fleet config-management enable
    
  2. Prepare a configuração criando um arquivo chamado apply-spec.yaml e copiando o arquivo YAML a seguir nele.

    É possível definir todos os campos spec.configSyncopcionais que são necessários ao criar o manifesto e depois usar comandos kubectl para a configuração. Também é possível definir apenas o campo spec.configSync.enabled como true e omitir os campos opcionais. Posteriormente, é possível usar comandos kubectl para criar outros objetos RootSync ou RepoSyncs que poderão ser gerenciados totalmente mais tarde por meio de comandos kubectl.

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

    • 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 nenhum valor for especificado, o padrão será git.
    • FORMAT: adicione unstructured para usar um repositório não estruturado ou hierarchy para usar um repositório hierárquico. Esses valores diferenciam maiúsculas de minúsculas. Este campo é opcional e o valor padrão é hierarchy. Recomendamos que você adicione unstructured como esse formato para organizar suas configurações da melhor maneira para você.
    • REPO: adicione o URL da fonte da verdade. Os URLs de repositórios Git e Helm usam o protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples. Se você planeja usar o SSH como o secretType, digite o URL com o protocolo SSH. Esse campo é obrigatório e, caso você não insira um protocolo, o URL será tratado como HTTPS URL.

      Os URLs da OCI usam o seguinte formato: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Por padrão, a imagem é extraída da tag latest, mas é possível extrair imagens por TAG ou DIGEST. Especifique TAG ou DIGEST no PACKAGE_NAME:

      • Para extrair por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para extrair por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • REVISION: a revisão do Git (tag ou hash) ou o nome da ramificação para sincronizar. Ao usar um hash, ele precisa ser um hash completo, e não uma forma abreviada.

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

      git

      • none: não usa autenticação.
      • ssh: usa um par de chaves SSH.
      • cookiefile: Use um cookiefile.
      • token: usar um token.
      • gcpserviceaccount: use uma conta de serviço do Google para acessar um repositório do Cloud Source Repositories ou do Secure Source Manager. Se você selecionar esse tipo de autenticação, precisará criar uma vinculação de política do IAM depois de concluir a configuração do Config Sync. Para mais detalhes, consulte a guia "Conta de serviço do Google" da seção Conceder acesso do Config Sync ao Git com uma conta de serviço do Google.
      • gcenode: use uma conta de serviço do Google para acessar um Cloud Source Repositories. Selecione esta opção somente se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada no cluster.
      • githubapp: use um app do GitHub para autenticar um repositório do GitHub.

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

      OCI

      • none: nenhuma autenticação é usada
      • gcenode: use a conta de serviço padrão do Compute Engine para acessar uma imagem no Artifact Registry. Selecione esta opção somente se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada no cluster.
      • gcpserviceaccount: use uma conta de serviço do Google para acessar uma imagem.

      helm

      • token: usar um token.
      • gcenode: use a conta de serviço padrão do Compute Engine para acessar uma imagem no Artifact Registry. Selecione esta opção somente se a Federação de Identidade da Carga de Trabalho para GKE não estiver ativada no cluster.
      • gcpserviceaccount: use uma conta de serviço do Google para acessar uma imagem.
      • EMAIL: se você adicionou gcpserviceaccount como secretType, adicione o endereço de e-mail da sua conta de serviço do Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

      • METRICS_EMAIL: o e-mail da conta de serviço (GSA) do Google Cloud usada para exportar as métricas do Config Sync para o Cloud Monitoring. A GSA precisa ter o papel do IAM de gravador de métricas do Monitoring (roles/monitoring.metricWriter). A conta de serviço do Kubernetes default no namespace config-management-monitoring precisa ser vinculada à GSA.

      • DIRECTORY: o caminho do diretório de onde sincronizar em relação à raiz do repositório Git. Todos os subdiretórios que você especificar serão incluídos e sincronizados com o cluster. O valor padrão é o diretório raiz do repositório.

    Para uma lista completa de campos que podem ser adicionados ao campo spec, consulte gcloud.

  3. Aplique o arquivo apply-spec.yaml. Se estiver usando um manifesto atual, aplique o arquivo ao cluster que quer configurar com as configurações encontradas no comando anterior:

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

    Substitua:

    • MEMBERSHIP_NAME: o nome da assinatura da frota escolhida ao registrar o cluster. É possível encontrar o nome com gcloud container fleet memberships list.
    • CONFIG_YAML_PATH: o caminho para o arquivo apply-spec.yaml.
    • PROJECT_ID: o ID do projeto.

Terraform

Para cada cluster em que você 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 a seguir:

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:

  • REPO: o URL do repositório Git que contém os arquivos 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 para 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:

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

Repita esse processo para cada cluster que quiser sincronizar.

Para mais informações sobre como usar o Terraform, consulte Suporte do Terraform para o Config Sync.

Depois de configurar o repositório raiz, você pode configurar a sincronização de vários repositórios, incluindo outros repositórios raiz e de namespace. Os repositórios de namespace são úteis caso você queira um repositório que contenha configurações com escopo de namespace sincronizadas com um namespace específico nos clusters.

Verifique a instalação

Depois de instalar e configurar o Config Sync, verifique se a instalação foi concluída com sucesso.

gcloud

Execute este comando:

nomos status

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

Para mais detalhes sobre as informações fornecidas por nomos status, incluindo erros informados, consulte Verificar o status do Config Sync na documentação da ferramenta de linha de comando nomos.

Console

Siga estas etapas:

  1. No console Google Cloud , acesse a página Configuração na seção Recursos.

    Acessar a configuração

  2. Na guia Pacotes, verifique a coluna Status da sincronização na tabela de clusters. Uma instalação bem-sucedida do Config Sync tem o status Instalado. Uma fonte de verdade configurada tem o status Sincronizado.

A seguir