Instalar con Helm

Sigue esta guía para instalar y configurar un mesh de Istio usando Helm.

Los charts de Helm utilizados en esta guía son los mismos que se utilizan al instalar Istio a través de Istioctl, con la excepción del chart gateway.

Istioctl utiliza un chart de gateway diferente al chart de gateway descrito en esta guía.

Prerrequisitos

  1. Realiza cualquier configuración específica de la plataforma necesaria.

  2. Comprueba los Requisitos para Pods y Servicios.

  3. Instala el último cliente de Helm. Las versiones de Helm lanzadas antes de la versión de Istio más antigua actualmente compatible no están probadas, no son compatibles ni se recomiendan.

  4. Configura el repositorio de Helm:

$ helm repo add istio https://istio-release.storage.googleapis.com/charts
$ helm repo update

Pasos de instalación

Esta sección describe el procedimiento para instalar Istio usando Helm. La sintaxis general para instalación con helm es:

$ helm install <release> <chart> --namespace <namespace> --create-namespace [--set <other_parameters>]

Las variables especificadas en el comando son las siguientes:

  • <chart> Un camino a un chart empaquetado, un camino a un directorio de chart desempaquetado o una URL.
  • <release> Un nombre para identificar y gestionar el chart de Helm una vez instalado.
  • <namespace> El Namespace en el cual el chart debe ser instalado.

Los valores de configuración por defecto pueden ser cambiados usando uno o más argumentos --set <parámetro>=<valor>. Alternativamente, puedes especificar varios parámetros en un archivo de valores personalizados usando el argumento --values <archivo>.

  1. Instala el chart base de Istio que contiene las definiciones de recursos personalizados de nivel de cluster (CRDs) que deben ser instaladas antes de la implementación del plano de control de Istio:

    $ helm install istio-base istio/base -n istio-system --set defaultRevision=default --create-namespace
  2. Valida la instalación de CRDs con el comando helm ls:

    $ helm ls -n istio-system
    NAME       NAMESPACE    REVISION UPDATED                                 STATUS   CHART        APP VERSION
    istio-base istio-system 1        2024-04-17 22:14:45.964722028 +0000 UTC deployed base-1.29.0  1.29.0

    En la salida, localiza la entrada para istio-base y asegúrate de que el estado esté configurado a deployed.

  3. Si planeas usar el chart de Istio CNI, debes hacerlo ahora. Consulta Instalar Istio con el plugin CNI para más información.

  4. Instala el chart de discovery de Istio que implementa el servicio istiod:

    $ helm install istiod istio/istiod -n istio-system --wait
  5. Verifica la instalación del chart de discovery de Istio:

    $ helm ls -n istio-system
    NAME       NAMESPACE    REVISION UPDATED                                 STATUS   CHART         APP VERSION
    istio-base istio-system 1        2024-04-17 22:14:45.964722028 +0000 UTC deployed base-1.29.0   1.29.0
    istiod     istio-system 1        2024-04-17 22:14:45.964722028 +0000 UTC deployed istiod-1.29.0 1.29.0
  6. Obtén el estado del chart de helm instalado para asegurarte de que esté desplegado:

    $ helm status istiod -n istio-system
    NAME: istiod
    LAST DEPLOYED: Fri Jan 20 22:00:44 2023
    NAMESPACE: istio-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    "istiod" successfully installed!
    
    Para aprender más sobre la release, intenta:
      $ helm status istiod
      $ helm get all istiod
    
    Pasos siguientes:
      * Implementar un Gateway: https://istio.io/latest/docs/setup/additional-setup/gateway/
      * Prueba nuestras tareas para empezar con configuraciones comunes:
        * https://istio.io/latest/docs/tasks/traffic-management
        * https://istio.io/latest/docs/tasks/security/
        * https://istio.io/latest/docs/tasks/policy-enforcement/
        * https://istio.io/latest/docs/tasks/policy-enforcement/
      * Revisa la lista de releases soportados, publicaciones de CVE y nuestra guía de fortalecimiento:
        * https://istio.io/latest/docs/releases/supported-releases/
        * https://istio.io/latest/news/security/
        * https://istio.io/latest/docs/ops/best-practices/security/
    
    Para más documentación, consulta el sitio web de https://istio.io
    
    Cuéntanos cómo fue tu experiencia de instalación/actualización en https://forms.gle/99uiMML96AmsXY5d6
  7. Verifica que el servicio istiod se haya instalado correctamente y que sus pods estén corriendo:

    $ kubectl get deployments -n istio-system --output wide
    NAME     READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                         SELECTOR
    istiod   1/1     1            1           10m   discovery    docker.io/istio/pilot:1.29.0   istio=pilot
  8. (Opcional) Instala un gateway de entrada:

    $ kubectl create namespace istio-ingress
    $ helm install istio-ingress istio/gateway -n istio-ingress --wait

    Consulta Instalar Gateways para documentación detallada sobre la instalación del gateway.

Actualizar tu configuración de Istio

Puedes proporcionar configuraciones de sobrescritura específicas para cualquier chart de Helm de Istio usado anteriormente y sigue el flujo de actualización de Helm para personalizar tu instalación de meshde Istio. Las opciones configurables pueden ser encontradas usando helm show values istio/<chart>; por ejemplo helm show values istio/gateway.

Migrar de instalaciones no-Helm

Si estás migrando de una versión de Istio instalada usando istioctl a Helm (Istio 1.5 o anterior), necesitas eliminar los recursos actuales del plano de control de Istio y re-instalar Istio usando Helm tal como se describe anteriormente. Al eliminar la instalación actual de Istio, no debes eliminar las definiciones de recursos personalizados de Istio (CRDs) ya que eso puede llevar a la pérdida de tus recursos personalizados de Istio.

Puedes seguir los pasos mencionados en la Guía de desinstalación de istioctl.

Desinstalar

Puedes desinstalar Istio y sus componentes desinstalando los charts instalados anteriormente.

  1. Lista todos los charts de Istio instalados en el namespace istio-system:

    $ helm ls -n istio-system
    NAME       NAMESPACE    REVISION UPDATED                                 STATUS   CHART         APP VERSION
    istio-base istio-system 1        2024-04-17 22:14:45.964722028 +0000 UTC deployed base-1.29.0   1.29.0
    istiod     istio-system 1        2024-04-17 22:14:45.964722028 +0000 UTC deployed istiod-1.29.0 1.29.0
  2. (Opcional) Elimina cualquier instalación de charts de gateway de Istio:

    $ helm delete istio-ingress -n istio-ingress
    $ kubectl delete namespace istio-ingress
  3. Elimina el chart de discovery de Istio:

    $ helm delete istiod -n istio-system
  4. Elimina el chart base de Istio:

    $ helm delete istio-base -n istio-system
  5. Elimina el namespace istio-system:

    $ kubectl delete namespace istio-system

Desinstalar recursos de la etiqueta de revisión estable

Si decides continuar usando el plano de control anterior, en lugar de completar la actualización, puedes desinstalar la revisión más reciente y su etiqueta por primera vez helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags={prod-canary} --set revision=canary -n istio-system | kubectl delete -f -. Luego, debes desinstalar la revisión de Istio que apuntaba siguiendo el procedimiento de desinstalación anterior.

Si instalaste los gateways (s) para esta revisión usando actualizaciones in-place, también debes reinstalar los gateways (s) para la revisión anterior manualmente. La eliminación de la revisión anterior y sus etiquetas no revertirá automáticamente los gateways (s) previamente actualizados.

(Opcional) Eliminar CRDs instalados por Istio

La eliminación permanente de CRDs elimina cualquier recurso de Istio que hayas creado en tu cluster. Para eliminar CRDs de Istio instalados en tu cluster:

$ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete

Generar un manifiesto antes de la instalación

Puedes generar los manifiestos para cada componente antes de instalar Istio usando el subcomando helm template. Por ejemplo, para generar un manifiesto que puede ser instalado con kubectl para el componente istiod:

$ helm template istiod istio/istiod -n istio-system --kube-version {Kubernetes version of target cluster} > istiod.yaml

El manifiesto generado puede ser usado para inspeccionar exactamente qué está instalado así como para rastrear los cambios en el manifiesto a lo largo del tiempo.

Para instalar el manifiesto generado anteriormente, que creará el componente istiod en el cluster de destino:

$ kubectl apply -f istiod.yaml
¿Fue útil esta información?
¿Tienes alguna sugerencia para mejorar?

¡Gracias por tus comentarios!