แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

Istio+Kiali-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒ› แƒกแƒ”แƒ แƒ˜แƒ˜แƒก

  1. แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ Kubernetes #1-แƒจแƒ˜: Gitlab CI
  2. แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ Kubernetes #2: Argo Rollouts
  3. (แฒ”แƒก แƒแƒ แƒขแƒ˜แƒ™แƒšแƒ˜)
  4. แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ Jenkins-X Istio Flagger-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ

แƒ•แƒ˜แƒ›แƒ”แƒ“แƒแƒ•แƒœแƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ•แƒ— แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜, แƒกแƒแƒ“แƒแƒช แƒ›แƒแƒ™แƒšแƒ”แƒ“ แƒแƒ•แƒฃแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒ แƒ แƒแƒ แƒ˜แƒก Canary-แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ“แƒ แƒ•แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ— แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒ˜แƒกแƒ˜แƒœแƒ˜ Kubernetes-แƒ˜แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ˜แƒกแƒขแƒ˜แƒ

แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒ—, แƒ แƒแƒ› แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒ— แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ˜แƒชแƒ˜แƒ— แƒ แƒ แƒแƒ แƒ˜แƒก แƒ˜แƒกแƒขแƒ˜แƒ. แƒ—แƒฃ แƒแƒ แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒแƒฅ.

แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒžแƒแƒ“แƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒแƒ  แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก: แƒฉแƒ•แƒ”แƒœแƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก แƒ“แƒ istio-proxy-แƒก.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก frontend-nginx แƒ“แƒ backend python pods-แƒ˜แƒ—. nginx pod แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก backend pod-แƒ–แƒ” แƒ“แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒžแƒ แƒแƒฅแƒกแƒ˜. แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒแƒ›แƒšแƒ”แƒ‘แƒจแƒ˜:

แƒ—แƒแƒ•แƒแƒ“ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ

แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ›แƒ˜แƒ‘แƒแƒซแƒแƒ— แƒฉแƒ”แƒ›แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ”แƒก แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”.

แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒแƒก, แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒแƒ“แƒ”แƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ 2 แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ แƒแƒฅแƒ•แƒ—, แƒแƒœแƒฃ Istio sidecar แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ:

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— Istio Gateway Loadbalancer แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜ istio-system:

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒชแƒ˜แƒ

แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ 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-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ (แƒ“แƒแƒฌแƒ•แƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒฅแƒ•แƒ”แƒ›แƒแƒ—). แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”). แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— Kiali แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ’แƒ–แƒ˜แƒ—:

istioctl dashboard kiali # admin:admin

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

Kiali แƒแƒกแƒแƒฎแƒแƒ•แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒขแƒ แƒแƒคแƒ˜แƒ™แƒก Mesh-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—

แƒ แƒแƒ’แƒแƒ แƒช แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก 100% แƒ›แƒ˜แƒ“แƒ˜แƒก แƒคแƒ แƒแƒœแƒขแƒ”แƒœแƒ“แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ–แƒ”, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒคแƒ แƒแƒœแƒขแƒ”แƒœแƒ“แƒ˜แƒก แƒžแƒแƒ“แƒ”แƒ‘แƒ–แƒ” แƒšแƒ”แƒ˜แƒ‘แƒšแƒ˜แƒ— v1, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ• nginx แƒžแƒ แƒแƒฅแƒกแƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก backend แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ–แƒ”, แƒ แƒแƒช แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ• แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒก แƒ›แƒแƒ— backend-แƒ˜แƒก แƒžแƒแƒ“แƒ”แƒ‘แƒ–แƒ”. แƒšแƒ”แƒ˜แƒ‘แƒšแƒ˜แƒ— v1.

Kiali แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ•แƒ แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ“แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒงแƒฃแƒ—แƒจแƒ˜ Mesh-แƒ˜แƒก แƒ แƒ”แƒœแƒ“แƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒแƒก. แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜.

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ

แƒฉแƒ•แƒ”แƒœแƒก backend-แƒก แƒฃแƒ™แƒ•แƒ” แƒแƒฅแƒ•แƒก แƒแƒ แƒ˜ k8s แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ, แƒ”แƒ แƒ—แƒ˜ v1-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ”แƒ แƒ—แƒ˜ v2-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ•แƒฃแƒ—แƒฎแƒ แƒแƒ— Istio-แƒก, แƒ แƒแƒ› แƒ’แƒแƒ“แƒแƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒœแƒขแƒ˜ v2-แƒ–แƒ”.

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 1: 10%

แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒแƒ— แƒแƒ แƒ˜แƒก แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒฌแƒแƒœแƒ˜แƒก แƒ™แƒแƒ แƒ”แƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ istio.yaml:

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

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก 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: แƒ˜แƒกแƒขแƒ˜แƒ

แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ 3: 100%

แƒแƒฎแƒšแƒ Canary แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ˜แƒ—แƒ•แƒแƒšแƒแƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒ“แƒ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ v2-แƒ–แƒ”:

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

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 แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ—:

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒ›แƒแƒ˜แƒœแƒช แƒ’แƒแƒœแƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ 1/10 แƒ—แƒแƒœแƒแƒคแƒแƒ แƒ“แƒแƒ‘แƒ˜แƒ—:

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒแƒ แƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒก, แƒกแƒแƒ“แƒแƒช แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ v2 แƒ แƒแƒ’แƒแƒ แƒช แƒคแƒ แƒแƒœแƒขแƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒฃแƒ™แƒแƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ แƒ˜แƒ•แƒ”แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ–แƒฃแƒกแƒขแƒ”แƒ—, แƒ แƒแƒ› แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก 10% แƒฃแƒœแƒ“แƒ แƒฌแƒแƒ•แƒ˜แƒ“แƒ”แƒก v2-แƒ–แƒ”:

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› 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

แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ˜แƒ›แƒแƒก, แƒ แƒแƒช แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ:

แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒกแƒจแƒ˜ #3: แƒ˜แƒกแƒขแƒ˜แƒ

แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒกแƒ’แƒแƒœ

ะ’ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒแƒกแƒ แƒฃแƒšแƒ”แƒ— Canary แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒฎแƒ”แƒšแƒ˜แƒ—, แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜ k8-แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ˜แƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒ“แƒ˜แƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒœแƒแƒคแƒแƒ แƒ“แƒแƒ‘แƒแƒก แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒ—. แƒ”แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฅแƒ•แƒก แƒกแƒ”แƒ แƒ˜แƒแƒ–แƒฃแƒšแƒ˜ แƒœแƒแƒ™แƒšแƒแƒ•แƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜.

Istio แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒก แƒฎแƒ“แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ—แƒแƒœแƒแƒคแƒแƒ แƒ“แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒก แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“. แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— HPA (Horizontal Pod Autoscalers) แƒ“แƒ แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒŸแƒแƒ›แƒ˜แƒœแƒ“แƒ”แƒšแƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.

แƒกแƒฃแƒš

Istio แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ•แƒ แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ Kiali-แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฅแƒ›แƒœแƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒซแƒšแƒ˜แƒ”แƒ  แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒแƒก. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒฉแƒ”แƒ›แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜ แƒแƒ แƒ˜แƒก Spinnaker-แƒ˜แƒก แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ Istio-แƒกแƒ—แƒแƒœ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ™แƒแƒœแƒแƒ แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ