Configurar la sincronización desde más de una fuente de información veraz

En esta página se explica cómo configurar más de una fuente de información veraz con ámbito de raíz y de espacio de nombres mediante la creación de objetos RootSync y RepoSync.

Tener una fuente de información veraz raíz te permite sincronizar configuraciones de ámbito de clúster y de ámbito de espacio de nombres. Una fuente de información principal puede usar credenciales de nivel de administrador para aplicar políticas en los espacios de nombres de las aplicaciones y anular los cambios locales que se desvíen del estado que hayas declarado en tus configuraciones. Un administrador central suele controlar las fuentes de información veraz raíz.

Las fuentes de información centradas en espacios de nombres son opcionales y pueden contener configuraciones centradas en espacios de nombres sincronizadas con un espacio de nombres concreto en varios clústeres. Puedes delegar la configuración y el control de una fuente de información veraz con ámbito de espacio de nombres en usuarios que no sean administradores. Aunque Config Sync detecta automáticamente los cambios de la fuente de información veraz, puedes añadir una capa adicional de detección de desviaciones añadiendo un webhook de admisión a una fuente de información veraz con ámbito de espacio de nombres. Para obtener más información sobre cómo hacerlo, consulta Evitar la deriva de config.

Antes de empezar

  • Crea una fuente de información veraz no estructurada o asegúrate de tener acceso a ella. Esta fuente puede contener las configuraciones que sincroniza Config Sync. Config Sync admite repositorios de Git, gráficos de Helm e imágenes de OCI como fuente de información principal. Las fuentes de información veraz con ámbito de espacio de nombres deben usar el formato no estructurado.
  • Crea un clúster o asegúrate de tener acceso a uno que esté en una plataforma y versión compatibles de Google Kubernetes Engine y que cumpla los requisitos de Config Sync.

Crear un RoleBinding

Se necesita un RoleBinding para conceder permisos al RepoSync que crees en esta guía. Para crear el recurso RoleBinding, sigue estos pasos:

  1. En la fuente raíz, declara una configuración RoleBinding que conceda a la cuenta de servicio SERVICE_ACCOUNT_NAME permiso para gestionar objetos en el espacio de nombres. Config Sync crea automáticamente la cuenta de servicio SERVICE_ACCOUNT_NAME cuando la configuración de RepoSync se sincroniza con el clúster.

    Un RoleBinding puede hacer referencia a un Role en el mismo espacio de nombres. También se puede hacer referencia a un ClusterRole desde un RoleBinding y vincular ese ClusterRole al espacio de nombres del RoleBinding. Aunque debes seguir el principio de privilegio mínimo concediendo permisos detallados a un Role definido por el usuario, puedes definir un ClusterRole o usar roles orientados al usuario y hacer referencia al mismo ClusterRole en varios RoleBindings de diferentes espacios de nombres.

    ClusterRoles predeterminados

    Guarda el manifiesto RoleBinding que hace referencia a un ClusterRole predeterminado, por ejemplo, admin o edit, como FILENAME:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ClusterRole
      name: CLUSTERROLE_NAME
      apiGroup: rbac.authorization.k8s.io
    

    Haz los cambios siguientes:

    • FILENAME: el nombre del manifiesto RoleBinding.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • SERVICE_ACCOUNT_NAME: añade el nombre de la cuenta de servicio del reconciliador. Si el nombre de RepoSync es repo-sync, SERVICE_ACCOUNT_NAME es ns-reconciler-NAMESPACE. De lo contrario, es ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH. Por ejemplo, si el nombre de tu RepoSync es prod, el SERVICE_ACCOUNT_NAME sería ns-reconciler-NAMESPACE-prod-4. El entero 4 se usa porque prod contiene 4 caracteres.
    • CLUSTERROLE_NAME: añade el nombre del ClusterRole predeterminado.

    Roles definidos por el usuario

    Puede declarar un ClusterRole o un Role concediendo una lista de permisos a cada recurso gestionado por el objeto RepoSync. Esto permite definir permisos pormenorizados. Consulta más información sobre cómo hacer referencia a recursos.

    Por ejemplo, el siguiente ClusterRole o Role concede permisos para gestionar objetos Deployment y ServiceAccount:

    # ROOT_REPO/namespaces/NAMESPACE/sync-role.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ROLE_KIND
    metadata:
      namespace: NAMESPACE # only set this field for a 'Role'
      name: RECONCILER_ROLE
    rules:
    # Update 'apiGroups' and 'resources' to reference actual resources managed by 'RepoSync'.
    - apiGroups: ["apps"]
      resources: ["deployments"]
      verbs: ["*"]
    - apiGroups: [""]
      resources: ["serviceaccounts"]
      verbs: ["*"]
    

    Guarda el archivo de manifiesto RoleBinding que hace referencia a ClusterRole o Role como FILENAME:

    # ROOT_REPO/namespaces/NAMESPACE/FILENAME.yaml
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ROLE_KIND
      name: RECONCILER_ROLE
      apiGroup: rbac.authorization.k8s.io
    

    Haz los cambios siguientes:

    • FILENAME: el nombre del manifiesto RoleBinding.
    • ROLE_KIND: asigna el valor ClusterRole o Role.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • SERVICE_ACCOUNT_NAME: añade el nombre de la cuenta de servicio del reconciliador. Si el nombre de RepoSync es repo-sync, SERVICE_ACCOUNT_NAME es ns-reconciler-NAMESPACE. De lo contrario, es ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH. Por ejemplo, si el nombre de tu RepoSync es prod, el SERVICE_ACCOUNT_NAME sería ns-reconciler-NAMESPACE-prod-4. El entero 4 se usa porque prod contiene 4 caracteres.
    • RECONCILER_ROLE: añade el nombre del ClusterRole o Role.
  2. Aplica el RoleBinding:

    kubectl apply -f FILENAME
    

Limitaciones

Elige el método de configuración que prefieras

Elige uno de los dos métodos para configurar tus fuentes:

Controlar las fuentes en una fuente de información veraz raíz

Para controlar las fuentes con una fuente raíz, necesitas un RoleBinding para autorizar el acceso. Si no tienes ninguno, consulta la sección Crear un RoleBinding.

Controlar las fuentes raíz en una fuente raíz de información veraz

Config Sync admite la sincronización desde más de una fuente de información veraz. El administrador central puede usar una fuente de información principal para gestionar todas las demás fuentes. Como Config Sync gestiona los objetos RootSync, este método evita que se produzcan cambios locales en las configuraciones de RootSync del clúster.

Para usar este método, completa las siguientes tareas:

  1. Guarda uno de los siguientes manifiestos como root-sync.yaml. Usa la versión del manifiesto que corresponda al tipo de fuente de tus configuraciones.

    Git

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: git
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        secretRef:
          name: ROOT_SECRET_NAME
        noSSLVerify: ROOT_NO_SSL_VERIFY
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • ROOT_SYNC_NAME: añade el nombre de tu objeto RootSync.
    • ROOT_FORMAT: añade unstructured para usar un repositorio no estructurado o añade hierarchy para usar un repositorio jerárquico. En estos valores se distingue entre mayúsculas y minúsculas. Este campo es opcional y su valor predeterminado es hierarchy. Te recomendamos que añadas unstructured, ya que este formato te permite organizar tus configuraciones de la forma que te resulte más cómoda.
    • ROOT_REPOSITORY: añade la URL del repositorio de Git que quieras usar como repositorio raíz. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Este campo es obligatorio.
    • ROOT_REVISION: añade la revisión de Git (etiqueta o hash) o la rama desde la que se sincronizarán los datos. Este campo es opcional y su valor predeterminado es HEAD. Cuando se usa un hash, debe ser un hash completo y no una forma abreviada.
    • ROOT_BRANCH: añade la rama del repositorio desde la que se hace la sincronización. Este campo es opcional y su valor predeterminado es master. Te recomendamos que uses el campo revision para especificar un nombre de rama por simplicidad. Si se especifican tanto el campo revision como el campo branch, revision tiene prioridad sobre branch.
    • ROOT_DIRECTORY: añade la ruta del repositorio de Git al directorio raíz que contiene la configuración que quieres sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/) del repositorio.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • ssh: usar un par de claves SSH
      • cookiefile: usa un cookiefile
      • token: usar un token
      • gcpserviceaccount: Usa una cuenta de servicio de Google para acceder a Cloud Source Repositories.
      • gcenode: usa una cuenta de servicio de Google para acceder a Cloud Source Repositories. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.

      Para obtener más información sobre estos tipos de autenticación, consulta el artículo Conceder acceso de solo lectura a Git a Config Sync.

      Este campo es obligatorio.

    • ROOT_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: añade el nombre del secreto. Si se define este campo, debes añadir la clave pública del secreto al proveedor de Git. Este campo es opcional.

    • ROOT_NO_SSL_VERIFY: para inhabilitar la verificación del certificado SSL, asigna el valor true a este campo. El valor predeterminado es false.

    • ROOT_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Este manifiesto crea un objeto RootSync que usa Git como fuente.

    OCI

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: oci
      sourceFormat: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • ROOT_SYNC_NAME: añade el nombre de tu objeto RootSync.
    • ROOT_FORMAT: añade unstructured para usar un repositorio no estructurado o añade hierarchy para usar un repositorio jerárquico. En estos valores se distingue entre mayúsculas y minúsculas. Este campo es opcional y su valor predeterminado es hierarchy. Te recomendamos que añadas unstructured, ya que este formato te permite organizar tus configuraciones de la forma que te resulte más cómoda.
    • ROOT_IMAGE: URL de la imagen OCI que se va a usar como repositorio raíz. Por ejemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. De forma predeterminada, la imagen se extrae de la etiqueta latest, pero puedes extraer imágenes mediante TAG o DIGEST. Especifica TAG o DIGEST en PACKAGE_NAME:
      • Para tirar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para tirar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • ROOT_DIRECTORY: añade la ruta del repositorio al directorio raíz que contiene la configuración que quieres sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/) del repositorio.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • ROOT_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de OCI debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

    Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Este manifiesto crea un objeto RootSync que usa una imagen OCI como origen.

    Helm

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: helm
      sourceFormat: ROOT_FORMAT
      helm:
        repo: ROOT_HELM_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: ROOT_AUTH_TYPE
          gcpServiceAccountEmail: ROOT_EMAIL
          secretRef:
            name: ROOT_SECRET_NAME
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • ROOT_SYNC_NAME: añade el nombre de tu objeto RootSync.
    • ROOT_FORMAT: añade unstructured para usar un repositorio no estructurado o añade hierarchy para usar un repositorio jerárquico. En estos valores se distingue entre mayúsculas y minúsculas. Este campo es opcional y su valor predeterminado es hierarchy. Te recomendamos que añadas unstructured, ya que este formato te permite organizar tus configuraciones de la forma que te resulte más cómoda.
    • ROOT_HELM_REPOSITORY: la URL del repositorio de Helm que se va a usar como repositorio raíz. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Este campo es obligatorio.
    • HELM_CHART_NAME: añade el nombre de tu gráfico de Helm. Este campo es obligatorio.
    • HELM_CHART_VERSION: la versión del gráfico. Este campo es opcional. Si no se especifica ningún valor, se usa la versión más reciente.
    • HELM_RELEASE_NAME: el nombre de la versión de Helm. Este campo es opcional.
    • HELM_RELEASE_NAMESPACE: el espacio de nombres de destino de una versión. Solo define un espacio de nombres para los recursos que contienen namespace: {{ .Release.Namespace }} en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminado config-management-system.
    • HELM_INCLUDE_CRDS: se define como true si quieres que la plantilla de Helm también genere un CustomResourceDefinition. Este campo es opcional. Si no se especifica ningún valor, el valor predeterminado es false y no se generará ningún CRD.
    • VALUE: valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Este campo debe tener el mismo formato que el archivo values.yaml del gráfico de Helm. Este campo es opcional.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • token: usa un nombre de usuario y una contraseña para acceder a un repositorio de Helm privado.
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • ROOT_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: añade el nombre de tu secreto si token es el ROOT_AUTH_TYPE. Este campo es opcional.

    • ROOT_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Helm debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

    Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Este manifiesto crea un objeto RootSync que usa Helm como origen.

  2. Confirma los cambios en la fuente de información principal:

     git add .
     git commit -m 'Setting up a new root source of truth.'
     git push
    
  3. Puedes repetir los pasos anteriores si necesitas configurar varias fuentes raíz. También puedes almacenar configuraciones de varios objetos RootSync en una fuente de información veraz raíz sincronizada por otro objeto RootSync para gestionar varios objetos RootSync de forma centralizada con GitOps.

Controlar objetos centrados en espacios de nombres en una fuente de información veraz raíz

Una fuente de información veraz raíz puede gestionar las fuentes de información veraz con permisos de espacio de nombres. Como Config Sync gestiona las fuentes de ámbito de espacio de nombres, este método impide que se hagan cambios locales en las definiciones de las fuentes de ámbito de espacio de nombres.

Para usar este método, completa las siguientes tareas:

  1. En la fuente de información veraz raíz, declara una configuración namespace:

    # ROOT_SOURCE/namespaces/NAMESPACE/namespace.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
      name: NAMESPACE
    

    Sustituye NAMESPACE por el nombre del espacio de nombres.

  2. En la fuente de información veraz raíz, cree uno de los siguientes objetos RepoSync en el mismo espacio de nombres. Usa el manifiesto que corresponda al tipo de origen de tus configuraciones:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_REPOSITORY: añade la URL del repositorio de Git que quieras usar como repositorio de espacio de nombres. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Si no introduces ningún protocolo, la URL se tratará como una URL HTTPS. Este campo es obligatorio.
    • NAMESPACE_REVISION: añade la revisión de Git (etiqueta o hash) o la rama desde la que se sincronizarán los datos. Este campo es opcional y su valor predeterminado es HEAD. Cuando se usa un hash, debe ser un hash completo y no una forma abreviada.
    • NAMESPACE_BRANCH: añade la rama del repositorio desde la que se hace la sincronización. Este campo es opcional y su valor predeterminado es master. Te recomendamos que uses el campo revision para especificar un nombre de rama por simplicidad. Si se especifican tanto el campo revision como el campo branch, revision tiene prioridad sobre branch.
    • NAMESPACE_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • ssh: usar un par de claves SSH
      • cookiefile: usa un cookiefile
      • token: usar un token
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a un repositorio en Cloud Source Repositories.
      • gcenode: usa una cuenta de servicio de Google para acceder a un repositorio en Cloud Source Repositories. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.

        Para obtener más información sobre estos tipos de autenticación, consulta el artículo Conceder acceso de solo lectura a Git a Config Sync.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu NAMESPACE_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: añade el nombre que quieras darle al secreto. Este campo es opcional.

    • NAMESPACE_NO_SSL_VERIFY: para inhabilitar la verificación del certificado SSL, asigna el valor true a este campo. El valor predeterminado es false.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los campos que puede añadir al campo spec, consulte Campos de RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_IMAGE: URL de la imagen OCI que se va a usar como origen del espacio de nombres. Por ejemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. De forma predeterminada, la imagen se extrae de la etiqueta latest, pero puedes extraer imágenes mediante TAG o DIGEST. Especifica TAG o DIGEST en PACKAGE_NAME:

      • Para tirar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para tirar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: añade la ruta del origen al directorio raíz que contiene la configuración con la que quieres sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/) de la fuente.

    • NAMESPACE_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de OCI debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_REPOSITORY: la URL del repositorio de Helm que se va a usar como repositorio raíz. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Este campo es obligatorio.
    • HELM_CHART_NAME: añade el nombre de tu gráfico de Helm. Este campo es obligatorio.
    • HELM_CHART_VERSION: la versión del gráfico. Este campo es opcional. Si no se especifica ningún valor, se usa la versión más reciente.
    • HELM_RELEASE_NAME: el nombre de la versión de Helm. Este campo es opcional.
    • HELM_RELEASE_NAMESPACE: el espacio de nombres de destino de una versión. Solo define un espacio de nombres para los recursos que contienen namespace: {{ .Release.Namespace }} en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminado config-management-system.
    • HELM_INCLUDE_CRDS: se define como true si quieres que la plantilla de Helm también genere un CustomResourceDefinition. Este campo es opcional. Si no se especifica ningún valor, el valor predeterminado es false y no se generará ningún CRD.
    • VALUE: valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Este campo debe tener el mismo formato que el archivo values.yaml del gráfico de Helm. Este campo es opcional.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • token: usa un nombre de usuario y una contraseña para acceder a un repositorio de Helm privado.
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: añade el nombre de tu secreto si token es el ROOT_AUTH_TYPE. Este campo es opcional.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Helm debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

  3. Si usas gcpserviceaccount como tipo de autenticación y no tienes habilitada la federación de identidades de carga de trabajo para GKE, debes crear un enlace de política de gestión de identidades y accesos entre la cuenta de servicio de Kubernetes de cada espacio de nombres y la cuenta de servicio de Google. Consulta las instrucciones para conceder acceso a Git sobre cómo crear esta vinculación.

  4. Confirma los cambios en la fuente de información principal:

     git add .
     git commit -m 'Setting up a new namespace-scoped source of truth.'
     git push
    
  5. Si es necesario, crea un secreto en función del método de autenticación que prefieras. Si has usado none como tipo de autenticación, puedes saltarte este paso.

    El secreto debe cumplir los siguientes requisitos:

    • Crea el secreto en el mismo espacio de nombres que el RepoSync.
    • El nombre del secreto debe coincidir con el nombre spec.git.secretRef que hayas definido en repo-sync.yaml.
    • Debe añadir la clave pública del secreto al proveedor de Git.
  6. Para verificar la configuración, usa kubectl get en uno de los objetos de la fuente del espacio de nombres. Por ejemplo:

    kubectl get rolebindings -n NAMESPACE
    
  7. Puedes repetir los pasos anteriores si necesitas configurar más de una fuente centrada en un espacio de nombres.

Controlar fuentes con permisos de espacio de nombres en una fuente con permisos de espacio de nombres

Config Sync admite la sincronización desde más de una fuente de información veraz centrada en un espacio de nombres por espacio de nombres. Las fuentes de información veraz con permisos de espacio de nombres se pueden gestionar en una fuente de información veraz con permisos de espacio de nombres en el mismo espacio de nombres.

Para usar este método, completa las siguientes tareas:

  1. En la fuente de información veraz con ámbito de espacio de nombres, crea uno de los siguientes objetos RepoSync en el mismo espacio de nombres. Usa el manifiesto que corresponda al tipo de origen de tus configuraciones:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_REPOSITORY: añade la URL del repositorio de Git que quieras usar como repositorio de espacio de nombres. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Si no introduces ningún protocolo, la URL se tratará como una URL HTTPS. Este campo es obligatorio.
    • NAMESPACE_REVISION: añade la revisión de Git (etiqueta o hash) o la rama desde la que se sincronizarán los datos. Este campo es opcional y su valor predeterminado es HEAD. Cuando se usa un hash, debe ser un hash completo y no una forma abreviada.
    • NAMESPACE_BRANCH: añade la rama del repositorio desde la que se hace la sincronización. Este campo es opcional y su valor predeterminado es master. Te recomendamos que uses el campo revision para especificar un nombre de rama por simplicidad. Si se especifican tanto el campo revision como el campo branch, revision tiene prioridad sobre branch.
    • NAMESPACE_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • ssh: usar un par de claves SSH
      • cookiefile: usa un cookiefile
      • token: usar un token
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a un repositorio en Cloud Source Repositories.
      • gcenode: usa una cuenta de servicio de Google para acceder a un repositorio en Cloud Source Repositories. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.

        Para obtener más información sobre estos tipos de autenticación, consulta el artículo Conceder acceso de solo lectura a Git a Config Sync.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu NAMESPACE_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: añade el nombre que quieras darle al secreto. Este campo es opcional.

    • NAMESPACE_NO_SSL_VERIFY: para inhabilitar la verificación del certificado SSL, asigna el valor true a este campo. El valor predeterminado es false.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los campos que puede añadir al campo spec, consulte Campos de RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_IMAGE: URL de la imagen OCI que se va a usar como origen del espacio de nombres. Por ejemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. De forma predeterminada, la imagen se extrae de la etiqueta latest, pero puedes extraer imágenes mediante TAG o DIGEST. Especifica TAG o DIGEST en PACKAGE_NAME:

      • Para tirar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para tirar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: añade la ruta del origen al directorio raíz que contiene la configuración con la que quieres sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/) de la fuente.

    • NAMESPACE_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de OCI debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_REPOSITORY: la URL del repositorio de Helm que se va a usar como repositorio raíz. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Este campo es obligatorio.
    • HELM_CHART_NAME: añade el nombre de tu gráfico de Helm. Este campo es obligatorio.
    • HELM_CHART_VERSION: la versión del gráfico. Este campo es opcional. Si no se especifica ningún valor, se usa la versión más reciente.
    • HELM_RELEASE_NAME: el nombre de la versión de Helm. Este campo es opcional.
    • HELM_RELEASE_NAMESPACE: el espacio de nombres de destino de una versión. Solo define un espacio de nombres para los recursos que contienen namespace: {{ .Release.Namespace }} en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminado config-management-system.
    • HELM_INCLUDE_CRDS: se define como true si quieres que la plantilla de Helm también genere un CustomResourceDefinition. Este campo es opcional. Si no se especifica ningún valor, el valor predeterminado es false y no se generará ningún CRD.
    • VALUE: valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Este campo debe tener el mismo formato que el archivo values.yaml del gráfico de Helm. Este campo es opcional.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • token: usa un nombre de usuario y una contraseña para acceder a un repositorio de Helm privado.
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: añade el nombre de tu secreto si token es el ROOT_AUTH_TYPE. Este campo es opcional.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Helm debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

  2. Si usas gcpserviceaccount como tipo de autenticación y no tienes habilitada la federación de identidades de carga de trabajo para GKE, debes crear un enlace de política de gestión de identidades y accesos entre la cuenta de servicio de Kubernetes de cada espacio de nombres y la cuenta de servicio de Google. Consulta las instrucciones para conceder acceso a Git sobre cómo crear esta vinculación.

  3. Confirma los cambios en la fuente de información principal:

     git add .
     git commit -m 'Setting up a new namespace-scoped source of truth.'
     git push
    
  4. Si es necesario, crea un secreto en función del método de autenticación que prefieras. Si has usado none como tipo de autenticación, puedes saltarte este paso.

    El secreto debe cumplir los siguientes requisitos:

    • Crea el secreto en el mismo espacio de nombres que el RepoSync.
    • El nombre del secreto debe coincidir con el nombre spec.git.secretRef que hayas definido en repo-sync.yaml.
    • Debe añadir la clave pública del secreto al proveedor de Git.
  5. Para verificar la configuración, usa kubectl get en uno de los objetos de la fuente de información veraz con ámbito de espacio de nombres. Por ejemplo:

    kubectl get rolebindings -n NAMESPACE
    
  6. Puedes repetir los pasos anteriores si necesitas configurar más de una fuente con ámbito de espacio de nombres.

Controlar una fuente de información veraz con la API de Kubernetes

En este método, el administrador central delega la declaración de otros objetos RootSync en otros administradores. En el caso de los objetos RepoSync, el administrador central solo declara el espacio de nombres en la fuente de información principal raíz y delega la declaración del objeto RepoSync en el operador de la aplicación.

Controlar más de una fuente de información veraz raíz

Otros administradores pueden controlar una fuente de información principal completando las siguientes tareas:

  1. Guarda uno de los siguientes manifiestos como root-sync.yaml. Usa la versión del manifiesto que corresponda al tipo de fuente de tus configuraciones.

    Git

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: git
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        secretRef:
          name: ROOT_SECRET_NAME
        noSSLVerify: ROOT_NO_SSL_VERIFY
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • ROOT_SYNC_NAME: añade el nombre de tu objeto RootSync.
    • ROOT_FORMAT: añade unstructured para usar un repositorio no estructurado o añade hierarchy para usar un repositorio jerárquico. En estos valores se distingue entre mayúsculas y minúsculas. Este campo es opcional y su valor predeterminado es hierarchy. Te recomendamos que añadas unstructured, ya que este formato te permite organizar tus configuraciones de la forma que te resulte más cómoda.
    • ROOT_REPOSITORY: añade la URL del repositorio de Git que quieras usar como repositorio raíz. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Este campo es obligatorio.
    • ROOT_REVISION: añade la revisión de Git (etiqueta o hash) o la rama desde la que se sincronizarán los datos. Este campo es opcional y su valor predeterminado es HEAD. Cuando se usa un hash, debe ser un hash completo y no una forma abreviada.
    • ROOT_BRANCH: añade la rama del repositorio desde la que se hace la sincronización. Este campo es opcional y su valor predeterminado es master. Te recomendamos que uses el campo revision para especificar un nombre de rama por simplicidad. Si se especifican tanto el campo revision como el campo branch, revision tiene prioridad sobre branch.
    • ROOT_DIRECTORY: añade la ruta del repositorio de Git al directorio raíz que contiene la configuración que quieres sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/) del repositorio.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • ssh: usar un par de claves SSH
      • cookiefile: usa un cookiefile
      • token: usar un token
      • gcpserviceaccount: Usa una cuenta de servicio de Google para acceder a Cloud Source Repositories.
      • gcenode: usa una cuenta de servicio de Google para acceder a Cloud Source Repositories. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.

      Para obtener más información sobre estos tipos de autenticación, consulta el artículo Conceder acceso de solo lectura a Git a Config Sync.

      Este campo es obligatorio.

    • ROOT_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: añade el nombre del secreto. Si se define este campo, debes añadir la clave pública del secreto al proveedor de Git. Este campo es opcional.

    • ROOT_NO_SSL_VERIFY: para inhabilitar la verificación del certificado SSL, asigna el valor true a este campo. El valor predeterminado es false.

    • ROOT_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Este manifiesto crea un objeto RootSync que usa Git como fuente.

    OCI

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: oci
      sourceFormat: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • ROOT_SYNC_NAME: añade el nombre de tu objeto RootSync.
    • ROOT_FORMAT: añade unstructured para usar un repositorio no estructurado o añade hierarchy para usar un repositorio jerárquico. En estos valores se distingue entre mayúsculas y minúsculas. Este campo es opcional y su valor predeterminado es hierarchy. Te recomendamos que añadas unstructured, ya que este formato te permite organizar tus configuraciones de la forma que te resulte más cómoda.
    • ROOT_IMAGE: URL de la imagen OCI que se va a usar como repositorio raíz. Por ejemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. De forma predeterminada, la imagen se extrae de la etiqueta latest, pero puedes extraer imágenes mediante TAG o DIGEST. Especifica TAG o DIGEST en PACKAGE_NAME:
      • Para tirar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para tirar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • ROOT_DIRECTORY: añade la ruta del repositorio al directorio raíz que contiene la configuración que quieres sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/) del repositorio.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • ROOT_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de OCI debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

    Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Este manifiesto crea un objeto RootSync que usa una imagen OCI como origen.

    Helm

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: helm
      sourceFormat: ROOT_FORMAT
      helm:
        repo: ROOT_HELM_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: ROOT_AUTH_TYPE
          gcpServiceAccountEmail: ROOT_EMAIL
          secretRef:
            name: ROOT_SECRET_NAME
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • ROOT_SYNC_NAME: añade el nombre de tu objeto RootSync.
    • ROOT_FORMAT: añade unstructured para usar un repositorio no estructurado o añade hierarchy para usar un repositorio jerárquico. En estos valores se distingue entre mayúsculas y minúsculas. Este campo es opcional y su valor predeterminado es hierarchy. Te recomendamos que añadas unstructured, ya que este formato te permite organizar tus configuraciones de la forma que te resulte más cómoda.
    • ROOT_HELM_REPOSITORY: la URL del repositorio de Helm que se va a usar como repositorio raíz. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Este campo es obligatorio.
    • HELM_CHART_NAME: añade el nombre de tu gráfico de Helm. Este campo es obligatorio.
    • HELM_CHART_VERSION: la versión del gráfico. Este campo es opcional. Si no se especifica ningún valor, se usa la versión más reciente.
    • HELM_RELEASE_NAME: el nombre de la versión de Helm. Este campo es opcional.
    • HELM_RELEASE_NAMESPACE: el espacio de nombres de destino de una versión. Solo define un espacio de nombres para los recursos que contienen namespace: {{ .Release.Namespace }} en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminado config-management-system.
    • HELM_INCLUDE_CRDS: se define como true si quieres que la plantilla de Helm también genere un CustomResourceDefinition. Este campo es opcional. Si no se especifica ningún valor, el valor predeterminado es false y no se generará ningún CRD.
    • VALUE: valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Este campo debe tener el mismo formato que el archivo values.yaml del gráfico de Helm. Este campo es opcional.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • token: usa un nombre de usuario y una contraseña para acceder a un repositorio de Helm privado.
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • ROOT_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: añade el nombre de tu secreto si token es el ROOT_AUTH_TYPE. Este campo es opcional.

    • ROOT_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Helm debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

    Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Este manifiesto crea un objeto RootSync que usa Helm como origen.

  2. Aplica los cambios:

    kubectl apply -f root-sync.yaml
    
  3. Puedes repetir los pasos anteriores si necesitas configurar más de una fuente de información principal.

Controlar las fuentes de información veraz con permisos de espacio de nombres

Tareas de administrador central

El administrador central completa las siguientes tareas:

  1. En la fuente de referencia raíz, declara una configuración namespace para las fuentes centradas en espacios de nombres.

    # ROOT_REPO/namespaces/NAMESPACE/namespace.yaml
     apiVersion: v1
     kind: Namespace
     metadata:
       name: NAMESPACE
    

    Sustituye NAMESPACE por el nombre del espacio de nombres.

  2. En la fuente de referencia raíz, declara un RoleBinding para dar permisos a los operadores de la aplicación. Usa la prevención de la escalada de RBAC para asegurarte de que el operador de la aplicación no pueda aplicar más adelante un enlace de rol con permisos que no se hayan concedido en este enlace de rol.

    Para declarar el recurso RoleBinding, crea el siguiente manifiesto:

    # ROOT_REPO/namespaces/NAMESPACE/operator-rolebinding.yaml
     kind: RoleBinding
     # Add RBAC escalation prevention
     apiVersion: rbac.authorization.k8s.io/v1
     metadata:
       name: operator
       namespace: NAMESPACE
     subjects:
     - kind: User
       name: USERNAME
       apiGroup: rbac.authorization.k8s.io
     roleRef:
       kind: ClusterRole
       name: OPERATOR_ROLE
       apiGroup: rbac.authorization.k8s.io
    

    Haz los cambios siguientes:

    • NAMESPACE: añade el espacio de nombres que has creado en la fuente de información veraz raíz.
    • USERNAME: añade el nombre de usuario del operador de la aplicación.
    • OPERATOR_ROLE: como administrador central, puedes definir OPERATOR_ROLE para aplicar qué tipos de configuraciones se pueden sincronizar desde la fuente centrada en el espacio de nombres. Puede elegir uno de los siguientes roles:

      • Un ClusterRole predeterminado:

        • admin
        • edit

        Para obtener más información, consulta Roles visibles para los usuarios.

      • Un ClusterRole o un Role definidos por el usuario declarados en la fuente de información principal raíz. Este rol permite definir permisos pormenorizados.

  3. Confirma los cambios en la fuente de información principal:

     git add .
     git commit -m 'Setting up new namespace-scoped source of truth.'
     git push
    

Tareas del operador de la aplicación

El operador de la aplicación puede controlar las fuentes centradas en espacios de nombres completando las siguientes tareas:

  1. Declara una configuración RoleBinding que conceda permiso a la cuenta de servicio aprovisionada automáticamente SERVICE_ACCOUNT_NAME para gestionar objetos en el espacio de nombres. Config Sync crea automáticamente la cuenta de servicio SERVICE_ACCOUNT_NAME cuando la configuración de RepoSync se sincroniza con el clúster.

    Para declarar el recurso RoleBinding, crea el siguiente manifiesto:

    # sync-rolebinding.yaml
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ClusterRole
      name: RECONCILER_ROLE
      apiGroup: rbac.authorization.k8s.io
    

    Haz los cambios siguientes:

    • NAMESPACE: añade el espacio de nombres que has creado en la fuente de información veraz raíz.
    • SERVICE_ACCOUNT_NAME: añade el nombre de la cuenta de servicio del reconciliador. Si el nombre de RepoSync es repo-sync, SERVICE_ACCOUNT_NAME es ns-reconciler-NAMESPACE. De lo contrario, es ns-reconciler-NAMESPACE-REPO_SYNC_NAME.
    • RECONCILER_ROLE: como operador de la aplicación, puedes definir RECONCILER_ROLE para aplicar qué tipos de configuración se pueden sincronizar desde la fuente con ámbito de espacio de nombres. Solo puedes restringir aún más el conjunto de permisos que te ha concedido el administrador central. Por lo tanto, este rol no puede tener más permisos que el OPERATOR_ROLE que el administrador central haya declarado en la sección anterior.
  2. Aplica la configuración de RoleBinding:

    kubectl apply -f sync-rolebinding.yaml
    
  3. Si es necesario, crea un secreto en función del método de autenticación que prefieras. Si has usado none como tipo de autenticación, puedes saltarte este paso.

    El secreto debe cumplir los siguientes requisitos:

    • Crea el secreto en el mismo espacio de nombres que el RepoSync.
    • El nombre del secreto debe coincidir con el nombre spec.git.secretRef que hayas definido en root-sync.yaml.
    • Debe añadir la clave pública del secreto al proveedor de Git.
  4. Declara una configuración de RepoSync:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_REPOSITORY: añade la URL del repositorio de Git que quieras usar como repositorio de espacio de nombres. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Si no introduces ningún protocolo, la URL se tratará como una URL HTTPS. Este campo es obligatorio.
    • NAMESPACE_REVISION: añade la revisión de Git (etiqueta o hash) o la rama desde la que se sincronizarán los datos. Este campo es opcional y su valor predeterminado es HEAD. Cuando se usa un hash, debe ser un hash completo y no una forma abreviada.
    • NAMESPACE_BRANCH: añade la rama del repositorio desde la que se hace la sincronización. Este campo es opcional y su valor predeterminado es master. Te recomendamos que uses el campo revision para especificar un nombre de rama por simplicidad. Si se especifican tanto el campo revision como el campo branch, revision tiene prioridad sobre branch.
    • NAMESPACE_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • ssh: usar un par de claves SSH
      • cookiefile: usa un cookiefile
      • token: usar un token
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a un repositorio en Cloud Source Repositories.
      • gcenode: usa una cuenta de servicio de Google para acceder a un repositorio en Cloud Source Repositories. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.

        Para obtener más información sobre estos tipos de autenticación, consulta el artículo Conceder acceso de solo lectura a Git a Config Sync.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu NAMESPACE_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: añade el nombre que quieras darle al secreto. Este campo es opcional.

    • NAMESPACE_NO_SSL_VERIFY: para inhabilitar la verificación del certificado SSL, asigna el valor true a este campo. El valor predeterminado es false.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los campos que puede añadir al campo spec, consulte Campos de RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_IMAGE: URL de la imagen OCI que se va a usar como origen del espacio de nombres. Por ejemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. De forma predeterminada, la imagen se extrae de la etiqueta latest, pero puedes extraer imágenes mediante TAG o DIGEST. Especifica TAG o DIGEST en PACKAGE_NAME:

      • Para tirar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para tirar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: añade la ruta del origen al directorio raíz que contiene la configuración con la que quieres sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/) de la fuente.

    • NAMESPACE_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de OCI debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

    Helm

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: añade el nombre de tu objeto RepoSync. El nombre debe ser único en todo el espacio de nombres.
    • NAMESPACE: añade el nombre de tu espacio de nombres.
    • NAMESPACE_REPOSITORY: la URL del repositorio de Helm que se va a usar como repositorio raíz. Puede introducir URLs con el protocolo HTTPS o SSH. Por ejemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa el protocolo HTTPS. Este campo es obligatorio.
    • HELM_CHART_NAME: añade el nombre de tu gráfico de Helm. Este campo es obligatorio.
    • HELM_CHART_VERSION: la versión del gráfico. Este campo es opcional. Si no se especifica ningún valor, se usa la versión más reciente.
    • HELM_RELEASE_NAME: el nombre de la versión de Helm. Este campo es opcional.
    • HELM_RELEASE_NAMESPACE: el espacio de nombres de destino de una versión. Solo define un espacio de nombres para los recursos que contienen namespace: {{ .Release.Namespace }} en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminado config-management-system.
    • HELM_INCLUDE_CRDS: se define como true si quieres que la plantilla de Helm también genere un CustomResourceDefinition. Este campo es opcional. Si no se especifica ningún valor, el valor predeterminado es false y no se generará ningún CRD.
    • VALUE: valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Este campo debe tener el mismo formato que el archivo values.yaml del gráfico de Helm. Este campo es opcional.
    • ROOT_AUTH_TYPE: añade uno de los siguientes tipos de autenticación:

      • none: no usar autenticación
      • token: usa un nombre de usuario y una contraseña para acceder a un repositorio de Helm privado.
      • gcenode: usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen de Artifact Registry. Selecciona esta opción solo si Workload Identity Federation para GKE no está habilitado en tu clúster.
      • gcpserviceaccount: usa una cuenta de servicio de Google para acceder a una imagen.

      Este campo es obligatorio.

    • NAMESPACE_EMAIL: Si has añadido gcpserviceaccount como tu ROOT_AUTH_TYPE, añade la dirección de correo de tu cuenta de servicio de Google. Por ejemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: añade el nombre de tu secreto si token es el ROOT_AUTH_TYPE. Este campo es opcional.

    • NAMESPACE_CA_CERT_SECRET_NAME: añade el nombre de tu secreto. Si se define este campo, tu proveedor de Helm debe usar un certificado emitido por esta autoridad de certificación (CA). El secreto debe contener el certificado de la AC en una clave llamada cert. Este campo es opcional.

      Para obtener más información sobre cómo configurar el objeto Secret para el certificado de la AC, consulta Configurar la autoridad de certificación.

    Para obtener una explicación de los campos y una lista completa de los que puede añadir al campo spec, consulte Campos de RootSync.

  5. Aplica la configuración RepoSync:

    kubectl apply -f repo-sync.yaml
    
  6. Para verificar la configuración, usa kubectl get en uno de los objetos de la fuente centrada en el espacio de nombres. Por ejemplo:

    kubectl get rolebindings -n NAMESPACE
    
  7. Puedes repetir los pasos anteriores si necesitas configurar varias fuentes de referencia centradas en espacios de nombres .

Verificar el estado de sincronización de la fuente de información veraz

Puedes usar el comando nomos status para inspeccionar el estado de sincronización de la fuente de información veraz:

nomos status

Debería ver un resultado similar al siguiente ejemplo:

my_managed_cluster-1
  --------------------
  <root>   git@github.com:foo-corp/acme/admin@main
  SYNCED   f52a11e4
  --------------------
  bookstore  git@github.com:foo-corp/acme/bookstore@v1
  SYNCED     34d1a8c8

En este ejemplo de salida, la fuente con ámbito de espacio de nombres, en este caso un repositorio Git, se configura para un espacio de nombres llamado bookstore.

Verificar la instalación de RootSync

Cuando creas un objeto RootSync, Config Sync crea un reconciliador con el prefijo root-reconciler. Un reconciliador es un pod que se despliega como un despliegue. Sincroniza manifiestos de una fuente de información veraz con un clúster.

Para comprobar que el objeto RootSync funciona correctamente, consulta el estado de la implementación de root-reconciler:

kubectl get -n config-management-system deployment \
    -l configsync.gke.io/sync-name=ROOT_SYNC_NAME

Sustituye ROOT_SYNC_NAME por el nombre de RootSync.

Debería ver un resultado similar al siguiente ejemplo:

NAME              READY   UP-TO-DATE   AVAILABLE   AGE
root-reconciler   1/1     1            1           3h42m

Para ver otras formas de consultar el estado de tu objeto RootSync, consulta Monitorizar objetos RootSync y RepoSync.

Verificar la instalación de RepoSync

Cuando creas un objeto RepoSync, Config Sync crea un reconciliador con el prefijo ns-reconciler-NAMESPACE, donde NAMESPACE es el espacio de nombres en el que has creado el objeto RepoSync.

Puedes verificar que el objeto RepoSync funciona correctamente comprobando el estado de la implementación del reconciliador de espacios de nombres:

kubectl get -n config-management-system deployment \
  -l configsync.gke.io/sync-name=REPO_SYNC_NAME \
  -l configsync.gke.io/sync-namespace=NAMESPACE

Sustituye REPO_SYNC_NAME por el nombre de RepoSync y NAMESPACE por el espacio de nombres en el que has creado tu fuente de información veraz con ámbito de espacio de nombres.

Para ver otras formas de consultar el estado de tu objeto RepoSync, consulta Consultar los objetos RootSync y RepoSync.

Quitar una fuente de información veraz

Selecciona la pestaña Método de control central o Método de API de Kubernetes para ver las instrucciones correspondientes.

Método de control central

Si has usado el método Controlar las fuentes de información veraz en una fuente de información veraz raíz, un administrador central puede seguir estos dos pasos para eliminar una fuente de información veraz:

  1. Decide si quieres eliminar o conservar los recursos que se gestionan a través de tus objetos RootSync y RepoSync.

    • Para eliminar todos los recursos que gestionan tus objetos RootSync o RepoSync, sincroniza tu objeto RootSync o RepoSync con una fuente vacía. Por ejemplo, un repositorio de GitHub sin configuraciones. Si tu objeto RootSync o RepoSync contiene otro objeto RootSync o RepoSync, el objeto RootSync o RepoSync interno debe sincronizarse primero con un repositorio de Git vacío.

    • Si has habilitado el webhook y quieres conservar tus recursos, desactiva la prevención de la deriva para los recursos abandonados. Si no has habilitado el webhook, no tienes que hacer nada más para conservar tus recursos.

  2. Elimina el objeto RootSync o RepoSync de la fuente de información veraz.

Método de la API de Kubernetes

Si has usado el método Controlar las fuentes de referencia con ámbito de espacio de nombres con la API de Kubernetes, los operadores de aplicaciones pueden seguir estos pasos para eliminar una fuente de referencia con ámbito de espacio de nombres:

  1. Decide si quieres eliminar o conservar los recursos que se gestionan a través de tus objetos RootSync y RepoSync.

    • Para eliminar todos los recursos que gestionan tus objetos RootSync o RepoSync, sincroniza tu objeto RootSync o RepoSync con una fuente vacía. Por ejemplo, un repositorio de GitHub sin configuraciones. Si tu objeto RootSync o RepoSync contiene otro objeto RootSync o RepoSync, el objeto RootSync o RepoSync interno debe sincronizarse primero con un repositorio de Git vacío.

    • Si has habilitado el webhook y quieres conservar tus recursos, deshabilita la prevención de desfase para los recursos abandonados. Si no has habilitado el webhook, no tienes que hacer nada más para conservar tus recursos.

  2. Elimina el objeto RootSync o RepoSync ejecutando el siguiente comando:

    kubectl delete -f FILE_NAME
    

    Sustituye FILE_NAME por el nombre del archivo de configuración de RootSync o RepoSync. Por ejemplo, root-sync.yaml.

Siguientes pasos