Instalar con Helm

Recomendamos el uso de Helm para instalar Istio para uso en producción en modo ambient. Para permitir actualizaciones controladas, los componentes del control plane y del data plane se empaquetan e instalan por separado. (Debido a que el data plane ambient se divide en dos componentes, el ztunnel y los waypoints, las actualizaciones implican pasos separados para estos componentes).

Prerrequisitos

  1. Comprueba los Prerrequisitos específicos de la plataforma.

  2. Instala el cliente de Helm, versión 3.6 o superior.

  3. Configura el repositorio de Helm:

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

Instalar el control plane

Los valores de configuración predeterminados se pueden cambiar usando uno o más argumentos --set <parameter>=<value>. Alternativamente, puedes especificar varios parámetros en un archivo de valores personalizado usando el argumento --values <file>.

Los detalles completos sobre cómo usar y personalizar las instalaciones de Helm están disponibles en la documentación de instalación de sidecar.

A diferencia de los perfiles de istioctl, que agrupan los componentes que se instalarán o eliminarán, los perfiles de Helm simplemente establecen grupos de valores de configuración.

Componentes base

El chart base contiene las CRD básicas y los roles de cluster necesarios para configurar Istio. Esto debe instalarse antes que cualquier otro componente de Istio.

$ helm install istio-base istio/base -n istio-system --create-namespace --wait

Instalar o actualizar las CRD de la API de Gateway de Kubernetes

Ten en cuenta que las CRD de la API de Gateway de Kubernetes no vienen instaladas por defecto en la mayoría de los clusteres de Kubernetes, así que asegúrate de que estén instaladas antes de usar la API de Gateway:

$ kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
  kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/standard-install.yaml

control plane istiod

El chart istiod instala una revisión de Istiod. Istiod es el componente del control plane que gestiona y configura los proxies para enrutar el tráfico dentro de la malla.

$ helm install istiod istio/istiod --namespace istio-system --set profile=ambient --wait

Agente de nodo CNI

El chart cni instala el agente de nodo CNI de Istio. Es responsable de detectar los pods que pertenecen a la malla ambient y de configurar la redirección del tráfico entre los pods y el proxy de nodo ztunnel (que se instalará más adelante).

$ helm install istio-cni istio/cni -n istio-system --set profile=ambient --wait

Instalar el data plane

DaemonSet de ztunnel

El chart ztunnel instala el DaemonSet de ztunnel, que es el componente de proxy de nodo del modo ambient de Istio.

$ helm install ztunnel istio/ztunnel -n istio-system --wait

gateway de entrada (opcional)

Para instalar una gateway de entrada, ejecuta el siguiente comando:

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

Si tu cluster de Kubernetes no admite el tipo de servicio LoadBalancer (type: LoadBalancer) con una IP externa adecuada asignada, ejecuta el comando anterior sin el parámetro --wait para evitar la espera infinita. Consulta Instalación de gateways para obtener documentación detallada sobre la instalación de gateways.

Configuración

Para ver las opciones de configuración admitidas y la documentación, ejecuta:

$ helm show values istio/istiod

Verificar la instalación

Verificar el estado de el workload

Después de instalar todos los componentes, puedes verificar el estado del despliegue de Helm con:

$ 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.27.0     1.27.0
istio-cni       istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    cni-1.27.0      1.27.0
istiod          istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    istiod-1.27.0   1.27.0
ztunnel         istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    ztunnel-1.27.0  1.27.0

Puedes verificar el estado de los pods desplegados con:

$ kubectl get pods -n istio-system
NAME                             READY   STATUS    RESTARTS   AGE
istio-cni-node-g97z5             1/1     Running   0          10m
istiod-5f4c75464f-gskxf          1/1     Running   0          10m
ztunnel-c2z4s                    1/1     Running   0          10m

Verificar con la aplicación de ejemplo

Después de instalar el modo ambient con Helm, puedes seguir la guía Desplegar la aplicación de ejemplo para desplegar la aplicación de ejemplo y las gateways de entrada, y luego puedes agregar tu aplicación a la malla ambient.

Desinstalar

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

  1. Listar todos los charts de Istio instalados enel 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.27.0     1.27.0
    istio-cni       istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    cni-1.27.0      1.27.0
    istiod          istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    istiod-1.27.0   1.27.0
    ztunnel         istio-system    1           2024-04-17 22:14:45.964722028 +0000 UTC deployed    ztunnel-1.27.0  1.27.0
  2. (Opcional) Eliminar cualquier instalación del chart de la gateway de Istio:

    $ helm delete istio-ingress -n istio-ingress
    $ kubectl delete namespace istio-ingress
  3. Eliminar el chart de ztunnel:

    $ helm delete ztunnel -n istio-system
  4. Eliminar el chart de CNI de Istio:

    $ helm delete istio-cni -n istio-system
  5. Eliminar el chart del control plane de istiod:

    $ helm delete istiod -n istio-system
  6. Eliminar el chart base de Istio:

    $ helm delete istio-base -n istio-system
  7. Eliminar las CRD instaladas por Istio (opcional)

    $ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete
  8. Eliminarel namespace istio-system:

    $ kubectl delete namespace istio-system

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 se pueda instalar con kubectl para el componente istiod:

$ helm template istiod istio/istiod -n istio-system --kube-version {Versión de Kubernetes del cluster de destino} > istiod.yaml

El manifiesto generado se puede usar para inspeccionar qué se instala exactamente, así como para realizar un seguimiento de 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!