Campos RootSync e RepoSync

Nesta página, explicamos os diferentes campos que você pode ver nos objetos RootSync e RepoSync. Você pode usar esses objetos ao configurar a sincronização a partir de vários repositórios.

Também inclui detalhes sobre o ResourceGroup, que é criado quando você ativa o modo de vários repositórios.

O diagrama a seguir mostra uma visão geral de como o Config Sync cria esses recursos:

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. Para CRDs do RepoSync, spec.sourceFormat precisa ser unstructured e o padrão também é unstructured.

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.sourceFormat O formato do seu repositório Git
Para objetos RootSync: pode ser unstructured ou hierarchy. Padrão: hierarchy.
Para objetos RepoSync: precisa ser unstructured. Padrão: unstructured.
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.

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. Por exemplo, https://proxy.internal.business.co:443 Este campo só tem efeito quando spec.git.auth é cookiefile ou none.

Configuração para modificar os limites de recursos de um reconciliador de raiz ou de namespace

Chave Descrição
spec.override.resources A lista de modificações de limite de recursos do contêiner. Opcional.
Cada item da lista contém três campos:
  • containerName: este campo pode ser git-sync ou reconciler.
  • cpuLimit (opcional)
  • memoryLimit (opcional)

Quando um valor de modificação para um limite de recurso não é fornecido, o limite de recurso padrão é 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.

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 sincronizado.
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.commit O hash da confirmação mais recente vista no repositório.
status.source.errors Uma lista de todos os erros que ocorreram durante a leitura do repositório.
status.sync.commit O hash da confirmação mais recente que foi sincronizada com o cluster. Esse valor é atualizado mesmo quando uma confirmação é apenas parcialmente sincronizada 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

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.

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:     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
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    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
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
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    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
Events:           <none>