En esta página se explica cómo instalar Config Sync con comandos kubectl
.
Antes de empezar
En esta sección se describen los requisitos que debes cumplir antes de instalar Config Sync con kubectl
.
Preparar el entorno local
Antes de instalar Config Sync, asegúrate de que has preparado tu entorno local completando las siguientes tareas:
Crear o tener acceso a una fuente de información veraz.
Instala e inicializa la CLI de Google Cloud, que proporciona los comandos
gcloud
,kubectl
ynomos
que se usan en estas instrucciones. Si usas Cloud Shell, Google Cloud CLI viene preinstalado.kubectl
no está instalado de forma predeterminada en la CLI de Google Cloud. Para instalarkubectl
, usa el siguiente comando:gcloud components install kubectl
Autentícate en Google Cloud con el comando
gcloud auth login
para poder descargar componentes de Config Sync.
Preparar los clústeres
Crea un clúster de Google Kubernetes Engine o ten acceso a uno que cumpla los requisitos de Config Sync.
Preparar permisos
El Google Cloud usuario que instala Config Sync necesita permisos de gestión de identidades y accesos para crear nuevos roles en tu clúster. Si es necesario, asigna estos roles con los siguientes comandos:
gcloud container clusters get-credentials CLUSTER_NAME kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole cluster-admin --user USER_ACCOUNT
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre de tu clústerUSER_ACCOUNT
: la dirección de correo de tu cuenta Google Cloud
En función de cómo hayas configurado Google Cloud CLI en tu sistema local, puede que tengas que añadir los campos --project
y --zone
.
Si necesitas conceder acceso a Config Sync a OCI
con gcpserviceaccount
como tipo de autenticación, para crear un enlace de política, también debes tener el permiso iam.serviceAccounts.setIamPolicy
.
Para obtener este permiso, asigna el rol de gestión de identidades y accesos Administrador de cuentas de servicio (roles/iam.serviceAccountAdmin
). También puedes obtener este permiso con roles personalizados u otros roles predefinidos.
Para obtener más información sobre cómo conceder roles, consulta el artículo sobre cómo gestionar el acceso.
Registrar un clúster
Para registrar un clúster en Config Sync, sigue estos pasos:
- Implementar Config Sync
- Concede acceso de solo lectura de Config Sync a una de las siguientes opciones:
- Configurar Config Sync
Desplegar Config Sync
Después de asegurarte de que cumples todos los requisitos previos, puedes implementar Config Sync descargando y aplicando un manifiesto YAML:
Descarga la versión más reciente de los manifiestos de Config Sync con el siguiente comando. Para descargar una versión específica, consulta la sección Descargas.
gcloud storage cp gs://config-management-release/released/latest/config-sync.tar.gz config-sync.tar.gz
Extrae el archivo:
tar -xzvf config-sync.tar.gz
En el archivo que has extraído en el paso anterior, sigue las instrucciones del archivo
README.md
proporcionado para editar la personalización.Para actualizar la instalación de Config Sync, aplica el manifiesto renderizado que has creado siguiendo las
README.md
instrucciones:kubectl apply -f CONFIG_SYNC_MANIFEST
Sustituye
CONFIG_SYNC_MANIFEST
por el nombre del archivo de manifiesto renderizado.Sustituye el comando
nomos
en todos los clientes por la nueva versión. Con este cambio, el comandonomos
siempre podrá obtener el estado de todos los clústeres registrados y validar sus configuraciones.
Si se produce un error debido a un problema con Config Sync que no se debe a un error de sintaxis de YAML o JSON, el objeto se puede crear en el clúster, pero es posible que no funcione correctamente. En esta situación, puedes usar el comando nomos
status
para comprobar si hay errores en el objeto.
Una instalación válida sin problemas tiene el estado PENDING
o SYNCED
.
Una instalación no válida tiene el estado NOT CONFIGURED
y muestra uno de los siguientes errores:
missing git-creds Secret
git-creds Secret is missing the key specified by secretType
Para solucionar el problema, corrige el error de configuración. En función del tipo de error, es posible que tengas que volver a aplicar el manifiesto de Config Sync al clúster.
Si el problema es que has olvidado crear el git-creds
secreto, Config Sync lo detectará en cuanto lo crees y no tendrás que volver a aplicar la configuración.
Conceder acceso de solo lectura a Config Sync
Si almacenas tus configuraciones en Git, debes conceder a Config Sync acceso de solo lectura a Git. Si almacenas tus configuraciones como imágenes de OCI, debes conceder a Config Sync acceso de solo lectura a OCI. Si almacenas tus configuraciones en Helm, debes conceder a Config Sync acceso de solo lectura a Helm.
Conceder acceso de solo lectura a Git a Config Sync
Config Sync necesita acceso de solo lectura a tu repositorio de Git para poder leer las configuraciones confirmadas en el repositorio y aplicarlas a tus clústeres.
Si no es necesario autenticarse en tu repositorio para el acceso de solo lectura, puedes seguir configurando Config Sync y usar none
como tipo de autenticación. Por ejemplo, si puedes consultar el repositorio mediante una interfaz web sin iniciar sesión o si puedes usar git
clone
para crear un clon del repositorio localmente sin proporcionar credenciales o usar credenciales guardadas, no necesitas autenticarte. En este caso, no es necesario que crees un secreto.
Sin embargo, la mayoría de los usuarios deben crear credenciales porque el acceso de lectura a su repositorio está restringido. Si se necesitan credenciales, se almacenan en el secreto git-creds
de cada clúster registrado (a menos que uses una cuenta de servicio de Google). El secreto debe llamarse git-creds
, ya que es un valor fijo.
Config Sync admite los siguientes mecanismos de autenticación:
- Par de claves SSH (
ssh
) - Cookiefile (
cookiefile
) - Token (
token
) - Cuenta de servicio de Google (
gcpserviceaccount
) - Cuenta de servicio predeterminada de Compute Engine (
gcenode
) - Aplicación GitHub (
githubapp
)
El mecanismo que elijas dependerá de lo que admita tu repositorio. Por lo general, recomendamos usar un par de claves SSH. Tanto GitHub como Bitbucket admiten el uso de un par de claves SSH. Sin embargo, si usas un repositorio en Cloud Source Repositories o Secure Source Manager, te recomendamos que utilices una cuenta de servicio de Google, ya que el proceso es más sencillo. Si tu organización aloja tu repositorio y no sabes qué métodos de autenticación se admiten, ponte en contacto con tu administrador.
Para usar un repositorio de Cloud Source Repositories como repositorio de Config Sync, sigue estos pasos para obtener la URL de Cloud Source Repositories:
Mostrar todos los repositorios:
gcloud source repos list
En el resultado, copia la URL del repositorio que quieras usar. Por ejemplo:
REPO_NAME PROJECT_ID URL my-repo my-project https://source.developers.google.com/p/my-project/r/my-repo-csr
Debes usar esta URL cuando configures Config Sync en la sección siguiente. Si configuras Config Sync mediante la consola, añade la URL en el campo URL.Google Cloud Si configuras Config Sync con la CLI de Google Cloud, debes añadir la URL al campo
syncRepo
de tu archivo de configuración.
Par de claves SSH
Un par de claves SSH consta de dos archivos: una clave pública y una clave privada. La clave pública suele tener la extensión .pub
.
Para usar un par de claves SSH, sigue estos pasos:
Crea un par de claves SSH para permitir que Config Sync se autentique en tu repositorio de Git. Este paso es necesario si necesitas autenticarte en el repositorio para clonarlo o leerlo. Sáltate este paso si un administrador de seguridad te proporciona un par de claves. Puedes usar un solo par de claves para todos los clústeres o un par de claves por clúster, en función de tus requisitos de seguridad y cumplimiento.
El siguiente comando crea una clave RSA de 4096 bits. No se recomiendan valores inferiores:
ssh-keygen -t rsa -b 4096 \ -C "GIT_REPOSITORY_USERNAME" \ -N '' \ -f /path/to/KEYPAIR_FILENAME
Haz los cambios siguientes:
GIT_REPOSITORY_USERNAME
: el nombre de usuario que quieres que use Config Sync para autenticarse en el repositorio/path/to/KEYPAIR_FILENAME
: ruta al par de claves
Si usas un host de repositorios de Git de terceros, como GitHub, o quieres usar una cuenta de servicio con Cloud Source Repositories, te recomendamos que uses una cuenta independiente.
Configura el repositorio para que reconozca la clave pública recién creada. Consulta la documentación de tu proveedor de alojamiento de Git. Para tu comodidad, se incluyen instrucciones para algunos proveedores de alojamiento de Git populares:
- Cloud Source Repositories
- Bitbucket
- GitHub Te recomendamos que crees claves de implementación independientes para proporcionar acceso de solo lectura a un único repositorio de GitHub.
- GitLab
Añade la clave privada a un nuevo secreto en el clúster:
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=ssh=/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
Sustituye
/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
por el nombre de la clave privada (la que no tiene el sufijo.pub
).(Recomendado) Para configurar la comprobación de hosts conocidos mediante la autenticación SSH, puedes añadir la clave de hosts conocidos al campo
data.known_hosts
del secretogit_creds
. Para inhabilitar la comprobación deknown_hosts
, puedes quitar el campoknown_hosts
del secreto. Para añadir la clave de hosts conocidos, ejecuta el siguiente comando:kubectl edit secret git-creds \ --namespace=config-management-system
A continuación, en
data
, añade la entrada de hosts conocidos:known_hosts: KNOWN_HOSTS_KEY
Elimina la clave privada del disco local o toma medidas para protegerla.
Cuando configures Config Sync y añadas la URL de tu repositorio de Git, utiliza el protocolo SSH. Si utilizas un repositorio en Cloud Source Repositories, debes usar el siguiente formato al introducir la URL:
ssh://EMAIL@source.developers.google.com:2022/p/PROJECT_ID/r/REPO_NAME
Haz los cambios siguientes:
EMAIL
: tu Google Cloud nombredeusuarioPROJECT_ID
: ID del proyecto Google Cloud en el que se encuentra el repositorioREPO_NAME
: el nombre del repositorio
Cookiefile
El proceso para adquirir un cookiefile
depende de la configuración de tu repositorio. Por ejemplo, consulta el artículo sobre cómo generar credenciales estáticas en la documentación de Cloud Source Repositories.
Normalmente, las credenciales se almacenan en el archivo .gitcookies
de tu directorio principal. También es posible que las ofrezca un administrador de seguridad.
Para usar un cookiefile
, sigue estos pasos:
Después de crear y obtener el
cookiefile
, añádelo a un nuevo secreto en el clúster.Si no usas un proxy HTTPS, crea el secreto con el siguiente comando:
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=cookie_file=/path/to/COOKIEFILE
Si necesitas usar un proxy HTTPS, añádelo al secreto junto con
cookiefile
ejecutando el siguiente comando:kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=cookie_file=/path/to/COOKIEFILE \ --from-literal=https_proxy=HTTPS_PROXY_URL
Haz los cambios siguientes:
/path/to/COOKIEFILE
: la ruta y el nombre de archivo adecuadosHTTPS_PROXY_URL
: la URL del proxy HTTPS que usas al comunicarte con el repositorio de Git.
Si aún necesitas el contenido de
cookiefile
de forma local, protégelo. De lo contrario, elimínalo.
Token
Si tu organización no permite usar claves SSH, puedes utilizar un token. Con Config Sync, puedes usar como token los tokens de acceso personal (PATs) de GitHub, los PATs o las claves de implementación de GitLab, o la contraseña de aplicación de Bitbucket.
Para crear un secreto a partir de un token, sigue estos pasos:
Crea un token con GitHub, GitLab o Bitbucket:
- GitHub: crea un token de acceso personal.
Concede al token el permiso
repo
para que pueda leer desde repositorios privados. Como el token de acceso personal se vincula a una cuenta de GitHub, te recomendamos que crees un usuario de máquina y vincules tu token de acceso personal a él. - GitLab crea un token de acceso personal o crea un token de implementación.
- Bitbucket: crea una contraseña de aplicación.
- GitHub: crea un token de acceso personal.
Concede al token el permiso
Después de crear y obtener el token, añádelo a un nuevo secreto en el clúster.
Si no usas un proxy HTTPS, crea el secreto con el siguiente comando:
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace="config-management-system" \ --from-literal=username=USERNAME \ --from-literal=token=TOKEN
Haz los cambios siguientes:
USERNAME
: el nombre de usuario que quieras usar.TOKEN
: el token que has creado en el paso anterior.
Si necesitas usar un proxy HTTPS, añádelo al secreto junto con
username
ytoken
ejecutando el siguiente comando:kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-literal=username=USERNAME \ --from-literal=token=TOKEN \ --from-literal=https_proxy=HTTPS_PROXY_URL
Haz los cambios siguientes:
USERNAME
: el nombre de usuario que quieras usar.TOKEN
: el token que has creado en el paso anterior.HTTPS_PROXY_URL
: la URL del proxy HTTPS que usas al comunicarte con el repositorio de Git.
Si aún necesitas el token de forma local, protégelo. De lo contrario, elimínalo.
Cuenta de servicio de Google
Si tu repositorio está en Cloud Source Repositories o en Secure Source Manager y tu clúster usa Federación de identidades de carga de trabajo de GKE para GKE o Federación de identidades de carga de trabajo de la flota para GKE, puedes concederle a Config Sync acceso a un repositorio que esté en el mismo proyecto que tu clúster gestionado mediante una cuenta de servicio de Google.
- Si aún no tienes una cuenta de servicio, crea una.
Concede los roles de gestión de identidades y accesos correctos a la cuenta de servicio para que pueda acceder al repositorio:
Cloud Source Repositories
Concede el rol Lector de Cloud Source Repositories (
roles/source.reader
) de IAM a la cuenta de servicio de Google. Para obtener más información sobre los roles y permisos de Cloud Source Repositories, consulta Conceder permisos para ver repositorios.Concede permisos en todo el proyecto si los mismos permisos se aplican a todos los repositorios del proyecto.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/source.reader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
Concede permisos específicos de repositorio cuando quieras que las cuentas de servicio tengan diferentes niveles de acceso para cada repositorio de tu proyecto.
gcloud source repos set-iam-policy REPOSITORY POLICY_FILE --project=PROJECT_ID
Secure Source Manager
Concede los roles de IAM Accesor de instancias de Secure Source Manager (
roles/securesourcemanager.instanceAccessor
) y Lector de repositorios de Secure Source Manager (roles/securesourcemanager.repoReader
) a la cuenta de servicio de Google. Para obtener más información sobre los roles y permisos de Secure Source Manager, consulta Gestión de roles de repositorio.Concede permisos en todo el proyecto si los mismos permisos se aplican a todos los repositorios del proyecto.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/securesourcemanager.instanceAccessor \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/securesourcemanager.repoReader \ --member="serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
Para conceder permisos específicos de un repositorio, puedes usar la interfaz web de Secure Source Manager del repositorio. Para obtener más información, consulta Conceder roles a nivel de repositorio a los usuarios.
Si configuras Config Sync mediante la Google Cloud consola, selecciona Federación de identidades de cargas de trabajo para GKE como Tipo de autenticación y, a continuación, añade el correo de tu cuenta de servicio.
Si configuras Config Sync con la CLI de Google Cloud, añade
gcpserviceaccount
comosecretType
y, a continuación, añade la dirección de correo de tu cuenta de servicio agcpServiceAccountEmail
.Si usas un repositorio en Secure Source Manager, debes usar el siguiente formato al configurar Config Sync y añadir la URL de tu repositorio de Git:
https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev/PROJECT_ID/REPO_NAME.git
Haz los cambios siguientes:
INSTANCE_ID
: el nombre de tu instancia de Secure Source Manager.PROJECT_ID
: el ID del proyecto Google Cloud en el que se encuentra la instancia.PROJECT_NUMBER
: el Google Cloud número de proyecto en el que se encuentra la instancia.LOCATION
: la región en la que se encuentra tu instancia.REPO_NAME
: el nombre del repositorio.
Después de configurar Config Sync, crea un enlace de política de gestión de identidades y accesos entre la cuenta de servicio de Kubernetes y la cuenta de servicio de Google. La cuenta de servicio de Kubernetes no se crea hasta que configuras Config Sync por primera vez.
Si usas clústeres registrados en una flota, solo tienes que crear el enlace de la política una vez por flota. Todos los clústeres registrados en una flota comparten el mismo grupo de Workload Identity Federation for GKE. Con el concepto de igualdad de la flota, si añades la política de gestión de identidades y accesos a tu cuenta de servicio de Kubernetes en un clúster, la cuenta de servicio de Kubernetes del mismo espacio de nombres en otros clústeres de la misma flota también obtendrá la misma política de gestión de identidades y accesos.
Este enlace permite que la cuenta de servicio de Kubernetes de Config Sync actúe como la cuenta de servicio de Google:
gcloud iam service-accounts add-iam-policy-binding \ GSA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto de la organización.FLEET_HOST_PROJECT_ID
: si usas GKE Workload Identity Federation for GKE, es lo mismo quePROJECT_ID
. Si usas la federación de identidades de carga de trabajo de flota para GKE, este es el ID del proyecto de la flota en la que está registrado tu clúster.GSA_NAME
: la cuenta de servicio de Google personalizada que quieres usar para conectarte a Artifact Registry. La cuenta de servicio debe tener el rol de gestión de identidades y accesos Lector de Artifact Registry (roles/artifactregistry.reader
).KSA_NAME
: la cuenta de servicio de Kubernetes del reconciliador.- En el caso de los repositorios raíz, si el nombre de
RootSync
esroot-sync
, usaroot-reconciler
. De lo contrario, usaroot-reconciler-ROOT_SYNC_NAME
. Si instalas Config Sync mediante la consola o la CLI de Google Cloud, Config Sync crea automáticamente un objeto RootSync llamadoroot-sync
. Google Cloud
- En el caso de los repositorios raíz, si el nombre de
REPOSITORY
: el nombre del repositorio.POLICY_FILE
: el archivo JSON o YAML con la política de gestión de identidades y accesos.
Cuenta de servicio predeterminada de Compute Engine
Si tu repositorio está en Cloud Source Repositories y tu clúster es de GKE con Workload Identity Federation for GKE inhabilitado, puedes usar gcenode
como tipo de autenticación.
Si configuras Config Sync mediante la Google Cloud consola, selecciona Repositorio de Google Cloud como Tipo de autenticación.
Si configuras Config Sync con la CLI de Google Cloud, añade gcenode
como secretType
.
Si seleccionas Repositorio de Google Cloud o gcenode
, podrás usar la cuenta de servicio predeterminada de Compute Engine. Debes conceder el rol de gestión de identidades y accesos Lector de Cloud Source Repositories (roles/source.reader
) a la cuenta de servicio predeterminada de Compute Engine. Para obtener más información sobre los roles y permisos de Cloud Source Repositories, consulta Conceder permisos para ver repositorios.
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/source.reader \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
Sustituye PROJECT_ID
por el ID del proyecto de tu organización y PROJECT_NUMBER
por el número del proyecto de tu organización.
Aplicación de GitHub
Si tu repositorio está en GitHub, puedes usar githubapp
como tipo de autenticación.
Para usar una aplicación de GitHub, sigue estos pasos:
Sigue las instrucciones de GitHub para aprovisionar una aplicación de GitHub y darle permiso para leer tu repositorio.
Añade la configuración de la aplicación de GitHub a un nuevo secreto en el clúster:
Usar el ID de cliente
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-literal=github-app-client-id=CLIENT_ID \ --from-literal=github-app-installation-id=INSTALLATION_ID \ --from-file=github-app-private-key=/path/to/GITHUB_PRIVATE_KEY \ --from-literal=github-app-base-url=BASE_URL
- Sustituye
CLIENT_ID
por el ID de cliente de la aplicación de GitHub. - Sustituye
INSTALLATION_ID
por el ID de instalación de la aplicación GitHub. - Sustituye
/path/to/GITHUB_PRIVATE_KEY
por el nombre del archivo que contiene la clave privada. - Sustituye
BASE_URL
por la URL base del endpoint de la API de GitHub. Solo es necesario cuando el repositorio no está alojado en www.github.com. De lo contrario, se puede omitir el argumento y se usaráhttps://api.github.com/
de forma predeterminada.
Usar el ID de aplicación
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-literal=github-app-application-id=APPLICATION_ID \ --from-literal=github-app-installation-id=INSTALLATION_ID \ --from-file=github-app-private-key=/path/to/GITHUB_PRIVATE_KEY \ --from-literal=github-app-base-url=BASE_URL
- Sustituye
APPLICATION_ID
por el ID de la aplicación de GitHub. - Sustituye
INSTALLATION_ID
por el ID de instalación de la aplicación GitHub. - Sustituye
/path/to/GITHUB_PRIVATE_KEY
por el nombre del archivo que contiene la clave privada. - Sustituye
BASE_URL
por la URL base del endpoint de la API de GitHub. Solo es necesario cuando el repositorio no está alojado en www.github.com. De lo contrario, se puede omitir el argumento y se usaráhttps://api.github.com/
de forma predeterminada.
- Sustituye
Elimina la clave privada del disco local o toma medidas para protegerla.
Cuando configures Config Sync y añadas la URL de tu repositorio de Git, usa el tipo de autenticación
githubapp
.
Conceder acceso de solo lectura de Config Sync a OCI
Config Sync necesita acceso de solo lectura a la imagen OCI almacenada en Artifact Registry para poder leer las configuraciones incluidas en la imagen y aplicarlas a tus clústeres.
Si no es necesario autenticarse en tu imagen para el acceso de solo lectura, puedes seguir configurando Config Sync y usar none
como tipo de autenticación. Por ejemplo, si tu imagen es pública y cualquier usuario de Internet puede acceder a ella, no es necesario que te autentiques.
Sin embargo, la mayoría de los usuarios deben crear credenciales para acceder a las imágenes restringidas. Config Sync admite los siguientes mecanismos de autenticación:
- Cuenta de servicio de Kubernetes (
k8sserviceaccount
) - Cuenta de servicio de Google (
gcpserviceaccount
) Cuenta de servicio predeterminada de Compute Engine (
gcenode
)
Cuenta de servicio de Kubernetes
Puedes usar una cuenta de servicio de Kubernetes como tipo de autenticación si almacenas tu imagen OCI en Artifact Registry y tu clúster usa Workload Identity Federation para GKE o Workload Identity Federation para GKE de una flota.
Concede el rol de gestión de identidades y accesos Lector de Artifact Registry (
roles/artifactregistry.reader
) a la cuenta de servicio de Kubernetes con el grupo de federación de Workload Identity para GKE. Para obtener más información sobre los roles y permisos de Artifact Registry, consulta Configurar roles y permisos de Artifact Registry.Concede permisos en todo el proyecto si los mismos permisos se aplican a todos los repositorios del proyecto.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
Concede permisos específicos de repositorio cuando quieras que las cuentas de servicio tengan diferentes niveles de acceso para cada repositorio de tu proyecto.
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto de la organización.FLEET_HOST_PROJECT_ID
: si usas GKE Workload Identity Federation for GKE, es lo mismo quePROJECT_ID
. Si usas la federación de identidades de carga de trabajo de flota para GKE, este es el ID del proyecto de la flota en la que está registrado tu clúster.KSA_NAME
: la cuenta de servicio de Kubernetes del reconciliador.- En el caso de los repositorios raíz, si el nombre de
RootSync
esroot-sync
, usaroot-reconciler
. De lo contrario, usaroot-reconciler-ROOT_SYNC_NAME
. Si instalas Config Sync mediante la consola o la CLI de Google Cloud, Config Sync crea automáticamente un objeto RootSync llamadoroot-sync
. Google Cloud
- En el caso de los repositorios raíz, si el nombre de
REPOSITORY
: el ID del repositorio.LOCATION
: la ubicación regional o multirregional del repositorio.
Cuenta de servicio predeterminada de Compute Engine
Si almacenas tu gráfico de Helm en Artifact Registry y tu clúster es de GKE con Workload Identity Federation for GKE inhabilitado, puedes usar gcenode
como tipo de autenticación.
Config Sync usa la cuenta de servicio predeterminada de Compute Engine.
Debes conceder acceso de lectura a Artifact Registry a tu cuenta de servicio predeterminada de Compute Engine.
Concede a la cuenta de servicio de Compute Engine permiso de lectura en Artifact Registry ejecutando el siguiente comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.reader
Sustituye
PROJECT_ID
por el ID del proyecto de tu organización yPROJECT_NUMBER
por el número del proyecto de tu organización.
Configurar Config Sync para una autoridad de certificación
En el caso de los servidores configurados con certificados de una autoridad de certificación (CA) que aún no sea de confianza, Config Sync se puede configurar para que use un certificado de CA con el fin de verificar las conexiones HTTPS al servidor. Esta opción se admite en servidores Git, Helm u OCI. El certificado de la AC
debe incluir certificados SSL completos (raíz, intermedio y hoja).
Si tu servidor ya usa una autoridad de certificación de confianza o no te conectas a través de HTTPS, puedes saltarte este paso y dejar caCertSecretRef
sin definir.
RootSync
Obtén el certificado de la AC que se usó para emitir el certificado de tu servidor Git y guárdalo en un archivo.
En el caso de los objetos
RootSync
, el secreto debe crearse en el espacio de nombresconfig-management-system
. Por ejemplo:kubectl create ns config-management-system &&
kubectl create secret generic ROOT_CA_CERT_SECRET_NAME
--namespace=config-management-system
--from-file=cert=/path/to/CA_CERT_FILECuando configures Config Sync, define el valor del campo
caCertSecretRef.name
en el objetoRootSync
como ROOT_CA_CERT_SECRET_NAME.
RepoSync
Obtén el certificado de la AC que se usó para emitir el certificado de tu servidor Git y guárdalo en un archivo.
En el caso de los objetos
RepoSync
, el secreto debe crearse en el mismo espacio de nombres que el RepoSync. Por ejemplo:kubectl create ns REPO_SYNC_NAMESPACE &&
kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME
--namespace=REPO_SYNC_NAMESPACE
--from-file=cert=/path/to/CA_CERT_FILECuando configures
RepoSync
, asigna el valor NAMESPACE_CA_CERT_SECRET_NAME al campocaCertSecretRef.name
del objetoRepoSync
.
Conceder acceso de solo lectura de Config Sync a Helm
Config Sync necesita acceso de solo lectura a tu repositorio de Helm para poder leer los gráficos de Helm de tu repositorio e instalarlos en tus clústeres.
Si no es necesario autenticarse en tu repositorio para el acceso de solo lectura, puedes configurar Config Sync y usar none
como tipo de autenticación. Por ejemplo, si tu repositorio de Helm es público y cualquier usuario de Internet puede acceder a él, no tienes que autenticarte.
Sin embargo, la mayoría de los usuarios deben crear credenciales para acceder a repositorios de Helm privados. Config Sync admite los siguientes mecanismos de autenticación:
- Token (
token
) - Cuenta de servicio de Kubernetes (
k8sserviceaccount
) - Cuenta de servicio de Google (
gcpserviceaccount
) - Cuenta de servicio predeterminada de Compute Engine (
gcenode
)
Token
Crea un secreto con el nombre de usuario y la contraseña del repositorio de Helm:
kubectl create secret generic SECRET_NAME \
--namespace=config-management-system \
--from-literal=username=USERNAME \
--from-literal=password=PASSWORD
Haz los cambios siguientes:
SECRET_NAME
: el nombre que quieras dar al secreto.USERNAME
: nombre de usuario del repositorio de Helm.PASSWORD
: contraseña del repositorio de Helm.
Cuando configures Config Sync (Configurar Config Sync),
usarás el nombre de secreto que hayas elegido para spec.helm.secretRef.name
.
Cuenta de servicio de Kubernetes
Puedes usar una cuenta de servicio de Kubernetes como tipo de autenticación si almacenas tu gráfico de Helm en Artifact Registry y tu clúster usa Workload Identity Federation para GKE o Workload Identity Federation para GKE de una flota.
Concede el rol de gestión de identidades y accesos Lector de Artifact Registry (
roles/artifactregistry.reader
) a la cuenta de servicio de Kubernetes con el grupo de federación de Workload Identity para GKE. Para obtener más información sobre los roles y permisos de Artifact Registry, consulta Configurar roles y permisos de Artifact Registry.Concede permisos en todo el proyecto si los mismos permisos se aplican a todos los repositorios del proyecto.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
Concede permisos específicos de repositorio cuando quieras que las cuentas de servicio tengan diferentes niveles de acceso para cada repositorio de tu proyecto.
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto de la organización.FLEET_HOST_PROJECT_ID
: si usas GKE Workload Identity Federation for GKE, es lo mismo quePROJECT_ID
. Si usas la federación de identidades de carga de trabajo de flota para GKE, este es el ID del proyecto de la flota en la que está registrado tu clúster.KSA_NAME
: la cuenta de servicio de Kubernetes del reconciliador.- En el caso de los repositorios raíz, si el nombre de
RootSync
esroot-sync
, usaroot-reconciler
. De lo contrario, usaroot-reconciler-ROOT_SYNC_NAME
.
- En el caso de los repositorios raíz, si el nombre de
REPOSITORY
: el ID del repositorio.LOCATION
: la ubicación regional o multirregional del repositorio.
Cuenta de servicio predeterminada de Compute Engine
Si almacenas tu gráfico de Helm en Artifact Registry y tu clúster es de GKE con Workload Identity Federation for GKE inhabilitado, puedes usar gcenode
como tipo de autenticación.
Config Sync usa la cuenta de servicio predeterminada de Compute Engine.
Debes conceder acceso de lectura a Artifact Registry a tu cuenta de servicio predeterminada de Compute Engine. Es posible que tengas que conceder el storage-ro
ámbito de acceso para conceder permiso de solo lectura
para extraer imágenes.
Concede a la cuenta de servicio de Compute Engine permiso de lectura en Artifact Registry:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.reader
Sustituye
PROJECT_ID
por el ID del proyecto de tu organización yPROJECT_NUMBER
por el número del proyecto de tu organización.
Configurar Config Sync
Para configurar la sincronización desde el repositorio raíz, debes crear un objeto RootSync que sincronice tu repositorio raíz con el clúster. Solo puedes crear un repositorio raíz por clúster, y este puede ser un repositorio no estructurado o un repositorio jerárquico.
Si usas el webhook de admisión de Config Sync (está inhabilitado de forma predeterminada) y vas a instalar Config Sync en un clúster privado, añade una regla de cortafuegos para permitir el puerto
10250
. El webhook de admisión de Config Sync usa el puerto10250
para evitar las desviaciones.Espera a que los CRDs
RootSync
yRepoSync
estén disponibles:until kubectl get customresourcedefinitions rootsyncs.configsync.gke.io reposyncs.configsync.gke.io; do date; sleep 1; echo ""; done
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ñadeunstructured
para usar un repositorio no estructurado o añadehierarchy
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 eshierarchy
. Te recomendamos que añadasunstructured
, 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 esHEAD
. 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 esmaster
. Te recomendamos que uses el camporevision
para especificar un nombre de rama por simplicidad. Si se especifican tanto el camporevision
como el campobranch
,revision
tiene prioridad sobrebranch
.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ónssh
: usar un par de claves SSHcookiefile
: usa uncookiefile
token
: usar 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 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ñadidogcpserviceaccount
como tuROOT_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 valortrue
a este campo. El valor predeterminado esfalse
.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 llamadacert
. 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 archivo de 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ñadeunstructured
para usar un repositorio no estructurado o añadehierarchy
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 eshierarchy
. Te recomendamos que añadasunstructured
, 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 etiquetalatest
, pero puedes extraer imágenes conTAG
oDIGEST
. EspecificaTAG
oDIGEST
enPACKAGE_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
- Para tirar por
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óngcenode
: 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ñadidogcpserviceaccount
como tuROOT_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 llamadacert
. 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ñadeunstructured
para usar un repositorio no estructurado o añadehierarchy
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 eshierarchy
. Te recomendamos que añadasunstructured
, 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 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 define comotrue
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 esfalse
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óntoken
: 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ñadidogcpserviceaccount
como tuROOT_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 sitoken
es elROOT_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 llamadacert
. 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.Aplica los cambios:
kubectl apply -f root-sync.yaml
Verificar el estado de sincronización del repositorio raíz
Puedes usar el comando nomos status
para inspeccionar el estado de sincronización del repositorio raíz:
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
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 implementa como un Deployment.
Sincroniza manifiestos de un repositorio de Git 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.
Una vez que hayas terminado de configurar tu repositorio raíz, puedes configurar la sincronización desde varios repositorios. Estos repositorios son útiles si quieres que un repositorio que contenga configuraciones con ámbito de espacio de nombres se sincronice con un espacio de nombres concreto en todos los clústeres.
Actualizar Config Sync
Los pasos para actualizar Config Sync dependen de la versión a la que quieras actualizar y de la versión desde la que quieras hacerlo. A partir de la versión 1.20.0, Config Sync se proporciona como una instalación independiente sin el operador ConfigManagement. Si vas a actualizar de una versión anterior a la 1.20.0 a la versión 1.20.0 o una posterior, primero debes desinstalar el operador ConfigManagement antes de actualizar.
Si vas a actualizar desde una versión no compatible, debes hacerlo paso a paso, con incrementos de no más de tres versiones secundarias a la vez. Por ejemplo, si la versión actual de Config Sync es 1.14.0, primero actualiza a la versión 1.17.0 y, después, a la versión 1.20.0.
Desinstalar el operador ConfigManagement
Si vas a actualizar de una versión anterior a la 1.20.0 a la versión 1.20.0 o una posterior, primero debes desinstalar el operador ConfigManagement antes de actualizar.
Para comprobar si Gestión de configuración está instalado en tu clúster, ejecuta el siguiente comando:
kubectl get configmanagement
Si la salida no está vacía, Config Management está instalado en el clúster.
Para desinstalar Config Management, sigue estos pasos, pero deja Config Sync instalado en el clúster. Te recomendamos que uses nomos CLI
para desinstalar el operador ConfigManagement, ya que tiene una interfaz más completa y una gestión de errores más sólida. Solo debes usar la secuencia de comandos shell si no tienes acceso a la nomos CLI
.
nomos (recomendado)
Asegúrate de que la CLI de Nomos tenga la versión más reciente.
Ejecuta el siguiente comando para actualizar el clúster en el contexto de kubectl actual:
nomos migrate --remove-configmanagement
script de shell
Copia la siguiente secuencia de comandos shell en un archivo y, a continuación, ejecútala para actualizar el clúster en el contexto de kubectl actual.
#!/bin/bash
set -euox pipefail
hnc_enabled="$(kubectl get configmanagements.configmanagement.gke.io config-management -o=jsonpath="{.spec.hierarchyController.enabled}" --ignore-not-found)"
if [[ "${hnc_enabled}" == "true" ]]; then
echo "Hierarchy Controller is enabled on the ConfigManagement object. It must be disabled before migrating."
echo "This can be done by unsetting the spec.hierarchyController field on ConfigManagement."
exit 1
fi
kubectl delete deployment -n config-management-system config-management-operator --ignore-not-found --cascade=foreground
if kubectl get configmanagement config-management &> /dev/null ; then
kubectl patch configmanagement config-management --type="merge" -p '{"metadata":{"finalizers":[]}}'
kubectl delete configmanagement config-management --cascade=orphan --ignore-not-found
fi
kubectl delete clusterrolebinding config-management-operator --ignore-not-found
kubectl delete clusterrole config-management-operator --ignore-not-found
kubectl delete serviceaccount -n config-management-system config-management-operator --ignore-not-found
kubectl delete customresourcedefinition configmanagements.configmanagement.gke.io --ignore-not-found
Instalar la nueva versión de Config Sync
Para actualizar Config Sync, sigue estos pasos en cada clúster registrado:
Descarga los comandos del manifiesto y
nomos
de Config Sync para la nueva versión.Extrae el archivo:
tar -xzvf config-sync.tar.gz
En el archivo que has extraído en el paso anterior, sigue las instrucciones del archivo
.README.md
proporcionado para editar la personalización.Para actualizar la instalación de Config Sync, aplica el manifiesto renderizado que has creado siguiendo las
README.md
instrucciones:kubectl apply -f CONFIG_SYNC_MANIFEST
Sustituye
CONFIG_SYNC_MANIFEST
por el nombre del archivo de manifiesto renderizado.Sustituye el comando
nomos
en todos los clientes por la nueva versión. Con este cambio, el comandonomos
siempre podrá obtener el estado de todos los clústeres registrados y validar sus configuraciones.
Desinstalar Config Sync
Para desinstalar Config Sync, sigue estos pasos:
Un administrador central debe eliminar el repositorio raíz:
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.
Elimina el objeto
RootSync
ejecutando el siguiente comando:kubectl delete -f root-sync.yaml
Con los manifiestos que has usado para instalar Config Sync, también puedes desinstalarlo.
kubectl delete -f CONFIG_SYNC_MANIFEST --ignore-not-found
Siguientes pasos
- Descubre cómo configurar la sincronización desde varios repositorios.