En este instructivo, agregarás a tu repositorio opciones de configuración de Kustomize que hacen referencia a los gráficos de Helm y, luego, usarás el Sincronizador de configuración para sincronizar tu clúster con el repositorio.
Cuando usas el Sincronizador de configuración, las opciones de configuración de Kustomize y los gráficos de Helm que colocas en el repositorio de Git se renderizar de forma automática. La renderización automatizada te brinda los siguientes beneficios:
Ya no necesitas una canalización de hidratación externa. Sin el procesamiento automatizado, debes procesar de forma manual las opciones de configuración mediante Kustomize y Helm en tu estación de trabajo o configurar un paso para activar el proceso de hidratación en tus sistemas de CI. Con la renderización automatizada, el Sincronizador de configuración controla la ejecución.
Se reducen los costos de mantenimiento. Sin la renderización automatizada, debes mantener un repositorio de Git con la configuración original de Kustomize y los gráficos de Helm, y otro repositorio de Git con el resultado que genera la hidratación externa. Luego, debes configurar el Sincronizador de configuración para que se sincronice desde el repositorio de Git con el resultado renderizado. Con la renderización automatizada, solo necesitas mantener un repositorio con los archivos de configuración originales.
Tu flujo de trabajo de desarrollo está simplificado. Sin la renderización automatizado, los cambios realizados en los archivos de configuración originales deben revisarse dos veces antes de combinarse; una vez en el repositorio original y otra vez en el repositorio renderizado. Con el procesamiento automatizado, los archivos de configuración renderizados se generan mediante el Sincronizador de configuración y solo necesitas revisar los cambios en los archivos de configuración originales.
Objetivos
- Configura tu repositorio con las configuraciones de Kustomize que hacen referencia a un gráfico de Helm listo para usar para cert-manager. cert-manager es una herramienta para Kubernetes que te ayuda a administrar tu certificados.
- Obtén una vista previa y valida los archivos de configuración que creas.
- Usa el Sincronizador de configuración para procesar el gráfico de forma automática y sincronizar el clúster con el repositorio.
- Verifica que la instalación se haya realizado correctamente.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Crea un clúster que cumpla con los requisitos del Sincronizador de configuración o asegúrate de tener acceso a uno que use la siguiente configuración del Sincronizador de configuración:
- Usa un repositorio no estructurado.
- Las APIs de
RootSync
yRepoSync
están habilitadas. spec.override.enableShellInRendering
se establece entrue
para permitir que el Sincronizador de configuración admita bases remotas de repositorios públicos en el proceso de renderización.
- Registra tu clúster en una flota.
- Instala la herramienta de línea de comandos de
nomos
. Si ya instalaste la herramienta denomos
, asegúrate de actualizarla a la versión 1.9.0 o una posterior. - Instalar Helm.
También es útil tener conocimientos de Git, Kustomize y Helm.
Configura tu repositorio
En las siguientes tareas, se muestra cómo preparar un repositorio de Git con archivos de configuración que combinan configuraciones de Kustomize con gráficos de Helm:
Crea un repositorio Git o asegúrate de tener acceso a él. Debido a que en tu repositorio se usa Kustomize y Helm, este debería ser un repositorio no estructurado.
En la raíz de tu repositorio de Git, crea un archivo llamado
kustomization.yaml
y pega el siguiente código en él:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: Deployment
Este archivo es una superposición de Kustomize que apunta a la base de Kustomize. Esta superposición incluye un parche para la base del gráfico de Helm que agrega la anotación
client.lifecycle.config.k8s.io/mutation: ignore
a todos los objetos Deployment. La anotación hace que el Sincronizador de configuración ignore cualquier cambio conflictivo en este objeto en el clúster después de crearlo.En tu repositorio de Git, crea un directorio llamado
base
:mkdir base
En el directorio
base
, crea otro archivo llamadokustomization.yaml
y pega el siguiente código en él:# ./base/kustomization.yaml helmCharts: - name: cert-manager repo: https://charts.jetstack.io version: v1.5.3 releaseName: my-cert-manager namespace: cert-manager
Este archivo es la base de Kustomize, que renderiza el gráfico remoto de Helm.
Navega a la raíz de tu repositorio de Git, crea un archivo llamado
ignore-deployment-mutation-patch.yaml
y pega el siguiente código en él:# ./ignore-deployment-mutation-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: any annotations: client.lifecycle.config.k8s.io/mutation: ignore
Este archivo es un parche que se aplica al gráfico base de Helm. Agrega la anotación
client.lifecycle.config.k8s.io/mutation: ignore
a todos los objetos Deployment en el directorio base.Confirma los cambios en tu repositorio:
git add . git commit -m 'Set up manifests.' git push
El repositorio de muestras contiene un ejemplo de cómo se vería ese repositorio.
Obtén una vista previa y valida los archivos de configuración renderizados
Antes de que el Sincronizador de configuración renderice los archivos de configuración y los sincronice con el clúster, asegúrate de que los archivos de configuración sean precisos mediante la ejecución de nomos hydrate
para obtener una vista previa de la configuración renderizada y ejecuta nomos vet
a fin de validar que el formato sea correcto.
Ejecuta el siguiente
nomos hydrate
con los siguientes marcadores:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORY
En el ejemplo anterior, se ilustra lo siguiente:
--source-format=unstructured
permite quenomos hydrate
funcione en un repositorio no estructurado. Dado que usas archivos de configuración de Kustomize y gráficos de Helm, debes usar un repositorio no estructurado y agregar esta marca.--output=OUTPUT_DIRECTORY
te permite definir una ruta de acceso a los archivos de configuración renderizados. ReemplazaOUTPUT_DIRECTORY
por la ubicación en la que deseas que se guarde el resultado.
Para verificar la sintaxis y la validez de tus archivos de configuración, ejecuta
nomos vet
con las siguientes marcas:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORY
En el ejemplo anterior, se ilustra lo siguiente:
--source-format=unstructured
permite quenomos vet
funcione en un repositorio no estructurado.--keep-output=true
guarda los archivos de configuración renderizados.--output=OUTPUT_DIRECTORY
es la ruta de acceso a los archivos de configuración renderizados.
Configura la sincronización desde el repositorio de Git
Ahora que creaste un repositorio con los archivos de configuración que deseas usar, puedes configurar la sincronización del clúster al repositorio. Si ya instalaste el Sincronizador de configuración, ve a Verifica el estado de sincronización.
En la consola de Google Cloud , habilita la API de GKE Hub.
- 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 para permitir que el Sincronizador de configuración actualice las versiones automáticamente.
En Opciones de instalación, selecciona Instalar el Sincronizador de configuración en clústeres individuales.
En la tabla Clústeres disponibles, selecciona
cs-cluster
y haz clic en Instalar el Sincronizador de configuración. En la pestaña Configuración, deberías ver el estado decs-cluster
como Habilitado después de unos minutos.En el panel del Sincronizador de configuración, haz clic en Implementar paquete.
En la tabla Selecciona clústeres para la implementación de paquetes, selecciona
cs-cluster
y, luego, haz clic en Continuar.Deja seleccionada la opción Paquete alojado en Git y, luego, haz clic en Continuar.
En el campo Nombre del paquete, ingresa
sample-repository
.En el campo URL del repositorio, ingresa
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
.En el campo Ruta de acceso, ingresa
config-sync-quickstart/multirepo/root
.Deja todos los otros campos con sus valores predeterminados.
Haz clic en Implementar paquete.
Después de unos minutos, deberías ver Sincronizado en la columna Estado de sincronización de
cs-cluster
.
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.
Verifica que no haya otros errores mediante
nomos status
:nomos status
Resultado de ejemplo:
*CLUSTER_NAME -------------------- <root> https:/github.com/GoogleCloudPlatform/anthos-config-management-samples.git/helm-component/manifests@init SYNCED fd17dd5a
Verifica si el componente de Helm se instaló correctamente:
kubectl get all -n cert-manager
Resultado de ejemplo:
NAME READY STATUS RESTARTS AGE pod/my-cert-manager-54f5ccf74-wfzs4 1/1 Running 0 10m pod/my-cert-manager-cainjector-574bc8678c-rh7mq 1/1 Running 0 10m pod/my-cert-manager-webhook-7454f4c77d-rkct8 1/1 Running 0 10m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/my-cert-manager ClusterIP 10.76.9.35 <none> 9402/TCP 10m service/my-cert-manager-webhook ClusterIP 10.76.11.205 <none> 443/TCP 10m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/my-cert-manager 1/1 1 1 10m deployment.apps/my-cert-manager-cainjector 1/1 1 1 10m deployment.apps/my-cert-manager-webhook 1/1 1 1 10m NAME DESIRED CURRENT READY AGE replicaset.apps/my-cert-manager-54f5ccf74 1 1 1 10m replicaset.apps/my-cert-manager-cainjector-574bc8678c 1 1 1 10m replicaset.apps/my-cert-manager-webhook-7454f4c77d 1 1 1 10m
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Borra los recursos individuales
Borra los manifiestos de tu repositorio
Para evitar la eliminación accidental, el Sincronizador de configuración no te permite quitar todos los espacios de nombres o recursos con permiso de clúster en una sola confirmación. Sigue estas instrucciones a fin de desinstalar el componente de forma correcta y quitar el espacio de nombres en confirmaciones separadas:
Quita el componente de cert-manager del repositorio:
git rm -rf manifests/cert-manager \ && git commit -m "uninstall cert-manager" \ && git push origin BRANCH
Reemplaza
BRANCH
por la rama en la que creaste el repositorio.Borra el espacio de nombres de cert-manager:
git rm manifests/namespace-cert-manager.yaml \ && git commit -m "remove the cert-manager namespace" \ && git push origin BRANCH
Verifica que el espacio de nombres de cert-manager no exista:
kubectl get namespace cert-namespace
Resultado de ejemplo:
Error from server (NotFound): namespaces "cert-namespace" not found
Borra el clúster
Para borrar el clúster, completa los siguientes comandos:
Console
Para borrar un clúster mediante la consola de Google Cloud , completa las siguientes tareas:
En la consola de Google Cloud , ve a la página de GKE.
Junto al clúster que deseas borrar, haz clic en more_vert Acciones y, luego, en delete Borrar.
Cuando se te solicite confirmación, haz clic en Borrar de nuevo.
gcloud
Para borrar un clúster con la CLI de Google Cloud, ejecuta el siguiente comando:
gcloud container clusters delete CLUSTER_NAME
Para obtener más información, consulta la documentación de gcloud container clusters delete
.
¿Qué sigue?
- Obtén más información para trabajar con repositorios no estructurados.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.