Share via


Implementación de gráficos de Helm mediante GitOps en un clúster de Kubernetes habilitado para Azure Arc

Importante

Este artículo guarda relación con GitOps con Flux v1. GitOps con Flux v2 ahora está disponible para los clústeres de Kubernetes habilitados para Azure Arc y Azure Kubernetes Service (AKS); vaya al tutorial de GitOps con Flux v2. Se recomienda migrar a Flux v2 lo antes posible.

La compatibilidad con los recursos de configuración de clúster basados en Flux v1 creados antes del 1 de enero de 2024 finalizará el 24 de mayo de 2025. A partir del 1 de enero de 2024, no podrá crear nuevos recursos de configuración de clúster basados en Flux v1. Helm es una herramienta de empaquetado de código abierto que ayuda a instalar y administrar el ciclo de vida de las aplicaciones de Kubernetes. Al igual que los administradores de paquetes de Linux, como APT y Yum, Helm se usa para administrar los gráficos de Kubernetes, que son paquetes de recursos de Kubernetes preconfigurados.

En este artículo se muestra cómo configurar y usar Helm con Kubernetes habilitado para Azure Arc.

Requisitos previos

Introducción al uso de GitOps y Helm con Kubernetes habilitado para Azure Arc

El operador Helm proporciona una extensión para Flux que automatiza las versiones Chart de Helm. Una versión del gráfico Helm se describe a través de un recurso personalizado de Kubernetes denominado HelmRelease. Flux sincroniza estos recursos de Git con el clúster mientras el operador de Helm se asegura de que los gráficos Helm se publiquen como se especifica en los recursos.

El repositorio de ejemplo utilizado en este artículo está estructurado de la manera siguiente:

├── charts
│   └── azure-arc-sample
│       ├── Chart.yaml
│       ├── templates
│       │   ├── NOTES.txt
│       │   ├── deployment.yaml
│       │   └── service.yaml
│       └── values.yaml
└── releases
    └── app.yaml

En el repositorio de Git hay dos directorios, uno que contiene un gráfico Helm y otro con la configuración de versiones. En el directorio releases, app.yaml contiene la configuración de HelmRelease siguiente:

apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: azure-arc-sample
  namespace: arc-k8s-demo
spec:
  releaseName: arc-k8s-demo
  chart:
    git: https://github.com/Azure/arc-helm-demo
    ref: master
    path: charts/azure-arc-sample
  values:
    serviceName: arc-k8s-demo

La configuración de versión de Helm contiene los campos siguientes:

Campo Descripción
metadata.name Campo obligatorio. Debe seguir las convenciones de nomenclatura de Kubernetes.
metadata.namespace Campo opcional. Determina dónde se crea la versión.
spec.releaseName Campo opcional. Si no se proporciona, el nombre de la versión será $namespace-$name.
spec.chart.path El directorio que contiene el gráfico (en relación con la raíz del repositorio).
spec.values Personalizaciones de usuario de los valores de parámetro predeterminados del propio gráfico.

Las opciones especificadas en spec.values de HelmRelease reemplazarán las opciones especificadas en values.yaml del origen del gráfico.

Puede obtener más información sobre HelmRelease en la documentación oficial del operador de Helm.

Creación de una configuración

Con la extensión de la CLI de Azure para k8s-configuration, vincule el clúster conectado al repositorio de Git de ejemplo. Asigne a esta configuración el nombre azure-arc-sample e implemente el operador de Flux en el espacio de nombres arc-k8s-demo.

az k8s-configuration create --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name flux --operator-namespace arc-k8s-demo --operator-params='--git-readonly --git-path=releases' --enable-helm-operator --helm-operator-chart-version='1.2.0' --helm-operator-params='--set helm.versions=v3' --repository-url https://github.com/Azure/arc-helm-demo.git --scope namespace --cluster-type connectedClusters

Parámetros de configuración

Para personalizar la creación de la configuración, obtenga información sobre los parámetros adicionales.

Validación de la configuración

Utilice la CLI de Azure para comprobar que la configuración se hay creado correctamente.

az k8s-configuration show --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters

El recurso de configuración se actualiza con el estado de cumplimiento, mensajes y la información de depuración.

{
  "complianceStatus": {
    "complianceState": "Installed",
    "lastConfigApplied": "2019-12-05T05:34:41.481000",
    "message": "{\"OperatorMessage\":null,\"ClusterState\":null}",
    "messageLevel": "3"
  },
  "enableHelmOperator": "True",
  "helmOperatorProperties": {
    "chartValues": "--set helm.versions=v3",
    "chartVersion": "1.2.0"
  },
  "id": "/subscriptions/57ac26cf-a9f0-4908-b300-9a4e9a0fb205/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/azure-arc-sample",
  "name": "azure-arc-sample",
  "operatorInstanceName": "flux",
  "operatorNamespace": "arc-k8s-demo",
  "operatorParams": "--git-readonly --git-path=releases",
  "operatorScope": "namespace",
  "operatorType": "Flux",
  "provisioningState": "Succeeded",
  "repositoryPublicKey": "",
  "repositoryUrl": "https://github.com/Azure/arc-helm-demo.git",
  "resourceGroup": "AzureArcTest",
  "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}

Validación de la aplicación

Ejecute el siguiente comando y vaya a localhost:8080 en el explorador para comprobar que la aplicación se está ejecutando.

kubectl port-forward -n arc-k8s-demo svc/arc-k8s-demo 8080:8080

Pasos siguientes

Aplique configuraciones de clúster a escala mediante Azure Policy.