Úvod
Praktickým způsobem správy mikroslužeb cloudové nativní aplikace je automatizace síťových funkcí aplikace.
Istio je konfigurovatelná servisní síťová platforma fungující jako řídicí rovina, která distribuuje konfiguraci do postranních serverů proxy a bran. Je to oblíbená možnost pro připojení, monitorování a zabezpečení kontejnerů v clusteru Kubernetes.
V tomto tutoriálu se naučíte, jak nainstalovat Istio, nasadit testovací aplikaci a nastavit cluster Kubernetes pro práci s platformou.

Předpoklady
- Cluster Kubernetes (nebo minikube)
- nástroj příkazového řádku kubectl
Stáhněte si nejnovější verzi Istio
Chcete-li si stáhnout nejnovější verzi Istio, přejděte na stránku vydání Istio na GitHubu.
Alternativně mohou uživatelé Linuxu použít curl
pro automatické stažení a extrahování nejnovější verze:
curl -L https://istio.io/downloadIstio | sh -
Příkaz rozbalí instalační soubory do složky s názvem istio-[version]
:

Chcete-li stáhnout starší verzi Istio, použijte curl
, ale určete verzi a architekturu procesoru pomocí následující syntaxe:
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh -
Instalační příručka Istio
1. Spusťte svůj cluster Kubernetes. Tento článek používá minikube:
minikube start
2. Dále spusťte instalaci Istio přesunutím se do složky s extrahovanými soubory:
cd istio-1.9.2
3. bin/
adresář obsahuje istioctl
klient binární. V Linuxu přidejte klienta do cesty zadáním:
export PATH=$PWD/bin:$PATH
Takto nastavená proměnná trvá pouze do ukončení aktuální relace shellu. Chcete-li nastavit proměnnou trvale, přečtěte si, jak nastavit proměnné prostředí v Linuxu.
4. Použijte istioctl
nástroj pro zahájení procesu instalace:
istioctl install --set profile=demo -y
Výstup potvrzuje úspěšnou instalaci:

5. Istio může po nasazení aplikace automaticky injektovat postranní proxy Envoy. Chcete-li to povolit, použijte kubectl
pro přidání jmenného prostoru obsahujícího tuto instrukci:
kubectl label namespace default istio-injection=enabled

Tím je instalační proces Istio ukončen.
Test nasazení prostřednictvím aplikace Bookinfo
Instalační archiv Istio obsahuje všechny soubory potřebné k nasazení ukázkové aplikace s názvem Bookinfo .
1. Začněte použitím souboru bookinfo.yaml
soubor pomocí kubectl
:
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Systém vytvoří několik nasazení, služeb a modulů:

2. Zkontrolujte běžící služby:
kubectl get services

3. Zkontrolujte, zda jsou pody připraveny:
kubectl get pods
Když se moduly zvednou, Istio s nimi nasadí postranní vozíky:

4. Počkejte, dokud se nezobrazí READY
štítek pro každý pod je 2/2
. Poté spusťte následující příkaz, abyste zjistili, zda aplikace správně zobrazuje stránky HTML:
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o ""
Výstupem by měla být značka title stránky spolu se samotným názvem:

5. Dalším krokem je otevření aplikace pro vnější provoz. Použijte bookinfo-gateway.yaml
soubor ze samples
složka:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
Výstup potvrzuje, že aplikace byla úspěšně spojena s bránou Istio:

6. Použijte istioctl
analyzovat konfiguraci a zkontrolovat potenciální problémy:
istioctl analyze
Pokud systém nenalezne žádné problémy, zobrazí se následující zpráva:

7. Pro přístup k bráně nastavené v předchozím kroku nastavte vstupní proměnné. Nejprve exportujte INGRESS_PORT
:
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
8. Nyní zopakujte postup pro SECURE_INGRESS_PORT
:
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
9. Pomocí příkazu echo zkontrolujte, zda byly porty úspěšně přiřazeny:
echo "$INGRESS_PORT" && echo "$SECURE_INGRESS_PORT"
Výstup zobrazuje čísla portů:

10. Exportujte INGRESS_HOST
proměnná:
export INGRESS_HOST=$(minikube ip)
11. Zkontrolujte proměnnou pomocí echo
:
echo "$INGRESS_HOST"

12. Chcete-li nasměrovat provoz na Istio Ingress Gateway, otevřete nové okno terminálu a zadejte následující příkaz:
minikube tunnel
Minikube nyní slouží jako load balancer pro Istio. Výstup ukazuje provoz minikube:

13. Vraťte se do předchozího okna terminálu a exportujte GATEWAY_URL
proměnná, která se skládá z INGRESS_HOST
a INGRESS_PORT
proměnné:
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
14. Použijte echo
zobrazíte celou IP adresu a číslo portu:
echo "$GATEWAY_URL"

15. Pro zobrazení externí adresy aplikace zadejte následující příkaz:
echo http://$GATEWAY_URL/productpage

16. Zkopírujte adresu získanou v předchozím kroku a vložte ji do webového prohlížeče. Web Bookinfo se úspěšně načte:

Nastavte cluster Kubernetes pro Istio
Istio přichází s řadou doplňků pro oblíbené služby Istio, jako je řídicí panel Grafana, software pro sledování transakcí Jaeger, škrabka metrik Prometheus a konzola pro správu Kiali.
1. Nainstalujte tyto doplňky použitím samples/addons
složka:
kubectl apply -f samples/addons

2. Nyní vytvořte zdroj Kubernetes Ingress pro každý z doplňků. To provedete vložením následujícího textu do yaml
soubor.
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: istio-system
namespace: istio-system
annotations:
kubernetes.io/ingress.class: istio
spec:
rules:
- host: my-istio-dashboard.io
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: grafana
servicePort: 3000
- host: my-istio-tracing.io
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: tracing
servicePort: 9411
- host: my-istio-logs-database.io
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: prometheus
servicePort: 9090
- host: my-kiali.io
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: kiali
servicePort: 20001
3. Uložte soubor a použijte konfiguraci pomocí kubectl:
kubectl apply -f [file-name]

Doplňky jsou nyní nakonfigurovány a připraveny k použití.