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
Comprueba los Prerrequisitos específicos de la plataforma.
Instala el cliente de Helm, versión 3.6 o superior.
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.
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
(Opcional) Eliminar cualquier instalación del chart de la gateway de Istio:
$ helm delete istio-ingress -n istio-ingress $ kubectl delete namespace istio-ingress
Eliminar el chart de ztunnel:
$ helm delete ztunnel -n istio-system
Eliminar el chart de CNI de Istio:
$ helm delete istio-cni -n istio-system
Eliminar el chart del control plane de istiod:
$ helm delete istiod -n istio-system
Eliminar el chart base de Istio:
$ helm delete istio-base -n istio-system
Eliminar las CRD instaladas por Istio (opcional)
$ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete
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