Configura la sincronización desde más de una fuente de información.
En esta página, se explica cómo configurar más de una fuente de confianza con alcance de espacio de nombres y raíz mediante la creación de objetos RootSync y RepoSync.
Tener una fuente de confianza raíz te permite sincronizar los archivos de configuración centrados en el clúster y en los espacios de nombres. Una fuente de confianza raíz puede usar credenciales de nivel de administrador para aplicar políticas en los espacios de nombres de la aplicación y anular los cambios locales que se derivan del estado que declaraste en los archivos de configuración. Un administrador central suele controlar las fuentes raíz de verdad.
Las fuentes de información con alcance de espacio de nombres son opcionales y pueden contener archivos de configuración con alcance de espacio de nombres sincronizados con un espacio de nombres particular en los clústeres. Puedes delegar la configuración y el control de una fuente de confianza con alcance de espacio de nombres a usuarios que no sean administradores. Aunque el Sincronizador de configuración detecta automáticamente los cambios de la fuente de información, puedes agregar una capa adicional de detección de desvíos si agregas un webhook de admisión a una fuente de información con alcance de espacio de nombres. Si deseas obtener detalles para hacerlo, consulta Cómo evitar el desvío de configuración.
Antes de comenzar
- Crea o asegúrate de tener acceso a una fuente de información no estructurada que pueda contener los archivos de configuración con los que se sincroniza el Sincronizador de configuración. El Sincronizador de configuración admite repositorios de Git, gráficos de Helm y, también, imágenes de OCI como fuente de información. Las fuentes de información con alcance de espacio de nombres deben usar el formato no estructurado.
- Crea o asegúrate de tener acceso a un clúster que se encuentre en una plataforma y versión compatibles de Google Kubernetes Engine (GKE) Enterprise y que cumpla con los requisitos del Sincronizador de configuración.
Limitaciones
NamespaceSelectors
(incluidas las anotaciones que apuntan a los selectores) solo funcionan en una fuente raíz de confianza.- Si
instalaste el Sincronizador de configuración con la consola de Google Cloud o Google Cloud CLI,
el Sincronizador de configuración creó automáticamente un objeto RootSync llamado
root-sync
. Por lo tanto, no puedes asignar el nombreroot-sync
a ninguno de tus objetos RootSync.
Elige tu método de configuración preferido
Elige uno de los dos métodos para configurar las fuentes:
Controla las fuentes en una fuente raíz de confianza. Este método centraliza toda la configuración de una fuente de información en otra, lo que permite que un administrador central controle por completo la configuración.
Controla las fuentes con la API de Kubernetes. Usa este método si deseas delegar el control de tu fuente de información a diferentes propietarios.
Controla las fuentes en una fuente raíz de confianza
Controla las fuentes raíz en una fuente de confianza raíz
El Sincronizador de configuración admite la sincronización desde más de una fuente de información. El administrador central puede usar una fuente de información raíz para administrar todas las demás fuentes. Debido a que el Sincronizador de configuración administra los objetos RootSync, este método evita cualquier cambio local en los parámetros de configuración de RootSync en el clúster.
Para usar este método, completa las siguientes tareas:
Guarda uno de los siguientes manifiestos como
root-sync.yaml
. Usa la versión del manifiesto que corresponda al tipo de origen para 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
Reemplaza lo siguiente:
ROOT_SYNC_NAME
: Agrega el nombre de tu objeto RootSync.ROOT_FORMAT
: agregaunstructured
para usar un repositorio no estructurado o agregahierarchy
a fin de usar un repositorio jerárquico. Estos valores distinguen entre mayúsculas y minúsculas. Este campo es opcional y el valor predeterminado eshierarchy
. Te recomendamos que agreguesunstructured
, ya que este formato te permite organizar la configuración de la manera que te resulte más conveniente.ROOT_REPOSITORY
: agrega la URL del repositorio de Git para usarlo como repositorio raíz. Puedes ingresar las URL 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
: Agrega la revisión de Git (etiqueta o hash) desde la que se sincronizará. Este campo es opcional, y el valor predeterminado esHEAD
. A partir de la versión 1.17.0 del Sincronizador de configuración, también puedes especificar el nombre de una rama en el camporevision
. Cuando se usa un hash a partir de la versión 1.17.0, debe ser completo y no abreviada.ROOT_BRANCH
: Agrega la rama del repositorio desde el que se sincronizará. Este campo es opcional, y el valor predeterminado esmaster
. A partir de la versión 1.17.0 del Sincronizador de configuración, se recomienda usar el camporevision
para especificar un nombre de rama y simplificar el proceso. Si se especifican los camposrevision
ybranch
,revision
tiene prioridad sobrebranch
.ROOT_DIRECTORY
: agrega la ruta de acceso en el repositorio de Git al directorio raíz que contiene la configuración con la que deseas sincronizar. Este campo es opcional y el predeterminado es el directorio raíz (/
) del repositorio.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticaciónssh
: Usa un par de claves SSHcookiefile
: Usa un objetocookiefile
token
: Usa un tokengcpserviceaccount
: 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 no está habilitado en tu clúster.
Para obtener más información sobre estos tipos de autenticación, consulta Otorga al Sincronizador de configuración acceso de solo lectura a Git.
Este campo es obligatorio.
ROOT_EMAIL
: Si agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
ROOT_SECRET_NAME
: agrega el nombre del secreto. Si se configura este campo, debes agregar 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, establece este campo entrue
. El valor predeterminado esfalse
.ROOT_CA_CERT_SECRET_NAME
: Agrega el nombre de tu Secret. Si se configura este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad certificadora (AC). El secreto debe contener el certificado de la AC en una clave llamadacert
. Este campo es opcional.Si quieres obtener más información sobre cómo configurar el objeto secreto del certificado de AC, consulta Configura un operador para una autoridad certificadora.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Mediante este manifiesto, se 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
Reemplaza lo siguiente:
ROOT_SYNC_NAME
: Agrega el nombre de tu objeto RootSync.ROOT_FORMAT
: agregaunstructured
para usar un repositorio no estructurado o agregahierarchy
a fin de usar un repositorio jerárquico. Estos valores distinguen entre mayúsculas y minúsculas. Este campo es opcional y el valor predeterminado eshierarchy
. Te recomendamos que agreguesunstructured
, ya que este formato te permite organizar la configuración de la manera que te resulte más conveniente.ROOT_IMAGE
: URL de la imagen de OCI que se usa 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 etiquetalatest
, pero puedes extraer imágenes medianteTAG
oDIGEST
. EspecificaTAG
oDIGEST
en elPACKAGE_NAME
:- Para extraer antes del
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Para extraer antes del
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Para extraer antes del
ROOT_DIRECTORY
: agrega la ruta de acceso en el repositorio al directorio raíz que contiene la configuración con la que deseas sincronizar. Este campo es opcional y el predeterminado es el directorio raíz (/
) del repositorio.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióngcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Mediante este manifiesto, se crea un objeto
RootSync
que usa una imagen de OCI como fuente.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
Reemplaza lo siguiente:
ROOT_SYNC_NAME
: Agrega el nombre de tu objeto RootSync.ROOT_FORMAT
: agregaunstructured
para usar un repositorio no estructurado o agregahierarchy
a fin de usar un repositorio jerárquico. Estos valores distinguen entre mayúsculas y minúsculas. Este campo es opcional y el valor predeterminado eshierarchy
. Te recomendamos que agreguesunstructured
, ya que este formato te permite organizar la configuración de la manera que te resulte más conveniente.ROOT_HELM_REPOSITORY
: Es la URL del repositorio de Helm que se usará como repositorio raíz. Puedes ingresar las 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
: Agrega el nombre de tu gráfico de Helm. Este campo es obligatorio.HELM_CHART_VERSION
: Es 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
: Es el nombre de la versión de Helm. Este campo es opcional.HELM_RELEASE_NAMESPACE
: Es el espacio de nombres de destino de una versión. Solo establece un espacio de nombres para los recursos que contienennamespace: {{ .Release.Namespace }}
en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminadoconfig-management-system
.HELM_INCLUDE_CRDS
: Se establece entrue
si deseas que la plantilla de Helm también genere una CustomResourceDefinition. Este campo es opcional. Si no se especifica un valor, el valor predeterminado esfalse
y no se generará una CRD.VALUE
: Son valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Aplica a este campo el mismo formato que al archivo helm chart's values.yaml. Este campo es opcional.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióntoken
: Usa un nombre de usuario y una contraseña para acceder a un repositorio privado de Helm.gcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
ROOT_SECRET_NAME
: Agrega el nombre de tu Secret sitoken
es elROOT_AUTH_TYPE
. Este campo es opcional.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Este manifiesto crea un objeto
RootSync
que usa Helm como fuente.Confirma los cambios en la fuente raíz de confianza:
git add . git commit -m 'Setting up a new root source of truth.' git push
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 confianza raíz sincronizada por otro objeto RootSync para administrar varios objetos RootSync de forma centralizada de manera GitOps.
Controla los objetos con permisos de espacio de nombres en una fuente de confianza raíz
Las fuentes de confianza con alcance de espacio de nombres se pueden administrar con una fuente de confianza raíz. Debido a que el Sincronizador de configuración administra las fuentes con permiso de espacio de nombres, este método evita cualquier cambio local en las definiciones de origen con permiso de espacio de nombres.
Para usar este método, completa las siguientes tareas:
En la fuente de confianza raíz, declara una configuración
namespace
:# ROOT_SOURCE/namespaces/NAMESPACE/namespace.yaml apiVersion: v1 kind: Namespace metadata: name: NAMESPACE
Reemplaza
NAMESPACE
por un nombre para el espacio de nombres.En la fuente de confianza raíz, crea uno de los siguientes objetos
RepoSync
en el mismo espacio de nombres. Usa el manifiesto que corresponda al tipo de origen para tus archivos de configuración: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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_REPOSITORY
: agrega la URL del repositorio de Git para usarlo como repositorio de espacio de nombres. Puedes ingresar las URL con el protocolo HTTPS o SSH. Por ejemplo,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
usa el protocolo HTTPS. Si no ingresas un protocolo, la URL se trata como una URL HTTPS. Este campo es obligatorio.NAMESPACE_REVISION
: Agrega la revisión de Git (etiqueta o hash) desde la que se sincronizará. Este campo es opcional, y el valor predeterminado esHEAD
. A partir de la versión 1.17.0 del Sincronizador de configuración, también puedes especificar el nombre de una rama en el camporevision
. Cuando se usa un hash a partir de la versión 1.17.0, debe ser completo y no abreviada.NAMESPACE_BRANCH
: Agrega la rama del repositorio desde el que se sincronizará. Este campo es opcional, y el valor predeterminado esmaster
. A partir de la versión 1.17.0 del Sincronizador de configuración, se recomienda usar el camporevision
para especificar un nombre de rama y simplificar el proceso. Si se especifican los camposrevision
ybranch
,revision
tiene prioridad sobrebranch
.NAMESPACE_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticaciónssh
: Usa un par de claves SSHcookiefile
: Usa un objetocookiefile
token
: Usa un tokengcpserviceaccount
: 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 no está habilitado en tu clúster.Para obtener más información sobre estos tipos de autenticación, consulta Otorga al Sincronizador de configuración acceso de solo lectura a Git.
Este campo es obligatorio.
NAMESPACE_EMAIL
: Si agregastegcpserviceaccount
como tuNAMESPACE_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
NAMESPACE_SECRET_NAME
: Agrega el nombre que deseas darle a tu objeto Secret. Este campo es opcional.NAMESPACE_NO_SSL_VERIFY
: Para inhabilitar la verificación del certificado SSL, establece este campo entrue
. El valor predeterminado esfalse
.NAMESPACE_CA_CERT_SECRET_NAME
: Agrega el nombre de tu Secret. Si se configura este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad certificadora (AC). El secreto debe contener el certificado de la AC en una clave llamadacert
. Este campo es opcional.Si quieres obtener más información sobre cómo configurar el objeto secreto del certificado de AC, consulta Configura un operador para una autoridad certificadora.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta 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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_IMAGE
: Es la URL de la imagen de OCI que se usará como la fuente 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 etiquetalatest
, pero puedes extraer imágenes medianteTAG
oDIGEST
. EspecificaTAG
oDIGEST
enPACKAGE_NAME
:- Para extraer antes del
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Para extraer antes del
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Para extraer antes del
NAMESPACE_DIRECTORY
: Agrega la ruta de acceso en la fuente al directorio raíz que contiene la configuración con la que deseas sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/
) de la fuente.NAMESPACE_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióngcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta 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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_REPOSITORY
: Es la URL del repositorio de Helm que se usará como repositorio raíz. Puedes ingresar las 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
: Agrega el nombre de tu gráfico de Helm. Este campo es obligatorio.HELM_CHART_VERSION
: Es 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
: Es el nombre de la versión de Helm. Este campo es opcional.HELM_RELEASE_NAMESPACE
: Es el espacio de nombres de destino de una versión. Solo establece un espacio de nombres para los recursos que contienennamespace: {{ .Release.Namespace }}
en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminadoconfig-management-system
.HELM_INCLUDE_CRDS
: Se establece entrue
si deseas que la plantilla de Helm también genere una CustomResourceDefinition. Este campo es opcional. Si no se especifica un valor, el valor predeterminado esfalse
y no se generará una CRD.VALUE
: Son valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Aplica formato a este campo de la misma manera que el archivo helm chart's values.yaml. Este campo es opcional.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióntoken
: Usa un nombre de usuario y una contraseña para acceder a un repositorio privado de Helm.gcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
NAMESPACE_SECRET_NAME
: Agrega el nombre de tu Secret sitoken
es elROOT_AUTH_TYPE
. Este campo es opcional.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Si usas
gcpserviceaccount
como el tipo de autenticación y no tienes habilitado Workload Identity, debes crear una vinculación de política de IAM entre la cuenta de servicio de Kubernetes para cada espacio de nombres y la cuenta de servicio de Google. Consulta Otorga acceso a Git para obtener instrucciones sobre cómo crear esta vinculación.En la fuente raíz, declara una configuración
RoleBinding
que otorgue permiso a la cuenta de servicioSERVICE_ACCOUNT_NAME
para administrar objetos en el espacio de nombres. El Sincronizador de configuración crea de forma automática la cuenta de servicioSERVICE_ACCOUNT_NAME
cuando la configuración del RepoSync se sincroniza con el clúster.Un
RoleBinding
puede hacer referencia a unRole
en el mismo espacio de nombres. Como alternativa, unRoleBinding
puede hacer referencia a unClusterRole
y vincular eseClusterRole
al espacio de nombres deRoleBinding
. Si bien debes cumplir con el principio de privilegio mínimo cuando otorgas permisos detallados a unRole
definido por el usuario, puedes definir unClusterRole
o usar funciones orientadas al usuario y hacer referencia a la mismaClusterRole
en variosRoleBindings
en diferentes espacios de nombres.ClusterRoles predeterminados
Puedes declarar un
RoleBinding
que haga referencia a unClusterRole
predeterminado, por ejemplo,admin
oedit
. Si deseas obtener más información, consulta Roles para el usuario.# ROOT_REPO/namespaces/NAMESPACE/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: CLUSTERROLE_NAME apiGroup: rbac.authorization.k8s.io
Reemplaza lo siguiente:
NAMESPACE
: Agrega el nombre de tu espacio de nombres.SERVICE_ACCOUNT_NAME
: Agrega el nombre de la cuenta de servicio del conciliador. Si el nombre de RepoSync esrepo-sync
,SERVICE_ACCOUNT_NAME
esns-reconciler-NAMESPACE
. De lo contrario, esns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
. Por ejemplo, si el nombre de RepoSync esprod
, elSERVICE_ACCOUNT_NAME
seríans-reconciler-NAMESPACE-prod-4
. El número entero4
se usa comoprod
y contiene 4 caracteres.CLUSTERROLE_NAME
: Agrega el nombre del ClusterRole predeterminado.
Roles definidos por el usuario
Para declarar un
ClusterRole
o unRole
, otorga una lista de permisos a cada recurso que administra el objetoRepoSync
. Esto permite obtener permisos detallados. Consulta Consulta los recursos para obtener más detalles.Por ejemplo, el siguiente
ClusterRole
oRole
otorga permisos para administrar objetosDeployment
yServiceAccount
.# 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: ["*"]
Para declarar un
RoleBinding
que haga referencia aClusterRole
oRole
, crea el siguiente objeto.RoleBinding
otorga permisos adicionales para permitir que el Sincronizador de configuración administre recursos con alcance de espacio de nombres para unRepoSync
determinado.# ROOT_REPO/namespaces/NAMESPACE/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: ROLE_KIND name: RECONCILER_ROLE apiGroup: rbac.authorization.k8s.io
Reemplaza lo siguiente:
ROLE_KIND
: ConfiguraClusterRole
oRole
.NAMESPACE
: Agrega el nombre de tu espacio de nombres.SERVICE_ACCOUNT_NAME
: Agrega el nombre de la cuenta de servicio del conciliador. Si el nombre de RepoSync esrepo-sync
,SERVICE_ACCOUNT_NAME
esns-reconciler-NAMESPACE
. De lo contrario, esns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
. Por ejemplo, si el nombre de RepoSync esprod
, elSERVICE_ACCOUNT_NAME
seríans-reconciler-NAMESPACE-prod-4
. El número entero4
se usa comoprod
y contiene 4 caracteres.RECONCILER_ROLE
: Agrega el nombre deClusterRole
oRole
.
Confirma los cambios en la fuente raíz de confianza:
git add . git commit -m 'Setting up a new namespace-scoped source of truth.' git push
Si es necesario, crea un Secret según tu método de autenticación preferido. Si usaste
none
como el tipo de autenticación, puedes omitir este paso.El Secret debe cumplir con los siguientes requisitos:
- Crea el Secret en el mismo espacio de nombres que RepoSync.
- El nombre del Secret debe coincidir con el nombre de
spec.git.secretRef
que definiste enrepo-sync.yaml
. - Debes agregar la clave pública del Secret al proveedor de Git.
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
Puedes repetir los pasos anteriores si necesitas configurar más de una fuente con alcance de espacio de nombres.
Controla fuentes con permiso de espacio de nombres en una fuente con permiso de espacio de nombres
El Sincronizador de configuración admite la sincronización desde más de una fuente de información con alcance de espacio de nombres por espacio de nombres. Las fuentes de información con alcance de espacio de nombres se pueden administrar en una fuente de información con permiso de espacio de nombres en el mismo espacio de nombres.
Para usar este método, completa las siguientes tareas:
En la fuente de confianza con alcance 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 para tus archivos de configuración: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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_REPOSITORY
: agrega la URL del repositorio de Git para usarlo como repositorio de espacio de nombres. Puedes ingresar las URL con el protocolo HTTPS o SSH. Por ejemplo,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
usa el protocolo HTTPS. Si no ingresas un protocolo, la URL se trata como una URL HTTPS. Este campo es obligatorio.NAMESPACE_REVISION
: Agrega la revisión de Git (etiqueta o hash) desde la que se sincronizará. Este campo es opcional, y el valor predeterminado esHEAD
. A partir de la versión 1.17.0 del Sincronizador de configuración, también puedes especificar el nombre de una rama en el camporevision
. Cuando se usa un hash a partir de la versión 1.17.0, debe ser completo y no abreviada.NAMESPACE_BRANCH
: Agrega la rama del repositorio desde el que se sincronizará. Este campo es opcional, y el valor predeterminado esmaster
. A partir de la versión 1.17.0 del Sincronizador de configuración, se recomienda usar el camporevision
para especificar un nombre de rama y simplificar el proceso. Si se especifican los camposrevision
ybranch
,revision
tiene prioridad sobrebranch
.NAMESPACE_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticaciónssh
: Usa un par de claves SSHcookiefile
: Usa un objetocookiefile
token
: Usa un tokengcpserviceaccount
: 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 no está habilitado en tu clúster.Para obtener más información sobre estos tipos de autenticación, consulta Otorga al Sincronizador de configuración acceso de solo lectura a Git.
Este campo es obligatorio.
NAMESPACE_EMAIL
: Si agregastegcpserviceaccount
como tuNAMESPACE_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
NAMESPACE_SECRET_NAME
: Agrega el nombre que deseas darle a tu objeto Secret. Este campo es opcional.NAMESPACE_NO_SSL_VERIFY
: Para inhabilitar la verificación del certificado SSL, establece este campo entrue
. El valor predeterminado esfalse
.NAMESPACE_CA_CERT_SECRET_NAME
: Agrega el nombre de tu Secret. Si se configura este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad certificadora (AC). El secreto debe contener el certificado de la AC en una clave llamadacert
. Este campo es opcional.Si quieres obtener más información sobre cómo configurar el objeto secreto del certificado de AC, consulta Configura un operador para una autoridad certificadora.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta 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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_IMAGE
: Es la URL de la imagen de OCI que se usará como la fuente 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 etiquetalatest
, pero puedes extraer imágenes medianteTAG
oDIGEST
. EspecificaTAG
oDIGEST
enPACKAGE_NAME
:- Para extraer antes del
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Para extraer antes del
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Para extraer antes del
NAMESPACE_DIRECTORY
: Agrega la ruta de acceso en la fuente al directorio raíz que contiene la configuración con la que deseas sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/
) de la fuente.NAMESPACE_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióngcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta 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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_REPOSITORY
: Es la URL del repositorio de Helm que se usará como repositorio raíz. Puedes ingresar las 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
: Agrega el nombre de tu gráfico de Helm. Este campo es obligatorio.HELM_CHART_VERSION
: Es 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
: Es el nombre de la versión de Helm. Este campo es opcional.HELM_RELEASE_NAMESPACE
: Es el espacio de nombres de destino de una versión. Solo establece un espacio de nombres para los recursos que contienennamespace: {{ .Release.Namespace }}
en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminadoconfig-management-system
.HELM_INCLUDE_CRDS
: Se establece entrue
si deseas que la plantilla de Helm también genere una CustomResourceDefinition. Este campo es opcional. Si no se especifica un valor, el valor predeterminado esfalse
y no se generará una CRD.VALUE
: Son valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Aplica formato a este campo de la misma manera que el archivo helm chart's values.yaml. Este campo es opcional.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióntoken
: Usa un nombre de usuario y una contraseña para acceder a un repositorio privado de Helm.gcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
NAMESPACE_SECRET_NAME
: Agrega el nombre de tu Secret sitoken
es elROOT_AUTH_TYPE
. Este campo es opcional.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Si usas
gcpserviceaccount
como el tipo de autenticación y no tienes habilitado Workload Identity, debes crear una vinculación de política de IAM entre la cuenta de servicio de Kubernetes para cada espacio de nombres y la cuenta de servicio de Google. Consulta Otorga acceso a Git para obtener instrucciones sobre cómo crear esta vinculación.En la fuente raíz, declara una configuración
RoleBinding
que otorgue permiso a la cuenta de servicioSERVICE_ACCOUNT_NAME
para administrar objetos en el espacio de nombres. El Sincronizador de configuración crea de forma automática la cuenta de servicioSERVICE_ACCOUNT_NAME
cuando la configuración del RepoSync se sincroniza con el clúster.Un
RoleBinding
puede hacer referencia a unRole
en el mismo espacio de nombres. Como alternativa, unRoleBinding
puede hacer referencia a unClusterRole
y vincular eseClusterRole
al espacio de nombres deRoleBinding
. Si bien debes cumplir con el principio de privilegio mínimo cuando otorgas permisos detallados a unRole
definido por el usuario, puedes definir unClusterRole
o usar funciones orientadas al usuario y hacer referencia a la mismaClusterRole
en variosRoleBindings
en diferentes espacios de nombres.ClusterRoles predeterminados
Puedes declarar un
RoleBinding
que haga referencia a unClusterRole
predeterminado, por ejemplo,admin
oedit
. Si deseas obtener más información, consulta Roles para el usuario.# ROOT_REPO/namespaces/NAMESPACE/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: CLUSTERROLE_NAME apiGroup: rbac.authorization.k8s.io
Reemplaza lo siguiente:
NAMESPACE
: Agrega el nombre de tu espacio de nombres.SERVICE_ACCOUNT_NAME
: Agrega el nombre de la cuenta de servicio del conciliador. Si el nombre de RepoSync esrepo-sync
,SERVICE_ACCOUNT_NAME
esns-reconciler-NAMESPACE
. De lo contrario, esns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
. Por ejemplo, si el nombre de RepoSync esprod
, elSERVICE_ACCOUNT_NAME
seríans-reconciler-NAMESPACE-prod-4
. El número entero4
se usa comoprod
y contiene 4 caracteres.CLUSTERROLE_NAME
: Agrega el nombre del ClusterRole predeterminado.
Roles definidos por el usuario
Para declarar un
ClusterRole
o unRole
, otorga una lista de permisos a cada recurso que administra el objetoRepoSync
. Esto permite obtener permisos detallados. Consulta Consulta los recursos para obtener más detalles.Por ejemplo, el siguiente
ClusterRole
oRole
otorga permisos para administrar objetosDeployment
yServiceAccount
.# 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: ["*"]
Para declarar un
RoleBinding
que haga referencia aClusterRole
oRole
, crea el siguiente objeto.RoleBinding
otorga permisos adicionales para permitir que el Sincronizador de configuración administre recursos con alcance de espacio de nombres para unRepoSync
determinado.# ROOT_REPO/namespaces/NAMESPACE/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: ROLE_KIND name: RECONCILER_ROLE apiGroup: rbac.authorization.k8s.io
Reemplaza lo siguiente:
ROLE_KIND
: ConfiguraClusterRole
oRole
.NAMESPACE
: Agrega el nombre de tu espacio de nombres.SERVICE_ACCOUNT_NAME
: Agrega el nombre de la cuenta de servicio del conciliador. Si el nombre de RepoSync esrepo-sync
,SERVICE_ACCOUNT_NAME
esns-reconciler-NAMESPACE
. De lo contrario, esns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
. Por ejemplo, si el nombre de RepoSync esprod
, elSERVICE_ACCOUNT_NAME
seríans-reconciler-NAMESPACE-prod-4
. El número entero4
se usa comoprod
y contiene 4 caracteres.RECONCILER_ROLE
: Agrega el nombre deClusterRole
oRole
.
Confirma los cambios en la fuente raíz de confianza:
git add . git commit -m 'Setting up a new namespace-scoped source of truth.' git push
Si es necesario, crea un Secret según tu método de autenticación preferido. Si usaste
none
como el tipo de autenticación, puedes omitir este paso.El Secret debe cumplir con los siguientes requisitos:
- Crea el Secret en el mismo espacio de nombres que RepoSync.
- El nombre del Secret debe coincidir con el nombre de
spec.git.secretRef
que definiste enrepo-sync.yaml
. - Debes agregar la clave pública del Secret al proveedor de Git.
Para verificar la configuración, usa
kubectl get
en uno de los objetos de la fuente de confianza con alcance de espacio de nombres. Por ejemplo:kubectl get rolebindings -n NAMESPACE
Puedes repetir los pasos anteriores si necesitas configurar más de una fuente con alcance de espacio de nombres.
Controla una fuente de información con la API de Kubernetes
En este método, el administrador central delega la declaración de otros objetos RootSync
a otros administradores. En el caso de los objetos RepoSync
, el administrador central solo declara el espacio de nombres en la fuente de confianza raíz y delega la declaración del objeto RepoSync
al operador de la aplicación.
Controla más de una fuente raíz de confianza
Otros administradores pueden controlar una fuente de información raíz completando las siguientes tareas:
Guarda uno de los siguientes manifiestos como
root-sync.yaml
. Usa la versión del manifiesto que corresponda al tipo de origen para 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
Reemplaza lo siguiente:
ROOT_SYNC_NAME
: Agrega el nombre de tu objeto RootSync.ROOT_FORMAT
: agregaunstructured
para usar un repositorio no estructurado o agregahierarchy
a fin de usar un repositorio jerárquico. Estos valores distinguen entre mayúsculas y minúsculas. Este campo es opcional y el valor predeterminado eshierarchy
. Te recomendamos que agreguesunstructured
, ya que este formato te permite organizar la configuración de la manera que te resulte más conveniente.ROOT_REPOSITORY
: agrega la URL del repositorio de Git para usarlo como repositorio raíz. Puedes ingresar las URL 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
: Agrega la revisión de Git (etiqueta o hash) desde la que se sincronizará. Este campo es opcional, y el valor predeterminado esHEAD
. A partir de la versión 1.17.0 del Sincronizador de configuración, también puedes especificar el nombre de una rama en el camporevision
. Cuando se usa un hash a partir de la versión 1.17.0, debe ser completo y no abreviada.ROOT_BRANCH
: Agrega la rama del repositorio desde el que se sincronizará. Este campo es opcional, y el valor predeterminado esmaster
. A partir de la versión 1.17.0 del Sincronizador de configuración, se recomienda usar el camporevision
para especificar un nombre de rama y simplificar el proceso. Si se especifican los camposrevision
ybranch
,revision
tiene prioridad sobrebranch
.ROOT_DIRECTORY
: agrega la ruta de acceso en el repositorio de Git al directorio raíz que contiene la configuración con la que deseas sincronizar. Este campo es opcional y el predeterminado es el directorio raíz (/
) del repositorio.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticaciónssh
: Usa un par de claves SSHcookiefile
: Usa un objetocookiefile
token
: Usa un tokengcpserviceaccount
: 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 no está habilitado en tu clúster.
Para obtener más información sobre estos tipos de autenticación, consulta Otorga al Sincronizador de configuración acceso de solo lectura a Git.
Este campo es obligatorio.
ROOT_EMAIL
: Si agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
ROOT_SECRET_NAME
: agrega el nombre del secreto. Si se configura este campo, debes agregar 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, establece este campo entrue
. El valor predeterminado esfalse
.ROOT_CA_CERT_SECRET_NAME
: Agrega el nombre de tu Secret. Si se configura este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad certificadora (AC). El secreto debe contener el certificado de la AC en una clave llamadacert
. Este campo es opcional.Si quieres obtener más información sobre cómo configurar el objeto secreto del certificado de AC, consulta Configura un operador para una autoridad certificadora.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Mediante este manifiesto, se 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
Reemplaza lo siguiente:
ROOT_SYNC_NAME
: Agrega el nombre de tu objeto RootSync.ROOT_FORMAT
: agregaunstructured
para usar un repositorio no estructurado o agregahierarchy
a fin de usar un repositorio jerárquico. Estos valores distinguen entre mayúsculas y minúsculas. Este campo es opcional y el valor predeterminado eshierarchy
. Te recomendamos que agreguesunstructured
, ya que este formato te permite organizar la configuración de la manera que te resulte más conveniente.ROOT_IMAGE
: URL de la imagen de OCI que se usa 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 etiquetalatest
, pero puedes extraer imágenes medianteTAG
oDIGEST
. EspecificaTAG
oDIGEST
en elPACKAGE_NAME
:- Para extraer antes del
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Para extraer antes del
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Para extraer antes del
ROOT_DIRECTORY
: agrega la ruta de acceso en el repositorio al directorio raíz que contiene la configuración con la que deseas sincronizar. Este campo es opcional y el predeterminado es el directorio raíz (/
) del repositorio.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióngcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Mediante este manifiesto, se crea un objeto
RootSync
que usa una imagen de OCI como fuente.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
Reemplaza lo siguiente:
ROOT_SYNC_NAME
: Agrega el nombre de tu objeto RootSync.ROOT_FORMAT
: agregaunstructured
para usar un repositorio no estructurado o agregahierarchy
a fin de usar un repositorio jerárquico. Estos valores distinguen entre mayúsculas y minúsculas. Este campo es opcional y el valor predeterminado eshierarchy
. Te recomendamos que agreguesunstructured
, ya que este formato te permite organizar la configuración de la manera que te resulte más conveniente.ROOT_HELM_REPOSITORY
: Es la URL del repositorio de Helm que se usará como repositorio raíz. Puedes ingresar las 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
: Agrega el nombre de tu gráfico de Helm. Este campo es obligatorio.HELM_CHART_VERSION
: Es 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
: Es el nombre de la versión de Helm. Este campo es opcional.HELM_RELEASE_NAMESPACE
: Es el espacio de nombres de destino de una versión. Solo establece un espacio de nombres para los recursos que contienennamespace: {{ .Release.Namespace }}
en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminadoconfig-management-system
.HELM_INCLUDE_CRDS
: Se establece entrue
si deseas que la plantilla de Helm también genere una CustomResourceDefinition. Este campo es opcional. Si no se especifica un valor, el valor predeterminado esfalse
y no se generará una CRD.VALUE
: Son valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Aplica a este campo el mismo formato que al archivo helm chart's values.yaml. Este campo es opcional.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióntoken
: Usa un nombre de usuario y una contraseña para acceder a un repositorio privado de Helm.gcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
ROOT_SECRET_NAME
: Agrega el nombre de tu Secret sitoken
es elROOT_AUTH_TYPE
. Este campo es opcional.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Este manifiesto crea un objeto
RootSync
que usa Helm como fuente.Aplica los cambios:
kubectl apply -f root-sync.yaml
Puedes repetir los pasos anteriores si necesitas configurar más de una fuente de confianza raíz.
Controla fuentes de confianza con permiso de espacio de nombres
Tareas del administrador central
El administrador central completa las siguientes tareas:
En la fuente raíz de confianza, declara una configuración
namespace
para las fuentes con alcance de espacio de nombres.# ROOT_REPO/namespaces/NAMESPACE/namespace.yaml apiVersion: v1 kind: Namespace metadata: name: NAMESPACE
Reemplaza
NAMESPACE
por un nombre para el espacio de nombres.En la fuente de confianza raíz, declara un
RoleBinding
para otorgar permisos a los operadores de la aplicación. Usa la Prevención de elevación del RBAC para asegurarte de que el operador de la aplicación no pueda aplicar una vinculación de función con permisos que no otorga esta vinculación de función.Para declarar 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
Reemplaza lo siguiente:
NAMESPACE
: Agrega el espacio de nombres que creaste en la fuente de confianza raíz.USERNAME
: Agrega el nombre de usuario del operador de la aplicación.OPERATOR_ROLE
: Como administrador central, puedes establecerOPERATOR_ROLE
para aplicar qué tipos de configuraciones se pueden sincronizar desde la fuente con alcance de espacio de nombres. Puedes elegir una de las siguientes funciones:Una ClusterRole predeterminada:
admin
edit
Para obtener más información, consulta Funciones orientadas al usuario.
Un ClusterRole o Role definido por el usuario declarado en la fuente de información raíz. Esta función admite permisos detallados.
Confirma los cambios en la fuente raíz de confianza:
git add . git commit -m 'Setting up new namespace-scoped source of truth.' git push
Tareas del operador de la aplicación
Para controlar las fuentes con permiso de espacio de nombres, el operador de la aplicación puede completar las siguientes tareas:
Declara una configuración
RoleBinding
que otorga el permisoSERVICE_ACCOUNT_NAME
de la cuenta de servicio aprovisionado de forma automática para administrar los recursos en el espacio de nombres. El Sincronizador de configuración crea de forma automática la cuenta de servicioSERVICE_ACCOUNT_NAME
cuando la configuraciónRepoSync
se sincroniza con el clúster.Para declarar 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
Reemplaza lo siguiente:
NAMESPACE
: Agrega el espacio de nombres que creaste en la fuente de confianza raíz.SERVICE_ACCOUNT_NAME
: Agrega el nombre de la cuenta de servicio del conciliador. Si el nombre del RepoSync esrepo-sync
,SERVICE_ACCOUNT_NAME
esns-reconciler-NAMESPACE
. De lo contrario, esns-reconciler-NAMESPACE-REPO_SYNC_NAME
.RECONCILER_ROLE
: Como operador de la aplicación, puedes configurarRECONCILER_ROLE
para aplicar qué tipos de configuración se pueden sincronizar desde la fuente con alcance de espacio de nombres. Solo puedes restringir aún más el conjunto de permisos que te otorgó el administrador central. Como resultado, esta función no puede ser más permisiva que laOPERATOR_ROLE
que el administrador central declaró en la sección anterior.
Aplica la configuración de RoleBinding:
kubectl apply -f sync-rolebinding.yaml
Si es necesario, crea un Secret según tu método de autenticación preferido. Si usaste
none
como el tipo de autenticación, puedes omitir este paso.El Secret debe cumplir con los siguientes requisitos:
- Crea el Secret en el mismo espacio de nombres que RepoSync.
- El nombre del Secret debe coincidir con el nombre de
spec.git.secretRef
que definiste enroot-sync.yaml
. - Debes agregar la clave pública del Secret al proveedor de Git.
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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_REPOSITORY
: agrega la URL del repositorio de Git para usarlo como repositorio de espacio de nombres. Puedes ingresar las URL con el protocolo HTTPS o SSH. Por ejemplo,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
usa el protocolo HTTPS. Si no ingresas un protocolo, la URL se trata como una URL HTTPS. Este campo es obligatorio.NAMESPACE_REVISION
: Agrega la revisión de Git (etiqueta o hash) desde la que se sincronizará. Este campo es opcional, y el valor predeterminado esHEAD
. A partir de la versión 1.17.0 del Sincronizador de configuración, también puedes especificar el nombre de una rama en el camporevision
. Cuando se usa un hash a partir de la versión 1.17.0, debe ser completo y no abreviada.NAMESPACE_BRANCH
: Agrega la rama del repositorio desde el que se sincronizará. Este campo es opcional, y el valor predeterminado esmaster
. A partir de la versión 1.17.0 del Sincronizador de configuración, se recomienda usar el camporevision
para especificar un nombre de rama y simplificar el proceso. Si se especifican los camposrevision
ybranch
,revision
tiene prioridad sobrebranch
.NAMESPACE_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticaciónssh
: Usa un par de claves SSHcookiefile
: Usa un objetocookiefile
token
: Usa un tokengcpserviceaccount
: 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 no está habilitado en tu clúster.Para obtener más información sobre estos tipos de autenticación, consulta Otorga al Sincronizador de configuración acceso de solo lectura a Git.
Este campo es obligatorio.
NAMESPACE_EMAIL
: Si agregastegcpserviceaccount
como tuNAMESPACE_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
NAMESPACE_SECRET_NAME
: Agrega el nombre que deseas darle a tu objeto Secret. Este campo es opcional.NAMESPACE_NO_SSL_VERIFY
: Para inhabilitar la verificación del certificado SSL, establece este campo entrue
. El valor predeterminado esfalse
.NAMESPACE_CA_CERT_SECRET_NAME
: Agrega el nombre de tu Secret. Si se configura este campo, tu proveedor de Git debe usar un certificado emitido por esta autoridad certificadora (AC). El secreto debe contener el certificado de la AC en una clave llamadacert
. Este campo es opcional.Si quieres obtener más información sobre cómo configurar el objeto secreto del certificado de AC, consulta Configura un operador para una autoridad certificadora.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta 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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_IMAGE
: Es la URL de la imagen de OCI que se usará como la fuente 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 etiquetalatest
, pero puedes extraer imágenes medianteTAG
oDIGEST
. EspecificaTAG
oDIGEST
enPACKAGE_NAME
:- Para extraer antes del
TAG
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
- Para extraer antes del
DIGEST
:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Para extraer antes del
NAMESPACE_DIRECTORY
: Agrega la ruta de acceso en la fuente al directorio raíz que contiene la configuración con la que deseas sincronizar. Este campo es opcional y el valor predeterminado es el directorio raíz (/
) de la fuente.NAMESPACE_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióngcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta 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
Reemplaza lo siguiente:
REPO_SYNC_NAME
: Agrega el nombre de tu objeto RepoSync. El nombre debe ser único en el espacio de nombres.NAMESPACE
: Agrega el nombre de tu espacio de nombres.NAMESPACE_REPOSITORY
: Es la URL del repositorio de Helm que se usará como repositorio raíz. Puedes ingresar las 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
: Agrega el nombre de tu gráfico de Helm. Este campo es obligatorio.HELM_CHART_VERSION
: Es 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
: Es el nombre de la versión de Helm. Este campo es opcional.HELM_RELEASE_NAMESPACE
: Es el espacio de nombres de destino de una versión. Solo establece un espacio de nombres para los recursos que contienennamespace: {{ .Release.Namespace }}
en sus plantillas. Este campo es opcional. Si no se especifica ningún valor, se usa el espacio de nombres predeterminadoconfig-management-system
.HELM_INCLUDE_CRDS
: Se establece entrue
si deseas que la plantilla de Helm también genere una CustomResourceDefinition. Este campo es opcional. Si no se especifica un valor, el valor predeterminado esfalse
y no se generará una CRD.VALUE
: Son valores que se usarán en lugar de los valores predeterminados que acompañan al gráfico de Helm. Aplica formato a este campo de la misma manera que el archivo helm chart's values.yaml. Este campo es opcional.ROOT_AUTH_TYPE
: Agrega uno de los siguientes tipos de autenticación:none
: No usa autenticacióntoken
: Usa un nombre de usuario y una contraseña para acceder a un repositorio privado de Helm.gcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si Workload Identity 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 agregastegcpserviceaccount
como tuROOT_AUTH_TYPE
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
NAMESPACE_SECRET_NAME
: Agrega el nombre de tu Secret sitoken
es elROOT_AUTH_TYPE
. Este campo es opcional.
Para obtener una explicación de los campos y una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de RootSync.Aplica la configuración de
RepoSync
:kubectl apply -f repo-sync.yaml
Para verificar la configuración, usa
kubectl get
en uno de los objetos de la fuente con alcance de espacio de nombres. Por ejemplo:kubectl get rolebindings -n NAMESPACE
Puedes repetir los pasos anteriores si necesitas configurar varias fuentes de confianza con alcance de espacio de nombres .
Verifica el estado de sincronización de la fuente de confianza
Puedes usar el comando nomos status
para inspeccionar el estado de sincronización de la fuente de confianza:
nomos status
Deberías ver un resultado similar al siguiente:
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 resultado de ejemplo, la fuente con alcance de espacio de nombres, en este caso un repositorio de Git, se configura para un espacio de nombres llamado bookstore
.
Verifica la instalación de RootSync
Cuando creas un objeto RootSync, el Sincronizador de configuración crea un conciliador con el prefijo root-reconciler
. Un conciliador es un Pod que se implementa como una implementación.
Sincroniza manifiestos de una fuente de información a un clúster.
Para verificar que el objeto RootSync funcione de forma correcta, verifica el estado del Deployment del conciliador raíz:
kubectl get -n config-management-system deployment \
-l configsync.gke.io/sync-name=ROOT_SYNC_NAME
Reemplaza ROOT_SYNC_NAME
por el nombre de RootSync.
Deberías ver un resultado similar al siguiente:
NAME READY UP-TO-DATE AVAILABLE AGE
root-reconciler 1/1 1 1 3h42m
Para conocer más formas de explorar el estado de tu objeto RootSync, consulta Supervisa los objetos RootSync y RepoSync.
Verifica la instalación de RepoSync
Cuando creas un objeto RepoSync, el Sincronizador de configuración crea un conciliador con el prefijo ns-reconciler-NAMESPACE
, en el que NAMESPACE
es el espacio de nombres en el que creaste el objeto RepoSync.
Para verificar que el objeto RepoSync funcione de forma correcta, verifica el estado del Deployment del conciliador de espacio 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
Reemplaza REPO_SYNC_NAME
por el nombre de RepoSync y
reemplaza NAMESPACE
por el espacio de nombres en el que creaste
tu fuente de confianza con alcance de espacio de nombres.
Para conocer más formas de explorar el estado del objeto RepoSync, consulta la sección Explora los objetos RootSync y RepoSync.
Quita una fuente de información
Selecciona la pestaña Método de control central o Método de la API de Kubernetes para ver las instrucciones relevantes.
Método de control central
Si usaste el método Control de fuentes de confianza en una fuente de confianza, un administrador central puede seguir los dos pasos siguientes para quitar una fuente de información:
Decide si quieres borrar o conservar los recursos que se administran a través de tus objetos RootSync y RepoSync.
Para borrar todos los recursos que administran tus objetos RootSync o RepoSync, sincroniza tu objeto RootSync o RepoSync con una fuente vacía. Por ejemplo, un repositorio de GitHub sin archivos de configuración. Si tu objeto RootSync o RepoSync contiene otro objeto RootSync o RepoSync, el RootSync o RepoSync internos deben sincronizarse con un repositorio de Git vacío primero.
Si habilitaste el webhook y deseas conservar tus recursos, sigue las instrucciones para solucionar problemas a fin de dejar de administrarlos. Si no habilitaste el webhook, no es necesario que realices ningún paso adicional para conservar tus recursos.
Quita el objeto RootSync o RepoSync de la fuente de información.
Método de la API de Kubernetes
Si usaste el método Controla las fuentes de información con alcance de espacio de nombres con la API de Kubernetes, los operadores de aplicaciones pueden seguir estos pasos para quitar una fuente de información con alcance de espacio de nombres:
Decide si quieres borrar o conservar los recursos que se administran a través de tus objetos RootSync y RepoSync.
Para borrar todos los recursos que administran tus objetos RootSync o RepoSync, sincroniza tu objeto RootSync o RepoSync con una fuente vacía. Por ejemplo, un repositorio de GitHub sin archivos de configuración. Si tu objeto RootSync o RepoSync contiene otro objeto RootSync o RepoSync, el RootSync o RepoSync internos deben sincronizarse con un repositorio de Git vacío primero.
Si habilitaste el webhook y quieres conservar tus recursos, sigue las instrucciones para solucionar problemas a fin de dejar de administrarlos. Si no habilitaste el webhook, no es necesario que realices ningún paso adicional para conservar tus recursos.
Borra el objeto RootSync o RepoSync mediante la ejecución del siguiente comando:
kubectl delete -f FILE_NAME
Reemplaza
FILE_NAME
por el nombre de tu archivo de configuración de RootSync o RepoSync. Por ejemplo,root-sync.yaml
¿Qué sigue?
- Obtén información para evitar el desvío de configuración en fuentes de confianza con alcance de espacio de nombres.
- Descubre cómo supervisar tus objetos de RootSync y RepoSync.
- Obtén información sobre cómo dividir una fuente de información en varias fuentes fiables.