Campos RootSync y RepoSync

En esta página, se explican los diferentes campos en tus objetos RootSync, RepoSync y ResourceGroup.

Información acerca de los objetos RootSync, RepoSync y ResourceGroup

Si instalas el Sincronizador de configuración con Google Cloud Console o Google Cloud CLI, el Sincronizador de configuración crea de forma automática un objeto RootSync llamado root-sync. Si instalas el Sincronizador de configuración con kubectl, creas un objeto RootSync de forma manual. Debes crear un objeto RepoSync cuando configuras la sincronización desde varios repositorios.

Cuando se crean estos objetos, las API de RootSync y RepoSync están habilitadas, y obtienes acceso a funciones adicionales del Sincronizador de configuración, como la sincronización de varios repositorios ysincronización de configuraciones de Kustomize y Helm.

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.

En el siguiente diagrama, se muestra una descripción general de cómo el Sincronizador de configuración crea los recursos RootSync, RepoSync y ResourceGroup:

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, none o token.

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

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

Cuando no se proporciona un valor de anulación para una solicitud o un límite de recurso, se usa el valor del recurso predeterminado para la solicitud o el límite.

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.

Configuración para capturar el estado del nivel de recursos

Clave Descripción
spec.override.statusMode statusMode te permite habilitar o inhabilitar la captura de estado a nivel de recurso.
El valor predeterminado es enabled.
Para inhabilitar la captura de estado a nivel de recursos, establece este campo en disabled.

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

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