Usa un repositorio con las opciones de configuración de Kustomize y los gráficos de Helm
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.
Requisitos
Para renderizar de forma automática las opciones de configuración de Kustomize y los gráficos de Helm, asegúrate de que el entorno cumpla con los siguientes requisitos:
- Usa un repositorio no estructurado. El procesamiento automático no es compatible con los repositorios jerárquicos.
- Las API
RootSync
yRepoSync
deben estar habilitadas. Si instalaste el Sincronizador de configuración de forma manual mediantekubectl
y no tienes habilitados los API deRootSync
yRepoSync
, debes migrar tu objeto ConfigManagement. - Para activar el proceso de renderización, tu repositorio de Git debe tener un archivo de configuración de Kustomization (
kustomization.yaml
,kustomization.yml
oKustomization
) en la raíz del directorio de Git. Si el directorio raíz no tiene un archivo de configuración de Kustomization, el Sincronizador de configuración sincroniza los archivos de configuración como están sin ninguna renderización. - Desde la versión 1.12.0 y las posteriores de Anthos Config Management,
spec.override.enableShellInRendering
se debe configurar comotrue
para permitir que el Sincronizador de configuración admita bases remotas de repositorios públicos en el proceso de renderización. - Incluye tus archivos de configuración en
kustomization.yaml
. Si no incluyes estos archivos de configuración, no se sincronizan con el clúster.
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.11.0 y posteriores | v3.6.3 | v4.5.2 |
Desde 1.9.0 hasta 1.10.2 | v3.6.3 | v4.3.0 |
Arquitectura de repositorio de ejemplo para las opciones de configuración de Kustomize
En el siguiente repositorio de ejemplo, se muestra cómo puedes configurar el repositorio para usar las opciones de configuración de Kustomize con la renderización automática. Este repositorio incluye tres superposiciones (team-a
, team-b
y team-c
) que hacen referencia a la misma base.
En el siguiente diagrama, se muestra la estructura del directorio:
├── base
│ ├── kustomization.yaml
│ ├── namespace.yaml
│ ├── networkpolicy.yaml
│ ├── rolebinding.yaml
│ └── role.yaml
├── kustomization.yaml
├── README.md
├── team-a
│ └── kustomization.yaml
├── team-b
│ └── kustomization.yaml
└── team-c
└── kustomization.yaml
El siguiente archivo kustomization.yaml
se encuentra en la raíz del repositorio y contiene referencias de las tres superposiciones:
# ./kustomization.yaml
resources:
- team-a
- team-b
- team-c
El siguiente kustomize.yaml
está en el directorio team-a
y es la superposición de team-a
:
# ./team-a/kustomization.yaml
namespace: team-a
resources:
- ../base
patches:
- target:
kind: RoleBinding
name: team-admin-rolebinding
patch: |-
- op: replace
path: /subjects/0/name
value: team-a-admin@mydomain.com
- target:
kind: Namespace
name: default
patch: |-
- op: replace
path: /metadata/name
value: team-a
El siguiente kustomization.yaml
está en el directorio base
y es la base de Kustomize:
# ./base/kustomization.yaml
resources:
- namespace.yaml
- rolebinding.yaml
- role.yaml
- networkpolicy.yaml
Puedes explorar este repositorio en el directorio Configura políticas específicas de espacio de nombres del repositorio de muestra de Anthos Config Management.
Renderiza automáticamente gráficos de Helm
Puedes renderizar de forma automática los gráficos de Helm con los campos helmGlobals
y helmCharts
en los archivos kustomization.yaml
.
Campos del gráfico de Helm
El Sincronizador de configuración admite la adición de los siguientes campos a los archivos kustomization.yaml
:
Campo | Descripción |
---|---|
helmGlobals |
Parámetros aplicados a todos los gráficos de Helm |
helmGlobals.chartHome
|
Acepta una string. Una ruta de acceso de archivo, en relación con la raíz de Kustomization, a un directorio que contiene un subdirectorio para cada gráfico que se incluirá en Kustomization. El valor predeterminado de este campo es charts . |
helmGlobals.configHome
|
Acepta una string. Define un valor que Kustomize debe pasar a Helm con la variable de entorno HELM_CONFIG_HOME . Kustomize no intenta leer ni escribir este directorio. Si se omite, se usa TMP_DIR/helm , en el que TMP_DIR es un directorio temporal que Kustomize creó para Helm. |
helmCharts
|
Un arreglo de parámetros de gráficos de Helm |
helmCharts.name
|
Acepta una string. Es el nombre del gráfico. Este campo es obligatorio. |
helmCharts.version
|
Acepta una string. La versión del gráfico |
helmCharts.repo
|
Acepta una string. La URL que se usa para ubicar el gráfico |
helmCharts.releaseName
|
Acepta una string. Reemplaza RELEASE_NAME en el resultado de la plantilla del gráfico. |
helmCharts.namespace
|
Acepta una string. Establece el espacio de nombres de destino de una versión (.Release.Namespace en la plantilla) |
helmCharts.valuesInline
|
Valores para usar en lugar de valores predeterminados que acompañan al gráfico |
helmCharts.valuesFile
|
Acepta una string. valuesFile es una ruta de archivo local o una URL remota a un archivo de valores para usar en lugar de los valores predeterminados que acompañaban al gráfico. Los valores predeterminados están en CHART_HOME/NAME/values.yaml . |
helmCharts.valuesMerge
|
Se acepta merge , override , (default) o replace . ValueFusion especifica cómo tratar los valores en línea con respecto a los valores.
|
helmCharts.includeCRDs
|
Se acepta true o false . Especifica si Helm también debe generar CustomResourceDefinitions. El valor predeterminado es false . |
Ejemplos de gráficos de Helm
En los ejemplos de las siguientes secciones, se muestran algunas de las diferentes formas en las que puedes usar los gráficos de Helm.
Renderiza un gráfico de Helm remoto
El Sincronizador de configuración admite la renderización de gráficos de Helm remotos en clústeres que tienen acceso público a Internet.
El siguiente kustomization.yaml
renderiza un cert-manager remoto mediante la configuración de los siguientes campos helmCharts
:
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
repo: https://charts.jetstack.io
version: v1.5.3
releaseName: my-cert-manager
namespace: cert-manager
...
Renderiza un gráfico de Helm local
El Sincronizador de configuración admite la renderización de gráficos de Helm locales. Para usar una versión personalizada de un gráfico de Helm, puedes extraer la versión de actualización desde el repositorio de gráficos de Helm (por ejemplo, ArtifactHub), realizar cambios de forma local y, luego, enviar los cambios a tu repositorio.
En el siguiente kustomization.yaml
, se renderiza un gráfico cert-manager
local. El directorio predeterminado para los gráficos de Helm es charts
y, como este gráfico se registra en el directorio charts
, no necesitas especificar .helmCharts.repo
ni .helmCharts.version
.
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
releaseName: my-cert-manager
namespace: cert-manager
...
Renderiza varios gráficos de Helm
El Sincronizador de configuración admite la renderización de varios gráficos de Helm en un archivo kustomization.yaml
, sin importar si el gráfico es remoto o local.
En el siguiente kustomization.yaml
, se renderiza un gráfico de Helm local (cert-manager
):
# ./kustomization.yaml
...
helmCharts:
- name: cert-manager
releaseName: my-cert-manager
namespace: cert-manager
- name: prometheus
repo: https://prometheus-community.github.io/helm-charts
version: 14.3.0
releaseName: my-prometheus
namespace: monitoring
...
Campos disponibles
En el siguiente ejemplo, se muestra qué campos son compatibles con tu archivo kustomization.yaml
:
helmGlobals:
chartHome: string
configHome: string
helmCharts:
- name: string
version: string
repo: string
releaseName: string
namespace: string
valuesInline: map[string]interface{}
valuesFile: string
valuesMerge: string
includeCRDs: bool
¿Qué sigue?
- Sigue un instructivo que te muestra cómo usar el Sincronizador de configuración con Kustomize y Helm.