Istio+Kiali-แแก แแแแแงแแแแแ แแแแแ แแก แแแแแแแแแแก แแแกแแฌแงแแแแ แแ แแแแฃแแแแแแชแแแกแแแแก
แกแขแแขแแแแ แแ แกแแ แแแก
แแแแแ แแก แแแแแแแแแ Kubernetes #1-แจแ: Gitlab CI แแแแแ แแก แแแแแแแแแ Kubernetes #2: Argo Rollouts - (แฒแก แแ แขแแแแ)
- แแแแแ แแก แแแแแแแแแ Jenkins-X Istio Flagger-แแก แแแแแงแแแแแแ
แแแแแ แแก แแแแแแแแแ
แแแแแแแแแแแ, แ แแ แฌแแแแแแฎแแแ
แแกแขแแ
แแ แฉแแแ แแแแ แแฃแแแแ, แ แแ แแ แกแขแแขแแแก แฌแแแแแฎแแแ แแฅแแแ แฃแแแ แแชแแ แ แ แแ แแก แแกแขแแ. แแฃ แแ แ, แแแจแแ แจแแแแซแแแแ แฌแแแแแแฎแแ แแแแก แจแแกแแฎแแ
แแแแแชแฎแแแ แขแแกแขแแแแกแแแแก
แแแแแแฃแแ แแแแ แจแแแชแแแก แแ แแแแขแแแแแ แก: แฉแแแแก แแแแแแแชแแแก แแ istio-proxy-แก.
แฉแแแ แแแแแแแงแแแแแ แแแ แขแแ แกแแขแแกแขแ แแแแแแแชแแแก frontend-nginx แแ backend python pods-แแ. nginx pod แฃแแ แแแแ แแแแแแแกแแแแ แแแแก แแแแแแฃแ แแแแฎแแแแแก backend pod-แแ แแ แแแฃแจแแแแแก แ แแแแ แช แแ แแฅแกแ. แแแขแแแแแ แจแแแแซแแแแ แแฎแแแแ แจแแแแแ แแแแแแแจแ:
แแแแแ แแแฃแจแแแ แกแแขแแกแขแ แแแแแแแชแแ
แแฃ แแกแฃแ แ แแแแแซแแ แฉแแแก แแแแแแแแก แแ แแแแแ แแแแแแงแแแแ แแก แกแแขแแกแขแ แแแแแแแชแแ, แแฎแแแแ
แกแแฌแงแแกแ แแแแแแแแแ
แ แแแแกแแช แฉแแแ แแแฌแงแแแ แแแ แแแ แแแแแแแแแแก, แแฎแแแแแ, แ แแ แฉแแแแ แแแแแแแชแแแก แแแแแแก แแฎแแแแ 2 แแแแขแแแแแ แ แแฅแแ, แแแฃ Istio sidecar แแฎแแแฎแแ แแแแแ แแแแแ:
แฉแแแ แแกแแแ แแฎแแแแแ Istio Gateway Loadbalancer แกแแฎแแแแแแก แกแแแ แชแแจแ istio-system
:
แขแ แแคแแแแก แแแแแ แแชแแ
แฉแแแ แแแแแแแงแแแแแ แจแแแแแ IP-แก แขแ แแคแแแแก แแแแแ แแ แแแแกแแแแก, แ แแแแแแช แแแแฆแแแ แฌแแแ แแแฌแแแแก แแแแ แแ แแแแแแแกแแแแ แแแแแ แฃแแแแ แแแแงแแคแแแแแแแจแ:
while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done
แฉแแแแช แแแแแแแขแแแ frontend.istio-test
แฉแแแแก แแแกแแแแซแแแแแก แคแแแแจแ.
แแแแแก แแแฎแแ แแแแแแก แแแแแแ
แฉแแแ แแแแแแแกแขแแแแ แแ แกแแขแแกแขแ แแแแแแแชแแ แแ แแกแขแแ Tracing-แแแ, Grafana-แกแแแ, Prometheus-แแแ แแ Kiali-แกแแแ แแ แแแ (แแแฌแแ แแแแแแ แแฎแแแแ แฅแแแแแ).
istioctl dashboard kiali # admin:admin
Kiali แแกแแฎแแแก แแแแแแแแ แ แขแ แแคแแแก Mesh-แแก แแแจแแแแแแ
แ แแแแ แช แแฎแแแแแ, แขแ แแคแแแแก 100% แแแแแก แคแ แแแขแแแแแก แกแแ แแแกแแ, แจแแแแแ แคแ แแแขแแแแแก แแแแแแแ แแแแแแแ v1, แ แแแแแ แฉแแแ แแแงแแแแแ แแแ แขแแ nginx แแ แแฅแกแแก, แ แแแแแแช แแแแแแแกแแแแ แแแแก แแแแฎแแแแแแก backend แกแแ แแแกแแ, แ แแช แแแแแก แแฎแ แแ แแแแแแแกแแแแ แแแแก แแแ backend-แแก แแแแแแแ. แแแแแแแ v1.
Kiali แแจแแแแแแ แแ แแฃแจแแแแก Istio-แกแแแ แแ แฃแแ แฃแแแแแงแแคแก แงแฃแแจแ Mesh-แแก แ แแแแแ แแ แแแแก แแแแแฌแงแแแขแแก. แฃแแ แแแแ แแแแ.
แแแแแ แแก แแแแแแแแแ
แฉแแแแก backend-แก แฃแแแ แแฅแแก แแ แ k8s แแแแแแแแแ, แแ แแ v1-แแกแแแแก แแ แแ แแ v2-แแกแแแแก. แแฎแแ แฉแแแ แฃแแ แแแแ แฃแแแ แแฃแแฎแ แแ Istio-แก, แ แแ แแแแแแแแแแแแก แแแแฎแแแแแแแก แแแ แแแแฃแแ แแ แแชแแแขแ v2-แแ.
แแแแแฏแ 1: 10%
แแ แงแแแแแคแแ แ แ แแช แฉแแแ แฃแแแ แแแแแแแแแ แแ แแก แแแ แขแฃแแแฃแ แ แกแแ แแแกแแก แฌแแแแก แแแ แแฅแขแแ แแแ
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: backend
namespace: default
spec:
gateways: []
hosts:
- "backend.default.svc.cluster.local"
http:
- match:
- {}
route:
- destination:
host: backend.default.svc.cluster.local
subset: v1
port:
number: 80
weight: 90
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 10
แฉแแแ แแฎแแแแแ, แ แแ แแแแฎแแแแแแแก 10% แแแแแแแกแแแแ แแแแฃแแแ v2-แแ.
แแแแแฏแ 2: 50%
แแฎแแ แแ แกแแแแแ แแกแแ แแแกแ แแแแ แแ 50%-แแแ:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: backend
namespace: default
spec:
...
- destination:
host: backend.default.svc.cluster.local
subset: v1
port:
number: 80
weight: 50
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 50
แแแแแฏแ 3: 100%
แแฎแแ Canary แแแแแแแแแ แจแแแซแแแแ แฉแแแแแแแแก แแแกแ แฃแแแแฃแแแ แแ แแแแแ แขแ แแคแแแ แแแแแแแกแแแแ แแแแฃแแแ v2-แแ:
Canary แขแแกแขแแ แแแ แฎแแแแ
แแแฅแแแ, แฉแแแ แแฎแแ แงแแแแ แแแแฎแแแแแก 2%-แก แแฃแแแแแแแ v10 backend-แแ. แ แ แแแฎแแแแ, แแฃ แแแกแฃแ แก แฎแแแแ แจแแแแแแฌแแแ v2, แ แแแ แแแแ แฌแแฃแแแแ, แ แแ แงแแแแแคแแ แ แแกแ แแฃแจแแแแก, แ แแแแ แช แฉแแแ แแแแแแแ?
แฉแแแ แจแแแแแซแแแ แแแแแแแขแแ แกแแแชแแแแฃแ แ แจแแกแแขแงแแแกแ แฌแแกแ HTTP แกแแแแฃแ แแแแ แแแงแ แแแแแแ:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: backend
namespace: default
spec:
gateways: []
hosts:
- "backend.default.svc.cluster.local"
http:
- match:
- headers:
canary:
exact: "canary-tester"
route:
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 100
- match:
- {}
route:
- destination:
host: backend.default.svc.cluster.local
subset: v1
port:
number: 80
weight: 90
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 10
แแฎแแ curl-แแก แแแแแงแแแแแแ แจแแแแแซแแแ แแแแซแฃแแแ v2 แแแแฎแแแแ แกแแแแฃแ แแก แแแแแแแแแ:
แแแแฎแแแแแแ แกแแแแฃแ แแก แแแ แแจแ แแแแแช แแแแแแ แแแแแฃแแ แแฅแแแแ 1/10 แแแแแคแแ แแแแแ:
แแแแแ แแก แแ แ แแแแแแแแแแฃแแ แแแ แกแแแกแแแแก
แแฎแแ แฉแแแ แแแแแแฎแแแแแ แแแ แแแแขแก, แกแแแแช แแแแฅแแก แแแ แกแแ v2 แ แแแแ แช แคแ แแแขแแแขแแกแแแแก, แแกแแแ แฃแแแแ แแแฌแแแแกแแแแก. แแ แแแแกแแแแก แฉแแแ แแแแแแฃแกแขแแ, แ แแ แขแ แแคแแแแก 10% แฃแแแ แฌแแแแแแก v2-แแ:
แฉแแแ แแฎแแแแแ, แ แแ frontend v1 แแ v2 แแ แแแ แฌแแแ แขแ แแคแแแ 1/10 แแแแแคแแ แแแแแ backend v1 แแ v2.
แ แ แแแฎแแแแ, แแฃ แแแญแแ แแแแแแ แขแ แแคแแแแก แแแแแแแแแแ frontend-v2-แแแ แแฎแแแแ backend-v2-แแ, แ แแแแแ แแก แแ แแ แแก แแแแกแแแแแ v1-แแแ? แแแแกแแแแแก แฉแแแ แแแแแงแแแแแ 1/10 แแแแแคแแ แแแแแก แคแ แแแขแแแแแกแแแแก, แ แแแแแแช แแแแแขแ แแแแแก แ แ แขแ แแคแแแ แแแฎแแแแแ backend-v2-แจแ แแแแแแแ แแแแแแก แแแแแงแแแแแแ. sourceLabels
:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: backend
namespace: default
spec:
gateways: []
hosts:
- "backend.default.svc.cluster.local"
http:
...
- match:
- sourceLabels:
app: frontend
version: v2
route:
- destination:
host: backend.default.svc.cluster.local
subset: v2
port:
number: 80
weight: 100
แจแแแแแแ, แฉแแแ แแแฆแแแ แแแแก, แ แแช แแแญแแ แแแแ:
แแแแกแฎแแแแแแแแ แกแแฎแแแแซแฆแแแแแแ แแแแแ แแก แแแแแแแแกแแแ
ะ แแแ แแแแ แแแฌแแแ แฉแแแ แจแแแแกแ แฃแแแ Canary แแแแแแแแแ แฎแแแแ, แแกแแแ แแ แ k8-แแก แแแแแแแแแแก แแแแแงแแแแแแ. แแฅ แฉแแแ แแแแแแขแ แแแแแแแ แแแแฎแแแแแแแก แแแแแคแแ แแแแแก แ แแแแแแแแแก แ แแแแแแแแแก แจแแชแแแแ. แแก แแแแแแแ แแฃแจแแแแก, แแแแ แแ แแฅแแก แกแแ แแแแฃแแ แแแแแแแแแแแแแ.
Istio แจแแกแแซแแแแแแก แฎแแแก แแแแฎแแแแแก แแแแแคแแ แแแแแก แแแแกแแแฆแแ แแก แ แแแแแแแแแก แ แแแแแแแแแก แแแฃแฎแแแแแแ. แแก แแแจแแแแก, แแแแแแแแแ, แ แแ แฉแแแ แจแแแแแซแแแ แแแแแแแงแแแแ HPA (Horizontal Pod Autoscalers) แแ แแ แแแญแแ แแแแ แแแแคแแแฃแ แแชแแ แแแแแ แแก แแแแแแแแแแก แแแแแแแแแแแ แแแแแแแ แแแแแก แแแฎแแแแแ.
แกแฃแ
Istio แแจแแแแแแ แแ แแฃแจแแแแก แแ แแแกแ Kiali-แแแ แแ แแแ แแแแแงแแแแแ แฅแแแแก แซแแแแแ แซแแแแ แแแแแแแแชแแแก. แจแแแแแแ แฉแแแ แแแขแแ แแกแแแแก แกแแแจแ แแ แแก Spinnaker-แแก แแแแ แแแแแแแ Istio-แกแแแ แแแขแแแแขแแแแชแแแกแแแแก แแ แแแแแ แแก แแแแแแขแแแแกแแแแก.
แฌแงแแ แ: www.habr.com