ΠΡΠΈΠΌ. ΠΏΡΠ΅Π².: Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΎΡ Galo Navarro, ΠΊΠΎΠΉΡΠΎ Π·Π°Π΅ΠΌΠ° Π΄Π»ΡΠΆΠ½ΠΎΡΡΡΠ° ΠΠ»Π°Π²Π΅Π½ ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ Π² Π΅Π²ΡΠΎΠΏΠ΅ΠΉΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Adevinta, Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΠΈ ΠΏΠΎΡΡΠΈΡΠ΅Π»Π΅Π½ βΡΠ°Π·ΡΠ»Π΅Π΄Π²Π°Ρβ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°. ΠΠ΅ΠΉΠ½ΠΎΡΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π±Π΅ΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΎ Π² ΠΏΡΠ΅Π²ΠΎΠ΄Π° ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΊΠΎΡΡΠΎ Π°Π²ΡΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠ²Π° Π² ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ.

ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ° ΠΎΡ Π°Π²ΡΠΎΡΠ°: ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅. ΠΡΠ΅ ΠΎΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌ Π³Π½Π΅Π²Π½ΠΈ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π°, ΡΠ΅ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΏΠΎΠ΄Π²Π΅ΠΆΠ΄Π°ΡΠΎ ΠΈ ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ ΡΠ° ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈ. Π Π°Π·Π±ΠΈΡΠ°ΠΌ ΠΏΡΠΈΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΡΠ»ΡΡΠ²Π°ΡΠΎΡΠΎ ΡΠ΅, Π·Π°ΡΠΎΠ²Π°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠΈΡΠΊΠ° Π΄Π° ΡΠ°Π·Π²Π°Π»Ρ ΡΡΠ»Π°ΡΠ° ΠΈΠ½ΡΡΠΈΠ³Π°, ΠΈΡΠΊΠ°ΠΌ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π²ΠΈ ΠΊΠ°ΠΆΠ° Π·Π° ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ. ΠΠΎΠ³Π°ΡΠΎ Π΅ΠΊΠΈΠΏΠΈΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ Π½Π° Kubernetes, Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΌ Π»ΡΠ±ΠΎΠΏΠΈΡΠ½ΠΎ ΡΠ²Π»Π΅Π½ΠΈΠ΅: Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π±Π°Π²ΡΠ½ΠΈΡΡΠ° ΡΠ»Π΅Π΄ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ), ΠΏΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ±Π²ΠΈΠ½ΡΠ²Π°Ρ, Π΅ Kubernetes, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΡΡ Π²ΡΡΡΠ½ΠΎΡΡ Π½Π΅ Π΅ Π²ΠΈΠ½ΠΎΠ²Π΅Π½. Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ°Π·ΠΊΠ°Π·Π²Π° Π·Π° Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΠ»ΡΡΠ°ΠΈ. ΠΠ΅ΠΉΠ½ΠΎΡΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡ Π²ΡΠ·ΠΊΠ»ΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ (ΡΠ΅ ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅, ΡΠ΅ Kubernetes ΡΡΠΊ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ Π΅ Π·Π°ΠΌΠ΅ΡΠ΅Π½). Π Π½Π΅Ρ Π½ΡΠΌΠ° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°ΡΠΈ ΡΠ°Π·ΠΊΡΠΈΡΠΈΡ Π·Π° Kubernetes, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°ΡΠ΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±ΡΠΈ ΡΡΠΎΠΊΠ° Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
ΠΡΠ΅Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄ΠΌΠΈΡΠΈ ΠΌΠΎΡΡ Π΅ΠΊΠΈΠΏ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΡΠ΅ Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π΅Π΄ΠΈΠ½ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ° CI/CD, ΡΠ°Π±ΠΎΡΠ½Π° ΡΡΠ΅Π΄Π°, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Kubernetes, ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π½Π΅ΡΠ°. ΠΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π½ΠΎ: ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ ΠΌΠ΅ Π΄Π° Π³ΠΎ Π²Π·Π΅ΠΌΠ΅ΠΌ Π·Π° ΠΎΡΠ½ΠΎΠ²Π° ΠΈ Π΄Π° ΠΏΡΠ΅Π½Π΅ΡΠ΅ΠΌ ΠΎΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 150 ΡΡΠ»ΡΠ³ΠΈ Π² Π±Π»ΠΈΠ·ΠΊΠΈΡΠ΅ ΠΌΠ΅ΡΠ΅ΡΠΈ. ΠΡΠΈΡΠΊΠΈ ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π½ΡΠΊΠΎΠΈ ΠΎΡ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π² ΠΡΠΏΠ°Π½ΠΈΡ (Infojobs, Fotocasa ΠΈ Π΄Ρ.).
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ°Π·Π³ΠΎΡΠΈΡ ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Kubernetes ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠΈΡ ΠΌΠ΅ ΡΠ°ΡΡ ΠΎΡ ΡΡΠ°ΡΠΈΠΊΠ° ΠΊΡΠΌ Π½Π΅Π³ΠΎ, Π½ΠΈ ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅ ΡΡΠ΅Π²ΠΎΠΆΠ΅Π½ ΠΈΠ·Π½Π΅Π½Π°Π΄Π°. ΠΠ°Π±Π°Π²ΡΠ½Π΅ΡΠΎ (latency) Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π² Kubernetes Π±Π΅ΡΠ΅ 10 ΠΏΡΡΠΈ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π² EC2. Π ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ, Π±Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ»ΠΈ Π΄Π° ΡΡΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π° (ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΎΡ ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ).
ΠΠ°ΡΠΎ Π·Π°Π±Π°Π²ΡΠ½Π΅ΡΠΎ Π² Kubernetes Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π² EC2?
ΠΠ° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΠΌ ΡΡΡΠ½ΠΎΡΠΎ ΠΌΡΡΡΠΎ, ΡΡΠ±ΡΠ°Ρ ΠΌΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΏΠΎ ΡΠ΅Π»ΠΈΡ ΠΏΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. ΠΠ°ΡΠ°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΅ ΠΏΡΠΎΡΡΠ°: API ΡΠ»ΡΠ· (Zuul) ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π° Π² EC2 ΠΈΠ»ΠΈ Kubernetes. Π Kubernetes ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ NGINX Ingress Π‘ontroller, Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠΈΠΏ Ρ JVM ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Spring.
EC2
+---------------+
| +---------+ |
| | | |
+-------< BACKEND | |
| | | | |
| | +---------+ |
| +---------------+
+------+ |
Public | | |
-------< ZUUL +--+
traffic | | | Kubernetes
+------+ | +-----------------------------+
| | +-------+ +---------+ |
| | | | xx | | |
+------- BACKEND | |
| | | xx | | |
| +-------+ +---------+ |
+-----------------------------+ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π±Π΅ΡΠ΅ ΡΠ²ΡΡΠ·Π°Π½ ΡΡΡ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ Π² Π½Π°ΡΠ°Π»Π½ΠΈΡ Π΅ΡΠ°ΠΏ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π² Π±Π΅ΠΊΠ΅Π½Π΄Π° (ΠΎΠ·Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ° ΠΊΠ°ΡΠΎ Β«Ρ Ρ Β»). Π EC2 ΠΎΡΠ³ΠΎΠ²ΠΎΡΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π±Π΅ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 20 ΠΌΡ. Π Kubernetes Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π°ΡΠ°ΡΠ½Π° Π΄ΠΎ 100β200 ΠΌΡ.
ΠΡΡΠ·ΠΎ ΠΎΡΡ Π²ΡΡΠ»ΠΈΡ ΠΌΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»Π½ΠΈ Π² ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠ΅ΡΡΠΈΡΡΠ° Π½Π° JVM ΠΎΡΡΠ°Π½Π° ΡΡΡΠ°ΡΠ°. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡΡΠ° ΡΡΡΠΎ Π½Π΅ Π±ΡΡ Π° ΠΏΡΠΈΡΠΈΠ½Π°: ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² EC2. ΠΠ°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅? ΠΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΠΌΠ΅ Π²ΠΈΡΠΎΠΊΠΈ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡ Π΄ΠΎΡΠΈ ΠΏΡΠΈ 1 Π·Π°ΡΠ²ΠΊΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠ°ΡΠ·Π° Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ ΡΡΡΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π½Π°ΡΠ°.
ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ Π½Π° Kubernetes ΠΏΠΎΠΏΠΈΡΠ° Π΄Π°Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌΠ° Π²ΡΠ½ΡΠ½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΊΡΠΌ DNS ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°Ρ Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
Π₯ΠΈΠΏΠΎΡΠ΅Π·Π° 1: ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π° DNS
ΠΡΠΈ Π²ΡΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΎΡ Π΅Π΄Π½ΠΎ Π΄ΠΎ ΡΡΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ Π½Π° AWS Elasticsearch Π² Π΄ΠΎΠΌΠ΅ΠΉΠ½, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° elastic.spain.adevinta.com. ΠΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ , ΡΠ°ΠΊΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Π΄Π°Π»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° ΠΎΡΠ½Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅.
DNS-Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°:
[root@be-851c76f696-alf8z \/]# while true; do dig "elastic.spain.adevinta.com" | grep time; sleep 2; done
;; Query time: 22 msec
;; Query time: 22 msec
;; Query time: 29 msec
;; Query time: 21 msec
;; Query time: 28 msec
;; Query time: 43 msec
;; Query time: 39 msecΠΠΎΠ΄ΠΎΠ±Π½ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈΡΠ΅ EC2, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:
bash-4.4# while true; do dig "elastic.spain.adevinta.com" | grep time; sleep 2; done
;; Query time: 77 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msecΠΠ°ΡΠΎ Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΡΡΡΡΠ΅Π½Π΅ΡΠΎ ΠΎΡΠ½Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 30 ΠΌΡ, ΡΡΠ°Π½Π° ΡΡΠ½ΠΎ, ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° DNS ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Elasticsearch Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ Π΄ΠΎΠΏΡΠΈΠ½Π°ΡΡ Π·Π° Π½Π°ΡΠ°ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠΎ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΡΡΡΠ°Π½Π½ΠΎ ΠΏΠΎ Π΄Π²Π΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ:
- ΠΠ΅ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes, ΠΊΠΎΠΈΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° AWS, Π±Π΅Π· Π΄Π° ΡΡΡΠ°Π΄Π°Ρ ΠΎΡ Π³ΠΎΠ»Π΅ΠΌΠΈ Π·Π°Π±Π°Π²ΡΠ½ΠΈΡ. ΠΠ°ΠΊΠ²Π°ΡΠ° ΠΈ Π΄Π° Π΅ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ°, ΡΡ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π·Π° ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ.
- ΠΠ½Π°Π΅ΠΌ, ΡΠ΅ JVM ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° DNS Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π Π½Π°ΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° TTL Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π°
$JAVA_HOME/jre/lib/security/java.securityΠΈ Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½Π° Π½Π° 10 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ:networkaddress.cache.ttl = 10. Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, JVM ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠ΅ΡΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ DNS Π·Π°ΡΠ²ΠΊΠΈ Π·Π° 10 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
ΠΠ° Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈΠΌ ΠΏΡΡΠ²Π°ΡΠ° Ρ
ΠΈΠΏΠΎΡΠ΅Π·Π°, ΡΠ΅ΡΠΈΡ
ΠΌΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΡΠ° ΠΊΡΠΌ DNS ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΈΠ·ΡΠ΅Π·Π½Π΅. ΠΡΡΠ²ΠΎ ΡΠ΅ΡΠΈΡ
ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅Π½Π°ΡΡΡΠΎΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ Ρ Elasticsearch Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΠΎ IP Π°Π΄ΡΠ΅Ρ, Π° Π½Π΅ ΡΡΠ΅Π· Π΄ΠΎΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅. Π’ΠΎΠ²Π° Π±ΠΈ Π½Π°Π»ΠΎΠΆΠΈΠ»ΠΎ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Π² ΠΊΠΎΠ΄Π° ΠΈ Π½ΠΎΠ²ΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅, Π·Π°ΡΠΎΠ²Π° ΠΏΡΠΎΡΡΠΎ ΡΡΠΏΠΎΡΡΠ°Π²ΠΈΡ
ΠΌΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° Ρ Π½Π΅Π³ΠΎΠ²ΠΈΡ IP Π°Π΄ΡΠ΅Ρ Π² /etc/hosts:
34.55.5.111 elastic.spain.adevinta.comΠ‘Π΅Π³Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ IP ΠΏΠΎΡΡΠΈ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΎ. Π’ΠΎΠ²Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ Π»Π΅ΠΊΠΎ ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠΈΡ ΠΌΠ΅ Π΄ΠΎ ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π·Π°Π±Π°Π²ΡΠ½Π΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° DNS ΠΎΡΠ½Π΅ΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΈΡΡΠΈΠ½ΡΠΊΠ°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π²ΡΠ΅ ΠΎΡΠ΅ Π½ΠΈ ΡΠ±ΡΠ³Π²Π°ΡΠ΅.
ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΡΡΠ΅Π· ΠΌΡΠ΅ΠΆΠ°ΡΠ°
Π Π΅ΡΠΈΡ
ΠΌΠ΅ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° tcpdump, Π·Π° Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°:
[root@be-851c76f696-alf8z /]# tcpdump -leni any -w capture.pcap Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΡ
ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡ
ΠΌΠ΅ ΡΠ΅Ρ
Π½ΠΈΡ capture (kubectl cp my-service:/capture.pcap capture.pcap) Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ Π°Π½Π°Π»ΠΈΠ· Π² .
Π DNS Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π½ΡΠΌΠ°ΡΠ΅ Π½ΠΈΡΠΎ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»Π½ΠΎ (ΠΎΡΠ²Π΅Π½ Π΅Π΄Π½Π° ΠΌΠ°Π»ΠΊΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡ, Π·Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ). ΠΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎΡΡΠΈ Π² Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ Π½Π°ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ°. ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΠΊΡΠΈΠΉΠ½ΡΠΎΡ Π½Π° captureβΠ°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Ρ ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΈ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ°:

ΠΠΎΠΌΠ΅ΡΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΡΠ° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² ΠΏΡΡΠ²Π°ΡΠ° ΠΊΠΎΠ»ΠΎΠ½Π°. ΠΠ° ΡΡΠ½ΠΎΡΠ° ΡΡΠΌ ΠΎΡΠ²Π΅ΡΠΈΠ» ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ TCP ΠΏΠΎΡΠΎΡΠΈ.
ΠΠ΅Π»Π΅Π½ΠΈΡΡ ΠΏΠΎΡΠΎΠΊ, Π·Π°ΠΏΠΎΡΠ²Π°Ρ ΠΎΡ 328-ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ, ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ (172.17.22.150) Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» TCP Π²ΡΡΠ·ΠΊΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (172.17.36.147). Π‘Π»Π΅Π΄ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ ΡΡΠΊΠΎΡΡΠΈΡΠΊΠ°Π½Π΅ (328-330), ΠΏΠ°ΠΊΠ΅Ρ 331 Π΄ΠΎΠ½Π΅ΡΠ΅ HTTP GET /v1/.. β Π²Ρ
ΠΎΠ΄ΡΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ Π½Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡ. Π¦Π΅Π»ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΎΡΠ½Π΅ 1 ΠΌΡ.
Π‘ΠΈΠ²ΠΈΡΡ ΠΏΠΎΡΠΎΠΊ (ΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ 339) ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Π½Π°ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠ» HTTP Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ Π½Π° Elasticsearch (TCP ΡΡΠΊΠΎΡΡΠΈΡΠΊΠ°Π½Π΅ΡΠΎ ΠΎΡΡΡΡΡΠ²Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½Π° Π²ΡΡΠ·ΠΊΠ°). Π’ΠΎΠ²Π° ΠΎΡΠ½Π΅ 18 ΠΌΡ.
ΠΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠΈΡΠΊΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ, ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡΠ΅ Π·Π°Π±Π°Π²ΡΠ½ΠΈΡ (20-30 ΠΌΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°).
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠΈΠ½ΡΡΠ° ΡΠ΅ΠΊΡΠΈΡ ΠΎΡΠ½Π΅ΠΌΠ° 86 ΠΌΡ. ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΡΠ°ΠΌ? Π‘ ΠΏΠ°ΠΊΠ΅Ρ 333 Π½Π°ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΈΠ·ΠΏΡΠ°ΡΠΈ HTTP GET Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° /latest/meta-data/iam/security-credentials, Π° Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ Π½Π΅Π³ΠΎ, ΠΏΠΎ ΡΡΡΠ°ΡΠ° TCP Π²ΡΡΠ·ΠΊΠ°, ΠΎΡΠ΅ Π΅Π΄Π½ΠΎ GET Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° /latest/meta-data/iam/security-credentials/arn:...
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΌΠ΅, ΡΠ΅ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡ Ρ Π²ΡΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² ΡΡΠ»Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠ°. Π Π°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° DNS Π½Π°ΠΈΡΡΠΈΠ½Π° Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ Π² Π½Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΎΠ²Π° ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π½ΠΎ ΡΠ΅ Π³ΠΎ Π·Π°ΠΏΠ°Π·Ρ Π·Π° ΠΎΡΠ΄Π΅Π»Π½Π° ΡΡΠ°ΡΠΈΡ). ΠΠΊΠ°Π·Π° ΡΠ΅, ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ Π·Π°Π±Π°Π²ΡΠ½ΠΈΡ ΡΠ° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° ΠΊΡΠΌ ΡΡΠ»ΡΠ³Π°ΡΠ° AWS Instance Metadata ΠΏΡΠΈ Π²ΡΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅.
Π₯ΠΈΠΏΠΎΡΠ΅Π·Π° 2: ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ AWS
Π Π΄Π²Π°ΡΠ° Π΅Π½Π΄ΠΏΠΎΠΉΠ½ΡΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π½Π° . ΠΠ°ΡΠΈΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·ΠΈ ΡΡΠ»ΡΠ³Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Elasticsearch. Π Π΄Π²Π΅ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ. ΠΠ½Π΄ΠΏΠΎΠΉΠ½ΡΡΡ, ΠΊΡΠΌ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ ΠΏΡΠΈ ΠΏΡΡΠ²ΠΎΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ IAM ΡΠΎΠ»Ρ, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°.
/ # curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
arn:aws:iam::<account_id>:role/some_roleΠΡΠΎΡΠΎΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΎΡΠΏΡΠ°Π²Ρ ΠΈΡΠΊΠ°Π½Π΅ ΠΊΡΠΌ Π²ΡΠΎΡΠΈΡ Π΅Π½Π΄ΠΏΠΎΠΉΠ½Ρ Π·Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π·Π° ΡΠΎΠ·ΠΈ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ:
/ # curl http://169.254.169.254/latest/meta-data/iam/security-credentials/arn:aws:iam::<account_id>:role/some_role`
{
"Code" : "Success",
"LastUpdated" : "2012-04-26T16:39:16Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIAIOSFODNN7EXAMPLE",
"SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"Token" : "token",
"Expiration" : "2017-05-17T15:09:54Z"
} ΠΠ»ΠΈΠ΅Π½ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΊΡΠ°ΡΡΠΊ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π½ΠΎΠ²ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ (ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ Expiration). ΠΠΎΠ΄Π΅Π»ΡΡ Π΅ ΠΏΡΠΎΡΡ: AWS ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ΅ΡΡΠ° ΡΠΎΡΠ°ΡΠΈΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΏΠΎ ΡΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ, Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π³ΠΈ ΠΊΠ΅ΡΠΈΡΠ°Ρ Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ, ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠ°ΠΉΠΊΠΈ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ.
AWS Java SDK ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ΅ΠΌΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ, Π½ΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΡΠΎΠ²Π° Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π°.
Π‘Π»Π΅Π΄Π²Π°ΠΉΠΊΠΈ ΡΡΡΡΠ΅Π½Π΅ ΠΏΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² GitHub, ΡΠ΅ Π½Π°ΡΡΠΊΠ½Π°Ρ ΠΌΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° . Π’ΠΎΠΉ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° "ΠΊΠΎΠΏΠ°Π΅ΠΌ" ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ.
AWS SDK ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΏΡΠΈ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π΄Π½ΠΎ ΠΎΡ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ:
- Π‘ΡΠΎΠΊΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈΠΌ (
Expiration) ΠΏΠΎΠΏΠ°Π΄Π° Π²EXPIRATION_THRESHOLD, Π·Π°Π΄Π°Π΄Π΅Π½ Π² ΠΊΠΎΠ΄Π° Π½Π° 15 ΠΌΠΈΠ½ΡΡΠΈ. - ΠΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΎΠΏΠΈΡ Π·Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ Π΅ ΠΌΠΈΠ½Π°Π»ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ
REFRESH_THRESHOLD, Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° 60 ΠΌΠΈΠ½ΡΡΠΈ.
ΠΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈΡ ΡΡΠΎΠΊ Π½Π° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΠΎΡ Π½Π°Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡ ΠΌΠ΅ Π³ΠΎΡΠ΅ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ cURL ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΠΎΡ EC2 ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ°. ΠΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠ΅ ΠΎΠΊΠ°Π·Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-ΠΊΡΠ°ΡΠΊΠΎ: ΡΠΎΡΠ½ΠΎ 15 ΠΌΠΈΠ½ΡΡΠΈ.
Π‘Π΅Π³Π° Π²ΡΠΈΡΠΊΠΎ Π΅ ΡΡΠ½ΠΎ: Π·Π° ΠΏΡΡΠ²ΠΎΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π°ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠΎΠΊΡΡ ΠΈΠΌ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ Π½Π΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°ΡΠ΅ 15 ΠΌΠΈΠ½ΡΡΠΈ, ΠΏΡΠΈ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ AWS SDK ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ Π΄Π° Π³ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈ. Π ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π°ΡΠ΅ Ρ Π²ΡΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅.
ΠΠ°ΡΠΎ ΡΡΠΎΠΊΡΡ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΡΠ°Π½Π° ΠΏΠΎ-ΠΊΡΠ°ΡΡΠΊ?
Π‘Π΅ΡΠ²ΠΈΠ·ΡΡ AWS Instance Metadata Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ EC2 ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ, Π° Π½Π΅ Ρ Kubernetes. ΠΡ Π΅Π΄Π½Π° ΡΡΡΠ°Π½Π°, Π½Π΅ ΠΈΡΠΊΠ°Ρ ΠΌΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. ΠΠ° ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΅Π· Π°Π³Π΅Π½ΡΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» Π² Kubernetes ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ (ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅, ΡΠ°Π·Π³ΡΡΡΠ°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°) Π΄Π° ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Ρ IAM ΡΠΎΠ»ΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² pod'ΠΎΠ²Π΅, ΡΠ°ΠΊΠ° ΡΡΠΊΠ°Ρ ΡΠ΅ ΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ EC2. KIAM ΡΠ»Π°Π²Ρ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ AWS Instance Metadata ΡΠ΅ΡΠ²ΠΈΠ·Π° ΠΈ Π³ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ ΡΠ²ΠΎΡ ΠΊΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΠ»ΡΡΠΈ ΠΎΡ AWS. ΠΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½ΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ.
KIAM Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π½Π° pod'ΠΎΠ²Π΅. Π’ΠΎΠ²Π° Π΅ ΡΠ°Π·ΡΠΌΠ½ΠΎ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΡΡΠ΅Π΄Π½Π°ΡΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ΠΆΠΈΠ²ΠΎΡΠ° Π½Π° pod'Π° Π΅ ΠΏΠΎ-ΠΊΡΠ°ΡΠΊΠ° ΠΎΡ ΡΠ°Π·ΠΈ Π½Π° EC2 ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ°. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΡΠΎΠΊΡΡ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ .
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°, Π°ΠΊΠΎ Π½Π°Π»ΠΎΠΆΠΈΠΌ ΠΈ Π΄Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°ΡΠΈ ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π΅Π΄Π½Π° Π²ΡΡΡ Ρ Π΄ΡΡΠ³Π°, Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΡΠΈΡΠ° ΡΠ»Π΅Π΄ 15 ΠΌΠΈΠ½ΡΡΠΈ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ AWS Java SDK ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, ΡΠΈΠΉΡΠΎ ΡΡΠΎΠΊ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ ΠΎΡΡΠ°Π²Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 15 ΠΌΠΈΠ½ΡΡΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π°, Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π° Ρ Π²ΡΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ AWS API ΠΈ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ. Π AWS Java SDK ΠΎΡΠΊΡΠΈΡ ΠΌΠ΅ , Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΎΠΊΠ°Π·Π° ΠΏΡΠΎΡΡΠΎ. ΠΡΠΎΡΡΠΎ ΠΏΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ ΠΌΠ΅ KIAM Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Ρ ΠΏΠΎ-Π΄ΡΠ»ΡΠ³ ΡΡΠΎΠΊ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΡΡΠ°Π½Π°, Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° AWS Metadata ΡΠ΅ΡΠ²ΠΈΠ·Π°, Π° Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠΏΠ°Π΄Π½Π° Π΄ΠΎ Π΄ΠΎΡΠΈ ΠΏΠΎ-Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΎΡ ΡΠΎΠ²Π° Π² EC2.
ΠΠ·Π²ΠΎΠ΄ΠΈ
ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π½Π°ΡΠΈΡ ΠΎΠΏΠΈΡ Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΈΡΠ΅ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π³ΡΠ΅ΡΠΊΠΈ Π² Kubernetes ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°. Π’ΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ Π΄Π΅ΡΠ΅ΠΊΡΠΈ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π½Π°ΡΡΠΌΠ΅. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ ΠΏΡΠΎΡΡΠΎ Π·Π°ΡΠΎΡΠΎ ΡΠ²ΡΡΠ·Π²Π°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π°Π΅Π΄Π½ΠΎ.
ΠΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° ΠΏΡΠ΅Π΄ΠΈ Π½Π΅ ΡΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Π»ΠΈ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ, Ρ Π½Π°Π΄Π΅ΠΆΠ΄Π°ΡΠ°, ΡΠ΅ Π·Π°Π΅Π΄Π½ΠΎ ΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ Π΅Π΄Π½Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°, Π΅Π΄ΠΈΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° Π΅Π½ΡΡΠΎΠΏΠΈΡ.
Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π²ΠΈΡΠΎΠΊΠ°ΡΠ° Π·Π°Π±Π°Π²ΡΠ½Π΅ Π½Π΅ Π±Π΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ Π»ΠΎΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Kubernetes, KIAM, AWS Java SDK ΠΈΠ»ΠΈ Π½Π°ΡΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ. Π’Ρ ΡΡΠ°Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄Π²Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°, Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅: Π΅Π΄ΠΈΠ½ Π² KIAM, Π΄ΡΡΠ³ΠΈΡΡ β Π² AWS Java SDK. ΠΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈ Π΄Π²Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΠΈΠΌΠ°Ρ ΡΠΌΠΈΡΡΠ»: ΠΈ Π°ΠΊΡΠΈΠ²Π½Π°ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π² AWS Java SDK, ΠΈ ΠΊΡΠ°ΡΠΊΠΈΡΡ ΡΡΠΎΠΊ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ Π² KAIM. ΠΠΎ ΠΊΠΎΠ³Π°ΡΠΎ Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΌΠ΅, ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΡΡΠ°Π²Π°Ρ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΈ. ΠΠ²Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΈΠΌΠ°Ρ ΡΠΌΠΈΡΡΠ» ΠΏΡΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅.
P.S. ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° KIAM Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° AWS IAM Ρ Kubernetes Π² ΠΎΡ Π½Π΅ΠΉΠ½ΠΈΡΠ΅ ΡΡΠ·Π΄Π°ΡΠ΅Π»ΠΈ.
Π Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³ ΡΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅:
- «»;
- «»;
- «»;
- «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
