ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Istio

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Istio

Istio Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ инструмСнт Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅, Π·Π°Ρ‰ΠΈΡ‚Π° ΠΈ наблюдСниС Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ прилоТСния. Istio ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° стартиранС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° софтуСр Π² ΠΌΠ°Ρ‰Π°Π±, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ зависимости Π·Π° внСдряванС, ΠΈ Kubernetes Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ с Istio, трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с мноТСство услуги, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Ρ‚Π΅Π·ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π±Π΅Π· Istio. Ако Ρ‚Π΅Π·ΠΈ инструмСнти ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π²Π΅Ρ‡Π΅ са Π²ΠΈ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ, Π½Π΅ сС ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡ‚Π΅ Π΄Π° пропуснСтС Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΎ към Ρ€Π°Π·Π΄Π΅Π»Π° Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° Istio Π½Π° Google Kubernetes Engine (GKE) ΠΈΠ»ΠΈ инсталиранС Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Istio Π½Π° GKE.

Π’ΠΎΠ²Π° Π΅ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΡΡ‚ΡŠΠΏΠΊΠ°, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· цСлия процСс ΠΎΡ‚ изходния ΠΊΠΎΠ΄ Π΄ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° GKE, Π·Π° Π΄Π° Π²ΠΈ Π΄Π°Π΄Π΅ΠΌ основно Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π©Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎ ΠΊΠ°ΠΊ Istio ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° силата Π½Π° Ρ‚Π΅Π·ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π’ΠΎΠ²Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°, Ρ‡Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Π½ΠΈΡ‰ΠΎ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Kubernetes, сСрвизни ΠΌΡ€Π΅ΠΆΠΈ ΠΈΠ»ΠΈ Istio.

Π·Π°Π΄Π°Ρ‡ΠΈ

Π’ Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ Ρ‰Π΅ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ слСднитС Π·Π°Π΄Π°Ρ‡ΠΈ:

  1. Π˜Π·ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° просто ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Hello World с мноТСство услуги.
  2. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ изходния ΠΊΠΎΠ΄.
  3. ОпакованС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.
  4. БъздаванС Π½Π° Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.
  5. Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρˆ

Π‘Π»Π΅Π΄Π²Π°ΠΉΡ‚Π΅ инструкциитС, Π·Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ API Π½Π° Kubernetes Engine:

  1. ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π½Π° Kubernetes Engine Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° Π½Π° Google Cloud Platform.
  2. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.
  3. Π˜Π·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ API ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ услуги сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π½Π΅ΠΌΠ΅ няколко ΠΌΠΈΠ½ΡƒΡ‚ΠΈ.
  4. Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ таксуванСто Π΅ настроСно Π·Π° вашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Google Cloud Platform. НаучСтС ΠΊΠ°ΠΊ Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ таксуванСто.

Π’ Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Cloud Shell, ΠΊΠΎΠΉΡ‚ΠΎ подготвя Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина g1-small Π² Google Compute Engine с Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Debian Linux ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ с Linux ΠΈΠ»ΠΈ macOS.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ A: ИзползванС Π½Π° Cloud Shell

ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²Π° ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Cloud Shell:

  • Python 2 ΠΈ Python 3 срСди Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ virtualenv) са напълно ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ.
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄ gcloud, Π΄ΠΎΠΊΠ΅Ρ€, Git ΠΈ kubectl, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅, Π²Π΅Ρ‡Π΅ са инсталирани.
  • Π˜ΠΌΠ°Ρ‚Π΅ няколко Π·Π° ΠΈΠ·Π±ΠΎΡ€ тСкстови Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈ:
    1. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠΉΡ‚ΠΎ сС отваря с ΠΈΠΊΠΎΠ½Π°Ρ‚Π° Π·Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π² Π³ΠΎΡ€Π½Π°Ρ‚Π° част Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° Cloud Shell.
    2. Emacs, Vim ΠΈΠ»ΠΈ Nano, ΠΊΠΎΠΈΡ‚ΠΎ сС отварят ΠΎΡ‚ командния Ρ€Π΅Π΄ Π² Cloud Shell.

Π”Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠžΠ±Π»Π°Ρ‡Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°:

  1. ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° Π½Π° GCP.
  2. прСса АктивирайтС Cloud Shell (АктивиранС Π½Π° Cloud Shell) Π² Π³ΠΎΡ€Π½Π°Ρ‚Π° част Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° GCP ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Istio

Π’ Π΄ΠΎΠ»Π½Π°Ρ‚Π° част GCP ΠΊΠΎΠ½Π·ΠΎΠ»Π° БСсия Π½Π° Cloud Shell с ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄ Ρ‰Π΅ сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ Π² Π½ΠΎΠ² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Istio

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π‘: Π›ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° инструмСнти ΠΎΡ‚ командния Ρ€Π΅Π΄

Ако Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ с Linux ΠΈΠ»ΠΈ macOS, Ρ‰Π΅ трябва Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ ΠΈ инсталиратС слСднитС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ:

  1. ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Python 3 ΠΈ Python 2 срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

  2. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ Cloud SDK с инструмСнт Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄ gcloud.

  3. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ kubectl - инструмСнт Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с командния Ρ€Π΅Π΄ Kubernetes.

    gcloud components install kubectl

  4. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Docker Community Edition (CE). Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ инструмСнта Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄ Π΄ΠΎΠΊΠ΅Ρ€Π·Π° създаванС Π½Π° изобраТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

  5. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ инструмСнта Git ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° вСрсиитСза Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ GitHub.

Π˜Π·Ρ‚Π΅Π³Π»Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΊΠΎΠ΄

  1. Π˜Π·Ρ‚Π΅Π³Π»Π΅Ρ‚Π΅ изходния ΠΊΠΎΠ΄ helloserver:

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

  2. ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² дирСкторията с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΊΠΎΠ΄:

    cd istio-samples/sample-apps/helloserver

ИзслСдванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с мноТСство услуги

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ написано Π½Π° Python ΠΈ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ си взаимодСйстват Ρ‡Ρ€Π΅Π· ΠŸΠžΠ§Π˜Π’ΠšΠ:

  • ΡΡŠΡ€Π²ΡŠΡ€: прост ΡΡŠΡ€Π²ΡŠΡ€ с Π΅Π΄Π½Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π’Π—Π•ΠœΠ•Π’Π•, /, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚Π²Π° "hello world" Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°.
  • loadgen: скрипт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към ΡΡŠΡ€Π²ΡŠΡ€, с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ Π±Ρ€ΠΎΠΉ заявки Π² сСкунда.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Istio

ИзпълнСниС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ изходния ΠΊΠΎΠ΄

Π—Π° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, стартирайтС Π³ΠΎ Π² Cloud Shell ΠΈΠ»ΠΈ Π½Π° вашия ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€.
1) Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° istio-samples/sample-apps/helloserver бягай ΡΡŠΡ€Π²ΡŠΡ€:

python3 server/server.py

ΠŸΡ€ΠΈ стартиранС ΡΡŠΡ€Π²ΡŠΡ€ ΠΏΠΎΠΊΠ°Π·Π²Π° сС слСдното:

INFO:root:Starting server...

2) ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅Π½ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†, Π΄ΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ заявки ΡΡŠΡ€Π²ΡŠΡ€. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Cloud Shell, Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ΠΈΠΊΠΎΠ½Π°Ρ‚Π° Π·Π° добавянС, Π·Π° Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³Π° сСсия.
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: */*

ΠžΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, цялото ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π΅Π΄ΠΈΠ½ хост (Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина Π½Π° Cloud Shell). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ LocalhostΠ·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° заявки Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€.
10) Π”Π° ΡΠΏΡ€Π΅Ρˆ loadgen ΠΈ ΡΡŠΡ€Π²ΡŠΡ€, Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ Ctrl-c във всСки Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅Π½ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†.
11) Π’ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° loadgen Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° срСда:

deactivate

ОпакованС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ

Π—Π° Π΄Π° стартиратС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° GKE, трябва Π΄Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ βˆ’ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ loadgen - Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π΅ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° срСда.

Π—Π° Π΄Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, трябва Π”ΠΎΠΊΠ΅Ρ€ Ρ„Π°ΠΉΠ». Π”ΠΎΠΊΠ΅Ρ€ Ρ„Π°ΠΉΠ» Π΅ тСкстов Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° изходния ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ зависимости Π”ΠΎΠΊΠ΅Ρ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅Π΄Π½ΡŠΠΆ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½, Π²ΠΈΠ΅ ΠΊΠ°Ρ‡Π²Π°Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΊΠ°Ρ‚ΠΎ Docker Hub ΠΈΠ»ΠΈ Π Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΡŠΡ‚ Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ° Π”ΠΎΠΊΠ΅Ρ€ Ρ„Π°ΠΉΠ» Π·Π° ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ loadgen с всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° изобраТСния. По-Π΄ΠΎΠ»Ρƒ - Π”ΠΎΠΊΠ΅Ρ€ Ρ„Π°ΠΉΠ» Π·Π° ΡΡŠΡ€Π²ΡŠΡ€:

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) към Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.
  • Π’Π₯ΠžΠ”ΠΠ ВОЧКА Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, която сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’ нашия случай Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΡŠΡ‰Π°Ρ‚Π° ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ, която стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π·Π° изпълнСниС server.py ΠΎΡ‚ изходния ΠΊΠΎΠ΄.
  • ΠžΡ‚Π±ΠΎΡ€ Π•ΠšΠ‘ΠŸΠžΠ—Π˜Π¦Π˜Π― ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ ΡΡŠΡ€Π²ΡŠΡ€ Ρ‡Π°ΠΊΠ° Π΄Π°Π½Π½ΠΈ ΠΏΡ€Π΅Π· ΠΏΠΎΡ€Ρ‚Π° 8080. Π’ΠΎΠ·ΠΈ ΠΎΡ‚Π±ΠΎΡ€ Π½Π΅ Π΅ Ρ‚Π°ΠΊΡŠΠ² осигурява пристанища. Π’ΠΎΠ²Π° Π΅ някакъв Π²ΠΈΠ΄ докумСнтация, която Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° отварянС Π½Π° ΠΏΠΎΡ€Ρ‚Π° 8080 ΠΏΡ€ΠΈ стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

1) Π—Π°Π΄Π°ΠΉΡ‚Π΅ слСднитС ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата. Π‘ΠΌΠ΅Π½Π΅Ρ‚Π΅ PROJECT_ID към вашия ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° GCP ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

ИзползванС Π½Π° стойности PROJECT_ID ΠΈ GCR_REPO ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Docker, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π³ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ Π² частСн Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

2) Π—Π°Π΄Π°ΠΉΡ‚Π΅ GCP ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° инструмСнта Π½Π° командния Ρ€Π΅Π΄ gcloud.

gcloud config set project $PROJECT_ID

3) Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π·ΠΎΠ½Π°Ρ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° инструмСнта Π½Π° командния Ρ€Π΅Π΄ gcloud.

gcloud config set compute/zone us-central1-b

4) Π£Π²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ услугата Container Registry Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° Π² GCP ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

gcloud services enable containerregistry.googleapis.com

Π‘ΡŠΡ€Π²ΡŠΡ€ Π·Π° контСйнСризация

  1. ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² дирСкторията, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΡŠΡ‚ ΡΡŠΡ€Π²ΡŠΡ€:

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

  2. Π‘Π³Π»ΠΎΠ±Π΅Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π”ΠΎΠΊΠ΅Ρ€ Ρ„Π°ΠΉΠ» ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° срСдата, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ…Ρ‚Π΅ ΠΏΠΎ-Ρ€Π°Π½ΠΎ:

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

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ -t прСдставлява ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Docker. Π’ΠΎΠ²Π° Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

  1. ΠšΠ°Ρ‡Π΅Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° loadgen

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 ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.

Π’Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина Cloud Shell ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π΄ΠΎΠΊΠ΅Ρ€. Но Π² производствСна срСда сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ Π·Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π½ΠΎ оркСстриранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. НапримСр, ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ систСма, която Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π²ΠΈΠ½Π°Π³ΠΈ работят, ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΈ Π·Π°Π²ΡŠΡ€Ρ‚Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ СкзСмпляри Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Π°ΠΊΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ.

Π—Π° Π΄Π° стартиратС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ прилоТСния, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π“.К.Π•.. GKE Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° оркСстриранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, която Π°Π³Ρ€Π΅Π³ΠΈΡ€Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. Всяка Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина сС Π½Π°Ρ€ΠΈΡ‡Π° възСл. ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅ 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 възСла ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина 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

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π½Π° Kubernetes

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° GKE:

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Istio

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π² GKE, Π½Π°ΡƒΡ‡Π΅Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π½Π° Kubernetes. Има Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² самия ΠΊΡ€Π°ΠΉ, Π°ΠΊΠΎ искатС Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅.

  • Π’ΡŠΠ·Π»ΠΈ ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ. Π’ GKE Π²ΡŠΠ·Π΅Π»ΡŠΡ‚ Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина. На Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Kubernetes Π²ΡŠΠ·Π΅Π»ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина. ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Π΅ колСкция ΠΎΡ‚ възли, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС считат Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π°, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
  • Подс. Π’ Kubernetes ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ работят Π² капсули. Под Π² Kubernetes Π΅ Π½Π΅Π΄Π΅Π»ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ΠΈΡ†Π°. Под ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ loadgen Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ подс. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° няколко ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² pod (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° прилоТСния ΠΈ ΠŸΡ€ΠΎΠΊΡΠΈ ΡΡŠΡ€Π²ΡŠΡ€), ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ сС управляват ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ‚ ΠΈ сподСлят рСсурси Π½Π° ΠΏΠΎΠ΄.
  • ВнСдрявания. Π’ Kubernetes внСдряванСто Π΅ ΠΎΠ±Π΅ΠΊΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ колСкция ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅. ВнСдряванСто стартира мноТСство Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅, Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ възли. ВнСдряванСто Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ замСня ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»ΠΈ ΠΈΠ»ΠΈ Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€Π°Ρ‚.
  • Услуга Kubernetes. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² GKE, Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ loadgen ΠΈ ΡΡŠΡ€Π²ΡŠΡ€. ΠšΠΎΠ³Π°Ρ‚ΠΎ стС стартирали услуги Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠ»ΠΎΡ‚ Π½Π° Cloud Shell, стС ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠ»ΠΈ заявки Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ ΠΏΡ€ΠΈ Localhost: 8080. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π±ΡŠΠ΄Π°Ρ‚ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ Π² GKE, pods сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π½Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ възли. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ няматС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠΉ възСл сС изпълнява pod, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π²ΠΈΠ΅ подс няма постоянни IP адрСси.
    Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ IP адрСс Π·Π° ΡΡŠΡ€Π²ΡŠΡ€, трябва Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²Π° абстракция Π²ΡŠΡ€Ρ…Ρƒ подс. Π’ΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Услуга Kubernetes. Услугата Kubernetes прСдоставя постоянна ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π·Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ²Π΅. Има няколко Π²ΠΈΠ΄ΠΎΠ²Π΅ услуги. ΡΡŠΡ€Π²ΡŠΡ€ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° LoadBalancer, ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя външСн IP адрСс Π·Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ извън ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.
    Kubernetes ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ° Π²Π³Ρ€Π°Π΄Π΅Π½Π° DNS систСма, която присвоява DNS ΠΈΠΌΠ΅Π½Π° (Π½Π°ΠΏΡ€. helloserver.default.cluster.local) услуги. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° постоянСн адрСс. DNS ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° извън ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Cloud Shell ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€.

Kubernetes сС проявява

ΠšΠΎΠ³Π°Ρ‚ΠΎ стС стартирали ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ°, стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° python3

server.py

Π˜ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²ΡŠΡ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° Π³Π»Π°Π³ΠΎΠ»: β€žΠ½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π°β€œ.

Kubernetes ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΌΠΎΠ΄Π΅Π». Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π½ΠΈΠ΅ Π½Π΅ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° Kubernetes Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈ, Π° ΠΏΠΎ-скоро описвамС ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅. НапримСр, Kubernetes стартира ΠΈ спира ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ спорСд Π½ΡƒΠΆΠ΄ΠΈΡ‚Π΅, Π·Π° Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ дСйствитСлното ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° систСмата ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅.

Π’ΠΈΠ΅ посочватС ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π² манифСсти ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π―ΠœΠ›. YAML Ρ„Π°ΠΉΠ» ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° спСцификации Π·Π° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° Kubernetes.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΡŠΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° YAML Ρ„Π°ΠΉΠ» Π·Π° ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ loadgen. ВсСки YAML Ρ„Π°ΠΉΠ» ΡƒΠΊΠ°Π·Π²Π° ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Π·Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ ΠΈ услугата Kubernetes.

ΡΡŠΡ€Π²ΡŠΡ€.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 ΡƒΠΊΠ°Π·Π²Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° внСдряванСто.
  • ΠŸΡŠΡ€Π²ΠΎ ΠΏΠΎΠ»Π΅ спСкулация ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° описаниС Π½Π° ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅.
  • спСц.Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΡƒΠΊΠ°Π·Π²Π° ТСлания Π±Ρ€ΠΎΠΉ подс.
  • Π Π°Π·Π΄Π΅Π» спСц. шаблон Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° шаблон Π½Π° pod. Има ΠΏΠΎΠ»Π΅ Π² спСцификацията Π½Π° ΠΏΠΎΠ΄ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π²Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° бъдС ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΎ ΠΎΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅.

Услугата сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°, ΠΊΠ°ΠΊΡ‚ΠΎ слСдва:

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

  • LoadBalancer: ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявки Π΄ΠΎ IP адрСса Π½Π° балансиращото Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° постоянСн IP адрСс ΠΈ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ извън ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.
  • targetPort: ΠΊΠ°ΠΊΡ‚ΠΎ си спомнятС, Π΅ΠΊΠΈΠΏΡŠΡ‚ EXPOSE 8080 Π² Π”ΠΎΠΊΠ΅Ρ€ Ρ„Π°ΠΉΠ» Π½Π΅ прСдостави ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅. Π’ΠΈΠ΅ прСдоставятС ΠΏΠΎΡ€Ρ‚Π° 8080Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΡΡŠΡ€Π²ΡŠΡ€ извън ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π’ нашия случай hellosvc.default.cluster.local:80 (ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΈΠΌΠ΅: hellosvc) ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° ΠΏΠΎΡ€Ρ‚Π° 8080 IP адрСси Π½Π° Pod helloserver.
  • ΠΏΠΎΡ€Ρ‚: Π’ΠΎΠ²Π° Π΅ Π½ΠΎΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π°, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ услуги Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Ρ‰Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявки.

loadgen.yaml

ΠžΠ±Π΅ΠΊΡ‚ Π·Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ към loadgen.yaml ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€.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) ΠžΡ‚Π²ΠΎΡ€Π΅Π½ΠΎ ΡΡŠΡ€Π²ΡŠΡ€.yaml Π² тСкстов Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.
3) Π—Π°ΠΌΠ΅Π½Π΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ към ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ Docker ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

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

Π‘ΠΌΠ΅Π½Π΅Ρ‚Π΅ PROJECT_ID към вашия ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° GCP ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.
4) Π—Π°ΠΏΠ°Π·Π΅Ρ‚Π΅ ΠΈ Π·Π°Ρ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€.yaml.
5) Π Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Ρ‚Π΅ YAML Ρ„Π°ΠΉΠ»Π° Π² Kubernetes:

kubectl apply -f server.yaml

ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° слСдния ΠΊΠΎΠ΄:

deployment.apps/helloserver created
service/hellosvc created

6) ΠžΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² дирСкторията, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ loadgen:

cd ../loadgen

7) ΠžΡ‚Π²ΠΎΡ€Π΅Π½ΠΎ loadgen.yaml Π² тСкстов Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.
8) Π—Π°ΠΌΠ΅Π½Π΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ към ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ Docker ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

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 (Π·Π΄Ρ€Π°Π²Π΅ΠΉvc:80), Π·Π° Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ заявки Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ заявки Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ Ρ‡Ρ€Π΅Π· външСн IP адрСс. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Kubernetes ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, липсва извСстна информация Π·Π° услугитС:

  • Как си взаимодСйстват услугитС? Какви са Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ услугитС? Как ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ услугитС? Наясно Π»ΠΈ стС, Ρ‡Π΅ loadgen ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявки Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€, Π½ΠΎ си прСдставСтС, Ρ‡Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Π½ΠΈΡ‰ΠΎ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π—Π° Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½Π° Ρ‚Π΅Π·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ, Π½Π΅ΠΊΠ° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ списъка с Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² GKE.
  • ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ°. Колко дълго ΡΡŠΡ€Π²ΡŠΡ€ отговаря Π½Π° входяща заявка? Колко заявки Π² сСкунда сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°? Π”Π°Π²Π° Π»ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°?
  • Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ Π·Π° сигурност. Π’Ρ€Π°Ρ„ΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ loadgen ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ просто ΠΌΠΈΠ½Π°Π²Π° HTTP ΠΈΠ»ΠΈ ΠΎΡ‚ mTLS?

Istio отговаря Π½Π° всички Ρ‚Π΅Π·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π°, Istio поставя sidecar прокси ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΊ във всяка ΡˆΡƒΡˆΡƒΠ»ΠΊΠ°. ΠŸΡ€ΠΎΠΊΡΠΈΡ‚ΠΎ Envoy ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π° цСлия входящ ΠΈ изходящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° прилоТСнията. ΠžΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ loadgen ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΉΡ‚Π΅ Ρ‡Ρ€Π΅Π· sidecar прокси Envoy ΠΈ цСлия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‚ loadgen ΠΊ ΡΡŠΡ€Π²ΡŠΡ€ ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· проксито Π½Π° Envoy.

Π’Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ проксита Π½Π° Envoy ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΌΡ€Π΅ΠΆΠ° Π½Π° услугата. Π‘Π΅Ρ€Π²ΠΈΠ·Π½Π°Ρ‚Π° мрСТСста Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° осигурява слой Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π°Π΄ Kubernetes.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Istio

Въй ΠΊΠ°Ρ‚ΠΎ прокситата Π½Π° Envoy работят Π² свои собствСни ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Istio ΠΌΠΎΠΆΠ΅ Π΄Π° сС инсталира Π²ΡŠΡ€Ρ…Ρƒ GKE ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π±Π΅Π· ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Но Π²ΠΈΠ΅ ΡΠ²ΡŠΡ€ΡˆΠΈΡ…Ρ‚Π΅ ΠΌΠ°Π»ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°, Π·Π° Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ си Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Istio:

  • ΠžΠ±ΡΠ»ΡƒΠΆΠ²Π°Π½Π΅ Π½Π° всички ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Към внСдрявания ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ loadgen ΡΠ²ΡŠΡ€Π·Π°Π½ с услугата Kubernetes. Π”ΠΎΡ€ΠΈ loadgen, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° входящи заявки, ΠΈΠΌΠ° услуга.
  • ΠŸΠΎΡ€Ρ‚ΠΎΠ²Π΅Ρ‚Π΅ Π² услугитС трябва Π΄Π° ΠΈΠΌΠ°Ρ‚ ΠΈΠΌΠ΅Π½Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ сСрвизнитС ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ оставСни Π±Π΅Π· ΠΈΠΌΠ΅ Π² GKE, Istio изисква Π΄Π° Π³ΠΈ посочитС ΠΈΠΌΠ΅ Π½Π° ΠΏΠΎΡ€Ρ‚ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с нСговия ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». Π’ YAML Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΡ€Ρ‚ΡŠΡ‚ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€ Π½Π°Ρ€ΠΈΡ‡Π° HTTPΡ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP... Ако обслуТванС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ gRPC, Ρ‰Π΅ Π½Π°Π·ΠΎΠ²Π΅Ρ‚Π΅ ΠΏΠΎΡ€Ρ‚Π° grpc.
  • ВнСдряванията са ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Istio Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ раздСлянС Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсии Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° услуга.

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ

Има Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° инсталиранС Π½Π° Istio. Мога Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ Istio Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ GKE ΠΈΠ»ΠΈ инсталирайтС вСрсията с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Istio Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π‘ Istio Π½Π° GKE ΠΌΠΎΠΆΠ΅Ρ‚Π΅ лСсно Π΄Π° управляватС инсталациитС ΠΈ надстройкитС Π½Π° Istio ΠΏΡ€Π΅Π· цСлия ΠΆΠΈΠ·Π½Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° GKE. Ако искатС Π½Π°ΠΉ-Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° Istio ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ конфигурацията Π½Π° контролния ΠΏΠ°Π½Π΅Π» Π½Π° Istio, инсталирайтС вСрсията с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ вмСсто Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Istio Π½Π° GKE. Π—Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ статията Имам Π»ΠΈ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Istio Π½Π° GKE?.

Π˜Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ опция, ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ подходящото Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΈ слСдвайтС инструкциитС, Π·Π° Π΄Π° инсталиратС Istio Π½Π° вашия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. Ако искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Istio с Π²Π°ΡˆΠ΅Ρ‚ΠΎ Π½ΠΎΠ²ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ внСдряванСто Π½Π° кош Π·Π° пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

почистванС

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ таксуванС Π½Π° вашия Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π² Google Cloud Platform Π·Π° рСсурситС, ΠΊΠΎΠΈΡ‚ΠΎ стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ ΡƒΡ€ΠΎΠΊ, ΠΈΠ·Ρ‚Ρ€ΠΈΠΉΡ‚Π΅ контСйнСрния ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, слСд ΠΊΠ°Ρ‚ΠΎ стС инсталирали Istio ΠΈ стС ΠΈΠ³Ρ€Π°Π»ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ всички рСсурси Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΊΠ°Ρ‚ΠΎ изчислитСлни СкзСмпляри, дисковС ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ рСсурси.

Каква Π΅ слСдващата?

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€