เปเบเป Istio+Kiali เปเบเบทเปเบญเปเบเบตเบเบเบปเบง เปเบฅเบฐเบชเบฐเปเบเบเบเบฒเบเบเบฒเบเบเบณเปเบเป Canary

เบเบปเบเบเบงเบฒเบกเปเบเบเบธเบเบเบตเป
- (เบซเบปเบงโเบเปเปโเบเบตเป)
- เบเบฒเบเบเบณเปเบเป Canary เปเบเบเปเบเป Jenkins-X Istio Flagger
เบเบฒเบเบเบณเปเบเป Canary
เบเบงเบเปเบฎเบปเบฒเบซเบงเบฑเบเบงเปเบฒเบเปเบฒเบเบเบฐเบญเปเบฒเบ , เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบญเบฐเบเบดเบเบฒเบเบชเบฑเปเบเปเบงเปเบฒเบเบฒเบเบเปเบฒเปเบเป Canary เปเบกเปเบเบซเบเบฑเบเปเบฅเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบงเบเบกเบฑเบเปเบเบเปเบเปเบเบฑเบเบเบฐเบเบฒเบเบญเบ Kubernetes เบกเบฒเบเบเบฐเบเบฒเบ.
เบญเบดเบเบดเปเบญ
เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบชเบปเบกเบกเบธเบเบงเปเบฒเปเบเบเบเบฒเบเบญเปเบฒเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบฎเบนเปเปเบฅเปเบงเบงเปเบฒ Istio เปเบกเปเบเบซเบเบฑเบ. เบเปเบฒเบเปเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเปเบฝเบงเบเบฑเบเบกเบฑเบ .
เบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบปเบโเบชเบญเบโ

เปเบเปเบฅเบฐเบเบฑเบเบเบฐเบเบญเบเบเปเบงเบเบชเบญเบเบเบฑเบเบเบธ: เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบฅเบฐ istio-proxy.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบกเบต frontend-nginx เปเบฅเบฐ backend python pods. เบเบฑเบ nginx เบเบฝเบเปเบเปเบเบฐเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเปเบเปเบฅเบฐเบเปเบฒเบฎเปเบญเบเบเปเปเบเบซเบฒ backend pod เปเบฅเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบฑเบเบเบปเบงเปเบเบ. เบฅเบฒเบโเบฅเบฐโเบญเบฝเบโเบชเบฒโเบกเบฒเบโเบเบปเบโเปเบซเบฑเบโเบขเบนเปโเปเบ yamls เบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ:
เปเบฅเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบปเบงเบเปเบฒเบเปเบญเบ
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเบปเบงเบขเปเบฒเบเบเบญเบเบเปเบญเบเปเบฅเบฐเปเบเปเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเบเบปเบงเบเปเบฒเบเปเบญเบ, เปเบเบดเปเบ .
เบเบฒเบเบเบณเปเบเปเปเบเปเบเบทเปเบญเบเบเบปเปเบ
เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบง Deployment เบเบฑเปเบเบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบงเปเบฒ pods เบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฝเบเปเบเป 2 containers, เบเบฑเปเบเปเบกเปเบ, Istio sidecar เบเปเบฒเบฅเบฑเบเบเบทเบเบเบฐเบเบดเบเบฑเบ:

เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเบฑเบเปเบซเบฑเบ Istio Gateway Loadbalancer เปเบ namespace istio-system:

เบเบฒเบเบเบฐเบฅเบดเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ
เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเป IP เบเปเปเปเบเบเบตเปเปเบเบทเปเบญเบชเปเบฒเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบฎเบฑเบเปเบเบเบเบญเบเบซเบเปเบฒเบเปเบฒเบเบซเบเปเบฒเปเบฅเบฐเบชเบปเปเบเบเปเปเบเบฑเบ pods เบเปเบฒเบเบซเบฅเบฑเบ:
while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done
เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเปเบเบตเปเบก frontend.istio-test เบเบฑเบเปเบเบฅเปเปเบเบปเปเบฒเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เปเบเบดเปเบ Mesh เบเปเบฒเบ Kiali
เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบดเบเบเบฑเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐ Istio เบเปเบญเบกเบเบฑเบ Tracing, Grafana, Prometheus เปเบฅเบฐ Kiali (เปเบเบดเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ). ). เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป Kiali เบเปเบฒเบ:
istioctl dashboard kiali # admin:admin

Kiali เปเบเบดเปเบเปเบซเบฑเบเบชเบฐเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเปเบเบเบฐเบเบธเบเบฑเบเบเปเบฒเบ Mesh
เบเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, 100% เบเบญเบเบเบฒเบเบเบฒเบฅเบฐเบเบญเบเปเบเบซเบฒเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเปเบฒเบเบซเบเปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบซเบฒ pods frontend เบเบตเปเบกเบตเบเปเบฒเบ v1, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบเป nginx proxy เบเปเบฒเบเบเบฒเบเบเบตเปเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเบเบฒเบเบฎเปเบญเบเบเปเปเบเบซเบฒเบเปเบฅเบดเบเบฒเบ backend, เปเบเบดเปเบเปเบฎเบฑเบเปเบซเปเบเบงเบเปเบเบปเบฒเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบ backend pods. เบเบฑเบเบเปเบฒเบ v1.
Kiali เปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบตเบเบฑเบ Istio เปเบฅเบฐเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเปเปเบเบเบฒเบเบชเบฐเปเบเบเบเบปเบ Mesh เปเบเบเบเปเบญเบ. เบเบดเปเบเปเบซเบเป.
เบเบฒเบเบเบณเปเบเป Canary
backend เบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฒเบเบเบณเปเบเป k8s เบชเบญเบเบญเบฑเบเปเบฅเปเบง, เบญเบฑเบเปเบถเปเบเบชเบณเบฅเบฑเบ v1 เปเบฅเบฐเบญเบตเบเบญเบฑเบเปเบถเปเบเบชเบณเบฅเบฑเบ v2. เบเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเบญเบ Istio เปเบซเปเบชเบปเปเบเบเปเปเบญเบฑเบเบเบฒเบชเปเบงเบเบเบตเปเปเบเปเบเบญเบเบเบญเบเบเบฒเบเบฎเปเบญเบเบเปเปเบซเปเบเบฑเบ v2.
เบเบฑเปเบเบเบญเบเบเบต 1: 10%
เปเบฅเบฐเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเปเบฎเบฑเบเบเบทเบเบฒเบเบเบฑเบเบเปเปเบฒเบซเบเบฑเบเบเบญเบ VirtualService เปเบ :
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 เปเบเบเบเบฒเบเบชเบปเปเบ header:
![]()
เบเบฒเบเบฎเปเบญเบเบเปเบเบตเปเบเปเปเบกเบตเบชเปเบงเบเบซเบปเบงเบเบฐเบเบฑเบเบเบปเบเบเบทเบเบเบฑเบเปเบเบทเปเบญเบเปเบเบเบญเบฑเบเบเบฒเบชเปเบงเบ 1/10:

Canary เบชเปเบฒเบฅเบฑเบเบชเบญเบเบชเบฐเบเบฑเบเบเบตเปเบเบถเปเบเบเบฑเบ
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบกเบตเบชเบฐเบเบฑเบ v2 เบชเปเบฒเบฅเบฑเบเบเบฑเบ frontend เปเบฅเบฐ backend. เบชเปเบฒเบฅเบฑเบเบเบฑเบเบชเบญเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบงเปเบฒ 10% เบเบญเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบงเบเปเบเบซเบฒ v2:

เบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบงเปเบฒ frontend v1 เปเบฅเบฐ v2 เบเบฑเบเบชเบญเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเปเปเบซเบเปเบฒเปเบเบญเบฑเบเบเบฒเบชเปเบงเบ 1/10 เบเบฑเบ backend v1 เปเบฅเบฐ v2.
เบเบฐเปเบเบฑเบเปเบเบงเปเบเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบชเบปเปเบเบเปเปเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบฒเบ frontend-v2 เปเบเบซเบฒ backend-v2 เปเบเบปเปเบฒเบเบฑเปเบเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบ v1? เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเบเบปเบเบญเบฑเบเบเบฒเบชเปเบงเบ 1/10 เบชเปเบฒเบฅเบฑเบ frontend, เปเบเบดเปเบเบเบงเบเบเบธเบกเบชเบดเปเบเบเบตเปเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเปเบเบซเบฒ 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 เบเบนเปเบกเบท
ะ เบชเปเบงเบเบเปเบฒเบญเบดเบ เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเบฐโเบเบดโเบเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเป Canary เบเปเบงเบโเบเบปเบโเปเบญเบ, เบเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบชเบญเบ k8s. เบขเบนเปเบเบตเปเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบงเบเบเบธเบกเบญเบฑเบเบเบฒเบชเปเบงเบเบเบฒเบเบฎเปเบญเบเบเปเปเบเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเบฒเบเบงเบเบเบญเบ replicas. เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบ, เปเบเปเบกเบตเบเปเปเบเบปเบเบเปเบญเบเบเบตเปเบฎเปเบฒเบเปเบฎเบ.
Istio เปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเปเบฒเบเบปเบเบญเบฑเบเบเบฒเบชเปเบงเบเบเบญเบเบเบฒเบเบฎเปเบญเบเบเปเปเบเบเบเปเปเบเปเบฒเบเบถเบเปเบเบดเบเบเปเบฒเบเบงเบเบเบญเบ replicas. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป HPAs (Horizontal Pod Autoscalers) เปเบฅเบฐเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบ configured เบเบฒเบกเบชเบฐเบเบฒเบเบฐเบเบฐเบเบธเบเบฑเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเป Canary.
เบเบปเบเปเบเปเบฎเบฑเบ
Istio เปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบตเปเบฅเบฐเปเบเปเบกเบฑเบเบฎเปเบงเบกเบเบฑเบเบเบฑเบ Kiali เปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบ. เบเปเปเปเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบงเบฒเบกเบชเบปเบเปเบเบเบญเบเบเปเบญเบเปเบกเปเบเบเบฒเบเบฅเบงเบก Spinnaker เบเบฑเบ Istio เบชเปเบฒเบฅเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบฅเบฐเบเบฒเบเบงเบดเปเบเบฒเบฐ Canary.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com
