Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Campos RootSync e RepoSync

Nesta página, explicamos os diferentes campos nos objetos RootSync, RepoSync e ResourceGroup.

Sobre objetos RootSync, RepoSync e ResourceGroup

Se você instalar o Config Sync usando o Console do Google Cloud ou a Google Cloud CLI, o Config Sync criará automaticamente um objeto RootSync chamado root-sync. Se você instalar o Config Sync usando kubectl, crie um objeto RootSync manualmente. Você cria um objeto RepoSync ao configurar a sincronização de repositórios de namespace.

Quando esses objetos são criados, as APIs RootSync e RepoSync são ativadas e você passa a ter acesso a recursos extras do Config Sync, como sincronização de vários repositórios e sincronização das configurações do Kustomize e Helm.

Para cada repositório Git sincronizado com o cluster, o status de reconciliação de todos os recursos é agregado a um recurso denominado ResourceGroup. O Config Sync gera automaticamente o recurso personalizado (CR, na sigla em inglês) do ResourceGroup. Você não precisa declará-la e modificar as respostas automáticas do ResourceGroup geradas pelo Config Sync pode causar uma falha inesperada no Config Sync.

O diagrama a seguir mostra uma visão geral de como o Config Sync cria os recursos RootSync, RepoSync e ResourceGroup:

Atuação do operador

Depois de criado, o Reconciler Manager gerencia o controle do ciclo de vida do Reconciler raiz e de cada processo do Reconciler de namespace:

Atuação do reconciliador

Campos RootSync e RepoSync

Os CRDs RootSync e RepoSync usam os mesmos campos com exceção de spec.sourceFormat.

Configuração para o formato de origem

Chave Descrição
spec.sourceFormat sourceFormat especifica como o repositório é formatado. Opcional.
A validação desse campo diferencia maiúsculas de minúsculas.
  • Para objetos RootSync, o valor precisa ser hierarchy ou unstructured. O valor padrão será hierarchy se não for especificado, mas unstructured é recomendado.
  • Para objetos RepoSync, ele precisa ser unstructured, e o padrão também é unstructured.
Consulte formato de origem do repositório para mais detalhes.

Configuração para o tipo de origem

A partir do Anthos Config Management versão 1.12.0, o Config Sync é compatível com a sincronização de imagens do OCI (Visualização). A partir da versão 1.13.0 do Anthos Config Management, o Config Sync é compatível com a sincronização de repositórios do Helm (visualização). spec.sourceType está configurado para especificar o tipo de origem.

Chave Descrição
spec.sourceType sourceType especifica o tipo da fonte da verdade. Precisa ser git, ociou helm Opcional.
Defina como git se não for especificado. A validação desse campo diferencia maiúsculas de minúsculas.
Apenas um spec.git e spec.oci podem ser especificados, dependendo do tipo de origem.

Configuração para o repositório Git

Chave Descrição
spec.git.auth O tipo de secret configurado para acesso ao repositório Git. Precisa ser ssh, cookiefile, gcenode, gcpserviceaccount, token ou none. A validação desse campo diferencia maiúsculas de minúsculas. Obrigatório.
spec.git.gcpServiceAccountEmail A conta de serviço do Google Cloud usada para anotar a conta de serviço do Kubernetes do controlador RootSync ou RepoSync. Este campo é usado apenas quando spec.git.auth é gcpserviceaccount.
spec.git.branch A ramificação Git do repositório com que sincronizar. Padrão: master.
spec.git.dir O caminho absoluto no repositório Git para o diretório raiz que contém a configuração que você quer sincronizar. Padrão: o diretório raiz (/) do repositório.
spec.git.period A duração de tempo entre sincronizações consecutivas. Padrão: 15s.
spec.git.repo O URL do repositório Git do qual sincronizar. Obrigatório.
spec.git.revision A revisão do Git (tag, confirmação ou hash) para check-out. Padrão: HEAD.
spec.git.secretRef.name O nome do Secret usado para se conectar à origem do Git da verdade.
spec.git.noSSLVerify noSSLVerify especifica se a verificação do certificado SSL será ativada ou desativada. (Padrão: falso).
Se noSSLVerify estiver definido como verdadeiro, ele solicitará que o Git ignore a verificação do certificado SSL.
Esse campo é compatível com o Anthos Config Management versão 1.8.2 e posterior.
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 com uma chave chamada "cert".

Configuração de proxy para o repositório Git

Se as políticas de segurança da sua organização exigirem o roteamento do tráfego por meio de um proxy HTTP(S), use o URI do proxy para configurar o Config Sync para se comunicar com o host Git.

Chave Descrição
spec.git.proxy O URL do proxy com o esquema para configurar o acesso ao repo Git usando um proxy. Exemplo: https://proxy.internal.business.co:443 Se o protocolo https não for fornecido no URI do proxy, verifique se a comunicação entre o servidor proxy e o host Git é segura. Este campo só tem efeito quando spec.git.auth é cookiefile, none ou token.

Configuração da imagem OCI

O Config Sync exige que a camada OCI esteja compacta no formato tar ou tar+gzip.

Outros formatos (por exemplo, tar+bz2) não serão reconhecidos pelo Config Sync. Se você mudar de um REPO válido para uma imagem OCI com um formato incompatível, os recursos gerenciados serão removidos sem erro.

Chave Descrição
spec.oci.auth É o tipo de autenticação configurada para acesso à imagem OCI. Precisa ser gcenode, gcpserviceaccount, none, , ou . A validação desse campo diferencia maiúsculas de minúsculas. Obrigatório.
spec.oci.gcpServiceAccountEmail A conta de serviço do Google Cloud usada para anotar a conta de serviço do Kubernetes do controlador RootSync ou RepoSync. Este campo é usado apenas quando spec.oci.auth é gcpserviceaccount.
spec.oci.dir O caminho absoluto no repositório Git para o diretório raiz que contém a configuração que você quer sincronizar. Padrão: o diretório (/) raiz do repositório.
spec.oci.period A duração de tempo entre sincronizações consecutivas. Padrão: 15s.
spec.oci.image O URL da imagem OCI do qual sincronizar. Obrigatório.

Configuração do repositório do Helm

Chave Descrição
spec.helm.auth O tipo de autenticação configurada para acesso ao repositório do Helm. Precisa ser token, gcenode, gcpserviceaccount, ou none. A validação desse campo diferencia maiúsculas de minúsculas. Obrigatório.
spec.helm.gcpServiceAccountEmail A conta de serviço do Google Cloud usada para anotar a conta de serviço do Kubernetes do controlador RootSync ou RepoSync. Este campo é usado apenas quando spec.helm.auth é gcpserviceaccount.
spec.helm.secretRef.name O nome do [Secret](doc-path/how-to/install-kubectl#helm-access) usado para acessar o repositório do Helm. Este campo é usado apenas quando spec.helm.auth é token.
spec.helm.repo O URL do repositório Git do qual sincronizar. Obrigatório.
spec.helm.chart O nome do gráfico do Helm. Obrigatório.
spec.helm.version O número da versão do gráfico do Helm. Padrão: a versão mais recente.
spec.helm.releaseName O nome da versão do Helm.
spec.helm.namespace O namespace define o namespace de destino de uma versão. Este campo é usado apenas com objetos RootSync. Ele define apenas o namespace dos recursos que contêm namespace: {{ .Release.Namespace }} nos modelos. O valor especificado em spec.helm.namespace é usado apenas como o valor de Release.Namespace declarado nos modelos do Helm. O namespace default será usado nos recursos que não têm namespace: {{ .Release.Namespace }} nos modelos. Padrão: default
spec.helm.values Valores a serem usados em vez de valores padrão que acompanham o gráfico Formate os valores da mesma maneira com os valores padrão.yaml. Exemplo:

values:
  foo:
    bar: val1
  quz:
  - val2
  - val3
Esse campo é compatível com o Anthos Config Management 1.13.1 e versões mais recentes. Consulte o manifesto de exemplo do Helm para ver mais detalhes.
spec.helm.includeCRDs Especifica se o modelo do Helm deve gerar CustomResourceDefinitions. Padrão: false.
spec.helm.period A duração de tempo entre sincronizações consecutivas. Padrão: 15s. Os gráficos não serão extraídos novamente se um número de versão for especificado. Não é possível sincronizar novamente os gráficos com a versão mais recente em Visualizar.

Configuração para modificar as solicitações e os limites de recursos de um reconciliador de raiz ou de namespace

Nos clusters do Autopilot, o Config Sync ignora as substituições de limite de recursos. As substituições de solicitação de recurso são aplicadas somente quando há uma ou mais solicitações de recursos superiores à saída ajustada correspondente declarada na anotação ou quando há uma ou mais solicitações de recurso menores que a entrada correspondente declarada na anotação. Para mais informações, consulte Requisitos de cluster para o Config Sync.

Chave Descrição
spec.override.resources A lista de solicitações de recursos do contêiner e modificaçõ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 modificação para uma solicitação ou limite de recurso não é fornecido, o valor padrão do recurso é usado.

Configuração para o número de confirmações do Git a serem buscadas

Chave Descrição
spec.override.gitSyncDepth O gitSyncDepth permite modificar 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 este campo for maior que 0.
Se esse campo não for fornecido, o Config Sync o configurará automaticamente.

Configuração para capturar o status no nível do recurso

Chave Descrição
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.

Configuração para substituir o tempo limite de reconciliação

Chave Descrição
spec.override.reconcileTimeout reconcileTimeout permite substituir o limite de tempo para aguardar recursos em um aplicar grupo para reconciliar 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 a string para especificar esse valor de campo, como 30s, 5m.

Configuração para acesso ao shell no processo de renderização

Chave Descrição
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.

Status dos objetos

Chave Descrição
status.observedGeneration A geração (metadata.generation) da especificação de um recurso RootSync ou RepoSync que foi observado pela última vez e usado pelo Config Sync. Esse valor pode ser comparado com metadata.generation, que é um número inteiro e é atualizado na mutação de especificações pelo servidor da API.
status.reconciler O nome do processo de reconciliação que corresponde ao recurso de sincronização.
status.source.gitStatus.repo O URL do repositório Git que está sendo buscado.
status.source.gitStatus.revision A revisão do Git (tag, confirmação ou hash) que está sendo buscada.
status.source.gitStatus.branch A ramificação do Git do repositório que está sendo buscado.
status.source.gitStatus.dir O caminho absoluto no repositório Git para o diretório raiz que contém a configuração com que você está sincronizando.
status.source.ociStatus.image O URL da imagem OCI que está sendo buscada.
status.source.ociStatus.dir O caminho absoluto no repositório Git para o diretório raiz que contém a configuração com que você está sincronizando.
status.source.helmStatus.repo O URL do repositório do helm está sendo buscado.
status.source.helmStatus.version A versão do gráfico do capacete sendo buscada.
status.source.helmStatus.chart O nome do gráfico do capacete buscado.
status.source.commit O hash da confirmação ou resumo mais recente buscado no URL de origem.
status.source.errors Uma lista de todos os erros que ocorreram durante a leitura do repositório.
status.rendering.gitStatus.repo O URL do repositório Git que está sendo renderizado.
status.rendering.gitStatus.revision A revisão do Git (tag, confirmação ou hash) que está sendo buscada.
status.rendering.gitStatus.branch A ramificação do Git do repositório que está sendo buscado.
status.rendering.gitStatus.dir O caminho absoluto no repositório Git para o diretório raiz que contém a configuração com que você está sincronizando.
status.rendering.ociStatus.image É o URL da imagem OCI que está sendo renderizada.
status.rendering.ociStatus.dir O caminho absoluto na imagem OCI para o diretório raiz que contém a configuração que você está renderizando.
status.rendering.helmStatus.repo O URL do repositório do helm está sendo renderizado.
status.rendering.helmStatus.version A versão do gráfico de helm em renderização.
status.rendering.helmStatus.chart O nome do gráfico de capacete sendo renderizado.
status.rendering.commit O hash da confirmação ou resumo mais recente renderizado. Esse valor é atualizado mesmo quando uma confirmação ou resumo é sincronizado apenas parcialmente devido a um erro.
status.rendering.errors Uma lista de todos os erros que ocorreram ao aplicar os recursos da alteração indicada por status.rendering.commit.
status.sync.gitStatus.repo O URL do repositório Git que está sendo sincronizado.
status.sync.gitStatus.revision A revisão do Git (tag, confirmação ou hash) que está sendo buscada.
status.sync.gitStatus.branch A ramificação do Git do repositório que está sendo buscado.
status.sync.gitStatus.dir O caminho absoluto no repositório Git para o diretório raiz que contém a configuração com que você está sincronizando.
status.sync.ociStatus.image O URL da imagem OCI que está sendo sincronizado.
status.sync.ociStatus.dir O caminho absoluto no repositório Git para o diretório raiz que contém a configuração com que você está sincronizando.
status.sync.helmStatus.repo O URL do repositório do helm está sendo sincronizado.
status.sync.helmStatus.version A versão do gráfico do capacete sendo sincronizada.
status.sync.helmStatus.chart O nome do gráfico de capacete sendo sincronizado.
status.sync.commit O hash da confirmação ou resumo mais recente que foi sincronizado com o cluster. Esse valor é atualizado mesmo quando uma confirmação ou resumo é sincronizado apenas parcialmente devido a um erro.
status.sync.errors Uma lista de todos os erros que ocorreram ao aplicar os recursos da alteração indicada por status.sync.commit.
status.conditions As últimas observações disponíveis do estado atual do RootSync.

Campos ResourceGroup

Campos de especificação e status

Chave Descrição
spec.resources A lista de identificadores (grupo, tipo, namespace, nome) para recursos aplicados ao cluster do repositório Git especificado em uma resposta automática RepoSync ou RootSync. Opcional.
Cada item da lista contém quatro campos: group, kind, namespace e name.

Campos de status

Chave Descrição
status.observedGeneration A geração (metadata.generation) da especificação de um recurso RootSync ou RepoSync que foi observado pela última vez e executado pelo controlador ResourceGroup. Esse valor pode ser comparado com metadata.generation, que é um número inteiro e atualizado na mutação de especificações pelo servidor da API.
status.conditions As condições observadas mais recentes do ResourceGroup atual. As condições têm dois tipos diferentes: Reconciling e Stalled. Quando a condição do tipo Reconciling é verdadeira, isso significa que o ResourceGroup atual está na reconciliação. Quando a condição do tipo Stalled é verdadeira, significa que a reconciliação está parada. Quando ambos são falsos, isso significa que o ResourceGroup atual é reconciliado e o status está atualizado.
status.resourceStatuses A lista de status dos recursos incluídos em ".spec.resources". Cada item contém o identificador (grupo, tipo, namespace ou nome) e o status de um recurso. O status é um dos seguintes: InProgress, Current, Failed, Terminating, NotFound ou Unknown.

Exemplos de respostas automáticas

As seções a seguir mostram exemplos de respostas automáticas de RootSync e Reposync.

Resposta automática do RootSync

A seguinte resposta automática foi gerada usando kubectl describe rootsync root-sync -n config-management-system.

Name:         root-sync
Namespace:    config-management-system
Labels:       <none>
Annotations:  configmanagement.gke.io/managed-by-hub: true
              configmanagement.gke.io/update-time: 1623779339
API Version:  configsync.gke.io/v1beta1
Kind:         RootSync
Metadata:
  Creation Timestamp:  2021-06-15T17:49:35Z
  Generation:          1
  Managed Fields:
    API Version:  configsync.gke.io/v1beta1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:configmanagement.gke.io/managed-by-hub:
          f:configmanagement.gke.io/update-time:
      f:spec:
        .:
        f:git:
          .:
          f:auth:
          f:branch:
          f:dir:
          f:period:
          f:repo:
          f:secretRef:
        f:sourceFormat:
    Manager:      Google-GKEHub-Controllers-ACM
    Operation:    Update
    Time:         2021-06-15T17:49:35Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
        f:reconciler:
        f:source:
          .:
          f:gitStatus:
        f:sync:
    Manager:      reconciler-manager
    Operation:    Update
    Time:         2021-06-15T17:49:47Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        f:source:
          f:commit:
          f:gitStatus:
            f:branch:
            f:dir:
            f:repo:
            f:revision:
        f:sync:
          f:commit:
          f:lastUpdate:
    Manager:         reconciler
    Operation:       Update
    Time:            2021-06-15T17:51:28Z
  Resource Version:  4850
  Self Link:         /apis/configsync.gke.io/v1beta1/namespaces/config-management-system/rootsyncs/root-sync
  UID:               3fd2ea19-7e16-4c69-a3a1-90b9d90677eb
Spec:
  Git:
    Auth:    none
    Branch:  init
    Dir:     config-sync-quickstart/multirepo/root
    Period:  0s
    Repo:    https://github.com/GoogleCloudPlatform/anthos-config-management-samples
    Secret Ref:
  Source Format:  unstructured
Status:
  Conditions:
    Last Transition Time:  2021-06-15T17:50:15Z
    Last Update Time:      2021-06-15T17:50:15Z
    Status:                False
    Type:                  Reconciling
  Observed Generation:     1
  Reconciler:              root-reconciler
  Rendering:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    LastUpdate: 2021-06-15T17:51:08Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/root
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
    Message: Rendering skipped
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    LastUpdate: 2021-06-15T17:51:12Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/root
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
  Sync:
    Commit:       a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:28Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/root
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
Events:           <none>

Resposta automática do RepoSync

A seguinte resposta automática foi gerada usando kubectl describe reposync repo-sync -n config-management-system.

Name:         repo-sync
Namespace:    gamestore
Labels:       app.kubernetes.io/managed-by=configmanagement.gke.io
              configsync.gke.io/declared-version=v1alpha1
Annotations:  config.k8s.io/owning-inventory: config-management-system_root-sync
              configmanagement.gke.io/cluster-name: cs-cluster-1
              configmanagement.gke.io/managed: enabled
              configmanagement.gke.io/source-path: quickstart/multirepo/root/reposync-gamestore.yaml
              configmanagement.gke.io/token: a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
              configsync.gke.io/declared-fields: {"f:spec":{}}
              configsync.gke.io/git-context:
                {"repo":"https://github.com/GoogleCloudPlatform/anthos-config-management-samples","branch":"init","rev":"HEAD"}
              configsync.gke.io/manager: :root
              configsync.gke.io/resource-id: configsync.gke.io_reposync_gamestore_repo-sync
API Version:  configsync.gke.io/v1beta1
Kind:         RepoSync
Metadata:
  Creation Timestamp:  2021-06-15T17:51:27Z
  Generation:          1
  Managed Fields:
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          f:config.k8s.io/owning-inventory:
          f:configmanagement.gke.io/cluster-name:
          f:configmanagement.gke.io/managed:
          f:configmanagement.gke.io/source-path:
          f:configmanagement.gke.io/token:
          f:configsync.gke.io/declared-fields:
          f:configsync.gke.io/git-context:
          f:configsync.gke.io/manager:
          f:configsync.gke.io/resource-id:
        f:labels:
          f:app.kubernetes.io/managed-by:
          f:configsync.gke.io/declared-version:
      f:spec:
        f:git:
          f:auth:
          f:branch:
          f:dir:
          f:repo:
        f:sourceFormat:
    Manager:      configsync.gke.io
    Operation:    Apply
    Time:         2021-06-15T17:51:27Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        f:source:
          f:commit:
          f:gitStatus:
            f:branch:
            f:dir:
            f:repo:
            f:revision:
        f:sync:
          f:commit:
          f:lastUpdate:
    Manager:      reconciler
    Operation:    Update
    Time:         2021-06-15T17:51:53Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:spec:
        f:git:
          f:period:
          f:secretRef:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
        f:reconciler:
        f:source:
          .:
          f:gitStatus:
        f:sync:
    Manager:         reconciler-manager
    Operation:       Update
    Time:            2021-06-15T17:51:53Z
  Resource Version:  5216
  Self Link:         /apis/configsync.gke.io/v1beta1/namespaces/gamestore/reposyncs/repo-sync
  UID:               80d0a0d3-4ec6-4ccd-9a9d-4e2ddf0b7bbd
Spec:
  Git:
    Auth:         none
    Branch:       init
    Dir:          quickstart/multirepo/namespaces/gamestore
    Repo:         https://github.com/GoogleCloudPlatform/anthos-config-management-samples
  Source Format:  unstructured
Status:
  Conditions:
    Last Transition Time:  2021-06-15T17:51:56Z
    Last Update Time:      2021-06-15T17:51:56Z
    Status:                False
    Type:                  Reconciling
  Observed Generation:     1
  Reconciler:              ns-reconciler-gamestore
  Rendering:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:03Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/namespaces/gamestore
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
    Message: Rendering skipped
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:33Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/namespaces/gamestore
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
  Sync:
    Commit:       a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:53Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/namespaces/gamestore
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
Events:           <none>

A seguir