เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ #3 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ‡เจธเจŸเฉ€เจ“

เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจ…เจคเฉ‡ เจ•เจฒเจชเจจเจพ เจ•เจฐเจจ เจฒเจˆ Istio+Kiali เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ #3 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ‡เจธเจŸเฉ€เจ“

เจ‡เจธ เจฒเฉœเฉ€ เจตเจฟเฉฑเจš เจฒเฉ‡เจ–

  1. เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ #1 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ—เจฟเจŸเจฒเฉˆเจฌ เจธเฉ€เจ†เจˆ
  2. เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ #2 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ†เจฐเจ—เฉ‹ เจฐเฉ‹เจฒเจ†เจ‰เจŸเจธ
  3. (เจ‡เจน เจฒเฉ‡เจ–)
  4. เจœเฉ‡เจจเจ•เจฟเฉฐเจธ-เจเจ•เจธ เจ‡เจธเจŸเฉ€เจ“ เจซเจฒเฉˆเจ—เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€

เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€

เจ…เจธเฉ€เจ‚ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจชเฉœเฉเจนเจฆเฉ‡ เจนเฉ‹ เจชเจนเจฟเจฒเจพ เจญเจพเจ—, เจœเจฟเฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš เจธเจฎเจเจพเจ‡เจ† เจ•เจฟ เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจ•เฉ€ เจนเจจ เจ…เจคเฉ‡ เจฎเจฟเจ†เจฐเฉ€ Kubernetes เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆ เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค

เจ†เจˆเจธเจŸเฉ€เจ“

เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจฎเฉฐเจจเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เจธ เจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจชเฉœเฉเจน เจ•เฉ‡ เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ Istio เจ•เฉ€ เจนเฉˆ. เจœเฉ‡ เจจเจนเฉ€เจ‚, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฑเจฅเฉ‡.

เจŸเฉˆเจธเจŸเจพเจ‚ เจฒเจˆ เจ…เจฐเจœเจผเฉ€

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ #3 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ‡เจธเจŸเฉ€เจ“

เจนเจฐ เจ‡เฉฑเจ• เจชเฉŒเจก เจตเจฟเฉฑเจš เจฆเฉ‹ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ: เจธเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ…เจคเฉ‡ istio-เจชเฉเจฐเฉŒเจ•เจธเฉ€เฅค

เจ…เจธเฉ€เจ‚ เจซเจฐเฉฐเจŸเจเจ‚เจก-เจเจจเจœเฉ€เจจเฉˆเจ•เจธ เจ…เจคเฉ‡ เจฌเฉˆเจ•เจเจ‚เจก เจชเจพเจˆเจฅเจจ เจชเฉŒเจกเจธ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจŸเฉˆเจธเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค nginx เจชเฉŒเจก เจนเจฐ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจฌเฉˆเจ•เจเจ‚เจก เจชเฉŒเจก 'เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เจฐเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค เจตเฉ‡เจฐเจตเฉ‡ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจฏเจฎเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจฒเฉฑเจญเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ:

เจŸเฉˆเจธเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจšเจฒเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจฎเฉ‡เจฐเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธ เจŸเฉˆเจธเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจตเฉ‡เจ–เฉ‹ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฐเฉ€เจกเจฎเฉ€.

เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจคเฉˆเจจเจพเจคเฉ€

เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจธเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจชเฉŒเจกเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ 2 เจ•เฉฐเจŸเฉ‡เจจเจฐ เจนเจจ, เจฏเจพเจจเฉ€ เจ‡เจธเจŸเฉ€เจ“ เจธเจพเจˆเจกเจ•เจพเจฐ เจจเฉ‚เฉฐ เจนเฉเจฃเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ:

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ #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 เจธเจพเจกเฉ€ เจฎเฉ‡เจœเจผเจฌเจพเจจ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš.

เจ•เจฟเจ†เจฒเฉ€ เจฐเจพเจนเฉ€เจ‚ เจœเจพเจฒ เจฆเฉ‡เจ–เฉ‹

เจ…เจธเฉ€เจ‚ เจŸเจฐเฉ‡เจธเจฟเฉฐเจ—, เจ—เฉเจฐเจพเจซเจพเจจเจพ, เจชเฉเจฐเฉ‹เจฎเฉ€เจฅเฉ€เจ…เจธ เจ…เจคเฉ‡ เจ•เฉ€เจ†เจฒเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจŸเฉˆเจธเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจ‡เจธเจŸเฉ€เจ“ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจนเฉˆ (เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจฒเจˆ เจนเฉ‡เจ เจพเจ‚ เจฆเฉ‡เจ–เฉ‹)เฅค เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฐเฉ€เจกเจฎเฉ€). เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ•เจฟเจ†เจฒเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ‡เจธ เจฐเจพเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚:

istioctl dashboard kiali # admin:admin

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ #3 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ‡เจธเจŸเฉ€เจ“

เจ•เจฟเจ†เจฒเฉ€ เจœเจพเจฒ เจฐเจพเจนเฉ€เจ‚ เจฎเฉŒเจœเฉ‚เจฆเจพ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฆเฉ€ เจ•เจฒเจชเจจเจพ เจ•เจฐเจฆเจพ เจนเฉˆ

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, 100% เจŸเฉเจฐเฉˆเจซเจฟเจ• เจซเจฐเฉฐเจŸเจเจ‚เจก เจธเฉ‡เจตเจพ เจตเฉฑเจฒ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจซเจฟเจฐ เจฒเฉ‡เจฌเจฒ v1 เจฆเฉ‡ เจจเจพเจฒ เจซเจฐเฉฐเจŸเจเจ‚เจก เจชเฉŒเจกเจœเจผ เจตเฉฑเจฒ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจเจจเจœเฉ€เจจเฉˆเจ•เจธ เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเฉˆเจ•เจเจ‚เจก เจธเฉ‡เจตเจพ เจฒเจˆ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจฌเจฆเจฒเฉ‡ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเฉˆเจ•เจเจ‚เจก เจชเฉŒเจกเจพเจ‚ เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฒเฉ‡เจฌเจฒ v1 เจฆเฉ‡ เจจเจพเจฒ.

Kiali Istio เจฆเฉ‡ เจจเจพเจฒ เจตเจงเฉ€เจ† เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฌเจพเจ•เจธเจก เจฎเฉ‡เจธเจผ เจฐเฉˆเจ‚เจกเจฐเจฟเฉฐเจ— เจนเฉฑเจฒ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฌเจนเฉเจค เจตเจงเฉ€เจ†เฅค

เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€

เจธเจพเจกเฉ‡ เจฌเฉˆเจ•เจเจ‚เจก เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฆเฉ‹ 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%

เจนเฉเจฃ เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจฎเฉฐเจจเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจพเจฐเฉ‡ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ v2 'เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ:

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ #3 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ‡เจธเจŸเฉ€เจ“

เจ•เฉˆเจจเจฐเฉ€ เจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจŸเฉˆเจธเจŸ เจ•เจฐเจจเจพ

เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจนเฉเจฃ เจธเจพเจฐเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเจพ 2% v10 เจฌเฉˆเจ•เจเจ‚เจก เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‰เจฆเฉ‹เจ‚ เจ•เฉ€ เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจนเฉฑเจฅเฉ€เจ‚ 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 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ‡เจธเจŸเฉ€เจ“

เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจซเจฐเฉฐเจŸเจเจ‚เจก v1 เจ…เจคเฉ‡ v2 เจฆเฉ‹เจตเฉ‡เจ‚ เจซเจพเจฐเจตเจฐเจก เจŸเฉเจฐเฉˆเจซเจฟเจ• 1/10 เจฆเฉ‡ เจฌเฉˆเจ•เจเจ‚เจก v1 เจ…เจคเฉ‡ v2 เจฆเฉ‡ เจ…เจจเฉเจชเจพเจค 'เจคเฉ‡ เจนเจจเฅค

เจ‰เจฆเฉ‹เจ‚ เจ•เฉ€ เจœเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ เจซเจฐเฉฐเจŸเจเจ‚เจก-v2 เจคเฉ‹เจ‚ เจธเจฟเจฐเจซ เจฌเฉˆเจ•เจเจ‚เจก-v2 เจคเฉฑเจ• เจญเฉ‡เจœเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน v1 เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจนเฉ€เจ‚ เจนเฉˆ? เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจซเจฐเฉฐเจŸเจเจ‚เจก เจฒเจˆ 1/10 เจ…เจจเฉเจชเจพเจค เจธเฉˆเจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจœเฉ‹ เจ‡เจน เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ—เฉฑเจฒเจฌเจพเจค เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฌเฉˆเจ•เจเจ‚เจก-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 เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€: เจ‡เจธเจŸเฉ€เจ“

เจฎเฉˆเจจเฉ‚เจ…เจฒ เจ•เฉˆเจจเจฐเฉ€ เจชเจนเฉเฉฐเจš เจคเฉ‹เจ‚ เจ…เฉฐเจคเจฐ

ะ’ เจชเจนเจฟเจฒเจพ เจญเจพเจ— เจ…เจธเฉ€เจ‚ เจฆเฉ‹ k8s เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจจเฉ‚เฉฐ เจนเฉฑเจฅเฉ€เจ‚ เจ•เฉ€เจคเจพเฅค เจ‰เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจ•เฉ‡ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เจจเฉเจชเจพเจค เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เฉ€เจคเจพเฅค เจ‡เจน เจชเจนเฉเฉฐเจš เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจชเจฐ เจ‡เจธ เจตเจฟเฉฑเจš เจ—เฉฐเจญเฉ€เจฐ เจ•เจฎเฉ€เจ†เจ‚ เจนเจจเฅค

Istio เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจฆเฉ€ เจชเจฐเจตเจพเจน เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เจจเฉเจชเจพเจค เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ HPAs (เจนเจฐเฉ€เจœเจผเฉ‹เจ‚เจŸเจฒ เจชเฉ‹เจก เจ†เจŸเฉ‹เจธเจ•เฉ‡เจฒเจฐ) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจจเจคเฉ€เจœเจพ

Istio เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ Kiali เจฆเฉ‡ เจจเจพเจฒ เจฎเจฟเจฒ เจ•เฉ‡ เจตเจฐเจคเจฃเจพ เจฌเจนเฉเจค เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจธเฉเจฎเฉ‡เจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจฎเฉ‡เจฐเฉ€ เจฆเจฟเจฒเจšเจธเจชเฉ€เจ†เจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ 'เจคเฉ‡ เจ…เฉฑเจ—เฉ‡ เจธเจชเจฟเจจเจจเฉ‡เจ•เจฐ เจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจ•เฉˆเจจเจฐเฉ€ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ Istio เจจเจพเจฒ เจœเฉ‹เฉœ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹