Compartir a través de


Instalación de aplicaciones existentes con Helm

Se aplica a: AKS en Azure Stack HCI 22H2, AKS en Windows Server

En este artículo se describe cómo configurar y usar Helm para instalar y administrar aplicaciones de Kubernetes en un clúster de Kubernetes en AKS habilitado por Azure Arc.

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. De forma similar a los administradores de paquetes de Linux, como APT y Sum, Helm administra gráficos de Kubernetes, que son paquetes de recursos de Kubernetes preconfigurados.

Antes de empezar

Compruebe que tiene configurados los requisitos siguientes:

  • Un clúster de Kubernetes con al menos un nodo de trabajo de Linux que esté en funcionamiento.
  • Configuró el entorno local kubectl para que apunte al clúster. Puede usar el comando de PowerShell Get-AksHciCredential para acceder al clúster mediante kubectl.
  • Se instalan la línea de comandos de Helm v3 y los requisitos previos.
  • Puede usar la CLI de Azure para ejecutar comandos, si lo prefiere a PowerShell.

Importante

Helm está diseñada para ejecutarse en nodos de Linux. Si el clúster tiene nodos de Windows Server, debe asegurarse de que los pods de Helm estén programados para ejecutarse solo en nodos de Linux. También debe asegurarse de que los gráficos de Helm que instale estén programados para ejecutarse en los nodos correctos. Los comandos de este artículo usan selectores de nodos para asegurarse de que los pods están programados para los nodos correctos, pero no todos los gráficos de Helm exponen un selector de nodos. También puede usar otras opciones, como taints, en el clúster.

Comprobación de la versión de Helm

Use el comando helm version para comprobar que tiene Helm 3 instalado:

helm version

En el siguiente ejemplo se muestra la versión 3.5.4 de Helm instalada:

version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"clean", GoVersion:"go1.15.11"}

Instalación de una aplicación con Helm v3

Adición de repositorios de Helm

Use el comando helm repo para agregar el repositorio ingress-nginx.

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

Búsqueda de gráficos de Helm

Los gráficos de Helm se usan para implementar aplicaciones en un clúster de Kubernetes. Para buscar los gráficos de Helm creados previamente, use el comando helm search:

helm search repo ingress-nginx

En la siguiente salida de ejemplo condensada se muestran algunos de los gráficos de Helm disponibles para usar:

NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
ingress-nginx/ingress-nginx     3.30.0          0.46.0          Ingress controller for Kubernetes using NGINX a...

Para actualizar la lista de gráficos, use el comando helm repo update.

helm repo update

El ejemplo siguiente muestra una actualización de repositorio correcta:

Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "ingress-nginx" chart repository
Update Complete. Happy Helming!

Ejecución de gráficos de Helm

Para instalar gráficos con Helm, use el comando helm install y especifique un nombre de versión y el nombre del gráfico que se va a instalar. Para ver una instalación de gráficos de Helm en acción, instale una implementación básica de nginx mediante un gráfico de Helm.

El siguiente comando se proporciona dos veces, uno para su uso en la CLI de Azure y otro para usarlo en una consola de PowerShell:

helm install my-nginx-ingress ingress-nginx/ingress-nginx \
    --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
helm install my-nginx-ingress ingress-nginx/ingress-nginx `
    --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux `
    --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

En la siguiente salida de ejemplo condensada se muestra el estado de implementación de los recursos de Kubernetes creados mediante el gráfico de Helm:

>     --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
>     --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

NAME: my-nginx-ingress
LAST DEPLOYED: Fri May 14 17:43:27 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller'
...

Use el comando kubectl get services para obtener el valor de EXTERNAL-IP del servicio:

kubectl --namespace default get services -o wide -w my-nginx-ingress-ingress-nginx-controller

Por ejemplo, el siguiente comando muestra external-IP para el servicio my-nginx-ingress-ingress-nginx-controller:

NAME                                        TYPE           CLUSTER-IP   EXTERNAL-IP      PORT(S)                      AGE   SELECTOR
my-nginx-ingress-ingress-nginx-controller   LoadBalancer   10.98.53.215 <EXTERNAL-IP>    80:31553/TCP,443:30784/TCP   72s   app.kubernetes.io/component=controller,app.kubernetes.io/instance=my-nginx-ingress,app.kubernetes.io/name=ingress-nginx

Lista de versiones

Para ver una lista de las versiones instaladas en el clúster, use el comando helm list.

helm list

En el siguiente ejemplo se muestra la versión de my-nginx-ingress implementada en el paso anterior:

NAME                NAMESPACE    REVISION    UPDATED                                 STATUS      CHART                   APP VERSION
my-nginx-ingress    default      1           2021-05-14 17:43:27.1670709 +0000 UTC    deployed    nginx-ingress-3.30.0    0.46.0 

Limpieza de recursos

Al implementar un gráfico de Helm, se crean muchos recursos de Kubernetes. Estos recursos incluyen pods, implementaciones y servicios. Para limpiar estos recursos, use el comando helm uninstall y especifique el nombre de la versión, como se encuentra en el comando anteriorhelm list:

helm uninstall my-nginx-ingress

En la salida de ejemplo siguiente se muestra que se ha desinstalado la salida my-nginx-ingress :

release "my-nginx-ingress" uninstalled

Pasos siguientes

Para más información sobre cómo administrar las implementaciones de aplicaciones de Kubernetes con Helm, consulte la documentación de Helm.