Campos RootSync y RepoSync

En esta página, se explican los diferentes campos que puedes ver en los objetos RootSync y RepoSync. Puedes crear un objeto RootSync cuando instales el Sincronizador de configuración con kubectl. Si instalas el Sincronizador de configuración con Google Cloud Console o la herramienta de línea de comandos de gcloud, el Sincronizador de configuración crea de forma automática un objeto RootSync. Debes crear un objeto RepoSync cuando configuras la sincronización desde repositorios de espacios de nombres.

También se incluyen detalles sobre ResourceGroup. El Sincronizador de configuración crea de forma automática este recurso cuando habilitas la sincronización con varios repositorios. La sincronización desde varios repositorios se habilita de forma predeterminada si usaste Google Cloud Console o la herramienta de línea de comandos de gcloud para instalar el Sincronizador de configuración con una versión 1.7.0 o posterior.

En el siguiente diagrama, se muestra una descripción general de cómo el Sincronizador de configuración crea estos recursos:

Accionamiento del operador

Una vez creado, el administrador de conciliador se encarga de controlar el ciclo de vida del conciliador raíz y cada proceso del conciliador de espacio de nombres:

Accionamiento del conciliador

Campos RootSync y RepoSync

Las CRD de RootSync y RepoSync usan los mismos campos, excepto spec.sourceFormat. Para las CRD de RepoSync, spec.sourceFormat debe ser unstructured y el valor predeterminado también es unstructured.

Configuración del repositorio de Git

Clave Descripción
spec.git.auth El tipo de secreto configurado para acceder al repositorio de Git. Debe ser ssh, cookiefile, gcenode, gcpserviceaccount, token o none. La validación de este campo distingue entre mayúsculas y minúsculas. Obligatorio.
spec.git.gcpServiceAccountEmail La cuenta de servicio de Google Cloud que se usa para anotar la cuenta de servicio de Kubernetes del controlador RootSync o RepoSync. Este campo solo se usa cuando spec.git.auth es gcpserviceaccount.
spec.git.branch La rama Git del repositorio desde la que se realiza la sincronización. Valor predeterminado: master.
spec.git.dir La ruta de acceso en el repositorio de Git al directorio raíz que contiene la configuración con la que deseas sincronizar. Valor predeterminado: el directorio raíz (/) del repositorio.
spec.git.period Duración entre sincronizaciones consecutivas. Predeterminado: 15s
spec.git.repo La URL del repositorio de Git desde la que se realiza la sincronización. Obligatorio.
spec.git.revision La revisión de Git (etiqueta, confirmación o hash) que puedes consultar. Valor predeterminado: HEAD.
spec.git.secretRef.name El nombre del secreto que se usó para conectarse a la fuente de información de Git.
spec.sourceFormat El formato del repositorio de Git
Para los objetos RootSync: puede ser unstructured o hierarchy. Valor predeterminado: hierarchy.
En el caso de los objetos RepoSync, debe ser unstructured. Predeterminado: unstructured.
spec.git.noSSLVerify noSSLVerify especifica si se habilita o inhabilita la verificación del certificado SSL. Valor predeterminado: false.
Si noSSLVerify se configura como verdadero, le indica a Git que omita la verificación del certificado SSL.
Este campo es compatible con la versión 1.8.2 y versiones posteriores de Anthos Config Management.

Configuración del proxy para el repositorio de Git

Si las políticas de seguridad de tu organización requieren que enrutes el tráfico a través de un proxy HTTP(S), puedes usar el URI del proxy para configurar el Sincronizador de configuración a fin de que se comunique con tu host de Git.

Clave Descripción
spec.git.proxy La URL del proxy con esquema para configurar el acceso al repositorio de Git mediante un proxy. Por ejemplo, https://proxy.internal.business.co:443. Este campo solo tiene un efecto cuando spec.git.auth es cookiefile o none.

Configuración para anular los límites de recursos de un conciliador raíz o de espacio de nombres

Clave Descripción
spec.override.resources La lista de anulaciones de límites de recursos del contenedor. Opcional.
Cada elemento de la lista contiene tres campos:
  • containerName: Este campo puede ser git-sync o reconciler.
  • cpuLimit (opcional)
  • memoryLimit (opcional)

Cuando no se proporciona un valor de anulación para un límite de recursos, se usa el límite de recursos predeterminado.

Configuración de la cantidad de confirmaciones de Git que se recuperarán

Clave Descripción
spec.override.gitSyncDepth gitSyncDepth te permite anular la cantidad de confirmaciones de Git que se recuperarán.
No debe ser menor que 0.
El Sincronizador de configuración realiza una clonación completo si este campo es 0 y una clonación superficial si este campo es mayor que 0.
Si no se proporciona este campo, el Sincronizador de configuración lo configura de forma automática.

El estado de los objetos

Clave Descripción
status.observedGeneration La generación (metadata.generation) de la especificación de un recurso RootSync o RepoSync que se observó por última vez y que realizó acciones en el Sincronizador de configuración. Este valor se puede comparar con metadata.generation, que es un número entero, y se actualiza en la mutación de las especificaciones del servidor de la API.
status.reconciler El nombre del proceso de conciliación que corresponde al recurso de sincronización.
status.source.gitStatus.repo La URL del repositorio de Git que se sincroniza.
status.source.gitStatus.revision La revisión de Git (etiqueta, confirmación o hash) que se recupera.
status.source.gitStatus.branch La rama de Git del repositorio que se recupera.
status.source.gitStatus.dir La ruta de acceso absoluta en el repositorio de Git al directorio raíz que contiene la configuración que sincronizas.
status.source.commit El hash de la confirmación más reciente que se vio en el repositorio
status.source.errors Una lista de los errores que se produjeron durante la lectura del repositorio.
status.sync.commit El hash de la confirmación más reciente que se sincronizó en el clúster. Este valor se actualiza incluso cuando una confirmación solo se sincroniza de forma parcial debido a un error.
status.sync.errors Una lista de los errores que se produjeron cuando se aplicaron los recursos del cambio que indicó status.sync.commit.
status.conditions Las últimas observaciones disponibles del estado actual del RootSync.

Campos de ResourceGroup

Para cada repositorio de Git sincronizado con el clúster, el estado de conciliación de todos los recursos se agrega en un recurso llamado ResourceGroup. El Sincronizador de configuración genera de forma automática el recurso personalizado (CR) del ResourceGroup. No necesitas declararlo y modificar los CR de ResourceGroup que genera el Sincronizador de configuración puede causar una falla inesperada del Sincronizador de configuración.

Campos de especificaciones y estados

Clave Descripción
spec.resources La lista de identificadores (grupo, tipo, espacio de nombres, nombre) para los recursos que se aplican al clúster desde el repositorio de Git que se especifica en un CR de RepoSync o CR de RootSync. Opcional.
Cada elemento de la lista contiene cuatro campos: group, kind, namespace y name.

Campos de estado

Clave Descripción
status.observedGeneration La generación (metadata.generation) de la especificación de un recurso RootSync o RepoSync que se adoptó por última vez y que el controlador de ResourceGroup realizó acciones. Este valor se puede comparar con metadata.generation, que es un número entero, y el servidor de la API lo actualiza cuando se cambia la especificación.
status.conditions Las últimas condiciones observadas para el ResourceGroup actual. Las condiciones tienen dos tipos diferentes: Reconciling y Stalled. Cuando la condición de tipo Reconciling es verdadera, significa que el ResourceGroup actual está en la conciliación. Si la condición de tipo Stalled es verdadera, significa que la conciliación se detiene. Cuando ambos son falsos, significa que se concilia el ResourceGroup actual y el estado está actualizado.
status.resourceStatuses La lista de estados de los recursos que se incluyen en “.spec.resources”. Cada elemento contiene el identificador (grupo, tipo, espacio de nombres o nombre) y el estado de un recurso. El estado es uno de los siguientes: InProgress, Current, Failed, Terminating, NotFound o Unknown.

CR de ejemplo

En las siguientes secciones, se muestran ejemplos de CR de RootSync y Reposync.

CR de RootSync

El siguiente CR se generó con 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>

CR de RepoSync

El siguiente CR se generó con 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>

¿Qué sigue?