ืคึผืจื™ืคึผืขืจื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ Istio

ืคึผืจื™ืคึผืขืจื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ Istio

Istio ืื™ื– ืึท ื‘ืึทืงื•ื•ืขื ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืงืึทื ืขืงื˜ื™ื ื’, ืกื™ืงื™ื•ืจื™ื ื’ ืื•ืŸ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–. Istio ื ื™ืฆื˜ ืึท ืคืึทืจืฉื™ื™ื“ื ืงื™ื™ึทื˜ ืคื•ืŸ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื– ืฆื• ืœื•ื™ืคืŸ ืื•ืŸ ืคื™ืจืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืื™ืŸ ืึท ื•ื•ืึธื’, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืงืึทื ื˜ื™ื™ื ืขืจื– ืฆื• ืคึผืขืงืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“ ืื•ืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜, ืื•ืŸ Kubernetes ืฆื• ืคื™ืจืŸ ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจื–. ื“ืขืจื™ื‘ืขืจ, ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ Istio ืื™ืจ ืžื•ื–ืŸ ื•ื•ื™ืกืŸ ื•ื•ื™ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ืงื™ื™ืคืœ ื‘ืึทื“ื™ื ื•ื ื’ืก ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื– ืึทืจื‘ืขื˜ ืึธืŸ Istio. ืื•ื™ื‘ ื“ื™ ืžื›ืฉื™ืจื™ื ืื•ืŸ ืงืึทื ืกืขืคึผืก ื–ืขื ืขืŸ ืฉื•ื™ืŸ ื‘ืึทืงืึทื ื˜ ืฆื• ืื™ืจ, ืคื™ืœืŸ ืคืจื™ื™ ืฆื• ื”ืึธืคึผืงืขืŸ ื“ืขื ื˜ื•ื˜ืึธืจื™ืึทืœ ืื•ืŸ ื’ื™ื™ืŸ ื’ืœื™ื™ืš ืฆื• ื“ื™ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื™ื ืกื˜ืึธืœื™ื ื’ Istio ืื•ื™ืฃ Google Kubernetes Engine (GKE) ืึธื“ืขืจ ื™ื ืกื˜ืึทืœื™ืจืŸ ืึท ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ื™ืกื˜ื™ืึธ ืื•ื™ืฃ GKE.

ื“ืึธืก ืื™ื– ืึท ืฉืจื™ื˜-ื“ื•ืจืš-ืฉืจื™ื˜ ืคื™ืจืขืจ ืื™ืŸ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื’ื™ื™ืŸ ื“ื•ืจืš ื“ื™ ื’ืื ืฆืข ืคึผืจืึธืฆืขืก ืคื•ืŸ ืžืงื•ืจ ืงืึธื“ ืฆื• GKE ืงืึทื ื˜ื™ื™ื ืขืจ ืฆื• ื’ืขื‘ืŸ ืื™ืจ ืึท ื™ืงืขืจื“ื™ืง ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ื“ื™ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื– ื“ื•ืจืš ืึท ื‘ื™ื™ืฉืคึผื™ืœ. ืื™ืจ ื•ื•ืขื˜ ืื•ื™ืš ื–ืขืŸ ื•ื•ื™ Istio ืœืขื•ื•ืขืจื™ื“ื–ืฉ ื“ื™ ืžืึทื›ื˜ ืคื•ืŸ ื“ื™ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื–. ื“ืึธืก ืึทืกื•ืžื– ืึทื– ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ืขืคึผืขืก ื•ื•ืขื’ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–, ืงื•ื‘ืขืจื ืขื˜ืขืก, ืกืขืจื•ื•ื™ืก ืžืขืฉืขืก ืึธื“ืขืจ Istio.

ื˜ืึทืกืงืก

ืื™ืŸ ื“ืขื ื˜ื•ื˜ืึธืจื™ืึทืœ, ืื™ืจ ื•ื•ืขื˜ ืคืึทืจืขื ื“ื™ืงืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื˜ืึทืกืงืก:

  1. ืœืขืจื ืขืŸ ืึท ืคึผืฉื•ื˜ ื”ืขืœื ื•ื•ืขืœื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ืงื™ื™ืคืœ ื‘ืึทื“ื™ื ื•ื ื’ืก.
  2. ืœื•ื™ืคืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟื•ืŸ ืžืงื•ืจ ืงืึธื“.
  3. ืคึผืึทืงืงืึทื’ื™ื ื’ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–.
  4. ืฉืึทืคึฟืŸ ืึท ืงื•ื‘ืขืจื ืขื˜ืขืก ืงื ื•ื™ืœ.
  5. ื“ื™ืคึผืœื™ื™ื™ื ื’ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ ืึท ืงื ื•ื™ืœ.

ืื™ื™ื“ืขืจ ืื™ืจ ืึธื ื”ื™ื™ื‘

ื’ื™ื™ ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืฆื• ื’ืขื‘ืŸ ื“ื™ Kubernetes Engine API:

  1. ื’ื™ื™ ืฆื• Kubernetes Engine ื‘ืœืึทื˜ ืื™ืŸ ื“ื™ Google Cloud Platform ืงืึทื ืกืึธื•ืœ.
  2. ืฉืึทืคึฟืŸ ืึธื“ืขืจ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืึท ืคึผืจื•ื™ืขืงื˜.
  3. ื•ื•ืึทืจื˜ืŸ ื‘ื™ื– ื“ื™ ืึทืคึผื™ ืื•ืŸ ืคึฟืึทืจื‘ื•ื ื“ืขื ืข ื‘ืึทื“ื™ื ื•ื ื’ืก ื–ืขื ืขืŸ ืขื ื™ื™ื‘ืึทืœื“. ื“ืึธืก ืงืขืŸ ื ืขืžืขืŸ ืขื˜ืœืขื›ืข ืžื™ื ื•ื˜.
  4. ืžืึทื›ื˜ ื–ื™ื›ืขืจ ืึทื– ื‘ื™ืœื™ื ื’ ืื™ื– ื‘ืึทืฉื˜ืขื˜ื™ืงื˜ ืคึฟืึทืจ ื“ื™ื™ืŸ Google ืงืœืึธื•ื“ ืคึผืœืึทื˜ืคืึธืจื ืคึผืจื•ื™ืขืงื˜. ืœืขืจื ืขืŸ ื•ื•ื™ ืฆื• ื’ืขื‘ืŸ ื‘ื™ืœื™ื ื’.

ืื™ืŸ ื“ืขื ื˜ื•ื˜ืึธืจื™ืึทืœ, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืงืœืึธื•ื“ ืฉืขืœ, ื•ื•ืึธืก ืคึผืจื™ืคึผืขืจื– ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ g1-small ืื™ืŸ Google Compute Engine ืžื™ื˜ ื“ืขื‘ื™ืึทืŸ-ื‘ืื–ื™ืจื˜ ืœื™ื ื•ืงืก, ืึธื“ืขืจ ืึท ืœื™ื ื•ืงืก ืึธื“ืขืจ ืžืึทืงืึธืก ืงืึธืžืคึผื™ื•ื˜ืขืจ.

ืึธืคึผืฆื™ืข ื: ื ื™ืฆืŸ ืงืœืึธื•ื“ ืฉืขืœ

ื‘ืขื ืขืคื™ืฅ ืคื•ืŸ ื ื™ืฆืŸ Cloud Shell:

  • Python 2 ืื•ืŸ Python 3 ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ (ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ virtualenv) ื–ืขื ืขืŸ ื’ืึธืจ ืงืึทื ืคื™ื’ื™ืขืจื“.
  • ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืžื›ืฉื™ืจื™ื gcloud, ื“ืึธืงืงืขืจ, ื’ื™ื™ืŸ ะธ kubectl, ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ.
  • ืื™ืจ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืฆื• ืงืœื™ื™ึทื‘ืŸ ืคื•ืŸ ื˜ืขืงืกื˜ ืจืขื“ืืงืฆื™ืข:
    1. ืงืึธื“ ืจืขื“ืึทืงื˜ืึธืจ, ื•ื•ืึธืก ืึธืคึผืขื ืก ืžื™ื˜ ื“ื™ ืจืขื“ืึทื’ื™ืจืŸ ื‘ื™ืœื“ืœ ืื™ืŸ ื“ื™ ืฉืคึผื™ืฅ ืคื•ืŸ ื“ื™ ืงืœืึธื•ื“ ืฉืขืœ ืคึฟืขื ืฆื˜ืขืจ.
    2. Emacs, Vim ืึธื“ืขืจ Nano, ื•ื•ืึธืก ืขืคืขื ืขืŸ ืคึฟื•ืŸ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืื™ืŸ ืงืœืึธื•ื“ ืฉืขืœ.

ืฆื• ื ื™ืฆืŸ ื•ื•ืึธืœืงืŸ ืฉืขืœ:

  1. ื’ื™ื™ืŸ ืฆื• ื“ื™ GCP ืงืึทื ืกืึธื•ืœ.
  2. ื“ืจื™ืงืŸ ืึทืงื˜ืึทื•ื•ื™ื™ื˜ ืงืœืึธื•ื“ ืฉืขืœ (ืึทืงื˜ืึทื•ื•ื™ื™ื˜ ืงืœืึธื•ื“ ืฉืขืœ) ืื™ืŸ ื“ื™ ืฉืคึผื™ืฅ ืคื•ืŸ ื“ื™ GCP ืงืึทื ืกืึธื•ืœ ืคึฟืขื ืฆื˜ืขืจ.

ืคึผืจื™ืคึผืขืจื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ Istio

ืื™ืŸ ื“ืขืจ ื ื™ื“ืขืจื™ืงืขืจ ื˜ื™ื™ืœ GCP ืงืึทื ืกืึธื•ืœ ื ืงืœืึธื•ื“ ืฉืขืœ ืกืขืกื™ืข ืžื™ื˜ ืึท ื‘ืึทืคึฟืขืœ ืฉื•ืจื” ื•ื•ืขื˜ ืขืคืขื ืขืŸ ืื™ืŸ ืึท ื ื™ื™ึท ืคึฟืขื ืฆื˜ืขืจ.

ืคึผืจื™ืคึผืขืจื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ Istio

ืึธืคึผืฆื™ืข ื‘: ื ื™ืฆืŸ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืžื›ืฉื™ืจื™ื ืœืึธื•ืงืึทืœื™

ืื•ื™ื‘ ืื™ืจ ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ ืžื™ื˜ ืœื™ื ื•ืงืก ืึธื“ืขืจ ืžืึทืงืึธืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืงืึทืžืคึผืึธื•ื ืึทื ืฅ:

  1. ืงืึทืกื˜ืึทืžื™ื™ื– Python 3 ืื•ืŸ Python 2 ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข.

  2. ื™ื ืกื˜ืึทืœื™ืจืŸ ืงืœืึธื•ื“ ืกื“ืง ืžื™ื˜ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ื’ืขืฆื™ื™ึทื’ gcloud.

  3. ืฉื˜ืขืœืŸ kubectl - ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ Kubernetes.

    gcloud components install kubectl

  4. ืฉื˜ืขืœืŸ Docker Community Edition (CE). ืื™ืจ ื•ื•ืขื˜ ื ื•ืฆืŸ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ื’ืขืฆื™ื™ึทื’ ื“ืึธืงืงืขืจืฆื• ืฉืึทืคึฟืŸ ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ืขืจ ืคึฟืึทืจ ื“ื™ ืžื•ืกื˜ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

  5. ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ื’ืขืฆื™ื™ึทื’ ื’ื™ื˜ ื•ื•ืขืจืกื™ืข ืงืึธื ื˜ืจืึธืœืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืžื•ืกื˜ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟื•ืŸ GitHub.

ืืจืืคืงืืคื™ืข ืžื•ืกื˜ืขืจ ืงืึธื“

  1. ืึธืคึผืœืึธื“ื™ืจืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“ ื”ืขืœืœืึธืกืขืจื•ื•ืขืจ:

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

  2. ื’ื™ื™ืŸ ืฆื• ื“ื™ ื‘ื™ื™ึทืฉืคึผื™ืœ ืงืึธื“ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ:

    cd istio-samples/sample-apps/helloserver

ื•ื™ืกืคืึธืจืฉืŸ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ืงื™ื™ืคืœ ื‘ืึทื“ื™ื ื•ื ื’ืก

ื“ืขืจ ืžื•ืกื˜ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ ืื•ืŸ ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืฆื•ื•ื™ื™ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื•ื•ืึธืก ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ืจื•:

  • ืฉืœื™ื—: ืคึผืฉื•ื˜ ืกืขืจื•ื•ืขืจ ืžื™ื˜ ืื™ื™ืŸ ืขื ื“ืคึผื•ื™ื ื˜ ื‘ืึทืงื•ืžืขืŸ, /, ื•ื•ืึธืก ืคึผืจื™ื ืฅ "ื”ืขืœื ื•ื•ืขืœื˜" ืฆื• ื“ื™ ืงืึทื ืกืึธื•ืœ.
  • loadgen: ืฉืจื™ืคื˜ ื•ื•ืึธืก ืกืขื ื“ื– ืคืึทืจืงืขืจ ืฆื• ืฉืœื™ื—, ืžื™ื˜ ืึท ืงืึทื ืคื™ื’ื™ืขืจืึทื‘ืึทืœ ื ื•ืžืขืจ ืคื•ืŸ ืจื™ืงื•ื•ืขืก ืคึผืขืจ ืกืขืงื•ื ื“ืข.

ืคึผืจื™ืคึผืขืจื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ Istio

ืคืœื™ืกื ื“ื™ืง ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟื•ืŸ ืžืงื•ืจ ืงืึธื“

ืฆื• ื•ื™ืกืคืึธืจืฉืŸ ื“ื™ ืžื•ืกื˜ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืœื•ื™ืคืŸ ืขืก ืื™ืŸ ืงืœืึธื•ื“ ืฉืขืœ ืึธื“ืขืจ ืื•ื™ืฃ ื“ื™ื™ืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ.
1) ืื™ืŸ ื“ืขื ืงืึทื˜ืึทืœืึธื’ istio-samples/sample-apps/helloserver ืœื•ื™ืคืŸ ืฉืœื™ื—:

python3 server/server.py

ืื™ืŸ ืกื˜ืึทืจื˜ืึทืคึผ ืฉืœื™ื— ื“ื™ ืคืืœื’ืขื ื“ืข ืื™ื– ื’ืขื•ื•ื™ื–ืŸ:

INFO:root:Starting server...

2) ืขืคึฟืขื ืขืŸ ืืŸ ืื ื“ืขืจ ื•ื•ืึธืงื–ืึทืœ ืคึฟืขื ืฆื˜ืขืจ ืฆื• ืฉื™ืงืŸ ืจื™ืงื•ื•ืขืก ืฆื• ืฉืœื™ื—. ืื•ื™ื‘ ืื™ืจ ื ื•ืฆืŸ ืงืœืึธื•ื“ ืฉืขืœ, ื’ื™ื˜ ื“ื™ ืœื™ื™ื’ืŸ ื‘ื™ืœื“ืœ ืฆื• ืขืคึฟืขื ืขืŸ ืืŸ ืื ื“ืขืจ ืกืขืกื™ืข.
3) ืฉื™ืงืŸ ืึท ื‘ืงืฉื” ืฆื• ืฉืœื™ื—:

curl http://localhost:8080

ืกืขืจื•ื•ืขืจ ืขื ื˜ืคืขืจื˜:

Hello World!

4) ืคึฟื•ืŸ ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ื• ืื™ืจ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ื“ื™ ืžื•ืกื˜ืขืจ ืงืึธื“, ื’ื™ื™ืŸ ืฆื• ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ืึธืก ื›ึผื•ืœืœ loadgen:

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) ืึทืงื˜ืึทื•ื•ื™ื™ื˜ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืกื•ื•ื™ื•ื•ืข:

source env/bin/activate

8) ืฉื˜ืขืœืŸ ื‘ืื“ืขืจืคืขื ื™ืฉืŸ ืคึฟืึทืจ loadgen:

pip3 install -r requirements.txt

9) ืงืึทื˜ืขืจ loadgen:

python3 loadgen.py

ืื™ืŸ ืกื˜ืึทืจื˜ืึทืคึผ loadgen ื“ื™ืกืคึผืœื™ื™ื– ืขืคึผืขืก ื•ื•ื™ ื“ื™ ืคืืœื’ืขื ื“ืข ืึธื ื–ืึธื’:

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

ืื™ืŸ ืืŸ ืื ื“ืขืจ ื•ื•ืึธืงื–ืึทืœ ืคึฟืขื ืฆื˜ืขืจ ืฉืœื™ื— ืึทื•ื˜ืคึผื•ืฅ ื“ื™ ืคืืœื’ืขื ื“ืข ืึทืจื˜ื™ืงืœืขืŸ ืฆื• ื“ื™ ืงืึทื ืกืึธื•ืœ:

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: */*

ืคึฟื•ืŸ ืึท ื ืขื˜ื•ื•ืึธืจืงื™ื ื’ ืคึผืขืจืกืคึผืขืงื˜ื™ื•ื•, ื“ื™ ื’ืื ืฆืข ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืœื•ื™ืคื˜ ืื•ื™ืฃ ืึท ืื™ื™ืŸ ื‘ืึทืœืขื‘ืึธืก (ื”ื™ื’ืข ืงืึธืžืคึผื™ื•ื˜ืขืจ ืึธื“ืขืจ ืงืœืึธื•ื“ ืฉืขืœ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ). ื“ืขืจื™ื‘ืขืจ ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืœืึธืงืึทืœื”ืึธืกื˜ืฆื• ืฉื™ืงืŸ ืจื™ืงื•ื•ืขืก ืฆื• ืฉืœื™ื—.
10) ืฆื• ื”ืึทืœื˜ืŸ loadgen ะธ ืฉืœื™ื—, ืึทืจื™ื™ึทืŸ ืงื˜ืจืœ-c ืื™ืŸ ื™ืขื“ืขืจ ื•ื•ืึธืงื–ืึทืœ ืคึฟืขื ืฆื˜ืขืจ.
11) ืื™ืŸ ื“ื™ ื•ื•ืึธืงื–ืึทืœ ืคึฟืขื ืฆื˜ืขืจ loadgen ื“ื™ืึทืงื˜ื™ื•ื•ื™ื™ื˜ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืกื•ื•ื™ื•ื•ืข:

deactivate

ืคึผืึทืงืงืึทื’ื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–

ืฆื• ืœื•ื™ืคืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ GKE, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคึผืขืงืœ ื“ื™ ื‘ื™ื™ืฉืคึผื™ืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ - ืฉืœื™ื— ะธ loadgen - ื‘ื™ื™ึท ืงืึทื ื˜ื™ื™ื ืขืจื–. ื ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ื– ืึท ื•ื•ืขื’ ืฆื• ืคึผืขืงืœ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฆื• ื™ื–ืึธืœื™ืจืŸ ืขืก ืคื•ืŸ ื–ื™ื™ึทืŸ ืกื•ื•ื™ื•ื•ืข.

ืฆื• ืคึผืขืงืœ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ, ืื™ืจ ื“ืึทืจืคึฟืŸ dockerfile. dockerfile ืื™ื– ืึท ื˜ืขืงืกื˜ ื˜ืขืงืข ื•ื•ืึธืก ื“ื™ืคื™ื™ื ื– ืงืึทืžืึทื ื“ื– ืคึฟืึทืจ ื‘ื ื™ืŸ ื“ื™ ืžืงื•ืจ ืงืึธื“ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ืŸ ื–ื™ื™ึทืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ื“ืึธืงืงืขืจ ื‘ื™ืœื“. ืึทืžืึธืœ ื’ืขื‘ื•ื™ื˜, ืื™ืจ ื•ืคึผืœืึธืึทื“ ื“ื™ ื‘ื™ืœื“ ืฆื• ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ืจืขื’ื™ืกื˜ืจื™ ืึทื–ืึท ื•ื•ื™ Docker Hub ืึธื“ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืจืขื’ื™ืกื˜ืจื™.

ื“ืขืจ ืžืฉืœ ื”ืื˜ ืฉื•ื™ืŸ dockerfile ืคืึทืจ ืฉืœื™ื— ะธ loadgen ืžื™ื˜ ืึทืœืข ื“ื™ ื ื™ื™ื˜ื™ืง ืงืึทืžืึทื ื“ื– ืฆื• ื–ืึทืžืœืขืŸ ื‘ื™ืœื“ืขืจ. ืื•ื ื˜ืŸ โ€” 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" ]

  • ืงืึธืœืขืงื˜ื™ื•ื• ืคึฟื•ืŸ ืคึผื™ื˜ื”ืึธืŸ:3-ืฉืœืึทื ืง ื•ื•ื™ ื‘ืึทื–ืข ื“ืขืจืฆื™ื™ืœื˜ Docker ืฆื• ื ื•ืฆืŸ ื“ื™ ืœืขืฆื˜ืข ืคึผื™ื˜ื”ืึธืŸ 3 ื‘ื™ืœื“ ื•ื•ื™ ืึท ื‘ืึทื–ืข.
  • ืงืึธืœืขืงื˜ื™ื•ื• ืงืึธืคึผื™. . ืงืืคื™ืขืก ื“ื™ ืžืงื•ืจ ื˜ืขืงืขืก ืฆื• ื“ื™ ืงืจืึทื ื˜ ืึทืจื‘ืขื˜ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ (ื‘ืœื•ื™ื– ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ server.py) ืฆื• ื“ื™ ื˜ืขืงืข ืกื™ืกื˜ืขื ืคื•ืŸ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ.
  • ENTRYPOINT ื“ื™ืคื™ื™ื ื– ื“ื™ ื‘ืึทืคึฟืขืœ ื•ื•ืึธืก ืื™ื– ื’ืขื ื™ืฆื˜ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ. ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ื“ืขื ื‘ืึทืคึฟืขืœ ืื™ื– ื›ึผืžืขื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ื“ื™ ื•ื•ืึธืก ืื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ืœื•ื™ืคืŸ server.py ืคึฟื•ืŸ ืžืงื•ืจ ืงืึธื“.
  • ืงืึธืœืขืงื˜ื™ื•ื• ื•ื™ืกืฉื˜ืขืœืŸ ื™ื ื“ื™ืงื™ื™ืฅ ืึทื– ืฉืœื™ื— ื•ื•ื™ื™ืฅ ืคึฟืึทืจ ื“ืึทื˜ืŸ ื“ื•ืจืš ื“ื™ ืคึผืึธืจื˜ 8080. ื“ืขื ืงืึธืœืขืงื˜ื™ื•ื• ืื™ื– ื ื™ืฉื˜ ื’ื™ื˜ ืคึผืึธืจืฅ. ื“ืึธืก ืื™ื– ืึท ืžื™ืŸ ืคื•ืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื•ื•ืึธืก ืื™ื– ื“ืืจืฃ ืฆื• ืขืคึฟืขื ืขืŸ ื“ืขื ืคึผืึธืจื˜ 8080 ื•ื•ืขืŸ ืกื˜ืึทืจื˜ื™ื ื’ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ.

ืคึผืจื™ืคึผืขืจื™ื ื’ ืฆื• ืงืึทื ื˜ืึทืžืึทื ื™ื™ื– ื“ื™ื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ

1) ืฉื˜ืขืœืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–. ืคืึทืจื‘ื™ื™ึทื˜ืŸ PROJECT_ID ืฆื• ื“ื™ื™ืŸ GCP ืคึผืจื•ื™ืขืงื˜ ืฉื™ื™ึทืŸ.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

ื ื™ืฆืŸ ื•ื•ืึทืœื•ืขืก PROJECT_ID ะธ GCR_REPO ืื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ื“ืึธืงืงืขืจ ื‘ื™ืœื“ ื•ื•ืขืŸ ืื™ืจ ื‘ื•ื™ืขืŸ ืขืก ืื•ืŸ ืฉื˜ื•ืคึผืŸ ืขืก ืฆื• ืึท ืคึผืจื™ื•ื•ืึทื˜ ืงืึทื ื˜ื™ื™ื ืขืจ ืจืขื’ื™ืกื˜ืจื™.

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 .

ืคึผืึทืจืึทืžืขื˜ืขืจ -t ืจืขืคึผืจืึทื–ืขื ืฅ ื“ื™ ื“ืึธืงืงืขืจ ืงื•ื•ื™ื˜ืœ. ื“ืึธืก ืื™ื– ื“ืขืจ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ ืื™ืจ ื ื•ืฆืŸ ื•ื•ืขืŸ ื“ื™ืคึผืœื•ื™ื™ื ื’ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ.

  1. ืฆื•ืคึฟืขืœื™ืงืขืจ ื“ื™ ื‘ื™ืœื“ ืฆื• ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจ ืจืขื’ื™ืกื˜ืจื™:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

ืงืึทื ื˜ืึทืžืึทื ื™ื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ืœืึธื“ืŸ

1) ื’ื™ื™ืŸ ืฆื• ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ื• ื“ื™ ื‘ื™ื™ึทืฉืคึผื™ืœ ืื™ื– ืœื™ื’ืŸ loadgen:

cd ../loadgen

2) ืงืœื™ื™ึทื‘ืŸ ื“ื™ ื‘ื™ืœื“:

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

3) ืฆื•ืคึฟืขืœื™ืงืขืจ ื“ื™ ื‘ื™ืœื“ ืฆื• ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจ ืจืขื’ื™ืกื˜ืจื™:

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

ื–ืขืŸ ืึท ืจืฉื™ืžื” ืคื•ืŸ ื‘ื™ืœื“ืขืจ

ืื™ื‘ืขืจื‘ืœื™ืง ื“ื™ ืจืฉื™ืžื” ืคื•ืŸ ื‘ื™ืœื“ืขืจ ืื™ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึทื– ื“ื™ ื‘ื™ืœื“ืขืจ ื–ืขื ืขืŸ ื•ืคึผืœืึธืึทื“ืขื“:

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 ืงื ื•ื™ืœ.

ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจื– ืงืขืŸ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ืื•ื™ืฃ ืึท ืงืœืึธื•ื“ ืฉืขืœ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืึธื“ืขืจ ืื•ื™ืฃ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ ืžื™ื˜ ื“ื™ ื‘ืึทืคึฟืขืœ ื“ืึธืงืขืจ ืœื•ื™ืคืŸ. ืึธื‘ืขืจ ืื™ืŸ ืึท ืคึผืจืึธื“ื•ืงืฆื™ืข ืกื•ื•ื™ื•ื•ืข, ืื™ืจ ื“ืึทืจืคึฟืŸ ืึท ื•ื•ืขื’ ืฆื• ืกืขื ื˜ืจืึทืœื™ ืึธืจืงืขืกื˜ืจื™ืจืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืกื™ืกื˜ืขื ื•ื•ืึธืก ืžืื›ื˜ ื–ื™ื›ืขืจ ืึทื– ืงืึทื ื˜ื™ื™ื ืขืจื– ื–ืขื ืขืŸ ืฉื˜ืขื ื“ื™ืง ืคืœื™ืกื ื“ื™ืง, ืื•ืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ ืึท ื•ื•ืขื’ ืฆื• ืคืึทืจื’ื™ื›ืขืจืŸ ืื•ืŸ ื•ืžื“ืจื™ื™ ื ืึธืš ืงืึทืกืขืก ืื•ื™ื‘ ืคืึทืจืงืขืจ ื™ื ืงืจื™ืกื™ื–.

ืฆื• ืœื•ื™ืคืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–ืขื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ G.K.E.. GKE ืื™ื– ืึท ืงืึธื ื˜ื™ื ืขื ื˜ ืึธืจืงืขืกื˜ืจืึทื˜ื™ืึธืŸ ืคึผืœืึทื˜ืคืึธืจืžืข ื•ื•ืึธืก ืึทื’ืจืึทื’ื™ื™ืฅ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ืื™ืŸ ืึท ืงื ื•ื™ืœ. ื™ืขื“ืขืจ ื•ื•ื™ืจื˜ื•ืขืœ ืžืึทืฉื™ืŸ ืื™ื– ื’ืขืจื•ืคืŸ ืึท ื ืึธื“ืข. GKE ืงืœืึทืกื˜ืขืจื– ื–ืขื ืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืขืคึฟืขื ืขืŸ ืžืงื•ืจ Kubernetes ืงื ื•ื™ืœ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกื™ืกื˜ืขื. Kubernetes ื’ื™ื˜ ืžืขืงืึทื ื™ื–ืึทืžื– ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื“ืขื ืงื ื•ื™ืœ.

ืฉืึทืคึฟืŸ ืึท GKE ืงื ื•ื™ืœ:

1) ืฉืึทืคึฟืŸ ืึท ืงื ื•ื™ืœ:

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

ืงืึธืœืขืงื˜ื™ื•ื• gcloud ืงืจื™ื™ื™ืฅ ืึทืŸ ื ืึธืš ืงื ื•ื™ืœ ืื™ืŸ ื“ื™ GCP ืคึผืจื•ื™ืขืงื˜ ืื•ืŸ ืคืขืœื™ืงื™ื™ึทื˜ ื–ืึธื ืข ืื™ืจ ืกืคึผืขืกื™ืคื™ืขื“. ืฆื• ืœื•ื™ืคืŸ Istio, ืžื™ืจ ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืฆื• ื”ืึธื‘ืŸ ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ 4 ื ืึธื•ื“ื– ืื•ืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ n1-ืกื˜ืึทื ื“ืึทืจื“-2.

ื“ื™ ืžืึทื ืฉืึทืคึฟื˜ ืงืจื™ื™ื™ืฅ ื“ืขื ืงื ื•ื™ืœ ืื™ืŸ ืึท ื‘ื™ืกืœ ืžื™ื ื•ื˜. ื•ื•ืขืŸ ื“ืขืจ ืงื ื•ื™ืœ ืื™ื– ื’ืจื™ื™ื˜, ื“ืขืจ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ืจืขื–ื•ืœื˜ืึทื˜ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก ัะพะพะฑั‰ะตะฝะธะต.

2) ืฆื•ืฉื˜ืขืœืŸ ืงืจืึทื“ืขื ื˜ืฉืึทืœื– ืื™ืŸ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ื’ืขืฆื™ื™ึทื’ kubectlืฆื• ื ื•ืฆืŸ ืขืก ืฆื• ืคื™ืจืŸ ื“ืขื ืงื ื•ื™ืœ:

gcloud container clusters get-credentials istioready

3) ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ื™ื‘ืขืจื’ืขื‘ืŸ ืžื™ื˜ Kubernetes ื“ื•ืจืš kubectl. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืกื˜ืึทื˜ื•ืก ืคื•ืŸ ื ืึธื•ื“ื–:

kubectl get 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

ืงื•ื‘ืขืจื ืขื˜ืขืก ืฉืœื™ืกืœ ืงืึทื ืกืขืคึผืก

ื“ื™ ื“ื™ืึทื’ืจืึทืžืข ื•ื•ื™ื™ื–ื˜ ืึทืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ GKE:

ืคึผืจื™ืคึผืขืจื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ Istio

ืื™ื™ื“ืขืจ ืื™ืจ ืฆืขื•ื•ื™ืงืœืขืŸ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ GKE, ืœืขืจื ืขืŸ ื“ื™ ืฉืœื™ืกืœ ืงืึทื ืกืขืคึผืก ืคื•ืŸ Kubernetes. ืขืก ื–ืขื ืขืŸ ืœื™ื ืงืก ืื™ืŸ ื“ื™ ืกื•ืฃ ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืœืขืจื ืขืŸ ืžืขืจ.

  • ื ืึธื•ื“ื– ืื•ืŸ ืงืœืึทืกื˜ืขืจื–. ืื™ืŸ GKE, ืึท ื ืึธื“ืข ืื™ื– ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ. ืื•ื™ืฃ ืื ื“ืขืจืข Kubernetes ืคึผืœืึทื˜ืคืึธืจืžืก, ืึท ื ืึธื“ืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ ืึธื“ืขืจ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ. ื ืงื ื•ื™ืœ ืื™ื– ืึท ื–ืึทืžืœื•ื ื’ ืคื•ืŸ ื ืึธื•ื“ื– ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืจืขื›ื ื˜ ื•ื•ื™ ืึท ืื™ื™ืŸ ืึทืคึผืึทืจืึทื˜ ื•ื•ื• ืื™ืจ ืฆืขื•ื•ื™ืงืœืขืŸ ืึท ืงืึทื ื˜ื™ื™ื ืขืจื™ื™ื–ื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.
  • ืคึผืึธื“ืก. ืื™ืŸ Kubernetes, ืงืึทื ื˜ื™ื™ื ืขืจื– ืœื•ื™ืคืŸ ืื™ืŸ ืคึผืึธื“ืก. ื ืคึผืึธื“ ืื™ืŸ ืงื•ื‘ืขืจื ืขื˜ืขืก ืื™ื– ืึทืŸ ื™ื ื“ื™ื•ื•ื™ื“ื–ืฉืึทื‘ืึทืœ ืึทืคึผืึทืจืึทื˜. ื ืคึผืึธื“ ื”ืืœื˜ ืื™ื™ื ืขืจ ืึธื“ืขืจ ืžืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื–. ืื™ืจ ืฆืขื•ื•ื™ืงืœืขืŸ ืกืขืจื•ื•ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื•ืŸ loadgen ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืึธื“ืก. ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ ืึท ืคึผืึธื“ (ืœืžืฉืœ, ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืขืจื•ื•ืขืจ ืื•ืŸ ืคืจืืงืกื™ ืกืขืจื•ื•ืขืจ), ืงืึทื ื˜ื™ื™ื ืขืจื– ื–ืขื ืขืŸ ื’ืขืจืื˜ืŸ ื•ื•ื™ ืึท ืื™ื™ืŸ ืขื ื˜ื™ื˜ื™ ืื•ืŸ ื˜ื™ื™ืœืŸ ืคึผืึธื“ ืจืขืกื•ืจืกืŸ.
  • ื“ื™ืคึผืœื•ื™ืžืึทื ืฅ. ืื™ืŸ Kubernetes, ืึท ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืื™ื– ืึท ื›ื™ื™ืคืขืฅ ื•ื•ืึธืก ืื™ื– ืึท ื–ืึทืžืœื•ื ื’ ืคื•ืŸ ื™ื™ื“ืขื ื™ืงืึทืœ ืคึผืึธื“ืก. ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืœืึธื ื˜ืฉื™ื– ืงื™ื™ืคืœ ืจืขืคึผืœืึทืงืึทื– ืคื•ืŸ ืคึผืึธื“ืก ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืึทืจื™ื‘ืขืจ ืงื ื•ื™ืœ ื ืึธื•ื“ื–. ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืจื™ืคึผืœื™ื™ืกื™ื– ืคึผืึธื“ืก ื•ื•ืึธืก ื”ืึธื‘ืŸ ื ื™ื˜ ืึทื ื“ืขืจืฉ ืึธื“ืขืจ ื ื™ื˜ ืจื™ืกืคึผืึทื ื“ื™ื ื’.
  • Kubernetes ื“ื™ื ืกื˜. ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“ ืื™ืŸ GKE, ื“ื™ ืงืฉืจ ืฆื•ื•ื™ืฉืŸ loadgen ะธ ืฉืœื™ื—. ื•ื•ืขืŸ ืื™ืจ ืกื˜ืึทืจื˜ืขื“ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ื™ืฃ ืึท ืงืœืึธื•ื“ ืฉืขืœ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืึธื“ืขืจ ื“ืขืกืงื˜ืึทืคึผ, ืื™ืจ ื’ืขืฉื™ืงื˜ ืจื™ืงื•ื•ืขืก ืฆื• ืฉืœื™ื— ื‘ื™ื™ ืœืึธืงืึทืœื”ืึธืกื˜: ืงืกื ื•ืžืงืก. ืึทืžืึธืœ ื“ื™ืคึผืœื•ื™ื“ ืฆื• GKE, ืคึผืึธื“ืก ื–ืขื ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื•ื™ืฃ ืคืึทืจืึทื ืขืŸ ื ืึธื•ื“ื–. ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืื™ืจ ื”ืึธื‘ืŸ ืงื™ื™ืŸ ืงืึธื ื˜ืจืึธืœ ืื™ื‘ืขืจ ื•ื•ืึธืก ื ืึธื“ืข ื“ื™ ืคึผืึธื“ ืื™ื– ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ, ืึทื–ื•ื™ ืื™ืจ ืคึผืึธื“ืก ื ื™ื˜ ืฉื˜ืขื ื“ื™ืง IP ืึทื“ืจืขืกืขืก.
    ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึทืŸ IP ืึทื“ืจืขืก ืคึฟืึทืจ ืฉืœื™ื—, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื“ืขืคื™ื ื™ืจืŸ ืึท ื ืขืฅ ืึทื‘ืกื˜ืจืึทืงืฆื™ืข ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ ื“ื™ ืคึผืึธื“ืก. ืึทื– ืก ื•ื•ืึธืก ืขืก ืื™ื– Kubernetes ื“ื™ื ืกื˜. ื“ื™ Kubernetes ื“ื™ื ืกื˜ ื’ื™ื˜ ืึท ืคึผืขืจืกื™ืกื˜ืขื ื˜ ืขื ื“ืคึผื•ื™ื ื˜ ืคึฟืึทืจ ืึท ืกื›ื•ื ืคื•ืŸ ืคึผืึธื“ืก. ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ื˜ื™ื™ืคึผืก ืคื•ืŸ ื‘ืึทื“ื™ื ื•ื ื’ืขืŸ. ืฉืœื™ื— ื ื™ืฆื˜ LoadBalancer, ื•ื•ืึธืก ื’ื™ื˜ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง IP ืึทื“ืจืขืก ืฆื• ืงืึธื ื˜ืึทืงื˜ ืฉืœื™ื— ืคื•ืŸ ืึทืจื•ื™ืก ื“ื™ ืงื ื•ื™ืœ.
    Kubernetes ืื•ื™ืš ื”ืื˜ ืึท ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื“ื ืก ืกื™ืกื˜ืขื ื•ื•ืึธืก ืึทืกื™ื™ื ื– ื“ื ืก ื ืขืžืขืŸ (ืœืžืฉืœ, helloserver.default.cluster.local) ื‘ืึทื“ื™ื ื•ื ื’ืขืŸ. ื“ืึทื ืง ืฆื• ื“ืขื, ืคึผืึธื“ืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ื™ื‘ืขืจื’ืขื‘ืŸ ืžื™ื˜ ืื ื“ืขืจืข ืคึผืึธื“ืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ืื™ืŸ ืึท ืฉื˜ืขื ื“ื™ืง ืึทื“ืจืขืก. ื“ื™ ื“ื ืก ื ืึธืžืขืŸ ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืึทืจื•ื™ืก ื“ื™ ืงื ื•ื™ืœ, ืึทื–ืึท ื•ื•ื™ ืื™ืŸ ืงืœืึธื•ื“ ืฉืขืœ ืึธื“ืขืจ ืื•ื™ืฃ ืึท ืงืึธืžืคึผื™ื•ื˜ืขืจ.

ืงื•ื‘ืขืจื ืขื˜ืขืก ืžืึทื ืึทืคืขืกื˜ ื–ื™ืš

ื•ื•ืขืŸ ืื™ืจ ืœื•ื™ืคืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟื•ืŸ ืžืงื•ืจ, ืื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ ื“ื™ ื™ืžืคึผืขืจืึทื˜ื™ื•ื• ื‘ืึทืคึฟืขืœ ืคึผื™ื˜ื”ืึธื ืงืกื ื•ืžืงืก

server.py

ื™ืžืคึผืขืจืึทื˜ื™ื•ื• ื™ืžืคึผืœื™ื™ื– ืึท ื•ื•ืขืจื‘: "ื˜ืึธืŸ ื“ืึธืก."

Kubernetes ื ื™ืฆื˜ ื“ืขืงืœืึทืจืึทื˜ื™ื•ื•ืข ืžืึธื“ืขืœ. ื“ืึธืก ืžื™ื™ื ื˜ ืึทื– ืžื™ืจ ื–ืึธื’ืŸ ื ื™ืฉื˜ Kubernetes ืคึผื•ื ืงื˜ ื•ื•ืึธืก ืฆื• ื˜ืึธืŸ, ืึธื‘ืขืจ ืืœื ื“ื™ืกืงืจื™ื™ื‘ื™ื ื’ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืฉื˜ืึทื˜. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, Kubernetes ืกื˜ืึทืจืฅ ืื•ืŸ ืกื˜ืึทืคึผืก ืคึผืึธื“ืก ื•ื•ื™ ื“ืืจืฃ ืฆื• ืขื ืฉื•ืจ ืึทื– ื“ื™ ืคืึทืงื˜ื™ืฉ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ืกื™ืกื˜ืขื ืฉื•ื•ืขื‘ืขืœืขืš ื“ื™ ื’ืขื‘ืขื˜ืŸ ืฉื˜ืึทื˜.

ืื™ืจ ืึธื ื•ื•ื™ื™ึทื–ืŸ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืฉื˜ืึทื˜ ืื™ืŸ ืžืึทื ื™ืคืขืกืฅ ืึธื“ืขืจ ื˜ืขืงืขืก ื™ืึทืžืœ. ื YAML ื˜ืขืงืข ื›ึผื•ืœืœ ืกืคึผืขืกืึทืคืึทืงื™ื™ืฉืึทื ื– ืคึฟืึทืจ ืื™ื™ื ืขืจ ืึธื“ืขืจ ืžืขืจ Kubernetes ืึทื‘ื“ื–ืฉืขืงืฅ.

ื“ืขืจ ื‘ื™ื™ืฉืคึผื™ืœ ื›ึผื•ืœืœ ืึท YAML ื˜ืขืงืข ืคึฟืึทืจ ืฉืœื™ื— ะธ loadgen. ื™ืขื“ืขืจ 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

  • ืžื™ืŸ ื™ื ื“ื™ืงื™ื™ืฅ ื“ืขื ื˜ื™ืคึผ ืคื•ืŸ ื“ื™ ื›ื™ื™ืคืขืฅ.
  • ืžืขื˜ืึทื“ืึทื˜ืึท.ื ืึทืžืข ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื“ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ื ืึธืžืขืŸ.
  • ืขืจืฉื˜ืขืจ ืคืขืœื“ spec ื›ึผื•ืœืœ ืึท ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืฉื˜ืึทื˜.
  • ืกืคึผืขืง.ืจืขืคึผืœืึทืงืึทื– ื™ื ื“ื™ืงื™ื™ืฅ ื“ื™ ื’ืขื‘ืขื˜ืŸ ื ื•ืžืขืจ ืคื•ืŸ ืคึผืึธื“ืก.
  • ืกืขืงืฆื™ืข ืกืคึผืขืง. ืžื•ืกื˜ืขืจ ื“ื™ืคื™ื™ื ื– ืึท ืคึผืึธื“ ืžื•ืกื˜ืขืจ. ืขืก ืื™ื– ืึท ืคืขืœื“ ืื™ืŸ ื“ื™ ืคึผืึธื“ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ื‘ื™ืœื“, ื•ื•ืึธืก ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ ื•ื•ืึธืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ื™ืงืกื˜ืจืึทืงื˜ื™ื“ ืคื•ืŸ ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจ ืจืขื’ื™ืกื˜ืจื™.

ื“ื™ ืกืขืจื•ื•ื™ืก ืื™ื– ื“ื™ืคื™ื™ื ื“ ื•ื•ื™ ื’ื™ื™ื˜:

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

  • LoadBalancer: ืงืœื™ื™ืึทื ืฅ ืฉื™ืงืŸ ืจื™ืงื•ื•ืขืก ืฆื• ื“ื™ IP ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืžืึทืกืข ื‘ืึทืœืึทื ืกืขืจ, ื•ื•ืึธืก ื”ืื˜ ืึท ืคึผืขืจืกื™ืกื˜ืขื ื˜ IP ืึทื“ืจืขืก ืื•ืŸ ืื™ื– ืฆื•ื˜ืจื™ื˜ืœืขืš ืคึฟื•ืŸ ืึทืจื•ื™ืก ื“ื™ ืงื ื•ื™ืœ.
  • targetPort: ื•ื•ื™ ืื™ืจ ื’ืขื“ืขื ืงืขืŸ, ื“ื™ ืžืึทื ืฉืึทืคึฟื˜ ื•ื™ืกืฉื˜ืขืœืŸ 8080 ะฒ dockerfile ื”ืื˜ ื ื™ืฉื˜ ืฆื•ืฉื˜ืขืœืŸ ืคึผืึธืจืฅ. ืื™ืจ ืฆื•ืฉื˜ืขืœืŸ ื“ื™ ืคึผืึธืจื˜ 8080ืึทื–ื•ื™ ืึทื– ืื™ืจ ืงืขื ืขืŸ ืงืึธื ื˜ืึทืงื˜ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ ืฉืœื™ื— ืึทืจื•ื™ืก ื“ื™ ืงื ื•ื™ืœ. ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ hellosvc.default.cluster.local:80 (ืงื•ืจืฅ ื ืึธืžืขืŸ: hellosvc) ืงืึธืจืึทืกืคึผืึทื ื“ื– ืฆื• ื“ื™ ืคึผืึธืจื˜ 8080 ืคึผืึธื“ IP ืึทื“ืจืขืกืขืก ื”ืขืœืœืึธืกืขืจื•ื•ืขืจ.
  • ืคึผืึธืจื˜: ื“ืึธืก ืื™ื– ื“ื™ ืคึผืึธืจื˜ ื ื•ืžืขืจ ื•ื•ื• ืื ื“ืขืจืข ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ื•ื•ืขื˜ ืฉื™ืงืŸ ืจื™ืงื•ื•ืขืก.

loadgen.yaml

ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ื›ื™ื™ืคืขืฅ ืฆื• loadgen.yaml ื–ืขื˜ ืื•ื™ืก ื•ื•ื™ server.yaml. ื“ืขืจ ื—ื™ืœื•ืง ืื™ื– ืึทื– ื“ื™ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ื›ื™ื™ืคืขืฅ ื›ึผื•ืœืœ ืึท ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืฉื™ืงืŸ. ืขืก ื“ื™ืคื™ื™ื ื– ื“ื™ ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ืืจืฃ loadgen ืื•ืŸ ื•ื•ืึธืก ืื™ืจ ื”ืึธื˜ ืื™ื ืกื˜ืึทืœื™ืจืŸ ื•ื•ืขืŸ ืื™ืจ ืœื•ื™ืคืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟื•ืŸ ืžืงื•ืจ.

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

ืฆื™ื™ึทื˜ loadgen ื˜ื•ื˜ ื ื™ืฉื˜ ืึธื ื ืขืžืขืŸ ื™ื ืงืึทืžื™ื ื’ ืจื™ืงื•ื•ืขืก ืคึฟืึทืจ ื“ื™ ืคืขืœื“ ื˜ื™ืคึผ ืื ื’ืขื•ื•ื™ื–ืŸ ClusterIP. ื“ืขืจ ื˜ื™ืคึผ ื’ื™ื˜ ืึท ืคึผืขืจืกื™ืกื˜ืขื ื˜ IP ืึทื“ืจืขืก ื•ื•ืึธืก ืกืขืจื•ื•ื™ืกืขืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ืงืขื ืขืŸ ื ื•ืฆืŸ, ืึธื‘ืขืจ ื“ื™ IP ืึทื“ืจืขืก ืื™ื– ื ื™ืฉื˜ ื™ืงืกืคึผืึธื•ื–ื“ ืฆื• ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืงืœื™ื™ืึทื ืฅ.

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

ื“ื™ืคึผืœื•ื™ื™ื ื’ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ GKE

1) ื’ื™ื™ืŸ ืฆื• ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ื• ื“ื™ ื‘ื™ื™ึทืฉืคึผื™ืœ ืื™ื– ืœื™ื’ืŸ ืฉืœื™ื—:

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

2) ืขืคืขื ืขืŸ server.yaml ืื™ืŸ ืึท ื˜ืขืงืกื˜ ืจืขื“ืึทืงื˜ืึธืจ.
3) ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ืขื ื ืึธืžืขืŸ ืื™ืŸ ื“ืขื ืคืขืœื“ ื‘ื™ืœื“ ืฆื• ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ื™ืŸ ื“ืึธืงืงืขืจ ื‘ื™ืœื“.

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

ืคืึทืจื‘ื™ื™ึทื˜ืŸ PROJECT_ID ืฆื• ื“ื™ื™ืŸ GCP ืคึผืจื•ื™ืขืงื˜ ืฉื™ื™ึทืŸ.
4) ื”ื™ื˜ ืื•ืŸ ื ืึธืขื ื˜ server.yaml.
5) ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ YAML ื˜ืขืงืข ืฆื• Kubernetes:

kubectl apply -f server.yaml

ื ืึธืš ืžืฆืœื™ื— ืงืึทืžืคึผืœื™ืฉืึทืŸ, ื“ื™ ื‘ืึทืคึฟืขืœ ื˜ืจืื’ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืงืึธื“:

deployment.apps/helloserver created
service/hellosvc created

6) ื’ื™ื™ืŸ ืฆื• ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ื• loadgen:

cd ../loadgen

7) ืขืคืขื ืขืŸ loadgen.yaml ืื™ืŸ ืึท ื˜ืขืงืกื˜ ืจืขื“ืึทืงื˜ืึธืจ.
8) ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ืขื ื ืึธืžืขืŸ ืื™ืŸ ื“ืขื ืคืขืœื“ ื‘ื™ืœื“ ืฆื• ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ื™ืŸ ื“ืึธืงืงืขืจ ื‘ื™ืœื“.

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

ืคืึทืจื‘ื™ื™ึทื˜ืŸ PROJECT_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) ืขืงืกื˜ืจืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืœืึธื’ืก ืคื•ืŸ ื“ื™ ืคึผืึธื“ loadgen. ืคืึทืจื‘ื™ื™ึทื˜ืŸ 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. loadgen ืงืขื ืขืŸ ื ื•ืฆืŸ Kubernetes DNS (hellosvc:80) ืฆื• ืฉื™ืงืŸ ืจื™ืงื•ื•ืขืก ืฆื• ืฉืœื™ื—ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ืฉื™ืงืŸ ืจื™ืงื•ื•ืขืก ืฆื• ืฉืœื™ื— ื“ื•ืจืš ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง IP ืึทื“ืจืขืก. ื›ืึธื˜ืฉ Kubernetes ื”ืื˜ ืคื™ืœืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ, ืขืก ืื™ื– ืคืขืœื ื“ื™ืง ืขื˜ืœืขื›ืข ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ืกืขืจื•ื•ื™ืกืขืก:

  • ื•ื•ื™ ื˜ืึธืŸ ืกืขืจื•ื•ื™ืกืขืก ื™ื ื˜ืขืจืึทืงื˜? ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ื™ ื‘ืึทืฆื™ื•ื ื’ืขืŸ ืฆื•ื•ื™ืฉืŸ ืกืขืจื•ื•ื™ืกืขืก? ื•ื•ื™ ื˜ื•ื˜ ืคืึทืจืงืขืจ ืœื•ื™ืคืŸ ืฆื•ื•ื™ืฉืŸ ืกืขืจื•ื•ื™ืกืขืก? ื–ืขื ื˜ ืื™ืจ ืึทื•ื•ืขืจ ืึทื– loadgen ืกืขื ื“ื– ืจื™ืงื•ื•ืขืก ืฆื• ืฉืœื™ื—, ืึธื‘ืขืจ ื™ืžืึทื“ื–ืฉืึทืŸ ืึทื– ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ืขืคึผืขืก ื•ื•ืขื’ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ืฆื• ืขื ื˜ืคึฟืขืจืŸ ื“ื™ ืคึฟืจืื’ืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ืงื•ืง ืื™ืŸ ื“ืขืจ ืจืฉื™ืžื” ืคื•ืŸ ืคืœื™ืกื ื“ื™ืง ืคึผืึธื“ืก ืื™ืŸ GKE.
  • ืžืขื˜ืจื™ืงืก. ื•ื•ื™ ืœืื ื’ ืฉืœื™ื— ืจื™ืกืคึผืึทื ื“ื– ืฆื• ืึท ื™ื ืงืึทืžื™ื ื’ ื‘ืงืฉื”? ื•ื•ื™ ืคื™ืœืข ืจื™ืงื•ื•ืขืก ืคึผืขืจ ืกืขืงื•ื ื“ืข ื–ืขื ืขืŸ ื‘ืืงื•ืžืขืŸ ื“ื•ืจืš ื“ื™ ืกืขืจื•ื•ืขืจ? ื˜ื•ื˜ ืขืก ื’ืขื‘ืŸ ื˜ืขื•ืช ืึทืจื˜ื™ืงืœืขืŸ?
  • ื–ื™ื›ืขืจื”ื™ื™ื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข. ืคืึทืจืงืขืจ ืฆื•ื•ื™ืฉืŸ loadgen ะธ ืฉืœื™ื— ื ืึธืจ ืคึผืึทืกื™ื– ื“ื•ืจืš ื”ื˜ื˜ืคึผ ืึธื“ืขืจ ื“ื•ืจืš mTLS?

Istio ืขื ื˜ืคึฟืขืจืก ืึทืœืข ื“ื™ ืคึฟืจืื’ืŸ. ืฆื• ื˜ืึธืŸ ื“ืึธืก, Istio ืฉื˜ืขืœืŸ ืึท ืกื™ื™ื“ืงืึทืจ ืคึผืจืึทืงืกื™ ืขื ื•ื•ื•ื™ ืื™ืŸ ื™ืขื“ืขืจ ืคืึทืœ. ื“ื™ ืึทื ื•ื•ื•ื™ ืคึผืจืึทืงืกื™ ื™ื ื˜ืขืจืกืขืคึผื˜ ืึทืœืข ื™ื ืงืึทืžื™ื ื’ ืื•ืŸ ืึทื•ื˜ื’ืึธื•ื™ื ื’ ืคืึทืจืงืขืจ ืฆื• ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–. ืขืก ืžื™ื˜ืœ ืึทื– ืฉืœื™ื— ะธ loadgen ื‘ืึทืงื•ืžืขืŸ ื“ื•ืจืš ืกื™ื™ื“ืงืึทืจ ืคึผืจืึทืงืกื™ ืขื ื•ื•ื•ื™, ืื•ืŸ ืึทืœืข ืคืึทืจืงืขืจ ืคึฟื•ืŸ loadgen ะบ ืฉืœื™ื— ื’ื™ื™ื˜ ื“ื•ืจืš ื“ื™ ืึทื ื•ื•ื•ื™ ืคึผืจืึทืงืกื™.

ืงืึทื ืขืงืฉืึทื ื– ืฆื•ื•ื™ืฉืŸ ืึทื ื•ื•ื•ื™ ืคึผืจืึทืงืกื™ื– ืคืึธืจืขื ืึท ืกืขืจื•ื•ื™ืก ื™ื™ื’ืœ. ื“ื™ ืกืขืจื•ื•ื™ืก ืžืขืฉ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ื’ื™ื˜ ืึท ืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹ืงืึธื ื˜ืจืึธืœ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ Kubernetes.

ืคึผืจื™ืคึผืขืจื™ื ื’ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ Istio

ื–ื™ื ื˜ ืขื ื•ื•ื•ื™ ืคึผืจืึทืงืกื™ื– ืœื•ื™ืคืŸ ืื™ืŸ ื–ื™ื™ืขืจ ืื™ื™ื’ืขื ืข ืงืึทื ื˜ื™ื™ื ืขืจื–, Istio ืงืขื ืขืŸ ื–ื™ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ ืึท GKE ืงื ื•ื™ืœ ืžื™ื˜ ื›ึผืžืขื˜ ืงื™ื™ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืงืึธื“. ืึธื‘ืขืจ ืื™ืจ ื”ืึธื˜ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืขื˜ืœืขื›ืข ืึทืจื‘ืขื˜ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื’ืจื™ื™ื˜ ืฆื• ื–ื™ื™ืŸ ื’ืขืจืื˜ืŸ ื“ื•ืจืš Istio:

  • ืกืขืจื•ื•ื™ืกืขืก ืคึฟืึทืจ ืึทืœืข ืงืึทื ื˜ื™ื™ื ืขืจื–. ืฆื• ื“ื™ืคึผืœื•ื™ืžืึทื ืฅ ืฉืœื™ื— ะธ loadgen ืคืืจื‘ื•ื ื“ืŸ ืฆื• ื“ื™ Kubernetes ื“ื™ื ืกื˜. ืืคื™ืœื• loadgen, ื•ื•ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ื‘ืึทืงื•ืžืขืŸ ื™ื ืงืึทืžื™ื ื’ ืจื™ืงื•ื•ืขืก, ืขืก ืื™ื– ืึท ื“ื™ื ืกื˜.
  • ืคึผืึธืจืฅ ืื™ืŸ ืกืขืจื•ื•ื™ืกืขืก ืžื•ื–ืŸ ื”ืึธื‘ืŸ ื ืขืžืขืŸ. ื›ืึธื˜ืฉ ืกืขืจื•ื•ื™ืก ืคึผืึธืจืฅ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึทื ื ื™ื™ืžื“ ืื™ืŸ GKE, Istio ืจื™ืงื•ื•ื™ื™ืขืจื– ืื™ืจ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืคึผืึธืจื˜ ื ืึธืžืขืŸ ืื™ืŸ ืœื•ื™ื˜ ืžื™ื˜ ื–ื™ื™ืŸ ืคึผืจืึธื˜ืึธืงืึธืœ. ืื™ืŸ ื“ื™ YAML ื˜ืขืงืข ื“ื™ ืคึผืึธืจื˜ ืคึฟืึทืจ ืฉืœื™ื— ื’ืขืจื•ืคืŸ ื”ื˜ื˜ืคึผื•ื•ื™ื™ึทืœ ืกืขืจื•ื•ืขืจ ื ื™ืฆื˜ ื“ืขื ืคึผืจืึธื˜ืึธืงืึธืœ ื”ื˜ื˜ืคึผ... ืื•ื™ื‘ ื“ื™ื ืกื˜ ื’ืขื ื™ืฆื˜ ื’ืจืคึผืง, ืื™ืจ ื•ื•ืึธืœื˜ ื ืึธืžืขืŸ ื“ื™ ืคึผืึธืจื˜ grpc.
  • ื“ื™ืคึผืœื•ื™ืžืึทื ืฅ ื–ืขื ืขืŸ ืคืœืึทื’ื“. ื“ืขืจื™ื‘ืขืจ, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ Istio ืก ืคืึทืจืงืขืจ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ, ืึทื–ืึท ื•ื•ื™ ืกืคึผืœื™ื˜ื™ื ื’ ืคืึทืจืงืขืจ ืฆื•ื•ื™ืฉืŸ ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื“ื™ื ืกื˜.

ื™ื ืกื˜ืึทืœื™ืจืŸ Istio

ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ื•ื•ืขื’ืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ Istio. ืงืขื ืขืŸ ื’ืขื‘ืŸ Istio ืื•ื™ืฃ GKE ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืึธื“ืขืจ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืขืคึฟืขื ืขืŸ ืžืงื•ืจ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹Istio ืื•ื™ืฃ ื“ืขื ืงื ื•ื™ืœ. ืžื™ื˜ Istio ืื•ื™ืฃ GKE, ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ืคื™ืจืŸ Istio ื™ื ืกื˜ืึทืœื™ื™ืฉืึทื ื– ืื•ืŸ ืึทืคึผื’ืจื™ื™ื“ื– ืื™ื‘ืขืจ ื“ื™ GKE ืงื ื•ื™ืœ ืœื™ื™ืคืกื™ื™ืง. ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœื˜ ื“ื™ ืœืขืฆื˜ืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื™ืกื˜ื™ืึธ ืึธื“ืขืจ ืžืขืจ ืงืึธื ื˜ืจืึธืœ ืื™ื‘ืขืจ ื“ื™ื™ืŸ Istio ืงืึธื ื˜ืจืึธืœ ื˜ืึทืคืœื™ืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืขืคึฟืขื ืขืŸ ืžืงื•ืจ ื•ื•ืขืจืกื™ืข ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื“ื™ Istio ืื•ื™ืฃ GKE ืคืึทืจืœืขื ื’ืขืจื•ื ื’. ืฆื• ื‘ืึทืฉืœื™ืกืŸ ืื•ื™ืฃ ื“ืขื ืฆื•ื’ืึทื ื’, ืœื™ื™ืขื ืขืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืฆื™ ืื™ืš ื“ืึทืจืคึฟืŸ Istio ืื•ื™ืฃ GKE?.

ืกืขืœืขืงื˜ื™ืจืŸ ืึทืŸ ืึธืคึผืฆื™ืข, ืจืขืฆืขื ื–ื™ืข ื“ื™ ืฆื•ื ืขืžืขืŸ ืคื™ืจืขืจ ืื•ืŸ ื ืึธื›ื’ื™ื™ืŸ ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ Istio ืื•ื™ืฃ ื“ื™ื™ืŸ ืงื ื•ื™ืœ. ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื ื•ืฆืŸ Istio ืžื™ื˜ ื“ื™ื™ืŸ ื ื™ื™ ื“ื™ืคึผืœื•ื™ื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื’ืขื‘ืŸ ืกื™ื™ื“ืงืึทืจ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื ืึธืžืขืŸ ืคึผืœืึทืฅ ื ื™ื˜ ื•ื™ืกืฆืึธืœืŸ.

Cleanup

ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ื˜ืฉืึทืจื“ื–ืฉื™ื ื’ ื“ื™ื™ืŸ Google ืงืœืึธื•ื“ ืคึผืœืึทื˜ืคืึธืจื ื—ืฉื‘ื•ืŸ ืคึฟืึทืจ ื“ื™ ืจืขืกื•ืจืกืŸ ืื™ืจ ื’ืขื•ื•ื™ื™ื ื˜ ืื™ืŸ ื“ืขื ื˜ื•ื˜ืึธืจื™ืึทืœ, ื•ื™ืกืžืขืงืŸ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ ืงื ื•ื™ืœ ืึทืžืึธืœ ืื™ืจ ื”ืึธื˜ ืื™ื ืกื˜ืึทืœื™ืจืŸ Istio ืื•ืŸ ืคึผืœื™ื™ึทืขื“ ืžื™ื˜ ื“ื™ ืžื•ืกื˜ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ื“ืึธืก ื•ื•ืขื˜ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ืึทืœืข ืงื ื•ื™ืœ ืจืขืกื•ืจืกืŸ, ืึทื–ืึท ื•ื•ื™ ืงืึทืžืคึผื™ื•ื˜ื™ื ื’ ื™ื ืกื˜ืึทื ืกื™ื–, ื“ื™ืกืงืก ืื•ืŸ ื ืขืฅ ืจืขืกื•ืจืกืŸ.

ื•ื•ืึธืก ืก ื•ื•ื™ื™ึทื˜ืขืจ?

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’