Com instal·lar Istio a Kubernetes?
Soc Òscar Mas i avui m'agradaria ensenyar-vos les diferents formes que tenim per instal·lar Istio.
Si no coneixeu Istio, us recomano el nostre anterior post sobre Istio, en el qual vam explorar les diferents possibilitats i l'ecosistema de Istio. Vam parlar de molts conceptes com el Service Mesh, el mTLS i l'observabilitat. Però, un cop sabem què és, la pregunta següent que ens fem, és: com posem Istio en marxa?
Istio és una eina robusta i, per tant, ofereix diversos camins per a la seva instal·lació. Avui ens centrarem en els dos mètodes d'instal·lació:
- Instal·lació del binari istioctl.
- La instal·lació via Helm, el gestor de paquets per excel·lència de Kubernetes.
Perfils d’Istio: quin escollir?
És important saber que dins de l'ecosistema d'Istio, existeixen els perfils de configuració que són plantilles predefinides, que permeten personalitzar quins components s'instal·laran. Us deixo una taula que us ajudarà a triar el millor perfil pels vostres casos d'ús.
Component | default | demo | minimal | remote | empty | ambient |
istiod | ✔ | ✔ | ✔ | ✘ | ✘ | ✔ |
istio-egressgateway | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ |
istio-ingressgateway | ✔ | ✔ | ✘ | ✘ | ✘ | ✔ |
istio-cni | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ |
ztunnel | ✘ | ✘ | ✘ | ✘ | ✘ | ✔ |
Per posar un parell d'exemples, si volem instal·lar istio per producció, el més recomanat és fer servir el perfil de "default", però si volem aprendre el funcionament o simplement fer una demostració, escollirem el perfil "demo"
Instal·lació d'Istio amb el binari istioctl
En aquest apartat explicarem com instal·lar Istio, fent servir la descàrrega del binari. Aquest binari no només serveix per instal·lar el Istio, sinó que és una eina indispensable per depurar, verificar l'estat del clúster i gestionar les configuracions.
A partir d'aquí tenim dues possibilitats d'instal·lació:
- Fer servir el script automatitzat que ens facilita Istio
- Descarregar-nos el binari istioctl
Script automatitzat
En aquest cas, utilitzarem un script automatitzat que ens facilita el projecte oficial. Des del nostre terminal, executem:
$ curl -L https://istio.io/downloadIstio | sh -
Aquesta comanda descarregarà la versió més recent compatible amb el nostre sistema operatiu.
Binari istioctl
El mètode d'instal·lació de Isito amb el binari, és ideal si busques un control directe i una configuració basada en perfils, els quals els hem explicat anteriorment.
El primer que hem de fer és descarregar-nos el binari i abans de res, verifica que el teu clúster de Kubernetes compleix els requisits:
$ istioctl x precheck
Per a un entorn estàndard, el perfil default és el més equilibrat. Instal·la el control plane (Istiod) i l'Ingress Gateway:
$ istioctl install --set profile=default -y
Aquest mètode és fantàstic perquè el binari genera automàticament els recursos necessaris al clúster.
Instal·lació d'Istio amb Helm
Si treballes en un entorn de producció on ja utilitzes Helm per gestionar el que tens instal·lat al teu clúster de Kubernetes, aquesta és la millor opció.
Quan instal·lem Istio mitjançant Helm, dividim la infraestructura en dues peces clau que tenen responsabilitats totalment diferents:
- El Control Plane: Istiod (Istio Daemon). Aquest component, s'encarrega de la gestió de la configuració, la propagació de polítiques de seguretat (com el mTLS) i la gestió de certificats.
- Istio Gateway. És el punt d'entrada a la infraestructura, agafa en trafic extern al clúster i el redirigeix contra l'interior del clúster de Kubernetes.
- La base (CRD). És un afegit a l'API de Kubernetes que serveix per "ensenyar-li" nous d'objectes. Recordeu que Kubernetes sap que es un deployment o un servei, pero no sap que es un VirtualService, amb aquest componen li ensenyem a Kubernetes que es un VirtualService
Primer, afegim el repositori oficial d'Istio i l'actualitzem:
$ helm repo add istio https://istio-release.storage.googleapis.com/charts $ helm repo update
Istio es basa en Custom Resource Definitions (CRDs). Aquests defineixen els nous objectes que Kubernetes entendrà (com VirtualServices o Gateways). És molt important instal·lar-los primer:
$ helm install istio-base istio/base -n istio-system --create-namespace
L'Istiod és el cervell de l'operació; gestiona la configuració dels proxys Envoy que s'injectaran als teus pods (recordeu que no farem servir eBFP) i el Ingress Gateway:
$ helm install istiod istio/istiod -n istio-system --wait
$ helm install istio-ingress istio/gateway -n istio-system --wait
Verificacions després de la instal·lació
Un cop acabat la instal·lació, tant sigui amb binari o amb Helm, és important verificar que tot s'ha instal·lat correctament. El primer pas, és revisar que els components s'estan executant correctament en el namespace:
$ kubectl get pods -n istio-system
Si has optat per descarregar el binari istioctl, tens a la teva disposició una eina de diagnòstic molt potent. Pots demanar-li a Istio que analitzi la seva pròpia instal·lació: de la següent manera:
$ istioctl verify-install
Tant si optes per la flexibilitat de Helm com per la simplicitat del binari, l'important és que ara el teu clúster té "veles". Estàs preparat per implementar polítiques de seguretat avançades, fer desplegaments Canary i tenir una visibilitat total del que passa entre els teus microserveis, això i moltes més coses les veurem en següents posts.