Con el Sincronizador de configuración, puedes administrar los recursos de Kubernetes con archivos de configuración almacenados en una fuente de información. El Sincronizador de configuración admite repositorios de Git, imágenes de OCI y gráficos de Helm como fuente de información. En esta página, se muestra cómo habilitar y configurar el Sincronizador de configuración para que se sincronice desde tu repositorio raíz. El Sincronizador de configuración está disponible con la edición Enterprise de Google Kubernetes Engine (GKE).
Cuando instalas el Sincronizador de configuración con la consola de Google Cloud o Google Cloud CLI, las APIs de RootSync
y RepoSync
están habilitadas de forma predeterminada. Este operador te proporciona funciones adicionales, como la sincronización de varios repositorios y la sincronización de configuraciones de Kustomize y Helm.
Antes de comenzar
Antes de instalar el Sincronizador de configuración, prepara tu entorno, asegúrate de cumplir con los requisitos del clúster y otorga los roles de usuario correctos.
Prepara el entorno local
Completa las siguientes tareas para preparar tu entorno local:
- Crea una fuente de información o asegúrate de tener acceso a ella. Aquí es donde agregas los parámetros de configuración que se sincronizan con el Sincronizador de configuración. Para obtener más información sobre cómo configurar tus archivos de configuración y tu fuente de información, consulta una de las siguientes guías:
- Instala e inicializa Google Cloud CLI, que proporciona los comandos
gcloud
ynomos
. Si usas Cloud Shell, Google Cloud CLI viene preinstalada. Si ya instalaste Google Cloud CLI, ejecutagcloud components update
para obtener la versión más reciente.
Requisitos del clúster
Para usar el Sincronizador de configuración, tu clúster debe cumplir con los siguientes requisitos:Debe ser una plataforma y versión compatibles de la edición Enterprise de Google Kubernetes Engine (GKE).
(Opcional) Si usas clústeres de GKE, asegúrate de que la Workload Identity Federation for GKE esté habilitada. Los clústeres en modo Autopilot tienen la federación de identidades para cargas de trabajo para GKE habilitada de forma predeterminada.
Tiene los permisos de escritura de métricas correctos para que el Sincronizador de configuración pueda enviar métricas a Cloud Monitoring.
Si deseas actualizar automáticamente la versión del Sincronizador de configuración, asegúrate de que tu clúster de GKE esté inscrito en un canal de versiones. El Sincronizador de configuración considera que un clúster que no usa un canal de versiones de GKE usa el canal de versiones estable.
Si deseas usar un clúster de GKE privado, configura Cloud NAT para permitir la salida desde nodos de GKE privados. Para obtener más detalles, consulta Ejemplo de configuración de GKE. Como alternativa, puedes habilitar el Acceso privado a Google para conectarte al conjunto de direcciones IP externas que usan los servicios y las API de Google.
Si deseas usar una cuenta de servicio de IAM cuando otorgas acceso a Sincronizador de configuración a tu fuente de confianza, debes incluir el permiso de solo lectura en permisos de acceso para los nodos en el clúster de Cloud Source Repositories.
Puedes agregar el permiso de solo lectura si incluyes
cloud-source-repos-ro
en la lista--scopes
especificada en el momento de la creación del clúster o si usas el permisocloud-platform
en el momento de la creación del clúster. Por ejemplo:gcloud container clusters create CLUSTER_NAME --scopes=cloud-platform
No puedes modificar los permisos de acceso luego de crear un grupo de nodos. Sin embargo, puedes crear un grupo de nodos nuevo con el permiso de acceso adecuado mientras usas el mismo clúster. El permiso
gke-default
predeterminado no incluyecloud-source-repos-ro
.Si tienes requisitos estrictos de firewall de VPC que bloquean el tráfico innecesario, debes crear reglas de firewall para permitir el siguiente tráfico en los clústeres públicos de GKE:
TCP: Permite la entrada y salida en los puertos 53 y 443.
UDP: Permite la salida en el puerto 53.
Si no incluyes estas reglas, el Sincronizador de configuración no se sincroniza correctamente, y
nomos status
informa el siguiente error:Error: KNV2004: unable to sync repo Error in the git-sync container
Puedes omitir estos pasos si usas un clúster de GKE privado.
El Sincronizador de configuración debe ejecutarse en un grupo de nodos
amd64
. Las imágenes de contenedores de componentes del backend del Sincronizador de configuración solo se compilan, distribuyen y prueban para la arquitectura de máquinasamd64
. Si se programa un componente del Sincronizador de configuración en un nodo Arm, experimenta el errorexec format
y falla.Si tienes nodos Arm en tu clúster, agrega uno o más nodos amd64 a tu clúster y, si no usas un clúster de GKE, agrega un taint a tus nodos arm64 para evitar programar Pods en tus nodos arm64 sin tolerancia específica. Los nodos de Arm de GKE ya tienen una contaminación predeterminada, por lo que no es necesario que agregues una.
Si tu clúster es de Autopilot, también debes tener en cuenta que Autopilot ajusta los requisitos de recursos del contenedor para cumplir con las siguientes reglas:
- Los límites de recursos se establecen igual a las solicitudes de recursos.
- Las CPU virtuales de pod están disponibles en incrementos de 0.25 CPU virtuales (se redondean).
- El valor mínimo es 250 millicores de CPU (mCPU).
- La proporción de memoria (en GiB) con respecto a la CPU virtual debe estar dentro del rango de 1 a 6.5 CPU virtuales.
Debido a estas reglas, para los clústeres de Autopilot, el Sincronizador de configuración realiza las siguientes acciones:
- ajusta los límites de anulación de recursos especificados por el usuario para que coincidan con las solicitudes.
- solo aplica anulaciones cuando existe una o más solicitudes de recursos superiores al resultado ajustado correspondiente que se declara en la anotación, o cuando hay una o más solicitudes de recursos inferiores a la entrada correspondiente declarada en la anotación.
Prepara tu clúster
Después de crear un clúster adecuado, completa los siguientes pasos:
Otorga las funciones de IAM necesarias al usuario que registra el clúster.
Si planeas usar Google Cloud CLI para configurar el Sincronizador de configuración o usar clústeres fuera de Google Cloud, asegúrate de que tus clústeres de GKE o clústeres fuera de Google Cloud estén registrados en una flota ahora. Si planeas usar la consola de Google Cloud, puedes registrar clústeres de GKE cuando configures el Sincronizador de configuración.
Instalar el Sincronizador de configuración
En las siguientes secciones, le otorgarás acceso al Sincronizador de configuración a una de las siguientes fuentes de información:
Después de otorgar acceso, puedes configurar el Sincronizador de configuración.
Otorga acceso a Git
El Sincronizador de configuración necesita acceso de solo lectura a tu repositorio de Git para que pueda leer las configuraciones confirmadas en el repositorio y aplicarlas a tus clústeres.
Si el repositorio no requiere autenticación para el acceso de solo lectura, puedes continuar con la configuración del Sincronizador de configuración y usar none
como el tipo de autenticación. Por ejemplo, si puedes explorar el repositorio mediante una interfaz web sin acceder a tu cuenta, o si puedes usar git
clone
para crear una clonación del repositorio de forma local sin proporcionar credenciales o usar credenciales guardadas, no es necesario que realices la autenticación. En este caso, no necesitas crear un Secret.
Sin embargo, la mayoría de los usuarios deben crear credenciales porque el acceso de lectura a su repositorio está restringido. Si se requieren credenciales, se almacenan en el Secret git-creds
en cada clúster inscrito (a menos que uses una cuenta de servicio de Google). El Secret debe llamarse git-creds
, ya que este es un valor fijo.
El Sincronizador de configuración admite los siguientes mecanismos de autenticación:
- Par de claves SSH (
ssh
) - Archivo cookie (
cookiefile
) - Token (
token
) - Cuenta de servicio de Google (
gcpserviceaccount
) - Cuenta de servicio predeterminada de Compute Engine (
gcenode
)
El mecanismo que elijas dependerá de lo que admita tu repositorio. Por lo general, recomendamos usar un par de claves SSH. GitHub y Bitbucket son compatibles con un par de claves SSH. Sin embargo, si usas un repositorio en Cloud Source Repositories, te recomendamos que uses una cuenta de servicio de Google, ya que el proceso es más simple. Si tu organización aloja tu repositorio y no sabes qué métodos de autenticación se admiten, comunícate con tu administrador.
Para usar un repositorio en Cloud Source Repositories como el repositorio del Sincronizador de configuración, completa los siguientes pasos para recuperar la URL de Cloud Source Repositories:
Enumera todos los repositorios:
gcloud source repos list
Copia la URL del repositorio que deseas usar desde el resultado: 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 el Sincronizador de configuración en la siguiente sección. Si configuras el Sincronizador de configuración con la consola de Google Cloud, debes agregar la URL en el campo URL. Si configuras el Sincronizador de configuración con Google Cloud CLI, debes agregar la URL al campo
syncRepo
del 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. Por lo general, la clave pública tiene una extensión .pub
.
Para usar un par de claves SSH, completa los siguientes pasos:
Crea un par de claves SSH para permitir que el Sincronizador de configuración se autentique en tu repositorio de Git. Este paso es necesario si necesitas autenticarte en el repositorio para clonarlo o leer de él. Omite 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, según tus requisitos de seguridad y cumplimiento.
El siguiente comando crea una clave RSA de 4096 bits. No se recomiendan valores más bajos:
ssh-keygen -t rsa -b 4096 \ -C "GIT_REPOSITORY_USERNAME" \ -N '' \ -f /path/to/KEYPAIR_FILENAME
Reemplaza lo siguiente:
GIT_REPOSITORY_USERNAME
: El nombre de usuario que deseas que el Sincronizador de configuración use para autenticarse en el repositorio./path/to/KEYPAIR_FILENAME
: Una ruta de acceso al par de claves.
Si usas un host del repositorio de Git de terceros, como GitHub, o deseas usar una cuenta de servicio con Cloud Source Repositories, te recomendamos que uses una cuenta distinta.
Configura el repositorio para que reconozca la clave pública que acabas de crear. Consulta la documentación de tu proveedor de hosting de Git. Se incluyen instrucciones para algunos proveedores de hosting de Git populares para mayor comodidad:
- Cloud Source Repositories
- Bitbucket
- GitHub Recomendamos que crees claves de implementación por separado para proporcionar acceso de solo lectura a un único repositorio de GitHub.
- GitLab
Agrega la clave privada a un Secret nuevo del 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
Reemplaza
/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
por el nombre de la clave privada (la que no tiene el sufijo.pub
).(Recomendado) Para configurar la verificación de hosts conocidos con la autenticación de SSH, puedes agregar la clave de hosts conocidos al campo
data.known_hosts
en el secretogit_creds
. Para inhabilitar la verificación deknown_hosts
, puedes quitar el campoknown_hosts
del secreto. Para agregar la clave de hosts conocidos, ejecuta lo siguiente:kubectl edit secret git-creds \ --namespace=config-management-system
Luego, en
data
, agrega la entrada de hosts conocidos:known_hosts: KNOWN_HOSTS_KEY
Borra la clave privada del disco local o protégela.
Cuando configures el Sincronizador de configuración y agregues la URL de tu repositorio de Git, usa el protocolo SSH. Si usas un repositorio en Cloud Source Repositories, debes usar el siguiente formato cuando ingreses tu URL:
ssh://EMAIL@source.developers.google.com:2022/p/PROJECT_ID/r/REPO_NAME
Reemplaza lo siguiente:
EMAIL
: Tu nombre de usuario de Google CloudPROJECT_ID
: El ID del proyecto de Google Cloud en el que se encuentra el repositorioREPO_NAME
: Es el nombre del repositorio
Archivo cookie
El proceso de adquisición de un cookiefile
depende de la configuración del repositorio. Para ver un ejemplo, consulta la sección sobre cómo generar credenciales estáticas en la documentación de Cloud Source Repositories.
Por lo general, las credenciales se almacenan en el archivo .gitcookies
en el directorio de tu página principal, o las puede proporcionar un administrador de seguridad.
Para usar un cookiefile
, completa los siguientes pasos:
Después de crear y obtener el
cookiefile
, agrégalo a un Secret nuevo en el clúster.Si no usas el proxy HTTPS, crea el Secret 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, agrégalo al Secret junto con
cookiefile
mediante la ejecución del 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
Reemplaza lo siguiente:
/path/to/COOKIEFILE
: La ruta de acceso y el nombre de archivo adecuadosHTTPS_PROXY_URL
: La URL del proxy HTTPS que usas cuando te comunicas con el repositorio de Git
Protege el contenido de
cookiefile
, si aún lo necesitas usar de forma local. De lo contrario, bórralo.
Token
Si tu organización no permite el uso de claves SSH, se recomienda usar un token. Con el Sincronizador de configuración, puedes usar tokens de acceso personales (PAT) de GitHub, PAT o claves de implementación de GiLab, o la contraseña de la aplicación de Bitbucket como token.
Para crear un Secret con tu token, completa estos pasos:
Crea un token mediante GitHub, GitLab, o Bitbucket.
- GitHub: Crea un PAT. Otorga el permiso
repo
al token para que pueda leer de repositorios privados. Debido a que vinculas un PAT a una cuenta de GitHub, también te recomendamos crear un usuario de máquina y vincular tu PAT a este usuario. - GitLab: Crea un PAT o un token de implementación.
- Bitbucket: Crea una contraseña de la aplicación.
- GitHub: Crea un PAT. Otorga el permiso
Después de crear y obtener el token, agrégalo a un Secreto nuevo en el clúster.
Si no usas el proxy HTTPS, crea el Secret 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
Reemplaza lo siguiente:
USERNAME
: El nombre de usuario que deseas usarTOKEN
: El token que creaste en el paso anterior
Si necesitas usar un proxy HTTPS, agrégalo al Secret junto con
username
ytoken
mediante la ejecución del 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
Reemplaza lo siguiente:
USERNAME
: El nombre de usuario que deseas usarTOKEN
: El token que creaste en el paso anteriorHTTPS_PROXY_URL
: La URL del proxy HTTPS que usas cuando te comunicas con el repositorio de Git
Protege el token si lo necesitas de forma local. De lo contrario, bórralo.
Cuenta de servicio de Google
Si tu repositorio se encuentra en un repositorio de Cloud Source Repositories y tu clúster usa Workload Identity Federation for GKE o Workload Identity Federation for GKE de la flota, puedes otorgar al Sincronizador de configuración acceso a un repositorio en el mismo proyecto que tu clúster administrado con una cuenta de servicio de Google.
Si no tienes una cuenta de servicio, crea una cuenta de servicio.
Otorga el rol de IAM de lector de Cloud Source Repositories (
roles/source.reader
) a la cuenta de servicio de Google. Para obtener más información sobre los roles y permisos de Cloud Source Repositories, consulta Otorga permisos para ver repositorios.Otorga 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"
Otorga permisos específicos del repositorio cuando desees 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
Si configuras el Sincronizador de configuración con la consola de Google Cloud, selecciona Workload Identity Federation for GKE como el Tipo de autenticación y, luego, agrega el correo electrónico de la cuenta de servicio.
Si configuras el Sincronizador de configuración con Google Cloud CLI, agrega
gcpserviceaccount
comosecretType
y, luego, agrega el correo electrónico de tu cuenta de servicio agcpServiceAccountEmail
.Después Configura el Sincronizador de configuración, crea unVinculación de políticas de IAM entre la cuenta de servicio de Kubernetes y la cuenta de servicio de Google. La cuenta de servicio de Kubernetes no se creará hasta que configures el Sincronizador de configuración por primera vez.
Si usas clústeres que están registrados en una flota, solo tienes que crear la vinculación de 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 similitud de la flota, si agregas la política de IAM 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 en la misma flota también obtiene la misma política de IAM.
Esta vinculación permite que la cuenta de servicio del Sincronizador de configuración de Kubernetes funcione 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
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de la organización.FLEET_HOST_PROJECT_ID
: Si usas Workload Identity Federation for GKE de GKE, esto es lo mismo quePROJECT_ID
. Si usas Workload Identity Federation for GKE de la 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 personalizada de Google que deseas usar para conectarte a Artifact Registry. La cuenta de servicio debe tener el rol de IAM de lector de Artifact Registry (roles/artifactregistry.reader
).KSA_NAME
: Es la cuenta de servicio de Kubernetes para el conciliador.- Para los repositorios raíz, si el nombre
RootSync
esroot-sync
, usaroot-reconciler
. De lo contrario, usaroot-reconciler-ROOT_SYNC_NAME
. Si instalas el Sincronizador de configuración con la consola de Google Cloud o Google Cloud CLI, el Sincronizador de configuración crea de forma automática un objeto RootSync llamadoroot-sync
.
- Para los repositorios raíz, si el nombre
REPOSITORY
: es el nombre del repositorio,POLICY_FILE
es el archivo JSON o YAML con la política de Identity Access Management.
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 inhabilitada, puedes usar gcenode
como tu tipo de autenticación.
Si configuras el Sincronizador de configuración con la consola de Google Cloud, selecciona Google Cloud Repository como el Tipo de autenticación.
Si configuras el Sincronizador de configuración con Google Cloud CLI, agrega gcenode
como secretType
.
Si seleccionas Google Cloud Repository o gcenode
, puedes usar la cuenta de servicio predeterminada de Compute Engine. Debes otorgar el rol de IAM de 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 Otorga permisos para ver repositorios.
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/source.reader \
--member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
Reemplaza PROJECT_ID
por el ID del proyecto de tu organización y PROJECT_NUMBER
por el número de proyecto de tu organización.
Otorga acceso de solo lectura al Sincronizador de configuración a OCI
El Sincronizador de configuración necesita acceso de solo lectura a tu imagen de OCI almacenada en Artifact Registry para que pueda leer las configuraciones incluidas en la imagen y aplicarlas a tus clústeres.
Si la imagen no requiere autenticación para el acceso de solo lectura, puedes continuar con la configuración del Sincronizador de configuración y usar none
como el tipo de autenticación. Por ejemplo, si tu imagen es pública y cualquier persona puede acceder a ella desde Internet, no necesitas autenticarte.
Sin embargo, la mayoría de los usuarios deben crear credenciales para acceder a imágenes restringidas. El Sincronizador de configuración admite los siguientes mecanismos de autenticación:
k8sserviceaccount
Cuenta de servicio de Kubernetes- Cuenta de servicio de Google (
gcpserviceaccount
) Cuenta de servicio predeterminada de Compute Engine (
gcenode
)
Cuenta de servicio de Kubernetes
Si almacenas tu imagen de OCI en Artifact Registry y tu clúster usa Workload Identity Federation for GKE de GKE
o Workload Identity Federation for GKE de la flota, puedes usar k8sserviceaccount
como tu tipo de autenticación en la versión 1.17.2 y versiones posteriores. Se recomienda esta opción en lugar de gcpserviceaccount
debido a su proceso de configuración simplificado.
Otorga el rol de IAM de lector de Artifact Registry (
roles/artifactregistry.reader
) a la cuenta de servicio de Kubernetes con el grupo de Workload Identity Federation for GKE. Para obtener más información sobre los roles y permisos de Artifact Registry, consulta Configura roles y permisos para Artifact Registry.Otorga 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]"
Otorga permisos específicos del repositorio cuando desees 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
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de la organización.FLEET_HOST_PROJECT_ID
: Si usas Workload Identity Federation for GKE de GKE, esto es lo mismo quePROJECT_ID
. Si usas Workload Identity Federation for GKE de la flota para GKE, este es el ID del proyecto de la flota en la que está registrado tu clúster.KSA_NAME
: Es la cuenta de servicio de Kubernetes para el conciliador.- Para los repositorios raíz, si el nombre
RootSync
esroot-sync
, usaroot-reconciler
. De lo contrario, usaroot-reconciler-ROOT_SYNC_NAME
. Si instalas el Sincronizador de configuración con la consola de Google Cloud o Google Cloud CLI, el Sincronizador de configuración crea de forma automática un objeto RootSync llamadoroot-sync
.
- Para los repositorios raíz, si el nombre
REPOSITORY
: el ID del repositorio.LOCATION
: la ubicación regional o multirregional del repositorio.
Cuenta de servicio de Google
Si almacenas tu imagen de OCI en Artifact Registry y tu clúster usa Workload Identity Federation for GKE o Workload Identity Federation for GKE de la flota, puedes usar gcpserviceaccount
como tu tipo de autenticación. A partir de la versión 1.17.2, se recomienda usar k8sserviceaccount
. Esta opción elimina los pasos adicionales para crear una cuenta de servicio de Google y la vinculación de políticas de IAM asociada.
Si no tienes una cuenta de servicio, crea una cuenta de servicio.
Otorga el rol de IAM de lector de Artifact Registry (
roles/artifactregistry.reader
) a la cuenta de servicio de Google. Para obtener más información sobre los roles y permisos de Artifact Registry, consulta Configura roles y permisos para Artifact Registry.Otorga 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:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
Otorga permisos específicos del repositorio cuando desees 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:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --project=PROJECT_ID
Para crear una vinculación de políticas de IAM entra la cuenta de servicio de Kubernetes y la cuenta de servicio de Google, ejecutando el siguiente comando:
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
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de la organización.FLEET_HOST_PROJECT_ID
: Si usas Workload Identity Federation for GKE de GKE, esto es lo mismo quePROJECT_ID
. Si usas Workload Identity Federation for GKE de la 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 personalizada de Google que deseas usar para conectarte a Artifact Registry. La cuenta de servicio debe tener el rol de IAM de lector de Artifact Registry (roles/artifactregistry.reader
).KSA_NAME
: Es la cuenta de servicio de Kubernetes para el conciliador.- Para los repositorios raíz, si el nombre
RootSync
esroot-sync
, usaroot-reconciler
. De lo contrario, usaroot-reconciler-ROOT_SYNC_NAME
. Si instalas el Sincronizador de configuración con la consola de Google Cloud o Google Cloud CLI, el Sincronizador de configuración crea de forma automática un objeto RootSync llamadoroot-sync
.
- Para los repositorios raíz, si el nombre
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 inhabilitada, puedes usar gcenode
como tu tipo de autenticación.
El Sincronizador de configuración usa la cuenta de servicio predeterminada de Compute Engine.
Debes otorgar a la cuenta de servicio predeterminada de Compute Engine acceso de lectura a Artifact Registry.
Ejecuta el siguiente comando para otorgar permiso de lectura a la cuenta de servicio de Compute Engine para Artifact Registry:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.reader
Reemplaza
PROJECT_ID
por el ID del proyecto de tu organización yPROJECT_NUMBER
por el número de proyecto de tu organización.
Otorga acceso de solo lectura al Sincronizador de configuración a Helm
El Sincronizador de configuración necesita acceso de solo lectura a tu repositorio de Helm para que pueda leer los gráficos de Helm en tu repositorio y, luego, instalarlos en tus clústeres.
Si el repositorio no requiere autenticación para el acceso de solo lectura, puedes continuar con la configuración del Sincronizador de configuración y usar none
como el tipo de autenticación. Por ejemplo, si tu repositorio de Helm es público y cualquier persona puede acceder a él desde Internet, no necesitas autenticarte.
Sin embargo, la mayoría de los usuarios deben crear credenciales para acceder a los repositorios privados de Helm. El Sincronizador de configuración admite los siguientes mecanismos de autenticación:
- Token (
token
) k8sserviceaccount
Cuenta de servicio de Kubernetes- Cuenta de servicio de Google (
gcpserviceaccount
) - Cuenta de servicio predeterminada de Compute Engine (
gcenode
)
Token
Crea un Secret con un nombre de usuario y una contraseña del repositorio de Helm:
kubectl create secret generic SECRET_NAME \
--namespace=config-management-system \
--from-literal=username=USERNAME \
--from-literal=password=PASSWORD
Reemplaza lo siguiente:
SECRET_NAME
: el nombre que deseas darle a tu Secret.USERNAME
: Es el nombre de usuario del repositorio de Helm.PASSWORD
: La contraseña del repositorio de Helm
Cuando configures el operador de ConfigManagement, usarás el nombre de Secret que elegiste para spec.helm.secretRef.name
.
Cuenta de servicio de Kubernetes
Si almacenas tu gráfico de Helm en Artifact Registry y tu clúster usa GKE Workload Identity Federation for GKE o Workload Identity Federation for GKE para la flota de GKE, puedes usar k8sserviceaccount
como tu tipo de autenticación en la versión 1.17.2 y versiones posteriores. Se recomienda esta opción en lugar de gcpserviceaccount
debido a su proceso de configuración simplificado.
Otorga el rol de IAM de lector de Artifact Registry (
roles/artifactregistry.reader
) a la cuenta de servicio de Kubernetes con el grupo de Workload Identity Federation for GKE. Para obtener más información sobre los roles y permisos de Artifact Registry, consulta Configura roles y permisos para Artifact Registry.Otorga 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]"
Otorga permisos específicos del repositorio cuando desees 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
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de la organización.FLEET_HOST_PROJECT_ID
: Si usas Workload Identity Federation for GKE de GKE, esto es lo mismo quePROJECT_ID
. Si usas Workload Identity Federation for GKE de la flota para GKE, este es el ID del proyecto de la flota en la que está registrado tu clúster.KSA_NAME
: Es la cuenta de servicio de Kubernetes para el conciliador.- Para los repositorios raíz, si el nombre
RootSync
esroot-sync
, usaroot-reconciler
. De lo contrario, usaroot-reconciler-ROOT_SYNC_NAME
.
- Para los repositorios raíz, si el nombre
REPOSITORY
: el ID del repositorio.LOCATION
: la ubicación regional o multirregional del repositorio.
Cuenta de servicio de Google
Si almacenas tu gráfico de Helm en Artifact Registry y tu clúster usa GKE Workload Identity Federation for GKE o GKE Workload Identity Federation for GKE para la flota de GKE, puedes usar gcpserviceaccount
como tu tipo de autenticación. A partir de la versión 1.17.2, se recomienda usar k8sserviceaccount
. Esta opción elimina los pasos adicionales para crear una cuenta de servicio de Google y la vinculación de políticas de IAM asociada.
Si no tienes una cuenta de servicio, crea una cuenta de servicio.
Otorga el rol de IAM de lector de Artifact Registry (
roles/artifactregistry.reader
) a la cuenta de servicio de Google. Para obtener más información sobre los roles y permisos de Artifact Registry, consulta Configura roles y permisos para Artifact Registry.Otorga 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:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com"
Otorga permisos específicos del repositorio cuando desees 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:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --project=PROJECT_ID
Para crear una vinculación de políticas de IAM entra la cuenta de servicio de Kubernetes y la cuenta de servicio de Google, ejecutando el siguiente comando:
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
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de la organización.FLEET_HOST_PROJECT_ID
: Si usas Workload Identity Federation for GKE de GKE, esto es lo mismo quePROJECT_ID
. Si usas Workload Identity Federation for GKE de la 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 personalizada de Google que deseas usar para conectarte a Artifact Registry. La cuenta de servicio debe tener el rol de IAM de lector de Artifact Registry (roles/artifactregistry.reader
).KSA_NAME
: Es la cuenta de servicio de Kubernetes para el conciliador.- Para los repositorios raíz, si el nombre
RootSync
esroot-sync
, usaroot-reconciler
. De lo contrario, usaroot-reconciler-ROOT_SYNC_NAME
.
- Para los repositorios raíz, si el nombre
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 inhabilitada, puedes usar gcenode
como tu tipo de autenticación.
El Sincronizador de configuración usa la cuenta de servicio predeterminada de Compute Engine.
Debes otorgar a la cuenta de servicio predeterminada de Compute Engine acceso de lectura a Artifact Registry. Es posible que debas otorgar el permiso de acceso storage-ro
para otorgar permiso de solo lectura para extraer imágenes.
Otorga permiso de lectura a la cuenta de servicio de Compute Engine para Artifact Registry:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.reader
Reemplaza
PROJECT_ID
por el ID del proyecto de tu organización yPROJECT_NUMBER
por el número de proyecto de tu organización.
Configura Sincronizador de configuración
En esta sección, definirás la configuración de tu repositorio raíz. Si realizas la sincronización con un repositorio de Git, puedes usar la consola de Google Cloud para que te guíe a través del proceso de instalación y automatizar algunos pasos.
Cuando instalas el Sincronizador de configuración con la consola de Google Cloud o Google Cloud CLI, el Sincronizador de configuración crea de forma automática un objeto RootSync llamado root-sync
. Puedes usar los comandos kubectl
para modificar root-sync
y agregar configuraciones adicionales del Sincronizador de configuración. Para obtener más información, consulta Configura el Sincronizador de configuración con los comandos kubectl
.
Console
Instalar el Sincronizador de configuración
Para instalar el Sincronizador de configuración, todos los clústeres deben estar registrados en una flota. Cuando instalas el Sincronizador de configuración en la consola de Google Cloud, la selección de clústeres individuales los registra automáticamente en tu flota.
- En la consola de Google Cloud, ve a la página Configuración en la sección Funciones.
- Haz clic en add Instalar el Sincronizador de configuración.
- Selecciona Actualizaciones automáticas (Versión preliminar) para permitir que el Sincronizador de configuración actualice las versiones automáticamente o selecciona Actualizaciones manuales para administrar la versión del Sincronizador de configuración por tu cuenta. Para obtener más información sobre cómo funcionan las actualizaciones automáticas, consulta Actualiza el Sincronizador de configuración.
- En Opciones de instalación, selecciona una de las siguientes opciones:
- Instalar el Sincronizador de configuración en toda la flota (recomendado): El Sincronizador de configuración se instalará en todos los clústeres de la flota.
- Instalar el Sincronizador de configuración en clústeres individuales: Todos los clústeres seleccionados se registrarán automáticamente en una flota. El Sincronizador de configuración se instalará en todos los clústeres de la flota.
- Si instalas el Sincronizador de configuración en clústeres individuales, en la tabla Clústeres disponibles, selecciona los clústeres en los que deseas instalar el Sincronizador de configuración.
- Haz clic en Instalar el Sincronizador de configuración. En la pestaña Configuración, después de unos minutos, deberías ver Habilitado en la columna Estado para los clústeres de tu flota.
Implementa un paquete
Después de registrar tus clústeres en una flota y de instalar el Sincronizador de configuración, puedes configurarlo para implementar un paquete en un clúster desde una fuente de información. Puedes implementar el mismo paquete en varios clústeres o implementar paquetes diferentes en clústeres distintos. Puedes editar un paquete después de implementarlo, excepto algunos parámetros de configuración, como el nombre del paquete y el tipo de sincronización. Para obtener más información, consulta Administra paquetes.
Para implementar un paquete, completa los siguientes pasos:
En la consola de Google Cloud, ve al panel de sincronización de configuración.
Haz clic en Implementar paquete.
En la tabla Selecciona clústeres para la implementación de paquetes, selecciona el clúster en el que deseas implementar un paquete y, luego, haz clic en Continuar.
Selecciona Paquete alojado en Git o Paquete alojado en OCI como tipo de fuente y, luego, haz clic en Continuar.
En la sección Detalles del paquete, ingresa un Nombre del paquete, que identifica el objeto RootSync o RepoSync.
En el campo Tipo de sincronización, elige Sincronización centrada en el clúster o Sincronización centrada en el espacio de nombres como el tipo de sincronización.
La sincronización centrada en el clúster crea un objeto RootSync, y la sincronización centrada en el espacio de nombres crea un objeto RepoSync. Para obtener más información sobre estos objetos, consulta Arquitectura de Sincronizador de configuración.
En la sección Fuente, completa lo siguiente:
Para las fuentes alojadas en un repositorio de Git, ingresa los siguientes campos:
- Ingresa la URL del repositorio de Git que usas como fuente de información en URL del repositorio.
- Opcional: Actualiza el campo Revisión para comprobar si no estás usando el
HEAD
predeterminado. - Opcional: Actualiza el campo Ruta si no deseas sincronizar desde el repositorio raíz.
- Opcional: Actualiza el campo Branch si no usas la rama
main
predeterminada.
Para las fuentes alojadas en una imagen de OCI, ingresa los siguientes campos:
- Ingresa la URL de la imagen de OCI que usas como fuente de confianza como Imagen.
- Ingresa la ruta del directorio desde el que deseas sincronizar en relación con el directorio raíz como Directorio.
(Opcional) Expande la sección Configuración avanzada para completar lo siguiente:
Selecciona un Tipo de autenticación. El Sincronizador de configuración necesita acceso de solo lectura a tu fuente de información para leer los archivos de configuración en la fuente y aplicarlos a tus clústeres. A menos que tu fuente no requiera autenticación, como un repositorio público, asegúrate de otorgarle al Sincronizador de configuración acceso de solo lectura a tu repositorio de Git, imagen de OCI o gráfico de Helm (solo gcloud CLI). Elige el mismo tipo de autenticación que configuraste cuando instalaste el Sincronizador de configuración:
- Ninguna: No usa autenticación.
- SSH: Autentica mediante un par de claves SSH.
- Cookiefile: Realiza la autenticación con un
cookiefile
. - Token: Autentica con un token de acceso o una contraseña.
- Google Cloud Repository: Usa una cuenta de servicio de Google para acceder a un Cloud Source Repositories. Selecciona esta opción solo si la Workload Identity Federation for GKE no está habilitada en tu clúster.
- Workload Identity: Usa una cuenta de servicio de Google para acceder a un repositorio de Cloud Source Repositories.
Ingresa un número en segundos para establecer el tiempo de espera de sincronización, que determina cuánto tiempo espera el Sincronizador de configuración entre los intentos de extraer datos de la fuente de información.
Ingresa una URL de proxy de Git para el proxy HTTPS que se usará durante la comunicación con la fuente de información.
Elige Jerarquía para cambiar el Formato de origen.
En la mayoría de los casos, se recomienda el valor predeterminado No estructurado, ya que te permite organizar tu fuente de información como quieras.
Haz clic en Implementar paquete.
Se te redireccionará a la página Paquetes del Sincronizador de configuración. Después de unos minutos, deberías ver Sincronizado en la columna Estado de sincronización del clúster que configuraste.
gcloud
Antes de continuar, asegúrate de registrar tus clústeres en una flota.
Habilita la función de flota
ConfigManagement
:gcloud beta container fleet config-management enable
Para preparar la configuración, crea un nuevo manifiesto
apply-spec.yaml
o usa un manifiesto existente. El uso de un manifiesto existente te permite configurar tu clúster con la misma configuración que usa otro clúster.Crear manifiesto nuevo
Para configurar el Sincronizador de configuración con una configuración nueva para tu clúster, crea un archivo llamado
apply-spec.yaml
y copia el siguiente archivo YAML en él.Puedes configurar todos los campos
spec.configSync
opcionales que necesites cuando crees tu manifiesto y, luego, usar comandoskubectl
para la configuración. También puedes configurar el campospec.configSync.enabled
comotrue
y omitir los campos opcionales. Luego, puedes usar los comandoskubectl
para crear objetos RootSync adicionales o RepoSyncs que puedes administrar por completo con los comandoskubectl
más adelante.# apply-spec.yaml applySpecVersion: 1 spec: # upgrades: UPGRADE_SETTING configSync: # Set to true to install and enable Config Sync enabled: true # If you don't have a source of truth yet, omit the # following fields. You can configure them later. sourceType: SOURCE_TYPE sourceFormat: FORMAT syncRepo: REPO syncRev: REVISION syncBranch: BRANCH secretType: SECRET_TYPE gcpServiceAccountEmail: EMAIL metricsGcpServiceAccountEmail: METRICS_EMAIL policyDir: DIRECTORY preventDrift: PREVENT_DRIFT
Reemplaza lo siguiente:
(Versión preliminar)
UPGRADE_SETTING
: Quita el comentario del campo y configúralo comoauto
para que el Sincronizador de configuración se actualice automáticamente. Establece enmanual
para actualizar el Sincronizador de configuración de forma manual. El valor predeterminado esmanual
. Esta marca solo es compatible con GKE en clústeres de Google Cloud. Para usar este campo, es posible que debas actualizar gcloud CLI ejecutandogcloud components update
.SOURCE_TYPE
: Agregagit
para sincronizar desde un repositorio de Git,oci
para sincronizar desde una imagen de OCI ohelm
para sincronizar desde un gráfico de Helm. Si no se especifica ningún valor, el valor predeterminado esgit
.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.REPO
: Agrega la URL de la fuente de información. Las URLs de los repositorios de Git y Helm usan el protocolo HTTPS o SSH. Por ejemplo,https://github.com/GoogleCloudPlatform/anthos-config-management-samples
. Si planeas usar SSH como tusecretType
, ingresa la URL con el protocolo SSH. Este campo es obligatorio y, si no ingresas un protocolo, la URL se trata como una URL HTTPS.Las URLs de OCI usan el siguiente formato:
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
REVISION
: Es la revisión de Git (etiqueta o hash) desde la que se realiza la sincronización. 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 un nombre de rama en el camposyncRev
. Cuando uses un hash en la versión 1.17.0 o posterior, este debe ser un hash completo y no una forma abreviada.BRANCH
: La rama del repositorio desde la que se realiza la sincronización. 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 camposyncRev
para especificar un nombre de rama para simplificar el proceso. Si se especifican los campossyncRev
ysyncBranch
,syncRev
tiene prioridad sobresyncBranch
.SECRET_TYPE
: Uno de los siguientessecretTypes
:git
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. Si seleccionas este tipo de autenticación, debes crear una vinculación de política de IAM después de que termines de configurar el Sincronizador de configuración. Para obtener más detalles, consulta la pestaña Cuenta de servicio de Google de la sección Otorga acceso de solo lectura al Sincronizador de configuración a Git.gcenode
: Usa una cuenta de servicio de Google para acceder a Cloud Source Repositories. Selecciona esta opción solo si la Workload Identity Federation for GKE no está habilitada en tu clúster.
Para obtener más información sobre estos tipos de autenticación, consulta Otorga a Git acceso de solo lectura al Sincronizador de configuración.
oci
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 la Workload Identity Federation for GKE no está habilitada en tu clúster.gcpserviceaccount
: Usa una cuenta de servicio de Google para acceder a una imagen.
helm
token
: Usa un tokengcenode
: Usa la cuenta de servicio predeterminada de Compute Engine para acceder a una imagen en Artifact Registry. Selecciona esta opción solo si la Workload Identity Federation for GKE no está habilitada en tu clúster.gcpserviceaccount
: Usa una cuenta de servicio de Google para acceder a una imagen.
EMAIL
: Si agregastegcpserviceaccount
comosecretType
, agrega la dirección de correo electrónico de la cuenta de servicio de Google. Por ejemplo,acm@PROJECT_ID.iam.gserviceaccount.com
METRICS_EMAIL
: Es el correo electrónico de la cuenta de servicio de Google Cloud (GSA) que se usa para exportar las métricas del Sincronizador de configuración a Cloud Monitoring. La GSA debe tener el rol de IAM de escritor de métricas de Monitoring (roles/monitoring.metricWriter
). La ServiceAccount de Kubernetesdefault
en el espacio de nombresconfig-management-monitoring
debe estar vinculada a la GSA.DIRECTORY
: ruta del directorio desde el que se realiza la sincronización en relación con la raíz del repositorio de Git. Se incluyen todos los subdirectorios del directorio que especificas y se sincronizan con el clúster. El valor predeterminado es el directorio raíz del repositorio.PREVENT_DRIFT
: Si se configura comotrue
, habilita el webhook de admisión del Sincronizador de configuración para evitar los desvíos mediante el rechazo de cambios conflictivos que se envían a clústeres activos. La configuración predeterminada esfalse
. El Sincronizador de configuración siempre soluciona los desvíos, sin importar el valor de este campo.
Para obtener una lista completa de los campos que puedes agregar al campo
spec
, consulta Campos de gcloud.Usar el manifiesto existente
Para configurar tu clúster con la misma configuración que usa otro clúster, recupera la configuración de un clúster registrado:
gcloud alpha container fleet config-management fetch-for-apply \ --membership=MEMBERSHIP_NAME \ --project=PROJECT_ID \ > CONFIG_YAML_PATH
Reemplaza lo siguiente:
MEMBERSHIP_NAME
: El nombre de la membresía del clúster registrado que tiene la configuración del Sincronizador de configuración que deseas usarPROJECT_ID
: El ID de tu proyectoCONFIG_YAML_PATH
: Es la ruta de acceso al archivoapply-spec.yaml
que contiene la configuración recuperada del clúster.
Aplica el archivo
apply-spec.yaml
. Si usas un manifiesto existente, debes aplicar el archivo al clúster que deseas establecer con la configuración que recuperaste en el comando anterior:gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=CONFIG_YAML_PATH \ --project=PROJECT_ID
Reemplaza lo siguiente:
MEMBERSHIP_NAME
: El nombre de la membresía de la flota que elegiste cuando registraste tu clúster, puedes encontrar el nombre congcloud container fleet memberships list
.CONFIG_YAML_PATH
: La ruta de acceso a tu archivoapply-spec.yaml
.PROJECT_ID
: el ID de tu proyecto
Terraform
Para cada clúster en el que deseas configurar el Sincronizador de configuración, aplica un bloque de recursos google_gkehub_feature_membership
que contenga un bloque configmanagement
y config_sync
:
git
resource "google_container_cluster" "cluster" {
name = "EXISTING_CLUSTER_NAME"
location = "EXISTING_CLUSTER_LOCATION"
}
resource "google_gke_hub_membership" "membership" {
membership_id = "MEMBERSHIP_ID"
endpoint {
gke_cluster {
resource_link = "//container.googleapis.com/${google_container_cluster.cluster.id}"
}
}
}
resource "google_gke_hub_feature" "feature" {
name = "configmanagement"
location = "global"
}
resource "google_gke_hub_feature_membership" "feature_member" {
location = "global"
feature = google_gke_hub_feature.feature.name
membership = google_gke_hub_membership.membership.membership_id
configmanagement {
version = "VERSION"
config_sync {
# The field `enabled` was introduced in Terraform version 5.41.0, and
# needs to be set to `true` explicitly to install Config Sync.
enabled = true
git {
sync_repo = "REPO"
sync_branch = "BRANCH"
policy_dir = "DIRECTORY"
secret_type = "SECRET"
}
}
}
}
Reemplaza lo siguiente:
EXISTING_CLUSTER_NAME
: Es el nombre del clúster existente.EXISTING_CLUSTER_LOCATION
: Es la ubicación de tu clúster existente.MEMBERSHIP_ID
: Es el ID de vinculación de la membresía.VERSION
: (Opcional) El número de versión del Sincronizador de configuración. Debe establecerse en la versión 1.17.0 o una posterior. Si se deja en blanco, el valor predeterminado es la versión más reciente.REPO
: Es la URL del repositorio que contiene tus archivos de configuración.BRANCH
: Es la rama del repositorio, por ejemplo,main
.DIRECTORY
: La ruta de acceso dentro del repositorio de Git que representa el nivel superior del repositorio que deseas sincronizar.SECRET
: Es el tipo de autenticación secreta.
oci
resource "google_container_cluster" "cluster" {
name = "EXISTING_CLUSTER_NAME"
location = "EXISTING_CLUSTER_LOCATION"
}
resource "google_gke_hub_membership" "membership" {
membership_id = "MEMBERSHIP_ID"
endpoint {
gke_cluster {
resource_link = "//container.googleapis.com/${google_container_cluster.cluster.id}"
}
}
}
resource "google_gke_hub_feature" "feature" {
name = "configmanagement"
location = "global"
}
resource "google_gke_hub_feature_membership" "feature_member" {
location = "global"
feature = google_gke_hub_feature.feature.name
membership = google_gke_hub_membership.membership.membership_id
configmanagement {
version = "VERSION"
config_sync {
# The field `enabled` was introduced in Terraform version 5.41.0, and
# needs to be set to `true` explicitly to install Config Sync.
enabled = true
oci {
sync_repo = "REPO"
policy_dir = "DIRECTORY"
secret_type = "SECRET"
}
}
}
}
Reemplaza lo siguiente:
EXISTING_CLUSTER_NAME
: Es el nombre del clúster existente.EXISTING_CLUSTER_LOCATION
: Es la ubicación de tu clúster existente.MEMBERSHIP_ID
: Es el ID de vinculación de la membresía.VERSION
: (Opcional) El número de versión del Sincronizador de configuración. Si se deja en blanco, el valor predeterminado es la versión más reciente.REPO
: Es la URL del repositorio de imágenes de OCI que contiene tus archivos de configuración.DIRECTORY
: Es la ruta de acceso absoluta del directorio que contiene los recursos que deseas sincronizar. Déjalo en blanco para usar el directorio raíz.SECRET
: Es el tipo de autenticación secreta.
Repite este proceso para cada clúster que quieras sincronizar.
Una vez que hayas terminado de configurar tu repositorio raíz, puedes elegir configurar la sincronización desde varios repositorios, incluidos otros repositorios raíz y de espacios de nombres. Estos repositorios de espacios de nombres son útiles si deseas un repositorio que contenga archivos de configuración con alcance de espacio de nombres sincronizados con un espacio de nombres en particular en todos los clústeres.
Configura los valores predeterminados a nivel de la flota
Si habilitaste la edición empresarial de Google Kubernetes Engine (GKE), puedes habilitar y configurar el Sincronizador de configuración como una configuración predeterminada a nivel de la flota para tus clústeres. Esto significa que cada clúster nuevo de GKE en Google Cloud creado en la flota tendrá habilitado el Sincronizador de configuración en el clúster con la configuración que especifiques. Puedes obtener más información sobre la configuración predeterminada de la flota en Administra funciones a nivel de la flota.
Si solo usas la consola de Google Cloud, puedes habilitar el Sincronizador de configuración de forma predeterminada en tus clústeres y establecer la versión del Sincronizador de configuración para tu flota. Si usas gcloud CLI o Terraform, puedes habilitar el Sincronizador de configuración de forma predeterminada en tus clústeres, establecer la versión del Sincronizador de configuración para tu flota y configurar la conexión a tu repositorio de Git o al repositorio de imágenes de OCI.
Para configurar los valores predeterminados a nivel de la flota para el Sincronizador de configuración, completa los siguientes pasos:
gcloud
Ejecuta el comando enable
para la función y pasa el archivo de configuración apply-spec.yaml
que creaste cuando configuraste el Sincronizador de configuración en un clúster individual:
gcloud beta container fleet config-management enable \
--fleet-default-member-config=apply-spec.yaml
Puedes usar este comando para actualizar la configuración predeterminada de tu flota en cualquier momento. Si actualizas la configuración predeterminada de la flota, debes volver a sincronizar los clústeres existentes con la configuración predeterminada.
Console
En la consola de Google Cloud, ve a la página Administrador de funciones.
En el panel Sincronizador de configuración, haz clic en Configurar.
Revisa la configuración a nivel de la flota. Todos los clústeres nuevos que crees en la flota heredarán esta configuración.
Opcional: Para cambiar la configuración predeterminada, haz clic en Personalizar la configuración de la flota. En el cuadro de diálogo que aparece, haz lo siguiente:
Selecciona Actualizaciones automáticas (Versión preliminar) para que el Sincronizador de configuración actualice las versiones automáticamente o selecciona Actualizaciones manuales para administrar la versión del Sincronizador de configuración por tu cuenta. Para obtener más información sobre cómo funcionan las actualizaciones automáticas, consulta Actualiza el Sincronizador de configuración.
Si seleccionaste Actualizaciones manuales, en la lista Versión, selecciona la versión del Sincronizador de configuración que deseas usar.
Haz clic en Guardar cambios.
Haz clic en Configurar.
En el cuadro de diálogo de confirmación Configurar la configuración de la flota, haz clic en Confirmar. Si no habilitaste el Sincronizador de configuración anteriormente, haz clic en Confirmar para habilitar la API de
anthosconfigmanagement.googleapis.com
.
Terraform
Crea un directorio para los archivos de Terraform de configuración predeterminada de la flota. En ese directorio, agrega un archivo
main.tf
con el siguiente recurso que configure la configuración del Sincronizador de configuración:git
terraform { required_providers { google = { source = "hashicorp/google" version = ">=5.16.0" } } } provider "google" { project = "PROJECT_ID" } resource "google_gke_hub_feature" "feature" { name = "configmanagement" location = "global" provider = google fleet_default_member_config { configmanagement { version = "VERSION" config_sync { source_format = "unstructured" git { sync_repo = "REPO" sync_branch = "BRANCH" policy_dir = "DIRECTORY" secret_type = "SECRET" } } } } }
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto host de la flota.VERSION
: (Opcional) El número de versión del Sincronizador de configuración. Si se deja en blanco, el valor predeterminado es la versión más reciente.REPO
: Es la URL del repositorio que contiene tus archivos de configuración.BRANCH
: Es la rama del repositorio, por ejemplo,main
.DIRECTORY
: La ruta de acceso dentro del repositorio de Git que representa el nivel superior del repositorio que deseas sincronizar.SECRET
: Es el tipo de autenticación secreta.
Para obtener una lista completa de los parámetros de configuración compatibles con el bloque
git
del Sincronizador de configuración, consulta la documentación de referencia de Terraform para las funciones de GKE Hub.OCI
terraform { required_providers { google = { source = "hashicorp/google" version = ">=5.16.0" } } } provider "google" { project = "PROJECT_ID" } resource "google_gke_hub_feature" "feature" { name = "configmanagement" location = "global" provider = google fleet_default_member_config { configmanagement { version = "VERSION" config_sync { source_format = "unstructured" oci { sync_repo = "REPO" policy_dir = "DIRECTORY" secret_type = "SECRET" } } } } }
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto host de la flota.VERSION
: El número de versión del Sincronizador de configuración. Debe establecerse en la versión 1.17.0 o una posterior. Si se deja en blanco, el valor predeterminado es la versión más reciente.REPO
: Es la URL del repositorio de imágenes de OCI que contiene archivos de configuración.DIRECTORY
: Es la ruta de acceso absoluta del directorio que contiene los recursos que deseas sincronizar. Déjalo en blanco para usar el directorio raíz.SECRET
: Es el tipo de autenticación secreta.
Para obtener una lista completa de los parámetros de configuración compatibles con el bloque
oci
del Sincronizador de configuración, consulta la documentación de referencia de Terraform para las funciones de GKE Hub.Inicializa Terraform en el directorio que creaste:
terraform init
Verifica que los cambios que propones con Terraform coincidan con el plan esperado:
terraform plan
Crea las configuraciones predeterminadas de los miembros de la flota:
terraform apply
Para actualizar los clústeres existentes para que usen la configuración predeterminada del Sincronizador de configuración, puedes usar la consola de Google Cloud o gcloud CLI para sincronizar los clústeres de la flota seleccionados con los valores predeterminados de la flota. Como alternativa, puedes configurar cada clúster de forma manual con la misma configuración mediante Terraform. Para ello, sigue las instrucciones para configurar el Sincronizador de configuración. Si usaste Terraform anteriormente para especificar los valores predeterminados de la flota, usa el mismo bloque configmanagement
y config_sync
que usaste para establecer los valores predeterminados para configurar los clústeres que elegiste.
Para sincronizar la configuración predeterminada del Sincronizador de configuración en toda tu flota, sigue estos pasos:
gcloud
Sincroniza una membresía existente con la configuración predeterminada de la flota:
gcloud beta container fleet config-management apply \ --origin=FLEET \ --membership=MEMBERSHIP_NAME
Reemplaza
MEMBERSHIP_NAME
por el nombre de la membresía de la flota del clúster que deseas sincronizar con la configuración predeterminada de la flota.Confirma que las configuraciones de membresía estén sincronizadas con la configuración predeterminada de la flota:
gcloud beta container fleet config-management status
El resultado de este comando debe mostrarse como
Yes
para el estadoSynced_to_Fleet_Default
de la membresía que sincronizaste.
Console
Ve al Administrador de funciones
Ve a Administrador de funciones: Sincronizador de configuración
En la tabla de clústeres, selecciona los clústeres que deseas sincronizar con la configuración de la flota.
Haz clic en Sincronizar con la configuración de la flota.
Para inhabilitar la configuración predeterminada del Sincronizador de configuración en toda tu flota, sigue estos pasos:
Para inhabilitar la configuración predeterminada de la flota, ejecuta el siguiente comando:
gcloud beta container fleet config-management disable --fleet-default-member-config
Confirma que la configuración predeterminada de la flota esté inhabilitada:
gcloud beta container fleet config-management status
La configuración predeterminada del Sincronizador de configuración se aplica a todos los clústeres que selecciones. Aunque la consola de Google Cloud solo muestra un subconjunto de parámetros de configuración, como la versión del Sincronizador de configuración, todos los parámetros de configuración a nivel de la flota se sincronizan con los clústeres. Por ejemplo, si configuras el Sincronizador de configuración para que se sincronice con un repositorio de Git con Terraform o gcloud CLI, ese parámetro de configuración se sincroniza con tus clústeres, pero no se muestra en la consola de Google Cloud.
Verifique la instalación
Después de instalar y configurar el Sincronizador de configuración, puedes verificar que la instalación se haya completado correctamente.
Console
Completa los siguientes pasos:
- En la consola de Google Cloud, ve a la página Configuración en la sección Funciones.
- En la pestaña Paquetes, verifica la columna Estado de sincronización en la tabla del clúster. Si la instalación del Sincronizador de configuración se realiza correctamente, tendrá el estado Instalado. Una fuente de información configurada correctamente tiene el estado Sincronizada.
gcloud
Ejecuta el siguiente comando:
gcloud beta container fleet config-management status \
--project=PROJECT_ID
Reemplaza PROJECT_ID
por el ID del proyecto.
Si la instalación se realiza correctamente, tendrá el estado SYNCED
. A partir de la versión 1.18.0 del Sincronizador de configuración, el resultado también muestra qué versión del Sincronizador de configuración está instalada y la configuración de actualización del Sincronizador de configuración.
Si ves un error después de ejecutar el comando anterior, asegúrate de haber creado el Secret git-creds
. Si creaste el Secret, vuelve a ejecutar el siguiente comando:
gcloud beta container fleet config-management apply
También puedes usar el comando nomos status
para verificar si el Sincronizador de configuración se instaló correctamente. Una instalación válida sin problemas tiene el estado PENDING
o SYNCED
. Una instalación no válida o incompleta tiene el estado NOT INSTALLED
o NOT CONFIGURED
. La salida también incluye cualquier error informado.
Controles de acceso basado en roles (RBAC) y permisos
El Sincronizador de configuración incluye cargas de trabajo con muchos privilegios. En la siguiente tabla, se enumeran los permisos de estas cargas de trabajo:
Componente | Espacio de nombres | Cuenta de servicio | Permisos | Descripción |
---|---|---|---|---|
Operador de ConfigManagement | config-management-system |
config-management-operator |
cluster-admin | El operador de Config Management instala los otros componentes de esta tabla. Algunos de esos componentes requieren permisos de administrador de clúster, por lo que el operador de Config Management también los requiere. |
Sincronizador de configuración | config-management-system |
Consulta Permisos de Sincronizador de configuración para conocer los permisos necesarios. |
Solicitudes de recursos
En la siguiente sección, se enumeran las solicitudes de recursos del Sincronizador de configuración.
En la siguiente tabla, se enumeran los requisitos de los recursos de Kubernetes para los componentes del Sincronizador de configuración. Si deseas obtener más información, consulta Administra los recursos para contenedores en la documentación de Kubernetes.
No se crean todos los componentes que se enumeran. Las siguientes condiciones hacen que se programe cada componente:
config-management-operator
se instala cuando se habilita el Sincronizador de configuración.reconciler-manager
se instala cuando se habilita el Sincronizador de configuración.admission-webhook
se instala cuando se habilita la prevención de desvíos.- Se instala un
reconciler
para cada RootSync y RepoSync. otel-collector
se instala cuando se habilita el Sincronizador de configuración.
Para obtener más información sobre estos componentes, consulta Arquitectura del Sincronizador de configuración.
1.18
Nombre de la implementación | Solicitud de CPU (m) por réplica | Solicitud de memoria (Mi) por réplica |
---|---|---|
config-management-operator |
100 | 200 |
resource-group-controller-manager |
110 | 300 |
admission-webhook1 |
10 | 100 |
otel-collector |
200 | 400 |
reconciler-manager |
20 | 150 |
reconciler (uno por RootSync y RepoSync) |
Consulta Implementación del agente de conciliación para obtener más detalles. |
1 El webhook de admisión tiene dos réplicas, por lo que, cuando se calcula el total de solicitudes de recursos, debes duplicar el valor si usas el webhook de admisión. El webhook de admisión está inhabilitado de forma predeterminada.
1.17
Nombre de la implementación | Solicitud de CPU (m) por réplica | Solicitud de memoria (Mi) por réplica |
---|---|---|
config-management-operator |
100 | 200 |
resource-group-controller-manager |
110 | 300 |
admission-webhook1 |
10 | 100 |
otel-collector |
200 | 400 |
reconciler-manager |
20 | 150 |
reconciler (uno por RootSync y RepoSync) |
Consulta Implementación del agente de conciliación para obtener más detalles. |
1 El webhook de admisión tiene dos réplicas, por lo que, cuando se calcula el total de solicitudes de recursos, debes duplicar el valor si usas el webhook de admisión. El webhook de admisión está inhabilitado de forma predeterminada.
1.16
Nombre de la implementación | Solicitud de CPU (m) por réplica | Solicitud de memoria (Mi) por réplica |
---|---|---|
config-management-operator |
100 | 200 |
resource-group-controller-manager |
110 | 300 |
admission-webhook1 |
10 | 100 |
otel-collector |
200 | 400 |
reconciler-manager |
20 | 150 |
reconciler (uno por RootSync y RepoSync) |
Consulta Implementación del agente de conciliación para obtener más detalles. |
1 El webhook de admisión tiene dos réplicas, por lo que, cuando se calcula el total de solicitudes de recursos, debes duplicar el valor si usas el webhook de admisión. El webhook de admisión está inhabilitado de forma predeterminada.
Implementación del conciliador
Para cada objeto RootSync
y RepoSync
, el Sincronizador de configuración crea una implementación de conciliador independiente para controlar la sincronización. La implementación del agente de conciliación consiste en varios contenedores. Para obtener más información sobre estos contenedores, consulta Contenedores del conciliador.
En el Sincronizador de configuración versión 1.17.0 y posteriores, las solicitudes de recursos predeterminadas para los agentes de conciliación son diferentes para los clústeres Standard y Autopilot. Todos los demás tipos de clústeres usan los valores predeterminados de Standard.
Clústeres estándar
1.18
Nombre del contenedor | Solicitud de CPU (m) | Solicitud de memoria (Mi) |
---|---|---|
reconciler |
50 | 200 |
otel-agent |
10 | 100 |
hydration-controller (Opcional) |
10 | 100 |
git-sync |
10 | 16 |
gcenode-askpass-sidecar (Opcional) |
10 | 20 |
helm-sync |
75 | 128 |
oci-sync |
25 | 32 |
1.17
Nombre del contenedor | Solicitud de CPU (m) | Solicitud de memoria (Mi) |
---|---|---|
reconciler |
50 | 200 |
otel-agent |
10 | 100 |
hydration-controller (Opcional) |
10 | 100 |
git-sync |
10 | 16 |
gcenode-askpass-sidecar (Opcional) |
10 | 20 |
helm-sync |
75 | 128 |
oci-sync |
25 | 32 |
1.16
Nombre del contenedor | Solicitud de CPU (m) | Solicitud de memoria (Mi) |
---|---|---|
reconciler |
50 | 200 |
otel-agent |
10 | 100 |
hydration-controller (Opcional) |
10 | 100 |
git-sync |
10 | 200 |
gcenode-askpass-sidecar (Opcional) |
10 | 20 |
helm-sync |
50 | 256 |
oci-sync |
10 | 200 |
Clústeres de Autopilot
1.18
Nombre del contenedor | Solicitud y límite de CPU (m) | Solicitud y límite de memoria (Mi) |
---|---|---|
reconciler |
700 | 512 |
otel-agent |
10 | 64 |
hydration-controller (Opcional) |
200 | 256 |
git-sync |
20 | 32 |
gcenode-askpass-sidecar (Opcional) |
50 | 64 |
helm-sync |
250 | 384 |
oci-sync |
50 | 64 |
1.17
Nombre del contenedor | Solicitud y límite de CPU (m) | Solicitud y límite de memoria (Mi) |
---|---|---|
reconciler |
700 | 512 |
otel-agent |
10 | 64 |
hydration-controller (Opcional) |
200 | 256 |
git-sync |
20 | 32 |
gcenode-askpass-sidecar (Opcional) |
50 | 64 |
helm-sync |
150 | 256 |
oci-sync |
50 | 64 |
1.16
En las versiones del Sincronizador de configuración anteriores a la 1.17.0, las solicitudes de recursos son las mismas para Estándar y Autopilot.
Para obtener información sobre cómo anular las solicitudes y los límites de recursos predeterminados, consulta anulaciones de recursos.
Versiones de Helm y Kustomize en paquetes
El Sincronizador de configuración aprovecha los ejecutables de Helm y Kustomize para procesar las opciones de configuración internas. En la siguiente tabla, se proporciona una lista de las versiones del Sincronizador de configuración que admiten la función de procesamiento, junto con las versiones de Helm y Kustomize empaquetadas.
Versiones del Sincronizador de configuración | Versión de Helm | Versión de Kustomize |
---|---|---|
1.18.0 | v3.14.3 | v5.3.0 |
1.17.1 y 1.17.3 | v3.13.3 | v5.3.0 |
1.16.3 y 1.17.0 | v3.13.1 | v5.1.1 |
1.16.1 y 1.16.2 | v3.12.3 | v5.1.1 |
1.16.0 | v3.12.2 | v5.1.1 |
1.15.3 | v3.12.2 | v5.1.0 |
1.15.1 a 1.15.2 | v3.11.3 | v5.0.3 |
1.15.0 | v3.11.3 | v5.0.1 |
1.11.0 a 1.14.3 | v3.6.3 | v4.5.2 |
Para obtener información sobre cómo renderizar Helm a través de Kustomize, consulta Configura Kubernetes con Kustomize. Para obtener información sobre el uso de la API de Helm, consulta Sincroniza gráficos de Helm desde Artifact Registry.
¿Qué sigue?
- Aprende a actualizar el Sincronizador de configuración.
- Obtén más información sobre los comandos de
gcloud
para configurar el Sincronizador de configuración. - Descubre cómo configurar la sincronización desde varios repositorios.
- Usa el comando
nomos
. - Lee la Introducción para solucionar problemas del Sincronizador de configuración.
- Obtén más información para desinstalar el Sincronizador de configuración.
- Revisa los permisos predeterminados del Sincronizador de configuración.