Istio Π΅ ΡΠ΄ΠΎΠ±Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅, Π·Π°ΡΠΈΡΠ° ΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Istio ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΡΡΡΠ΅Ρ Π² ΠΌΠ°ΡΠ°Π±, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅, ΠΈ Kubernetes Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Istio, ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ»ΡΠ³ΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π±Π΅Π· Istio. ΠΠΊΠΎ ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π²Π΅ΡΠ΅ ΡΠ° Π²ΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΈ, Π½Π΅ ΡΠ΅ ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡΠ΅ Π΄Π° ΠΏΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΡΠΎΠΊ ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΊΡΠΌ ΡΠ°Π·Π΄Π΅Π»Π°
Π’ΠΎΠ²Π° Π΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ°, Π² ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡΠ΅Π· ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π° GKE, Π·Π° Π΄Π° Π²ΠΈ Π΄Π°Π΄Π΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΡΠ΅Π· ΠΏΡΠΈΠΌΠ΅Ρ. Π©Π΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΡΠΎ ΠΊΠ°ΠΊ Istio ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΠ»Π°ΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π’ΠΎΠ²Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°, ΡΠ΅ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ Π½ΠΈΡΠΎ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, Kubernetes, ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΠΈΠ»ΠΈ Istio.
Π·Π°Π΄Π°ΡΠΈ
Π ΡΠΎΠ·ΠΈ ΡΡΠΎΠΊ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ:
- ΠΠ·ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Hello World Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ»ΡΠ³ΠΈ.
- Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄.
- ΠΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
- Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Kubernetes ΠΊΠ»ΡΡΡΠ΅Ρ.
- Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² ΠΊΠ»ΡΡΡΠ΅Ρ.
ΠΡΠ΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅Ρ
Π‘Π»Π΅Π΄Π²Π°ΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅, Π·Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ API Π½Π° Kubernetes Engine:
- ΠΡΠΈΠ΄Π΅ΡΠ΅ Π½Π°
Π‘ΡΡΠ°Π½ΠΈΡΠ° Π½Π° Kubernetes Engine Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π½Π° Google Cloud Platform. - Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ.
- ΠΠ·ΡΠ°ΠΊΠ°ΠΉΡΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ API ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Ρ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ½Π΅ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ.
- Π£Π²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ ΡΠ°ΠΊΡΡΠ²Π°Π½Π΅ΡΠΎ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ Π·Π° Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ Π² Google Cloud Platform.
ΠΠ°ΡΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΊΡΡΠ²Π°Π½Π΅ΡΠΎ .
Π ΡΠΎΠ·ΠΈ ΡΡΠΎΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Cloud Shell, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Ρ Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°
ΠΠ°ΡΠΈΠ°Π½Ρ A: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Cloud Shell
ΠΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Cloud Shell:
- Python 2 ΠΈ Python 3 ΡΡΠ΅Π΄ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ virtualenv) ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ.
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄ gcloud, Π΄ΠΎΠΊΠ΅Ρ, Git ΠΈ kubectl, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅, Π²Π΅ΡΠ΅ ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ.
- ΠΠΌΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π° ΠΈΠ·Π±ΠΎΡ
ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ :Π Π΅Π΄Π°ΠΊΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅ , ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΡΠ²Π°ΡΡ Ρ ΠΈΠΊΠΎΠ½Π°ΡΠ° Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π² Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° Cloud Shell.- Emacs, Vim ΠΈΠ»ΠΈ Nano, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΎΡΠ²Π°ΡΡΡ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π² Cloud Shell.
ΠΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ
- ΠΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π½Π° GCP.
- ΠΏΡΠ΅ΡΠ° ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ Cloud Shell (ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Cloud Shell) Π² Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π½Π° GCP ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ°.
Π Π΄ΠΎΠ»Π½Π°ΡΠ° ΡΠ°ΡΡ
ΠΠ°ΡΠΈΠ°Π½Ρ Π: ΠΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄
ΠΠΊΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡ Ρ Linux ΠΈΠ»ΠΈ macOS, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ:
-
ΠΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅
Python 3 ΠΈ Python 2 ΡΡΠ΅Π΄Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° . -
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Cloud SDK Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄ gcloud. -
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ kubectl - ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄
Kubernetes .gcloud components install kubectl
-
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½
Docker Community Edition (CE) . Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄ Π΄ΠΎΠΊΠ΅ΡΠ·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π·Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. -
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°
Git ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ GitHub.
ΠΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄
-
ΠΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ helloserver:
git clone https://github.com/GoogleCloudPlatform/istio-samples
-
ΠΡΠΈΠ΄Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄:
cd istio-samples/sample-apps/helloserver
ΠΠ·ΡΠ»Π΅Π΄Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ»ΡΠ³ΠΈ
ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Python ΠΈ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ ΡΡΠ΅Π·
- ΡΡΡΠ²ΡΡ: ΠΏΡΠΎΡΡ ΡΡΡΠ²ΡΡ Ρ Π΅Π΄Π½Π° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° ΠΠΠΠΠΠ’Π, /, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠΏΠ΅ΡΠ°ΡΠ²Π° "hello world" Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ°.
- loadgen: ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΠΊ ΠΊΡΠΌ ΡΡΡΠ²ΡΡ, Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌ Π±ΡΠΎΠΉ Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°.
ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄
ΠΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ Π² 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 - Π²
ΠΠ° Π΄Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΡΡΡΠ±Π²Π° ΠΠΎΠΊΠ΅Ρ ΡΠ°ΠΉΠ». ΠΠΎΠΊΠ΅Ρ ΡΠ°ΠΉΠ» Π΅ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
ΠΡΠΈΠΌΠ΅ΡΡΡ Π²Π΅ΡΠ΅ ΠΈΠΌΠ° ΠΠΎΠΊΠ΅Ρ ΡΠ°ΠΉΠ» Π·Π° ΡΡΡΠ²ΡΡ ΠΈ 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
Π‘ΡΡΠ²ΡΡ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ
-
ΠΡΠΈΠ΄Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΡΡ ΡΡΡΠ²ΡΡ:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/
-
Π‘Π³Π»ΠΎΠ±Π΅ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΠΎΠΊΠ΅Ρ ΡΠ°ΠΉΠ» ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ ΡΠ΅ ΠΏΠΎ-ΡΠ°Π½ΠΎ:
docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ -t ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ° Docker. Π’ΠΎΠ²Π° Π΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·Π³ΡΡΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
- ΠΠ°ΡΠ΅ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅:
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 ΠΊΠ»ΡΡΡΠ΅Ρ:
1) Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»ΡΡΡΠ΅Ρ:
gcloud container clusters create istioready
--cluster-version latest
--machine-type=n1-standard-2
--num-nodes 4
ΠΡΠ±ΠΎΡ gcloud ΡΡΠ·Π΄Π°Π²Π° istioready ΠΊΠ»ΡΡΡΠ΅Ρ Π² GCP ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π·ΠΎΠ½Π°ΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΅ ΠΏΠΎΡΠΎΡΠΈΠ»ΠΈ. ΠΠ° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Istio, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΠ½Π΅ 4 Π²ΡΠ·Π΅Π»Π° ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°
ΠΠΊΠΈΠΏΡΡ ΡΡΠ·Π΄Π°Π²Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΡΡ Π΅ Π³ΠΎΡΠΎΠ², ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π½Π΅ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ
2) ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄
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:
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² 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 ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°
ΠΠΈΠ΅ ΠΏΠΎΡΠΎΡΠ²Π°ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
ΠΡΠΈΠΌΠ΅ΡΡΡ ΡΡΠ΄ΡΡΠΆΠ° 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 ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΌΡΠ΅ΠΆΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°. Π‘Π΅ΡΠ²ΠΈΠ·Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ΅ΡΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠ»ΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π°Π΄ Kubernetes.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΊΡΠΈΡΠ°ΡΠ° Π½Π° Envoy ΡΠ°Π±ΠΎΡΡΡ Π² ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, Istio ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π²ΡΡΡ Ρ GKE ΠΊΠ»ΡΡΡΠ΅Ρ Π±Π΅Π· ΠΏΠΎΡΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎ Π²ΠΈΠ΅ ΡΠ²ΡΡΡΠΈΡ ΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°, Π·Π° Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ Istio:
- ΠΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. ΠΡΠΌ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡ ΡΡΡΠ²ΡΡ ΠΈ loadgen ΡΠ²ΡΡΠ·Π°Π½ Ρ ΡΡΠ»ΡΠ³Π°ΡΠ° Kubernetes. ΠΠΎΡΠΈ loadgen, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π²Ρ ΠΎΠ΄ΡΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΈΠΌΠ° ΡΡΠ»ΡΠ³Π°.
- ΠΠΎΡΡΠΎΠ²Π΅ΡΠ΅ Π² ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°Ρ ΠΈΠΌΠ΅Π½Π°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠΎΠ²Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π±Π΅Π· ΠΈΠΌΠ΅ Π² GKE, Istio ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄Π° Π³ΠΈ ΠΏΠΎΡΠΎΡΠΈΡΠ΅
ΠΈΠΌΠ΅ Π½Π° ΠΏΠΎΡΡ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ». Π YAML ΡΠ°ΠΉΠ»Π° ΠΏΠΎΡΡΡΡ Π·Π° ΡΡΡΠ²ΡΡ Π½Π°ΡΠΈΡΠ° HTTPΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΡΠ²ΡΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° HTTP... ΠΠΊΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ gRPC, ΡΠ΅ Π½Π°Π·ΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΡΡΠ° grpc. - ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡΡΠ° ΡΠ° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° Istio Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΡΡΠ»ΡΠ³Π°.
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡ
ΠΠΌΠ° Π΄Π²Π° Π½Π°ΡΠΈΠ½Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Istio. ΠΠΎΠ³Π°
ΠΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΎΠΏΡΠΈΡ, ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΎΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈ ΡΠ»Π΅Π΄Π²Π°ΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅, Π·Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Istio Π½Π° Π²Π°ΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ. ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Istio Ρ Π²Π°ΡΠ΅ΡΠΎ Π½ΠΎΠ²ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅,
ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅
ΠΠ° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΡΠ°ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° Π²Π°ΡΠΈΡ Π°ΠΊΠ°ΡΠ½Ρ Π² Google Cloud Platform Π·Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π² ΡΠΎΠ·ΠΈ ΡΡΠΎΠΊ, ΠΈΠ·ΡΡΠΈΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ Istio ΠΈ ΡΡΠ΅ ΠΈΠ³ΡΠ°Π»ΠΈ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΈ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ, Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠ΅ΡΡΡΡΠΈ.
ΠΠ°ΠΊΠ²Π° Π΅ ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ°?
-
Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ:
Π΄ΠΎΠΊΠ΅Ρ ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π Π΅Π³ΠΈΡΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Kubernetes Π.Π.Π. Π‘Π΅ΡΠ²ΠΈΠ·Π½Π° ΠΌΡΠ΅ΠΆΠ° ΠΡΡΠΈΠΎ
-
Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ:
-
ΠΠ°ΡΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈΡΠ΅ Π½Π° Kubernetes:
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com