Istio 三分鐘就入坑 佈署篇
Create GKE
1gcloud beta container --project "istio-playground-239810" clusters create "istio-playground" \
2 --zone "asia-east1-b" \
3 --username "admin" \
4 --cluster-version "1.11.8-gke.6" \
5 --machine-type "n1-standard-2" \
6 --image-type "COS" \
7 --disk-type "pd-standard" \
8 --disk-size "100" \
9 --preemptible \
10 --num-nodes "1" \
11 --enable-cloud-logging \
12 --enable-cloud-monitoring \
13 --no-enable-ip-alias \
14 --addons HorizontalPodAutoscaling,HttpLoadBalancing,KubernetesDashboard,Istio \
15 --istio-config auth=MTLS_PERMISSIVE \
16 --no-enable-autoupgrade \
17 --enable-autorepair
Take a Peek
1$ kubectl get namespaces
2
3NAME STATUS AGE
4default Active 2m
5istio-system Active 1m
6kube-public Active 2m
7kube-system Active 2m
8
9$ kubectl get po -n istio-system
10NAME READY STATUS RESTARTS AGE
11istio-citadel-7f6f77cd7b-nxfbf 1/1 Running 0 3m
12istio-cleanup-secrets-h454m 0/1 Completed 0 3m
13istio-egressgateway-7c56db84cc-nlrwq 1/1 Running 0 3m
14istio-galley-6c747bdb4f-45jrp 1/1 Running 0 3m
15istio-ingressgateway-6ff68cf95d-tlkq4 1/1 Running 0 3m
16istio-pilot-8ff66f8c4-q9chz 2/2 Running 0 3m
17istio-policy-69b78b7d6-c8pld 2/2 Running 0 3m
18istio-sidecar-injector-558996c897-hr6q4 1/1 Running 0 3m
19istio-telemetry-f96459fb-5cbpg 2/2 Running 0 3m
20promsd-ff878d44b-hv8nh 2/2 Running 1 3m
Deploy app
1kubectl label namespace default istio-injection=enabled
Bookinfo Application
1kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.1/samples/bookinfo/platform/kube/bookinfo.yaml
2
3kubectl get pods
4kubectl get services
Gateway
1kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.1/samples/bookinfo/networking/bookinfo-gateway.yaml
2
3kubectl get gateways
4
5kubectl get svc istio-ingressgateway -n istio-system
Go to ingress public ip
1export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
2export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
3export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
4
5curl -v ${INGRESS_HOST}:{$INGRESS_PORT}/productpage
6
7404 Not Found
Apply destination rules
1kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.1/samples/bookinfo/networking/destination-rule-all.yaml
2
3curl -v ${INGRESS_HOST}:{$INGRESS_PORT}/productpage
Brief review
1kubectl get virtualservices
2kubectl get destinationrules
3kubectl get gateways