เบเบฒเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš Istio

เบเบฒเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš Istio

Istio เป€เบ›เบฑเบ™โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹, เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบเบฑเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เปเบˆเบโ€‹เบขเบฒเบโ€‹. Istio เปƒเบŠเป‰เป€เบ—เบฑเบเป‚เบ™เป‚เบฅเบเบตเบ—เบตเปˆเบซเบผเบฒเบเบซเบผเบฒเบเป€เบžเบทเปˆเบญเปเบฅเปˆเบ™ เปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบŠเบญเบšเปเบงเปƒเบ™เบ‚เบฐเปœเบฒเบ”, เบฅเบงเบกเบ—เบฑเบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป€เบžเบทเปˆเบญเบซเบธเป‰เบกเบซเปเปˆเบฅเบฐเบซเบฑเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ เปเบฅเบฐเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰, เปเบฅเบฐ Kubernetes เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบšเบฑเบ™เบˆเบธเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Istio เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฎเบนเป‰เบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบฒเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ” เป‚เบ”เบโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™ Istio. เบ–เป‰เบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบท เปเบฅเบฐเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบ—เปˆเบฒเบ™เปเบฅเป‰เบง, เบเบฐเบฅเบธเบ™เบฒเบ‚เป‰เบฒเบกเบเบฒเบ™เบชเบญเบ™เบ™เบตเป‰ เปเบฅเบฐเป„เบ›เบซเบฒเบžเบฒเบเป‚เบ”เบเบเบปเบ‡ เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Istio เปƒเบ™ Google Kubernetes Engine (GKE) เบซเบผเบทเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ Istio เปƒเบ™ GKE.

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เป‚เบ”เบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเปˆเบฒเบ‡เบœเปˆเบฒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เป„เบ›เบซเบฒเบ–เบฑเบ‡ GKE เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡. เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเบฐเป€เบซเบฑเบ™เบงเปˆเบฒ Istio เบ™เปเบฒเปƒเบŠเป‰เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ‚เบญเบ‡เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เปเบ™เบงเปƒเบ”. เบ™เบตเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบฎเบนเป‰เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต, Kubernetes, เบเปˆเบญเบ‡เบšเปเบฅเบดเบเบฒเบ™, เบซเบผเบท Istio.

เบงเบฝเบเบ‡เบฒเบ™

เปƒเบ™ tutorial เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบชเปเบฒเป€เบฅเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ hello world เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบฒเบ.
  2. เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.
  3. เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบšเบฑเบ™เบˆเบธ.
  4. เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบก Kubernetes.
  5. เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเบฑเบ™เบˆเบธเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบธเปˆเบก.

เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰ Kubernetes Engine API:

  1. เป„เบ›เบ—เบตเปˆ เปœเป‰เบฒเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ Kubernetes เปƒเบ™ Google Cloud Platform console.
  2. เบชเป‰เบฒเบ‡ เบซเบผเบทเป€เบฅเบทเบญเบเป‚เบ„เบ‡เบเบฒเบ™.
  3. เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒ API เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰. เบญเบฑเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบต.
  4. เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เป€เบญเบตเป‰เบ™เป€เบเบฑเบšเป€เบ‡เบดเบ™เป„เบ”เป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ Google Cloud Platform เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบฎเบฝเบเป€เบเบฑเบšเป€เบ‡เบดเบ™.

เปƒเบ™เบšเบปเบ”เบชเบญเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ Cloud Shell, เป€เบŠเบดเปˆเบ‡เบเบฐเบเบฝเบกเป€เบ„เบทเปˆเบญเบ‡ virtual g1-small เปƒเบ™ Google Compute Engine เบเบฑเบš Linux เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ Debian, เบซเบผเบทเบ„เบญเบกเบžเบดเบงเป€เบ•เบต Linux เบซเบผเบท macOS.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบ A: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Cloud Shell

เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ Cloud Shell:

  • เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ Python 2 เปเบฅเบฐ Python 3 (เบฅเบงเบกเบ—เบฑเบ‡ virtualenv) เบ–เบทเบโ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹.
  • เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบšเบฑเบ™เบ—เบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡ gcloud, docker, เป„เบ› ะธ kubectl, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเป‰เบง.
  • เบ—เปˆเบฒเบ™โ€‹เบกเบตโ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฅเบทเบญเบโ€‹เป€เบญเบปเบฒโ€‹เบˆเบฒเบโ€‹ เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบก:
    1. เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™เบฅเบฐเบซเบฑเบ”, เป€เบŠเบดเปˆเบ‡เป€เบ›เบตเบ”เบ”เป‰เบงเบเป„เบญเบ„เบญเบ™เปเบเป‰เป„เบ‚เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เปœเป‰เบฒเบ•เปˆเบฒเบ‡ Cloud Shell.
    2. Emacs, Vim เบซเบผเบท Nano, เป€เบŠเบดเปˆเบ‡เป€เบ›เบตเบ”เบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™ Cloud Shell.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Cloud Shell:

  1. เป„เบ›เบ—เบตเปˆ GCP console.
  2. เบเบปเบ” เป€เบ›เบตเบ”เปƒเบŠเป‰ Cloud Shell (เป€เบ›เบตเบ”เปƒเบŠเป‰ Cloud Shell) เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เปœเป‰เบฒเบ•เปˆเบฒเบ‡ GCP console.

เบเบฒเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš Istio

เปƒเบ™เบชเปˆเบงเบ™เบ•เปˆเปเบฒ GCP console เป€เบŠเบ”เบŠเบฑเบ™ Cloud Shell เบ—เบตเปˆเบกเบตเปเบ–เบงเบ„เบณเบชเบฑเปˆเบ‡เบˆเบฐเป€เบ›เบตเบ”เบขเบนเปˆเปƒเบ™เปœเป‰เบฒเบˆเปเปƒเปเปˆ.

เบเบฒเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš Istio

เบ—เบฒเบ‡เป€เบฅเบทเบญเบ B: เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เบตเปˆเปƒเบŠเป‰ Linux เบซเบผเบท macOS, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบ›เบฑเบšเปเบ•เปˆเบ‡ เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ Python 3 เปเบฅเบฐ Python 2.

  2. เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Cloud SDK เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบšเบฑเบ™เบ—เบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡ gcloud.

  3. เบ•เบฑเป‰เบ‡ kubectl - เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹เป€เบชเบฑเป‰เบ™โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบเบฑเบšโ€‹ Kubernetes.

    gcloud components install kubectl

  4. เบ•เบฑเป‰เบ‡ เบชเบฐเบšเบฑเบšเบŠเบธเบกเบŠเบปเบ™ Docker (CE). เป€เบˆเบปเป‰เบฒเบˆเบฐเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบšเบฑเบ™เบ—เบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡ dockerเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบšเบฑเบ™เบˆเบธเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เบปเบงเบขเปˆเบฒเบ‡.

  5. เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบท เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบงเบตเบŠเบฑเบ™ Gitเป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฒเบ GitHub.

เบ”เบฒเบงเป‚เบซเบฅเบ”เบฅเบฐเบซเบฑเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡

  1. เบ”เบฒเบงเป‚เบซเบฅเบ”เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ เบชเบฐเบšเบฒเบเบ”เบต:

    git clone https://github.com/GoogleCloudPlatform/istio-samples

  2. เป„เบ›โ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹:

    cd istio-samples/sample-apps/helloserver

เบชเบณเบซเบผเบงเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบซเบผเบฒเบเบšเปเบฅเบดเบเบฒเบ™

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Python เปเบฅเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ REST:

  • เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ: เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบกเบตเบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบซเบ™เบถเปˆเบ‡ เป„เบ”เป‰เบฎเบฑเบš, /, เป€เบŠเบดเปˆเบ‡เบžเบดเบก "เบชเบฐเบšเบฒเบเบ”เบตเป‚เบฅเบ" เปƒเบชเปˆเบ„เบญเบ™เป‚เบŠ.
  • เป‚เบซเบผเบ”: script เบ—เบตเปˆเบชเบปเปˆเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบ”เป‰เบงเบเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป„เบ”เป‰เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต.

เบเบฒเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš Istio

เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡

เป€เบžเบทเปˆเบญเบชเบณเบซเบผเบงเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เป€เบ›เบตเบ”เปƒเบŠเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ Cloud Shell เบซเบผเบทเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
1) เปƒเบ™เบฅเบฒเบเบเบฒเบ™ istio-samples/sample-apps/helloserver เปเบฅเปˆเบ™ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ:

python3 server/server.py

เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡:

INFO:root:Starting server...

2) เป€เบ›เบตเบ”เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก terminal เบญเบทเปˆเบ™เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ› เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰ Cloud Shell, เปƒเบซเป‰เบ„เบฅเบดเบเบ—เบตเปˆเป„เบญเบ„เบญเบ™เป€เบžเบตเปˆเบกเป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เป€เบŠเบ”เบŠเบฑเบ™เบญเบทเปˆเบ™.
3) เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ:

curl http://localhost:8080

เบ„เปเบฒเบ•เบญเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ:

Hello World!

4) เบˆเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ”เบฒเบงเป‚เบซเบฅเบ”เบฅเบฐเบซเบฑเบ”เบ•เบปเบงเบขเปˆเบฒเบ‡, เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบ เป‚เบซเบผเบ”:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen

5) เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

export SERVER_ADDR=http://localhost:8080
export REQUESTS_PER_SECOND=5

6) เป€เบ›เบตเบ”เบ•เบปเบง virtualenv:

virtualenv --python python3 env

7โ€‹) เบเบฐโ€‹เบ•เบธเป‰เบ™โ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบก virtualโ€‹:

source env/bin/activate

8) เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบš เป‚เบซเบผเบ”:

pip3 install -r requirements.txt

9) เป€เบ›เบตเบ”เบ•เบปเบง เป‚เบซเบผเบ”:

python3 loadgen.py

เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เป‚เบซเบผเบ” เบชเบฐเปเบ”เบ‡เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

Starting loadgen: 2019-05-20 10:44:12.448415
5 request(s) complete to http://localhost:8080

เบขเบนเปˆเปƒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ›เบฒเบเบ—เบฒเบ‡เบญเบทเปˆเบ™ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰เป„เบ›เบซเบฒ console:

127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:GET request,
Path: /
Headers:
Host: localhost:8080
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*

เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบฎเบ”เบ”เบฝเบง (เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡ virtual Cloud Shell). เป€เบžเบฒเบฐโ€‹เบชเบฐโ€‹เบ™เบฑเป‰เบ™โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ localhostเบชเบปเปˆเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.
10) เบขเบธเบ” เป‚เบซเบผเบ” ะธ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เป€เบ‚เบปเป‰เบฒ Ctrl-c เบขเบนเปˆเปƒเบ™เบ—เบธเบเบ›เปˆเบญเบ‡เบขเป‰เบฝเบก terminal.
11โ€‹) เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ›เปˆเบญเบ‡โ€‹เบขเป‰เบฝเบกโ€‹เบขเบนเปˆโ€‹เบ›เบฒเบโ€‹เบเบญเบ”โ€‹ เป‚เบซเบผเบ” เบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก virtual:

deactivate

เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบšเบฑเบ™เบˆเบธ

เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™ GKE, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบซเบธเป‰เบกเบซเปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ•เบปเบงเบขเปˆเบฒเบ‡ โˆ’ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ ะธ เป‚เบซเบผเบ” - เปƒเบ™ เบšเบฑเบ™เบˆเบธ. เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบžเบทเปˆเบญเปเบเบเบกเบฑเบ™เบญเบญเบเบˆเบฒเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบกเบฑเบ™.

เป€เบžเบทเปˆเบญเบซเบธเป‰เบกเบซเปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฑเบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ dockerfile. dockerfile เปเบกเปˆเบ™เป„เบŸเบฅเปŒเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ‚เบญเบ‡เบกเบฑเบ™ เบฎเบนเบšเบžเบฒเบš Docker. เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบฅเป‰เบง, เบ—เปˆเบฒเบ™เบญเบฑเบšเป‚เบซเบฅเบ”เบฎเบนเบšเบžเบฒเบšเป„เบ›เบเบฑเบ‡เบ—เบฐเบšเบฝเบ™เบšเบฑเบ™เบˆเบธเป€เบŠเบฑเปˆเบ™ Docker Hub เบซเบผเบท เบ—เบฐเบšเบฝเบ™เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบกเบตเบขเบนเปˆเปเบฅเป‰เบง dockerfile เบเบฒเบ™ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ ะธ เป‚เบซเบผเบ” เบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบเปเบฒเบฎเบนเบšเบžเบฒเบš. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰ - dockerfile เบเบฒเบ™ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ:

FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update 
    && apt-get install -y --no-install-recommends 
        g++ 
    && rm -rf /var/lib/apt/lists/*

# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1

RUN apt-get -qq update 
    && apt-get install -y --no-install-recommends 
        wget

WORKDIR /helloserver

# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/

# Add the application
COPY . .

EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]

  • เบ—เบตเบกเบ‡เบฒเบ™ เบˆเบฒเบ python:3-slim เป€เบ›เบฑเบ™เบ–เบฒเบ™ เบšเบญเบ Docker เปƒเบซเป‰เปƒเบŠเป‰เบซเบฅเป‰เบฒเบชเบธเบ” เบฎเบนเบšเบžเบฒเบš Python 3 เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™.
  • เบ—เบตเบกเบ‡เบฒเบ™ เบชเบณเป€เบ™เบปเบฒ. . เบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™ (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ server.py) เบเบฑเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ‚เบญเบ‡เบšเบฑเบ™เบˆเบธ.
  • ENTRYPOINT เบเปเบฒเบ™เบปเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบšเบฑเบ™เบˆเบธ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เป€เบเบทเบญเบšเบ„เบทเบเบฑเบ™เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบ„เบตเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ server.py เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.
  • เบ—เบตเบกเบ‡เบฒเบ™ เบญเบฐเบ—เบดเบšเบฒเบ เบŠเบตเป‰โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบงเปˆเบฒโ€‹ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบฅเปเบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบœเปˆเบฒเบ™เบžเบญเบ” 8080. เบ—เบตเบกเบ‡เบฒเบ™เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™ เบชเบฐเบซเบ™เบญเบ‡เบ—เปˆเบฒเป€เบฎเบทเบญ. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เบ—เปˆเบฒเป€เบฎเบทเบญ 8080 เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบšเบฑเบ™เบˆเบธ.

เบเบณเบฅเบฑเบ‡เบเบฐเบเบฝเบกเบšเบฑเบ™เบˆเบธเปƒเบšเบชเบฐเปเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™

1) เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰. เปเบ—เบ™เบ—เบตเปˆ PROJECT_ID เป„เบ›เบซเบฒ ID เป‚เบ„เบ‡เบเบฒเบ™ GCP เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เบธเบ™เบ„เปˆเบฒ PROJECT_ID ะธ GCR_REPO เบ—เปˆเบฒเบ™เปเบ—เบฑเบเบฎเบนเบšเบžเบฒเบš Docker เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบกเบฑเบ™เปเบฅเบฐเบเบนเป‰เบกเบฑเบ™เป„เบ›เบ—เบตเปˆ Container Registry เบชเปˆเบงเบ™เบ•เบปเบง.

2) เบเปเบฒเบ™เบปเบ”เป‚เบ„เบ‡เบเบฒเบ™ GCP เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ gcloud.

gcloud config set project $PROJECT_ID

3) เบ•เบฑเป‰เบ‡เป€เบ‚เบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบšเบฑเบ™เบ—เบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡ gcloud.

gcloud config set compute/zone us-central1-b

4) เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฐเบšเบฝเบ™เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ GCP.

gcloud services enable containerregistry.googleapis.com

เป€เบŠเบตเบšเป€เบงเบตเบเบฒเบ™เบšเบฑเบ™เบˆเบธ

  1. เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบšเปˆเบญเบ™เบ—เบตเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เบฑเป‰เบ‡เบขเบนเปˆ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

  2. เบ›เบฐเบเบญเบšเบฎเบนเบšเบžเบฒเบšเป‚เบ”เบเปƒเบŠเป‰ dockerfile เปเบฅเบฐเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰:

    docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .

Parameter -t เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เปเบ—เบฑเบ Docker. เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ.

  1. เบญเบฑเบšเป‚เบซเบผเบ”เบฎเบนเบšเปƒเบชเปˆ Container Registry:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

เบเบฒเบ™เบšเบฑเบ™เบˆเบธ loadgen

1) เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบšเปˆเบญเบ™เบ—เบตเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เบฑเป‰เบ‡เบขเบนเปˆ เป‚เบซเบผเบ”:

cd ../loadgen

2โ€‹) เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹:

docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .

3โ€‹) เบญเบฑเบšโ€‹เป‚เบซเบฅเบ”โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™ Containerโ€‹:

docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1

เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš

เบเบงเบ”เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเปƒเบ™ repository เปเบฅเบฐเบเบงเบ”เบชเบญเบšเบงเปˆเบฒเบฎเบนเบšเบžเบฒเบšเป„เบ”เป‰เบ–เบทเบเบญเบฑเบšเป‚เบซเบฅเบ”เปเบฅเป‰เบง:

gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio

เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบฐเปเบ”เบ‡เบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบญเบฑเบšเป‚เบซเบฅเบ”เปƒเบซเบกเปˆ:

NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen

เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบก GKE.

เบšเบฑเบ™เบˆเบธเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual Cloud Shell เบซเบผเบทเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เบตเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ docker run. เปเบ•เปˆเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เบ–เบฑเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบชเบนเบ™เบเบฒเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเบชเบฐเป€เปเบต, เปเบฅเบฐเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ เปเบฅเบฐ เปเบนเบ™เปƒเบŠเป‰เบ•เบปเบงเบšเบฑเบ™เบˆเบธเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ–เป‰เบฒเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ G.K.E.. GKE เปเบกเปˆเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบเบฒเบ™เบ›เบฐเบชเบฒเบ™เบชเบฝเบ‡เบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบชเบฐเป€เปเบทเบญเบ™เป€เบ›เบฑเบ™เบเบธเปˆเบก. เปเบ•เปˆเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡ virtual เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ node. เบเบธเปˆเบก GKE เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบก Kubernetes. Kubernetes เปƒเบซเป‰เบเบปเบ™เป„เบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบเบธเปˆเบก.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบก GKE:

1โ€‹) เบชเป‰เบฒเบ‡โ€‹เบเบธเปˆเบกโ€‹:

gcloud container clusters create istioready 
  --cluster-version latest 
  --machine-type=n1-standard-2 
  --num-nodes 4

เบ—เบตเบกเบ‡เบฒเบ™ gcloud เบชเป‰เบฒเบ‡เบเบธเปˆเบก istioready เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ GCP เปเบฅเบฐเป€เบ‚เบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธ. เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ Istio, เบžเบงเบเป€เบฎเบปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบกเบตเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ 4 nodes เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡ virtual n1-เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™-2.

เบ—เบตเบกเบ‡เบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบกเปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบต. เป€เบกเบทเปˆเบญเบเบธเปˆเบกเบžเป‰เบญเบกเปเบฅเป‰เบง, เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฐเบญเบญเบเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰ ัะพะพะฑั‰ะตะฝะธะต.

2) เบชเบฐเบซเบ™เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ„เปเบฒเบชเบฑเปˆเบ‡ kubectlเป€เบžเบทเปˆเบญเปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบธเปˆเบก:

gcloud container clusters get-credentials istioready

3) เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆเบเบฑเบš Kubernetes เบœเปˆเบฒเบ™ kubectl. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ nodes:

kubectl get nodes

เบ„เปเบฒเบชเบฑเปˆเบ‡เบœเบฐเบฅเบดเบ”เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ nodes:

NAME                                       STATUS   ROLES    AGE    VERSION
gke-istoready-default-pool-dbeb23dc-1vg0   Ready    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5   Ready    <none>   100s   v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s   Ready    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw   Ready    <none>   99s    v1.13.6-gke.13

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบซเบผเบฑเบ Kubernetes

เปเบœเบ™เบงเบฒเบ”เบชเบฐเปเบ”เบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™ GKE:

เบเบฒเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš Istio

เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบ™เบณเปƒเบŠเป‰ containers เปƒเบ™ GKE, เบฎเบฝเบ™เบฎเบนเป‰เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบซเบผเบฑเบเบ‚เบญเบ‡ Kubernetes. เบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบขเบนเปˆเปƒเบ™เบ—เป‰เบฒเบเบ—เบตเปˆเบชเบธเบ”เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

  • nodes เปเบฅเบฐ clusters. เปƒเบ™ GKE, node เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual. เปƒเบ™เป€เบงเบ—เบต Kubernetes เบญเบทเปˆเบ™เป†, node เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡ virtual. เบเบธเปˆเบกเปเบกเปˆเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เบซเบ™เปˆเบงเบเบ”เบฝเบงเบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบšเบฑเบ™เบˆเบธเบšเบฑเบ™เบˆเบธ.
  • เบเบฑเบ. เปƒเบ™ Kubernetes, containers เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™ pods. Pod เปƒเบ™ Kubernetes เปเบกเปˆเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เปเบเบเป„เบ”เป‰. Pod เบšเบฑเบ™เบˆเบธเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบšเบฑเบ™เบˆเบธ. เบ—เปˆเบฒเบ™ deploy server containers เปเบฅเบฐ เป‚เบซเบผเบ” เปƒเบ™เบเบฑเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เป€เบกเบทเปˆเบญเบกเบตเบšเบฑเบ™เบˆเบธเบซเบผเบฒเบเบšเบฑเบ™เบˆเบธเบขเบนเปˆเปƒเบ™เบเบฑเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปเบฅเบฐ เป€เบŠเบตเบšเป€เบงเบตเบžเบฃเบฑเบญเบเบŠเบต), เบšเบฑเบ™เบˆเบธเบ–เบทเบเบ„เบธเป‰เบกเบ„เบญเบ‡เป€เบ›เบฑเบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ”เบฝเบงเปเบฅเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบเบฑเบ.
  • เบเบฒเบ™เบ™เบณเปƒเบŠเป‰. เปƒเบ™ Kubernetes, เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เป€เบ›เบฑเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเป€เบ›เบฑเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบžเบญเบ”เบ—เบตเปˆเบ„เบทเบเบฑเบ™. เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เป€เบ›เบตเบ”เบ•เบปเบงเปเบšเบšเบˆเบณเบฅเบญเบ‡เบ‚เบญเบ‡เบžเบญเบ”เบซเบผเบฒเบเบญเบฑเบ™เบ—เบตเปˆเปเบˆเบเบขเบฒเบเปƒเบ™เบ—เบปเปˆเบงเบเบธเปˆเบกเบ‚เบญเบ‡เบเบธเปˆเบก. เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบˆเบฐเปเบ—เบ™เบ—เบตเปˆเบžเบญเบ”เบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบง เบซเบผเบท เบšเปเปˆเบ•เบญเบšเบชเบฐเปœเบญเบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.
  • เบšเปเบฅเบดเบเบฒเบ™ Kubernetes. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบฅเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™ GKE, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡ เป‚เบซเบผเบ” ะธ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบšเปเบฅเบดเบเบฒเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual Cloud Shell เบซเบผเบท desktop, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบขเบนเปˆ localhost: 8080. เป€เบกเบทเปˆเบญเบ–เบทเบเบ™เบณเปƒเบŠเป‰เบเบฑเบš GKE, pods เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ nodes เบ—เบตเปˆเบกเบตเบขเบนเปˆ. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบˆเบปเป‰เบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเป„เบ”เป‰เบงเปˆเบฒเป‚เบซเบ™เบ”เปƒเบ”เบ—เบตเปˆเบเบฑเบเบเบณเบฅเบฑเบ‡เปเบฅเปˆเบ™เบขเบนเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบˆเบปเป‰เบฒ เบเบฑเบ เบšเปเปˆเบกเบตเบ—เบตเปˆเบขเบนเปˆ IP เบ–เบฒเบงเบญเบ™.
    เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบขเบนเปˆ IP เบชเปเบฒเบฅเบฑเบš เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ” abstraction เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฑเบ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เป€เบ›เบฑเบ™ เบšเปเบฅเบดเบเบฒเบ™ Kubernetes. เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ Kubernetes เบชเบฐเปœเบญเบ‡เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบ—เบตเปˆเบ„เบปเบ‡เบ„เป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เบ‚เบญเบ‡เบเบฑเบ. เบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบ เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ LoadBalancer, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡เบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเบ™เบญเบเป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เปเปˆ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบˆเบฒเบเบžเบฒเบเบ™เบญเบเบเบธเปˆเบก.
    Kubernetes เบเบฑเบ‡เบกเบตเบฅเบฐเบšเบปเบš DNS เปƒเบ™เบ•เบปเบงเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบŠเบทเปˆ DNS (เบ•เบปเบงเบขเปˆเบฒเบ‡: helloserver.default.cluster.local) เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹. เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบเบฑเบเบžเบฒเบเปƒเบ™เบเบธเปˆเบกเบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเบเบฑเบเบญเบทเปˆเบ™เป†เปƒเบ™เบเบธเปˆเบกเบขเบนเปˆเบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆเบ–เบฒเบงเบญเบ™. เบŠเบทเปˆ DNS เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ™เบญเบเบเบธเปˆเบกเป„เบ”เป‰, เป€เบŠเบฑเปˆเบ™เปƒเบ™ Cloud Shell เบซเบผเบทเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบต.

Kubernetes manifests

เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฒเบเปเบซเบผเปˆเบ‡, เบ—เปˆเบฒเบ™เป„เบ”เป‰เปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ imperative python3

server.py

Imperative เบซเบกเบฒเบเป€เบ–เบดเบ‡เบ„เปเบฒเบเบดเบฅเบดเบเบฒ: "เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰."

Kubernetes เปƒเบŠเป‰ เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ›เบฐเบเบฒเบ”. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบšเบญเบ Kubernetes เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบงเปˆเบฒเบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”, เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, Kubernetes เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบขเบธเบ” pods เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒเบชเบฐเบžเบฒเบšเบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปƒเบซเป‰เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบ—เปˆเบฒเบ™เบŠเบตเป‰เบšเบญเบเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™ manifests เบซเบผเบทเป„เบŸเบฅเปŒ YAML. เป„เบŸเบฅเปŒ YAML เบกเบตเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบงเบฑเบ”เบ–เบธ Kubernetes.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ›เบฐเบเบญเบšเบกเบตเป„เบŸเบฅเปŒ YAML เบชเปเบฒเบฅเบฑเบš เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ ะธ เป‚เบซเบผเบ”. เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒ YAML เบฅเบฐเบšเบธเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ™เบณเปƒเบŠเป‰ เปเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™ Kubernetes.

server.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloserver
spec:
  selector:
    matchLabels:
      app: helloserver
  replicas: 1
  template:
    metadata:
      labels:
        app: helloserver
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/helloserver:v0.0.1
        imagePullPolicy: Always

  • เบ›เบฐเป€เบžเบ” เบŠเบตเป‰เบšเบญเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ.
  • metadata.name เบฅเบฐเบšเบธเบŠเบทเปˆเบเบฒเบ™เบ™เบณเปƒเบŠเป‰.
  • เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ—เปเบฒเบญเบดเบ” เบชเบฐเป€เบ›เบฑเบ เบกเบตเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.
  • spec.replicas เบŠเบตเป‰เบšเบญเบเบˆเปเบฒเบ™เบงเบ™เบเบฑเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™.
  • เบžเบฒเบเบชเปˆเบงเบ™ spec. template เบเปเบฒเบ™เบปเบ”เปเบกเปˆเปเบšเบšเบเบฑเบ. เบกเบตเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบขเบนเปˆเปƒเบ™เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡เบเบฑเบ เบฎเบนเบšเบžเบฒเบšเป€เบฅเบฑเบเบ™เป‰เบญเบ, เป€เบŠเบดเปˆเบ‡เบฅเบฐเบšเบธเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบเบฑเบ”เบญเบญเบเบˆเบฒเบเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ Container.

เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

apiVersion: v1
kind: Service
metadata:
  name: hellosvc
spec:
  type: LoadBalancer
  selector:
    app: helloserver
  ports:
  - name: http
    port: 80
    targetPort: 8080

  • LoadBalancer: เบฅเบนเบเบ„เป‰เบฒเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡ load balancer, เป€เบŠเบดเปˆเบ‡เบกเบตเบ—เบตเปˆเบขเบนเปˆ IP เบ„เบปเบ‡เบ—เบตเปˆเปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เบˆเบฒเบเบžเบฒเบเบ™เบญเบ cluster.
  • เบˆเบธเบ”เปเบฒเบเบ›เบฒเบเบ—เบฒเบ‡: เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบทเปˆ, เบ—เบตเบกเบ‡เบฒเบ™ EXPOSE 8080 ะฒ dockerfile เบšเปเปˆเป„เบ”เป‰เบชเบฐเบซเบ™เบญเบ‡เบ—เปˆเบฒเป€เบฎเบทเบญ. เบ—เปˆเบฒเบ™เปƒเบซเป‰เบžเบญเบ” 8080เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆเบเบฑเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป„เบ”เป‰ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบขเบนเปˆเบ™เบญเบเบเบธเปˆเบก. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ hellosvc.default.cluster.local:80 (เบŠเบทเปˆเบชเบฑเป‰เบ™: hellosvc) เบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบšเบžเบญเบ” 8080 เบ—เบตเปˆเบขเบนเปˆ IP Pod เบชเบฐเบšเบฒเบเบ”เบต.
  • port: เบ™เบตเป‰เปเบกเปˆเบ™เปเบฒเบเป€เบฅเบเบžเบญเบ”เบ—เบตเปˆเบšเปเบฅเบดเบเบฒเบ™เบญเบทเปˆเบ™เปƒเบ™เบเบธเปˆเบกเบˆเบฐเบชเบปเปˆเบ‡เบ„เบณเบฎเป‰เบญเบ‡เบ‚เป.

loadgen.yaml

เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” loadgen.yaml เบ„เป‰เบฒเบโ€‹เบ„เบท server.yaml. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบงเบฑเบ”เบ–เบธเบเบฒเบ™เบ›เบฑเบšเปƒเบŠเป‰เบ›เบฐเบเบญเบšเบกเบตเบžเบฒเบเบชเปˆเบงเบ™ เบ›เบฐเบกเบฒเบ™. เบกเบฑเบ™เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™ เป‚เบซเบผเบ” เปเบฅเบฐเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบˆเบฒเบเปเบซเบผเปˆเบ‡.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: loadgenerator
spec:
  selector:
    matchLabels:
      app: loadgenerator
  replicas: 1
  template:
    metadata:
      labels:
        app: loadgenerator
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/loadgen:v0.0.1
        imagePullPolicy: Always
        env:
        - name: SERVER_ADDR
          value: "http://hellosvc:80/"
        - name: REQUESTS_PER_SECOND
          value: "10"
        resources:
          requests:
            cpu: 300m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 512Mi

เป€เบงเบฅเบฒ เป‚เบซเบผเบ” เบšเปเปˆเบเบญเบกเบฎเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒ, เบชเปเบฒเบฅเบฑเบšเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก เบ›เบฐเป€เบžเบ” เบŠเบตเป‰เบšเบญเบ ClusterIP. เบ›เบฐเป€เบžเบ”เบ™เบตเป‰เบชเบฐเบซเบ™เบญเบ‡เบ—เบตเปˆเบขเบนเปˆ IP เบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบšเปเบฅเบดเบเบฒเบ™เปƒเบ™เบเบธเปˆเบกเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰, เปเบ•เปˆเบ—เบตเปˆเบขเบนเปˆ IP เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เป€เบœเบตเบเบ•เปเปˆเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบžเบฒเบเบ™เบญเบ.

apiVersion: v1
kind: Service
metadata:
  name: loadgensvc
spec:
  type: ClusterIP
  selector:
    app: loadgenerator
  ports:
  - name: http
    port: 80
    targetPort: 8080

เบเบฒเบ™เบ™เบณเปƒเบŠเป‰ Containers เปƒเบ™ GKE

1) เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบšเปˆเบญเบ™เบ—เบตเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เบฑเป‰เบ‡เบขเบนเปˆ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

2) เป€เบ›เบตเบ” server.yaml เปƒเบ™เบ•เบปเบงเปเบเป‰เป„เบ‚เบ‚เปเป‰เบ„เบงเบฒเบก.
3) เปเบ—เบ™เบŠเบทเปˆเปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก เบฎเบนเบšเบžเบฒเบšเป€เบฅเบฑเบเบ™เป‰เบญเบ เบเบฑเบšเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš Docker เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1

เบ—เบปเบ”เปเบ—เบ™ PROJECT_ID เป„เบ›เบซเบฒ ID เป‚เบ„เบ‡เบเบฒเบ™ GCP เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
4) เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบ›เบดเบ” server.yaml.
5) เบ™เบณเปƒเบŠเป‰เป„เบŸเบฅเปŒ YAML เบเบฑเบš Kubernetes:

kubectl apply -f server.yaml

เป€เบกเบทเปˆเบญเบชเปเบฒเป€เบฅเบฑเบ”เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบ„เปเบฒเบชเบฑเปˆเบ‡เบœเบฐเบฅเบดเบ”เบฅเบฐเบซเบฑเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

deployment.apps/helloserver created
service/hellosvc created

6) เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆ เป‚เบซเบผเบ”:

cd ../loadgen

7) เป€เบ›เบตเบ” loadgen.yaml เปƒเบ™เบ•เบปเบงเปเบเป‰เป„เบ‚เบ‚เปเป‰เบ„เบงเบฒเบก.
8) เปเบ—เบ™เบŠเบทเปˆเปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก เบฎเบนเบšเบžเบฒเบšเป€เบฅเบฑเบเบ™เป‰เบญเบ เบเบฑเบšเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš Docker เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1

เบ—เบปเบ”เปเบ—เบ™ PROJECT_ID เป„เบ›เบซเบฒ ID เป‚เบ„เบ‡เบเบฒเบ™ GCP เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
9) เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบ›เบดเบ” loadgen.yaml, เบ›เบดเบ”เบ•เบปเบงเปเบเป‰เป„เบ‚เบ‚เปเป‰เบ„เบงเบฒเบก.
10) เบ™เบณเปƒเบŠเป‰เป„เบŸเบฅเปŒ YAML เบเบฑเบš Kubernetes:

kubectl apply -f loadgen.yaml

เป€เบกเบทเปˆเบญเบชเปเบฒเป€เบฅเบฑเบ”เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบ„เปเบฒเบชเบฑเปˆเบ‡เบœเบฐเบฅเบดเบ”เบฅเบฐเบซเบฑเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

deployment.apps/loadgenerator created
service/loadgensvc created

11โ€‹) เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡โ€‹เบเบฑเบโ€‹:

kubectl get pods

เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบชเบฐโ€‹เบ–เบฒโ€‹เบ™เบฐโ€‹เบžเบฒเบšโ€‹:

NAME                             READY   STATUS    RESTARTS   AGE
helloserver-69b9576d96-mwtcj     1/1     Running   0          58s
loadgenerator-774dbc46fb-gpbrz   1/1     Running   0          57s

12) เบชเบฐเบเบฑเบ”เบšเบฑเบ™เบ—เบถเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบญเบญเบเบˆเบฒเบเบเบฑเบ เป‚เบซเบผเบ”. เปเบ—เบ™เบ—เบตเปˆ POD_ID เบเบฑเบšเบ•เบปเบงเบฅเบฐเบšเบธเบˆเบฒเบเบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.

kubectl logs loadgenerator-POD_ID

13) เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเบ™เบญเบ hellosvc:

kubectl get service

เบเบฒเบ™โ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบ„เบทโ€‹เปเบ™เบงโ€‹เบ™เบตเป‰โ€‹:

NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
hellosvc     LoadBalancer   10.81.15.158   192.0.2.1       80:31127/TCP   33m
kubernetes   ClusterIP      10.81.0.1      <none>          443/TCP        93m
loadgensvc   ClusterIP      10.81.15.155   <none>          80/TCP         4m52s

14) เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰ hellosvc: เปเบ—เบ™ EXTERNAL_IP เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเบ™เบญเบ hellosvc.

curl http://EXTERNAL_IP

เปƒเบซเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบเปˆเบฝเบงเบเบฑเบš Istio

เบ—เปˆเบฒเบ™เบกเบตเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบ™เบณเปƒเบŠเป‰เบเบฑเบš GKE เปเบฅเป‰เบง. เป‚เบซเบผเบ” เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ Kubernetes DNS (hellosvc:80) เบชเบปเปˆเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ› เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เป‚เบ”เบเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเบ™เบญเบ. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ Kubernetes เบกเบตเบซเบผเบฒเบเบฅเบฑเบเบชเบฐเบ™เบฐ, เบกเบตเบšเบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™:

  • เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบ™เปเบ™เบงเปƒเบ”? เบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบ™เบงเปƒเบ”? เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบšเปเบงเปˆเบฒ เป‚เบซเบผเบ” เบชเบปเปˆเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เปเบ•เปˆเบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบฎเบนเป‰เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เป€เบžเบทเปˆเบญเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ pods เปเบฅเปˆเบ™เปƒเบ™ GKE.
  • เป€เบกเบ•เบฃเบดเบ. เบ”เบปเบ™โ€‹เบ›เบฒเบ™โ€‹เปƒเบ” เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบ•เบญเบšเบชเบฐเปœเบญเบ‡เบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป€เบ‚เบปเป‰เบฒเบกเบฒเบšเป? เป€เบŠเบตเบšเป€เบงเบตเป„เบ”เป‰เบฎเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต? เบกเบฑเบ™โ€‹เปƒเบซเป‰โ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹?
  • เบ‚เปเป‰เบกเบนเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž. เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ เป‚เบซเบผเบ” ะธ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบžเบฝเบ‡เปเบ•เปˆเบœเปˆเบฒเบ™ HTTP เบซเบผเบทเป‚เบ”เบ mTLS?

Istio เบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, Istio เบงเบฒเบ‡เบ•เบปเบงเปเบ—เบ™ sidecar เบ—เบนเบ”เบžเบดเป€เบชเบ” เปƒเบ™เปเบ•เปˆเบฅเบฐเบเบฑเบ. เบ•เบปเบงเปเบ—เบ™ Envoy เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒเปเบฅเบฐเบ‚เบฒเบญเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบšเบฑเบ™เบˆเบธเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบกเบฑเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ ะธ เป‚เบซเบผเบ” เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบœเปˆเบฒเบ™ sidecar proxy Envoy, เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบˆเบฐโ€‹เบฅเบฒโ€‹เบˆเบญเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบˆเบฒเบ เป‚เบซเบผเบ” ะบ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เบ•เบปเบงเปเบ—เบ™ Envoy.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ•เบปเบงเปเบ—เบ™ Envoy เบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เบ•เบฒเปœเปˆเบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ•เบฒเบซเบ™เปˆเบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบŠเบฑเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบขเบนเปˆเป€เบ—เบดเบ‡ Kubernetes.

เบเบฒเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบš Istio

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ•เบปเบงเปเบ—เบ™ Envoy เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, Istio เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเป€เบ—เบดเบ‡เบเบธเปˆเบก GKE เป‚เบ”เบเป€เบเบทเบญเบšเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เปเบ•เปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ„เบธเป‰เบกเบ„เบญเบ‡เป‚เบ”เบ Istio:

  • เบšเปเบฅเบดเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ—เบฑเบ‡เบซเบกเบปเบ”. เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ ะธ เป‚เบซเบผเบ” เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ Kubernetes. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ เป‚เบซเบผเบ”, เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป€เบ‚เบปเป‰เบฒเบกเบฒ, เบกเบตเบšเปเบฅเบดเบเบฒเบ™.
  • เบžเบญเบ”เปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ•เป‰เบญเบ‡เบกเบตเบŠเบทเปˆ. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบญเบ”เบšเปเบฅเบดเบเบฒเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเป„เบงเป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบŠเบทเปˆเปƒเบ™ GKE, Istio เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบฐเบšเบธ เบŠเบทเปˆเบœเบญเบ” เบ•เบฒเบกโ€‹เบžเบดเบ—เบตเบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบฅเบฒเบง. เปƒเบ™เป„เบŸเบฅเปŒ YAML เบœเบญเบ”เบชเปเบฒเบฅเบฑเบš เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ httpเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปƒเบŠเป‰เป‚เบ›เป‚เบ•เบ„เบญเบ™ HTTP... เบ–เป‰เบฒ เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ เปƒเบŠเป‰ เบ. เบž. เบž, เป€เบˆเบปเป‰เบฒเบˆเบฐเบ•เบฑเป‰เบ‡เบŠเบทเปˆเบ—เปˆเบฒเป€เบฎเบทเบญ grpc.
  • เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ–เบทเบเปเบฒเบเบ—เบธเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡ Istio, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Istio

เบกเบตเบชเบญเบ‡เบงเบดเบ—เบตเปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Istio. เบชเบฒโ€‹เบกเบฒเบ” เป€เบ›เบตเบ”เปƒเบŠเป‰ Istio เปƒเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GKE เบซเบผเบท เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบงเบตเบŠเบฑเบ™เป€เบ›เบตเบ”เบ‚เบญเบ‡ Istio เบขเบนเปˆเปƒเบ™เบเบธเปˆเบก. เบ”เป‰เบงเบ Istio เปƒเบ™ GKE, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เปเบฅเบฐ เบเบฒเบ™เบเบปเบเบฅเบฐเบ”เบฑเบš Istio เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบ•เบฐเบซเบผเบญเบ”เบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบเบธเปˆเบก GKE. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰ Istio เป€เบงเบตเบŠเบฑเบ™เบซเบผเป‰เบฒเบชเบธเบ” เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบœเบ‡เบ„เบงเบšเบ„เบธเบก Istio เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เปƒเบซเป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบงเบตเบŠเบฑเบ™ open source เปเบ—เบ™ Istio เปƒเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GKE. เป€เบžเบทเปˆเบญเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™, เบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบก เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™ Istio เปƒเบ™ GKE เบšเป?.

เป€เบฅเบทเบญเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบ—เบปเบšเบ—เบงเบ™เบ„เบนเปˆเบกเบทเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Istio เปƒเบ™เบเบธเปˆเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ Istio เบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบซเบกเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ” sidecarโ€‹ เบชเปเบฒเบฅเบฑเบš namespace Default.

เบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”

เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ–เบทเบเบ„เบดเบ”เบ„เปˆเบฒเป€เบ‚เบปเป‰เบฒเบšเบฑเบ™เบŠเบต Google Cloud Platform เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰เปƒเบ™เบšเบปเบ”เบชเบญเบ™เบ™เบตเป‰, เปƒเบซเป‰เบฅเบถเบšเบเบธเปˆเบก container เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Istio เปเบฅเบฐเบซเบผเบดเป‰เบ™เบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡. เบ™เบตเป‰เบˆเบฐเบฅเบถเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบเบธเปˆเบกเบ—เบฑเบ‡เปเบปเบ”, เป€เบŠเบฑเปˆเบ™: เบ„เบญเบกเบžเบตเบงเป€เบ•เบต, เปเบœเปˆเบ™, เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ•เปเปˆเป„เบ›?

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™