ΠŸΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠ΅ 10 000 ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Yandex.Cloud. Част 1

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ Π½Π° всички приятСли!

* Π’Π°Π·ΠΈ статия Π΅ Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° отворСния сСминар Π½Π° REBRAIN & Yandex.Cloud, Π°ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π·ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ° - https://youtu.be/cZLezUm0ekE

Наскоро ΠΈΠΌΠ°Ρ…ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° ΠΈΠ·ΠΏΡ€ΠΎΠ±Π²Π°ΠΌΠ΅ Yandex.Cloud Π½Π° ΠΆΠΈΠ²ΠΎ. Въй ΠΊΠ°Ρ‚ΠΎ искахмС Π΄Π° изслСдвамС дълго ΠΈ ΡƒΠΏΠΎΡ€ΠΈΡ‚ΠΎ, Π²Π΅Π΄Π½Π°Π³Π° сС ΠΎΡ‚ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅ ΠΎΡ‚ идСята Π΄Π° стартирамС прост Π±Π»ΠΎΠ³ Π½Π° Wordpress с ΠΎΠ±Π»Π°Ρ‡Π½Π° Π±Π°Π·Π° - бСшС Ρ‚Π²ΡŠΡ€Π΄Π΅ скучно. Π‘Π»Π΅Π΄ извСстСн Ρ€Π°Π·ΠΌΠΈΡΡŠΠ» Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° производствСна услуга Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅.

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ съм сигурСн, Ρ‡Π΅ ΠΏΠΎ-голямата част ΠΎΡ‚ ΠΎΠ½Π»Π°ΠΉΠ½ (ΠΈ Π½Π΅ само) бизнСси ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ ΡΡŠΠ±ΠΈΡ€Π°Ρ‚ ΠΏΠ»Π°Π½ΠΈΠ½Π° ΠΎΡ‚ информация Π·Π° своитС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ дСйствия. ΠšΠ°Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ управляватС ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈΠ³Ρ€Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ статистиката Π½Π° ΠΊΠΎΠ΅ Π½ΠΈΠ²ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π°ΠΉ-чСсто сС Π·Π°Π±ΠΈΠ²Π°Ρ‚ ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ Π²Π°ΡˆΠ°Ρ‚Π° ΠΈΠ³Ρ€Π°Ρ‡ΠΊΠ°. Или Π·Π°Ρ‰ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ напускат вашия сайт, Π±Π΅Π· Π΄Π° купят Π½ΠΈΡ‰ΠΎ (Π·Π΄Ρ€Π°Π²Π΅ΠΉ, Yandex.Metrica).

И Ρ‚Π°ΠΊΠ°, Π½Π°ΡˆΠ°Ρ‚Π° история: ΠΊΠ°ΠΊ написахмС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° golang, тСствахмС kafka срСщу rabbitmq срСщу yqs, написахмС ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Clickhouse ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° yandex datalens. ЕстСствСно, всичко Ρ‚ΠΎΠ²Π° бСшС ΠΏΠΎΠ΄ΠΏΡ€Π°Π²Π΅Π½ΠΎ с инфраструктурни ΠΈΠ·ΠΊΡƒΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° docker, terraform, gitlab ci ΠΈ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, prometheus. Π”Π° Ρ‚Ρ€ΡŠΠ³Π²Π°ΠΌΠ΅!

Π‘ΠΈΡ… искал Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° направя рСзСрвация, Ρ‡Π΅ няма Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ всичко навСднъТ - Π·Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π½ΠΈ трябват няколко статии ΠΎΡ‚ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π°Ρ‚Π°. Малко Π·Π° структурата:

Част 1 (Π²ΠΈΠ΅ я Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅). НиС Ρ‰Π΅ Π²Π·Π΅ΠΌΠ΅ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ относно спСцификациитС ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ напишСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° golang.
Част 2. ΠŸΡƒΡΠΊΠ°ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² производство, ΠΏΡ€Π°Π²ΠΈΠΌ Π³ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎ ΠΈ тСствамС Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ.
Част 3. НСка сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°Ρ‰ΠΎ трябва Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° Π² Π±ΡƒΡ„Π΅Ρ€, Π° Π½Π΅ във Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° сравним услугата kafka, rabbitmq ΠΈ yandex queue.
част 4 Π©Π΅ Π²Π½Π΅Π΄Ρ€ΠΈΠΌ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Clickhouse, Ρ‰Π΅ напишСм услуга Π·Π° стрийминг Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π±ΡƒΡ„Π΅Ρ€Π° Ρ‚Π°ΠΌ ΠΈ Ρ‰Π΅ настроим визуализация Π² datalens.
част 5 НСка ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ цялата инфраструктура Π² ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° Ρ„ΠΎΡ€ΠΌΠ° - настройтС ci/cd с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° gitlab ci, ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° услуги с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° prometheus ΠΈ consul.

TK

ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°ΠΌΠ΅ тСхничСското Π·Π°Π΄Π°Π½ΠΈΠ΅ - ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ искамС Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚.

  1. ИскамС Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΊΠ°Ρ‚ΠΎ events.kis.im (kis.im Π΅ тСстовият Π΄ΠΎΠΌΠ΅ΠΉΠ½, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ във всички статии), която трябва Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Ρ‡Ρ€Π΅Π· HTTPS.
  2. Π‘ΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° са ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ json ΠΊΠ°Ρ‚ΠΎ: {β€œevent”: β€œview”, β€œos”: β€œlinux”, β€œbrowser”: β€œchrome”}. На послСдния Π΅Ρ‚Π°ΠΏ Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΡ‰Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ»Π΅Ρ‚Π°, Π½ΠΎ Ρ‚ΠΎΠ²Π° няма Π΄Π° ΠΈΠ³Ρ€Π°Π΅ голяма роля. Ако ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към protobuf.
  3. Услугата трябва Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° 10 000 ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² сСкунда.
  4. Врябва Π΄Π° Π΅ възмоТно Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Ρ‡Ρ€Π΅Π· просто добавянС Π½Π° Π½ΠΎΠ²ΠΈ СкзСмпляри към Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. И Ρ‰Π΅ бъдС Ρ…ΡƒΠ±Π°Π²ΠΎ, Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° прСмСстим ΠΏΡ€Π΅Π΄Π½Π°Ρ‚Π° част Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ забавянСто Π½Π° клиСнтскитС заявки.
  5. ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ. Π Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ стабилно ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ†Π΅Π»Π΅Π΅ ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π°Π½Π΅ Π½Π° всякакви части (Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Ρ€ΠΎΠΉ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС).

Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

По ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π·Π° Ρ‚ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‚Π΄Π°Π²Π½Π° са измислСни класичСски Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ позволяват Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅. Π€ΠΈΠ³ΡƒΡ€Π°Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠ΅ 10 000 ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Yandex.Cloud. Част 1

И Ρ‚Π°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅:

1. ΠžΡ‚Π»ΡΠ²ΠΎ са Π½Π°ΡˆΠΈΡ‚Π΅ устройства, ΠΊΠΎΠΈΡ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, Π±ΠΈΠ»ΠΎ Ρ‚ΠΎ ΠΈΠ³Ρ€Π°Ρ‡ΠΈ, Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Ρ‰ΠΈ Π½ΠΈΠ²ΠΎ Π² ΠΈΠ³Ρ€Π°Ρ‡ΠΊΠ° Π½Π° смартфон ΠΈΠ»ΠΈ създаванС Π½Π° ΠΏΠΎΡ€ΡŠΡ‡ΠΊΠ° Π² ΠΎΠ½Π»Π°ΠΉΠ½ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Ρ‡Ρ€Π΅Π· ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€. Π‘ΡŠΠ±ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ посочСно Π² спСцификацията, Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ json, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π΄ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° - events.kis.im.

2. ΠŸΡŠΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π° ΡΡŠΡ€Π²ΡŠΡ€Π° са прости Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ΠΈ, основнитС ΠΈΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ са:

  • Π‘ΡŠΠ΄Π΅Ρ‚Π΅ постоянно Π½Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ keepalived, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π° виртуалния IP ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π² случай Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.
  • ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Ρ‚Π΅ TLS. Π”Π°, Π½ΠΈΠ΅ Ρ‰Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠΌ TLS Π½Π° тях. ΠŸΡŠΡ€Π²ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π° отговаря Π½Π° тСхничСскитС спСцификации, ΠΈ Π²Ρ‚ΠΎΡ€ΠΎ, Π·Π° Π΄Π° сС ΠΎΠ±Π»Π΅ΠΊΡ‡ΠΈ тСТСстта Π½Π° установяванС Π½Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π² Π·Π°Π΄Π½Π°Ρ‚Π° част.
  • БалансирайтС входящитС заявки към Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π±Π΅ΠΊΠ΅Π½Π΄ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. ΠšΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° Ρ‚ΡƒΠΊ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π°. Π’ΡŠΠ· основа Π½Π° Ρ‚ΠΎΠ²Π° стигамС Π΄ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ, Ρ‡Π΅ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ΠΈΡ‚Π΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ трябва Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ с прилоТСния ΠΈ Π΄Π° спрат Π΄Π° балансират Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½ΠΈ възли.

3. Π‘Π»Π΅Π΄ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ΠΈΡ‚Π΅ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ с доста просто ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Врябва Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° входящи заявки Ρ‡Ρ€Π΅Π· HTTP, Π΄Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π° изпратСния json ΠΈ Π΄Π° поставя Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² Π±ΡƒΡ„Π΅Ρ€.

4. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Π²Π° kafka ΠΊΠ°Ρ‚ΠΎ Π±ΡƒΡ„Π΅Ρ€, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ услуги ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Π½ΠΈΠ²ΠΎ. Π©Π΅ сравним Kafka, rabbitmq ΠΈ yqs Π² Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° статия.

5. ΠŸΡ€Π΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π΅ Clickhouse - ΠΊΠΎΠ»ΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, която Π²ΠΈ позволява Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ количСство Π΄Π°Π½Π½ΠΈ. На Ρ‚ΠΎΠ²Π° Π½ΠΈΠ²ΠΎ трябва Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΠΌ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π±ΡƒΡ„Π΅Ρ€Π° към самата систСма Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ (ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Π² статия 4).

Π’ΠΎΠ·ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½ Π½ΠΈ позволява Π΄Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°ΠΌΠ΅ всСки слой нСзависимо Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ. Π‘Π΅ΠΊΠ΅Π½Π΄ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС справят - Π½Π΅ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΡ‰Π΅ Π½Π΅Ρ‰ΠΎ - Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Ρ‚Π΅ са прилоТСния Π±Π΅Π· ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΈ слСдоватСлно Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π΄ΠΎΡ€ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. Π‘ΡƒΡ„Π΅Ρ€ΡŠΡ‚ Π² стил Kafka Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ - Π½Π΅ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΡ‰Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΠΌ някои ΠΎΡ‚ дяловСтС Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Ρ‚Π΅ΠΌΠ° към тях. Clickhouse Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС справи - нСвъзмоТно Π΅ :) Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ Ρ‰Π΅ ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ ΠΈ Ρ‰Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ Π΄Π°Π½Π½ΠΈΡ‚Π΅.

ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Π°ΠΊΠΎ искатС Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ Π½Π΅Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° част ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ тСхничСски спСцификации ΠΈ ΠΌΠ°Ρ‰Π°Π± Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° няма Π½ΠΈΡ‰ΠΎ ΠΏΠΎ-просто:

ΠŸΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠ΅ 10 000 ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Yandex.Cloud. Част 1

Π’ΡŠΠ² всяка гСолокация Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°ΠΌΠ΅ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ kafka. ΠšΠ°Ρ‚ΠΎ цяло са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ 2 ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° прилоТСния, 3 възСла kafka ΠΈ ΠΎΠ±Π»Π°Ρ‡Π΅Π½ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ cloudflare, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ провСрява Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° възли Π½Π° прилоТСния ΠΈ заявки Π·Π° баланс Ρ‡Ρ€Π΅Π· гСолокация въз основа Π½Π° IP адрСса Π½Π° ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ ΠΎΡ‚ амСрикански ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Ρ‰Π΅ ΠΊΠ°Ρ†Π½Π°Ρ‚ Π½Π° амСрикански ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. И Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ Африка са Π½Π° африкански.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° всичко Π΅ съвсСм просто - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ оглСдалния инструмСнт ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° Kafka ΠΈ ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ всички Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ всички мСста Π² нашия Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π΅Π½ Ρ†Π΅Π½Ρ‚ΡŠΡ€ Π·Π° Π΄Π°Π½Π½ΠΈ, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² Русия. Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΈ Π³ΠΈ записвамС Π² Clickhouse Π·Π° послСдваща визуализация.

И Ρ‚Π°ΠΊΠ°, ΠΏΠΎΠ΄Ρ€Π΅Π΄ΠΈΡ…ΠΌΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° - Π½Π΅ΠΊΠ° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° Ρ€Π°Π·ΠΊΠ»Π°Ρ‰Π°ΠΌΠ΅ Yandex.Cloud!

ПисанС на молба

ΠŸΡ€Π΅Π΄ΠΈ Cloud всС ΠΎΡ‰Π΅ трябва Π΄Π° стС ΠΌΠ°Π»ΠΊΠΎ Ρ‚ΡŠΡ€ΠΏΠ΅Π»ΠΈΠ²ΠΈ ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ доста проста услуга Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° входящи ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ golang, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠΉ сС Π΅ Π΄ΠΎΠΊΠ°Π·Π°Π» ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ ΠΊΠ°Ρ‚ΠΎ Π΅Π·ΠΈΠΊ Π·Π° писанС Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΊΠ°Ρ€Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ час (ΠΌΠΎΠΆΠ΅ Π±ΠΈ няколко часа), ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ: https://github.com/RebrainMe/yandex-cloud-events/blob/master/app/main.go.

Кои са основнитС Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π±ΠΈΡ… искал Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠ° Ρ‚ΡƒΠΊ:

1. ΠšΠΎΠ³Π°Ρ‚ΠΎ стартиратС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π΄Π²Π° Ρ„Π»Π°Π³Π°. Единият отговаря Π·Π° ΠΏΠΎΡ€Ρ‚Π°, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΡΠ»ΡƒΡˆΠ°ΠΌΠ΅ входящитС http заявки (-addr). Π’Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π΅ Π·Π° адрСса Π½Π° kafka ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ записвамС Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ (-kafka):

addr     = flag.String("addr", ":8080", "TCP address to listen to")
kafka    = flag.String("kafka", "127.0.0.1:9092", "Kafka endpoints”)

2. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° sarama ([] github.com/Shopify/sarama), Π·Π° Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π΄ΠΎ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° kafka. Π’Π΅Π΄Π½Π°Π³Π° Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ настройкитС, насочСни към максимална скорост Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°:

config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForLocal
config.Producer.Compression = sarama.CompressionSnappy
config.Producer.Return.Successes = true

3. ΠΠ°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ° Π²Π³Ρ€Π°Π΄Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ prometheus, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ±ΠΈΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • Π±Ρ€ΠΎΠΉ заявки към Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅;
  • Π±Ρ€ΠΎΠΉ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ изпълнСниС Π½Π° заявката (нСвъзмоТно Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° заявка Π·Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅, ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½ json, нСвъзмоТно писанС Π½Π° Kafka);
  • Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΅Π΄Π½Π° заявка ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° писанС Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π΄ΠΎ Kafka.

4. Π’Ρ€ΠΈ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°:

  • /статус - просто Π²Ρ€ΡŠΡ‰Π° ok, Π·Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ смС ΠΆΠΈΠ²ΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ някои ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ наличността Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kafka.
  • /metrics - спорСд Ρ‚ΠΎΠ·ΠΈ url ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ prometheus Ρ‰Π΅ Π²ΡŠΡ€Π½Π΅ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.
  • /post Π΅ основната ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ POST заявки с json Π²ΡŠΡ‚Ρ€Π΅. ΠΠ°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ провСрява json Π·Π° валидност ΠΈ Π°ΠΊΠΎ всичко Π΅ Π½Π°Ρ€Π΅Π΄, записва Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kafka.

Π©Π΅ направя ΡƒΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°, Ρ‡Π΅ ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π΅ Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ - Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ (ΠΈ трябва!) Π΄Π° бъдС Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° спрСтС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ вградСния net/http ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈΡ fasthttp. Или ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° спСчСлитС Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ рСсурси Π½Π° процСсора, ΠΊΠ°Ρ‚ΠΎ прСмСститС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π·Π° валидност Π½Π° json Π½Π° ΠΏΠΎ-късСн Π΅Ρ‚Π°ΠΏ - ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΡ‚ ΠΎΡ‚ Π±ΡƒΡ„Π΅Ρ€Π° към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° clickhouse.

Π’ допълнСниС към Ρ€Π°Π·Π²ΠΎΠΉΠ½Π°Ρ‚Π° страна Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π²Π΅Π΄Π½Π°Π³Π° помислихмС Π·Π° Π½Π°ΡˆΠ°Ρ‚Π° Π±ΡŠΠ΄Π΅Ρ‰Π° инфраструктура ΠΈ Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‡Ρ€Π΅Π· Π΄ΠΎΠΊΠ΅Ρ€. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ‚ Dockerfile Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ https://github.com/RebrainMe/yandex-cloud-events/blob/master/app/Dockerfile. ΠšΠ°Ρ‚ΠΎ цяло Π΅ доста просто, СдинствСната Ρ‚ΠΎΡ‡ΠΊΠ°, Π½Π° която Π±ΠΈΡ… искал Π΄Π° ΠΎΠ±ΡŠΡ€Π½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅Ρ‚Π°ΠΏΠ½ΠΎΡ‚ΠΎ сглобяванС, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈ позволява Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° нашия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

ΠŸΡŠΡ€Π²ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ°

На ΠΏΡŠΡ€Π²ΠΎ място, рСгистрирайтС сС Π½Π° cloud.yandex.ru. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ попълним всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, Ρ‰Π΅ Π½ΠΈ бъдС създадСн Π°ΠΊΠ°ΡƒΠ½Ρ‚ ΠΈ Ρ‰Π΅ Π½ΠΈ бъдС Π΄Π°Π΄Π΅Π½ Π³Ρ€Π°Π½Ρ‚ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° сума ΠΏΠ°Ρ€ΠΈ, която ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° тСстванС Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ услуги. Ако искатС Π΄Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ всички ΡΡ‚ΡŠΠΏΠΊΠΈ ΠΎΡ‚ Π½Π°ΡˆΠ°Ρ‚Π° статия, Ρ‚Π°Π·ΠΈ субсидия трябва Π΄Π° Π²ΠΈ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½Π°.

Π‘Π»Π΅Π΄ рСгистрация Π·Π° вас Ρ‰Π΅ бъдС създадСн ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΠ±Π»Π°ΠΊ ΠΈ дирСктория ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π² която ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ рСсурси. ΠšΠ°Ρ‚ΠΎ цяло Π² Yandex.Cloud Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π½Π° рСсурситС ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

ΠŸΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠ΅ 10 000 ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Yandex.Cloud. Част 1

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ няколко ΠΎΠ±Π»Π°ΠΊΠ° Π·Π° Π΅Π΄ΠΈΠ½ Π°ΠΊΠ°ΡƒΠ½Ρ‚. И Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΠΈΡ€ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Π² докумСнтацията - https://cloud.yandex.ru/docs/resource-manager/concepts/resources-hierarchy. ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, чСсто Ρ‰Π΅ Π³ΠΎ спомСнавам ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ Π² тСкста. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… цялата инфраструктура ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°, докумСнтацията ΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ вСднъТ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π²ΠΈ ΡΡŠΠ²Π΅Ρ‚Π²Π°ΠΌ Π΄Π° я ΠΏΡ€ΠΎΡƒΡ‡ΠΈΡ‚Π΅.

Π—Π° Π΄Π° управляватС ΠΎΠ±Π»Π°ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ ΡƒΠ΅Π± интСрфСйса, Ρ‚Π°ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π½Π°Ρ‚Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° - yc. Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡΡ‚Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° с Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° (Π·Π° Linux ΠΈ Mac Os):

curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash

Ако Π²Π°ΡˆΠΈΡΡ‚ спСциалист ΠΏΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° сигурност сС ядосва Π·Π° стартиранС Π½Π° скриптовС ΠΎΡ‚ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Ρ‚ΠΎΠ³Π°Π²Π°, ΠΏΡŠΡ€Π²ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ скрипта ΠΈ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅, ΠΈ Π²Ρ‚ΠΎΡ€ΠΎ, Π½ΠΈΠ΅ Π³ΠΎ изпълнявамС ΠΏΠΎΠ΄ нашия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» - Π±Π΅Π· root ΠΏΡ€Π°Π²Π°.

Ако искатС Π΄Π° инсталиратС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π·Π° Windows, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ инструкциитС Ρ‚ΡƒΠΊ ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ yc initΠ·Π° Π΄Π° Π³ΠΎ пСрсонализиратС напълно:

vozerov@mba:~ $ yc init
Welcome! This command will take you through the configuration process.
Please go to https://oauth.yandex.ru/authorize?response_type=token&client_id= in order to obtain OAuth token.

Please enter OAuth token:
Please select cloud to use:
 [1] cloud-b1gv67ihgfu3bp (id = b1gv67ihgfu3bpt24o0q)
 [2] fevlake-cloud (id = b1g6bvup3toribomnh30)
Please enter your numeric choice: 2
Your current cloud has been set to 'fevlake-cloud' (id = b1g6bvup3toribomnh30).
Please choose folder to use:
 [1] default (id = b1g5r6h11knotfr8vjp7)
 [2] Create a new folder
Please enter your numeric choice: 1
Your current folder has been set to 'default' (id = b1g5r6h11knotfr8vjp7).
Do you want to configure a default Compute zone? [Y/n]
Which zone do you want to use as a profile default?
 [1] ru-central1-a
 [2] ru-central1-b
 [3] ru-central1-c
 [4] Don't set default zone
Please enter your numeric choice: 1
Your profile default Compute zone has been set to 'ru-central1-a'.
vozerov@mba:~ $

По ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π΅ лСсСн – ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ oauth token Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π»Π°ΠΊΠ°, Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΎΠ±Π»Π°ΠΊΠ° ΠΈ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π°, която Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅.

Ако ΠΈΠΌΠ°Ρ‚Π΅ няколко Π°ΠΊΠ°ΡƒΠ½Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΊΠΈ Π² Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ ΠΎΠ±Π»Π°ΠΊ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ с ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ настройки Ρ‡Ρ€Π΅Π· yc config profile create ΠΈ Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ тях.

Π’ допълнСниС към Π³ΠΎΡ€Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, Π΅ΠΊΠΈΠΏΡŠΡ‚ Π½Π° Yandex.Cloud написа ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡŠΡ€ плъгин Π·Π° terraform Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ рСсурси. ΠžΡ‚ своя страна ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΡ… git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ описах всички рСсурси, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ създадСни ΠΊΠ°Ρ‚ΠΎ част ΠΎΡ‚ статията - https://github.com/rebrainme/yandex-cloud-events/. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΡƒΠ²Π°ΠΌΠ΅ сС ΠΎΡ‚ главния ΠΊΠ»ΠΎΠ½, Π½Π΅ΠΊΠ° Π³ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°ΠΌΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ:


vozerov@mba:~ $ git clone https://github.com/rebrainme/yandex-cloud-events/ events
Cloning into 'events'...
remote: Enumerating objects: 100, done.
remote: Counting objects: 100% (100/100), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 100 (delta 37), reused 89 (delta 26), pack-reused 0
Receiving objects: 100% (100/100), 25.65 KiB | 168.00 KiB/s, done.
Resolving deltas: 100% (37/37), done.
vozerov@mba:~ $ cd events/terraform/

Всички основни ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² terraform, са записани във Ρ„Π°ΠΉΠ»Π° main.tf. Π—Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅, ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» private.auto.tfvars Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° terraform със слСдното ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅:

# Yandex Cloud Oauth token
yc_token = ""
# Yandex Cloud ID
yc_cloud_id = ""
# Yandex Cloud folder ID
yc_folder_id = ""
# Default Yandex Cloud Region
yc_region = "ru-central1-a"
# Cloudflare email
cf_email = ""
# Cloudflare token
cf_token = ""
# Cloudflare zone id
cf_zone_id = ""

Всички ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²Π·Π΅Ρ‚ΠΈ ΠΎΡ‚ yc config списъка, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ смС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π»ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»Π½Π°Ρ‚Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. Π‘ΡŠΠ²Π΅Ρ‚Π²Π°ΠΌ Π²ΠΈ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ private.auto.tfvars към .gitignore, Π·Π° Π΄Π° Π½Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ‚Π΅ случайно Π»ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ.

Π’ private.auto.tfvars ΡΡŠΡ‰ΠΎ посочихмС Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Cloudflare - Π·Π° създаванС Π½Π° DNS записи ΠΈ прокси Π½Π° основния Π΄ΠΎΠΌΠ΅ΠΉΠ½ events.kis.im към Π½Π°ΡˆΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Ако Π½Π΅ искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ cloudflare, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ инициализацията Π½Π° доставчика Π½Π° cloudflare Π² main.tf ΠΈ Ρ„Π°ΠΉΠ»Π° dns.tf, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ dns записи.

Π’ Π½Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Ρ‰Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ ΠΈ Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° - ΡƒΠ΅Π± интСрфСйса, ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π° ΠΈ terraform.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΈ

ЧСстно ΠΊΠ°Π·Π°Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° пропуснСтС Ρ‚Π°Π·ΠΈ ΡΡ‚ΡŠΠΏΠΊΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Π½ΠΎΠ² ΠΎΠ±Π»Π°ΠΊ, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ ΠΈΠΌΠ°Ρ‚Π΅ създадСна ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ° ΠΈ 3 ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ - ΠΏΠΎ Π΅Π΄Π½Π° Π·Π° всяка Π·ΠΎΠ½Π° Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚. Но всС ΠΏΠ°ΠΊ Π±ΠΈΡ…ΠΌΠ΅ искали Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ° Π·Π° нашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ със собствСно адрСсиранС. ΠžΠ±Ρ‰Π°Ρ‚Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π² Yandex.Cloud Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ (чСстно Π²Π·Π΅Ρ‚Π° ΠΎΡ‚ https://cloud.yandex.ru/docs/vpc/concepts/)

ΠŸΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠ΅ 10 000 ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Yandex.Cloud. Част 1

Π’Π°ΠΊΠ° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΎΠ±Ρ‰Π° ΠΌΡ€Π΅ΠΆΠ°, Π² която рСсурситС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си. Π—Π° всяка Π·ΠΎΠ½Π° Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ сС създава ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ° със собствСно адрСсиранС ΠΈ сС ΡΠ²ΡŠΡ€Π·Π²Π° към ΠΎΠ±Ρ‰Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ°. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° всички ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ рСсурси Π² Π½Π΅Π³ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ са Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·ΠΎΠ½ΠΈ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚. РСсурситС, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ към Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΈ, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Π²ΠΈΠΆΠ΄Π°Ρ‚ Π΅Π΄ΠΈΠ½ Π΄Ρ€ΡƒΠ³ само Ρ‡Ρ€Π΅Π· външни адрСси. ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, ΠΊΠ°ΠΊ дСйства Ρ‚Π°Π·ΠΈ магия Π²ΡŠΡ‚Ρ€Π΅, бСшС Π΄ΠΎΠ±Ρ€Π΅ описан Π½Π° Π₯Π°Π±Ρ€Π΅.

Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠ° Π΅ описано във Ρ„Π°ΠΉΠ»Π° network.tf ΠΎΡ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ. Π’Π°ΠΌ създавамС Π΅Π΄Π½Π° ΠΎΠ±Ρ‰Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° ΠΌΡ€Π΅ΠΆΠ° ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ към нСя Ρ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·ΠΎΠ½ΠΈ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ - Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°-a (172.16.1.0/24), Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°-b (172.16.2.0/24), Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°-c (172.16.3.0/24 ).

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ terraform ΠΈ ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠΈ:

vozerov@mba:~/events/terraform (master) $ terraform init
... skipped ..

vozerov@mba:~/events/terraform (master) $ terraform apply -target yandex_vpc_subnet.internal-a -target yandex_vpc_subnet.internal-b -target yandex_vpc_subnet.internal-c

... skipped ...

Plan: 4 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

yandex_vpc_network.internal: Creating...
yandex_vpc_network.internal: Creation complete after 3s [id=enp2g2rhile7gbqlbrkr]
yandex_vpc_subnet.internal-a: Creating...
yandex_vpc_subnet.internal-b: Creating...
yandex_vpc_subnet.internal-c: Creating...
yandex_vpc_subnet.internal-a: Creation complete after 6s [id=e9b1dad6mgoj2v4funog]
yandex_vpc_subnet.internal-b: Creation complete after 7s [id=e2liv5i4amu52p64ac9p]
yandex_vpc_subnet.internal-c: Still creating... [10s elapsed]
yandex_vpc_subnet.internal-c: Creation complete after 10s [id=b0c2qhsj2vranoc9vhcq]

Apply complete! Resources: 4 added, 0 changed, 0 destroyed.

Π‘Ρ‚Ρ€Π°Ρ…ΠΎΡ‚Π΅Π½! Π‘ΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ Π½Π°ΡˆΠ°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° ΠΈ Π²Π΅Ρ‡Π΅ смС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° създадСм Π½Π°ΡˆΠΈΡ‚Π΅ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ услуги.

Π‘ΡŠΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини

Π—Π° Π΄Π° тСствамС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‰Π΅ трябва Π΄Π° създадСм само Π΄Π²Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини – ΠΏΡŠΡ€Π²Π°Ρ‚Π° Ρ‰Π΅ Π½ΠΈ трябва Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ стартиранС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Π·Π° стартиранС Π½Π° kafka, която Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° входящи ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. И Ρ‰Π΅ създадСм Π΄Ρ€ΡƒΠ³Π° машина, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ prometheus Π΄Π° наблюдава ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ машини Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ansible, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ terraform, ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡ‚Π΅ вСрсии Π½Π° ansible. И инсталирайтС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Ρ€ΠΎΠ»ΠΈ с ansible galaxy:

vozerov@mba:~/events/terraform (master) $ cd ../ansible/
vozerov@mba:~/events/ansible (master) $ ansible-galaxy install -r requirements.yml
- cloudalchemy-prometheus (master) is already installed, skipping.
- cloudalchemy-grafana (master) is already installed, skipping.
- sansible.kafka (master) is already installed, skipping.
- sansible.zookeeper (master) is already installed, skipping.
- geerlingguy.docker (master) is already installed, skipping.
vozerov@mba:~/events/ansible (master) $

Π’ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° ansible ΠΈΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ» .ansible.cfg, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ. МоТС Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ssh-Π°Π³Π΅Π½Ρ‚ ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ ssh ΠΊΠ»ΡŽΡ‡, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай terraform няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ със ΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΈΡ‚Π΅ машини. Π Π°Π·Π±ΠΈΡ€Π° сС, ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ… Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² os x: https://github.com/ansible/ansible/issues/32499#issuecomment-341578864. Π—Π° Π΄Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π΄Π° сС случи ΠΎΡ‚Π½ΠΎΠ²ΠΎ, Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΌΠ°Π»ΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° към env, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° стартиратС Terraform:

vozerov@mba:~/events/terraform (master) $ export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Π’ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с terraform създавамС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ рСсурси:

vozerov@mba:~/events/terraform (master) $ terraform apply -target yandex_compute_instance.build -target yandex_compute_instance.monitoring -target yandex_compute_instance.kafka
yandex_vpc_network.internal: Refreshing state... [id=enp2g2rhile7gbqlbrkr]
data.yandex_compute_image.ubuntu_image: Refreshing state...
yandex_vpc_subnet.internal-a: Refreshing state... [id=e9b1dad6mgoj2v4funog]

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

... skipped ...

Plan: 3 to add, 0 to change, 0 to destroy.

... skipped ...

Ако всичко ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ (ΠΈ трябва Π΄Π° бъдС), Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Ρ‚Ρ€ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини:

  1. build - машина Π·Π° тСстванС ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Docker бСшС инсталиран Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ Ansible.
  2. ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ - машина Π·Π° наблюдСниС - prometheus & grafana, инсталирана Π½Π° нСя. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎ Π²Π»ΠΈΠ·Π°Π½Π΅ / ΠΏΠ°Ρ€ΠΎΠ»Π°: admin / admin
  3. kafka Π΅ ΠΌΠ°Π»ΠΊΠ° машина с инсталирана kafka, Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π½Π° ΠΏΠΎΡ€Ρ‚ 9092.

НСка сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ всички са Π½Π° мястото си:

vozerov@mba:~/events (master) $ yc compute instance list
+----------------------+------------+---------------+---------+---------------+-------------+
|          ID          |    NAME    |    ZONE ID    | STATUS  |  EXTERNAL IP  | INTERNAL IP |
+----------------------+------------+---------------+---------+---------------+-------------+
| fhm081u8bkbqf1pa5kgj | monitoring | ru-central1-a | RUNNING | 84.201.159.71 | 172.16.1.35 |
| fhmf37k03oobgu9jmd7p | kafka      | ru-central1-a | RUNNING | 84.201.173.41 | 172.16.1.31 |
| fhmt9pl1i8sf7ga6flgp | build      | ru-central1-a | RUNNING | 84.201.132.3  | 172.16.1.26 |
+----------------------+------------+---------------+---------+---------------+-------------+

РСсурситС са Π½Π°Π»ΠΈΡ†Π΅ ΠΈ ΠΎΡ‚ Ρ‚ΡƒΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ IP адрСси. По-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ IP адрСси Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Ρ‡Ρ€Π΅Π· ssh ΠΈ Ρ‰Π΅ тСствам ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Ако ΠΈΠΌΠ°Ρ‚Π΅ Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π² cloudflare, ΡΠ²ΡŠΡ€Π·Π°Π½ с terraform, Π½Π΅ сС ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ прясно създадСни DNS ΠΈΠΌΠ΅Π½Π°.
ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина, сС Π΄Π°Π²Π°Ρ‚ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ IP ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ DNS ΠΈΠΌΠ΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΏΠΎ ΠΈΠΌΠ΅:

ubuntu@build:~$ ping kafka.ru-central1.internal
PING kafka.ru-central1.internal (172.16.1.31) 56(84) bytes of data.
64 bytes from kafka.ru-central1.internal (172.16.1.31): icmp_seq=1 ttl=63 time=1.23 ms
64 bytes from kafka.ru-central1.internal (172.16.1.31): icmp_seq=2 ttl=63 time=0.625 ms
^C
--- kafka.ru-central1.internal ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.625/0.931/1.238/0.308 ms

Π’ΠΎΠ²Π° Ρ‰Π΅ бъдС ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° нас, Π·Π° Π΄Π° посочим Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° с kafk.

БглобяванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ

Π‘Ρ‚Ρ€Π°Ρ…ΠΎΡ‚Π½ΠΎ, ΠΈΠΌΠ° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΈΠΌΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ - остава само Π΄Π° Π³ΠΎ сглобим ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅. Π—Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½Π°Ρ‚Π° Π΄ΠΎΠΊΠ΅Ρ€ компилация, Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° изобраТСния Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ услуга ΠΎΡ‚ Yandex - Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Но Π½Π° ΠΏΡŠΡ€Π²ΠΎ място.

ΠšΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, Π²Π»ΠΈΠ·Π°ΠΌΠ΅ Ρ‡Ρ€Π΅Π· ssh ΠΈ сглобявамС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ:

vozerov@mba:~/events/terraform (master) $ cd ..
vozerov@mba:~/events (master) $ rsync -av app/ [email protected]:app/

... skipped ...

sent 3849 bytes  received 70 bytes  7838.00 bytes/sec
total size is 3644  speedup is 0.93

vozerov@mba:~/events (master) $ ssh 84.201.132.3 -l ubuntu
ubuntu@build:~$ cd app
ubuntu@build:~/app$ sudo docker build -t app .
Sending build context to Docker daemon  6.144kB
Step 1/9 : FROM golang:latest AS build
... skipped ...

Successfully built 9760afd8ef65
Successfully tagged app:latest

ΠŸΠΎΠ»ΠΎΠ²ΠΈΠ½Π°Ρ‚Π° Π±ΠΈΡ‚ΠΊΠ° Π΅ ΡΠ²ΡŠΡ€ΡˆΠ΅Π½Π° - сСга ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ функционалността Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ Π³ΠΎ стартирамС ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠΌ Π½Π° kafka:

ubuntu@build:~/app$ sudo docker run --name app -d -p 8080:8080 app /app/app -kafka=kafka.ru-central1.internal:9092</code>

Π‘ локальной машинки ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ тСстовый event ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΎΡ‚Π²Π΅Ρ‚:

<code>vozerov@mba:~/events (master) $ curl -D - -s -X POST -d '{"key1":"data1"}' http://84.201.132.3:8080/post
HTTP/1.1 200 OK
Content-Type: application/json
Date: Mon, 13 Apr 2020 13:53:54 GMT
Content-Length: 41

{"status":"ok","partition":0,"Offset":0}
vozerov@mba:~/events (master) $

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ с успСх Π½Π° записа ΠΈ посочи ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° дяла ΠΈ отмСстванСто, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ остава Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π² Yandex.Cloud ΠΈ Π΄Π° ΠΊΠ°Ρ‡ΠΈΡ‚Π΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΌ (ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚Ρ€ΠΈ Ρ€Π΅Π΄Π° Π΅ описано във Ρ„Π°ΠΉΠ»Π° registry.tf). Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅:

vozerov@mba:~/events/terraform (master) $ terraform apply -target yandex_container_registry.events

... skipped ...

Plan: 1 to add, 0 to change, 0 to destroy.

... skipped ...

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Има няколко Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° удостовСряванС Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° - с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° oauth Ρ‚ΠΎΠΊΠ΅Π½, iam Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡ Π½Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π·Π° услуга. ΠŸΠΎΠ²Π΅Ρ‡Π΅ подробности Π·Π° Ρ‚Π΅Π·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² докумСнтацията. https://cloud.yandex.ru/docs/container-registry/operations/authentication. Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠ»ΡŽΡ‡Π° Π½Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚Π° Π½Π° услугата, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ създавамС Π°ΠΊΠ°ΡƒΠ½Ρ‚:

vozerov@mba:~/events/terraform (master) $ terraform apply -target yandex_iam_service_account.docker -target yandex_resourcemanager_folder_iam_binding.puller -target yandex_resourcemanager_folder_iam_binding.pusher

... skipped ...

Apply complete! Resources: 3 added, 0 changed, 0 destroyed.

Π‘Π΅Π³Π° всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ остава, Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ Π·Π° Π½Π΅Π³ΠΎ:

vozerov@mba:~/events/terraform (master) $ yc iam key create --service-account-name docker -o key.json
id: ajej8a06kdfbehbrh91p
service_account_id: ajep6d38k895srp9osij
created_at: "2020-04-13T14:00:30Z"
key_algorithm: RSA_2048

ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ информация Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠΌΠ΅ ΠΊΠ»ΡŽΡ‡Π° ΠΈ Π²Π»ΠΈΠ·Π°ΠΌΠ΅:

vozerov@mba:~/events/terraform (master) $ scp key.json [email protected]:
key.json                                                                                                                    100% 2392   215.1KB/s   00:00

vozerov@mba:~/events/terraform (master) $ ssh 84.201.132.3 -l ubuntu

ubuntu@build:~$ cat key.json | sudo docker login --username json_key --password-stdin cr.yandex
WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
ubuntu@build:~$

Π—Π° Π΄Π° ΠΊΠ°Ρ‡ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π°, ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ Π³ΠΎ ΠΎΡ‚ ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° yc:

vozerov@mba:~ $ yc container registry get events
id: crpdgj6c9umdhgaqjfmm
folder_id:
name: events
status: ACTIVE
created_at: "2020-04-13T13:56:41.914Z"

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с Π½ΠΎΠ²ΠΎ ΠΈΠΌΠ΅ ΠΈ ΠΊΠ°Ρ‡Π²Π°ΠΌΠ΅:

ubuntu@build:~$ sudo docker tag app cr.yandex/crpdgj6c9umdhgaqjfmm/events:v1
ubuntu@build:~$ sudo docker push cr.yandex/crpdgj6c9umdhgaqjfmm/events:v1
The push refers to repository [cr.yandex/crpdgj6c9umdhgaqjfmm/events]
8c286e154c6e: Pushed
477c318b05cb: Pushed
beee9f30bc1f: Pushed
v1: digest: sha256:1dd5aaa9dbdde2f60d833be0bed1c352724be3ea3158bcac3cdee41d47c5e380 size: 946

МоТСм Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΄Π°Π»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Π·Π°Ρ€Π΅Π΄Π΅Π½ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ:

vozerov@mba:~/events/terraform (master) $ yc container repository list
+----------------------+-----------------------------+
|          ID          |            NAME             |
+----------------------+-----------------------------+
| crpe8mqtrgmuq07accvn | crpdgj6c9umdhgaqjfmm/events |
+----------------------+-----------------------------+

ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Π°ΠΊΠΎ инсталиратС ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° yc Π½Π° Linux машина, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°

yc container registry configure-docker

Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ€.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘Π²ΡŠΡ€ΡˆΠΈΡ…ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΏΠΎΡ€ΠΈΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π°:

  1. Π˜Π·ΠΌΠΈΡΠ»ΠΈΡ…ΠΌΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° Π±ΡŠΠ΄Π΅Ρ‰Π° услуга.
  2. НаписахмС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° golang, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π°ΡˆΠ°Ρ‚Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°.
  3. Π‘ΡŠΠ±Ρ€Π°Ρ…ΠΌΠ΅ Π³ΠΎ ΠΈ Π³ΠΎ изсипахмС Π² частСн Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

Π’ слСдващата част Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ към интСрСснитС Π½Π΅Ρ‰Π° - Ρ‰Π΅ пуснСм Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² производство ΠΈ накрая Ρ‰Π΅ стартирамС Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π²ΡŠΡ€Ρ…Ρƒ Π½Π΅Π³ΠΎ. НС ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΉΡ‚Π΅!

Π’ΠΎΠ·ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π΅ във видСозаписа Π½Π° отворСния сСминар REBRAIN & Yandex.Cloud: ΠŸΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠ΅ 10 000 заявки Π² сСкунда Π² Yandex Cloud - https://youtu.be/cZLezUm0ekE

Ако сС интСрСсуватС Π΄Π° посСщаватС Ρ‚Π°ΠΊΠΈΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈ Π΄Π° Π·Π°Π΄Π°Π²Π°Ρ‚Π΅ Π²ΡŠΠΏΡ€ΠΎΡΠΈ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ сС с ΠΊΠ°Π½Π°Π» DevOps ΠΎΡ‚ REBRAIN.

Π‘ΠΈΡ…ΠΌΠ΅ искали Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ спСциални благодарности Π½Π° Yandex.Cloud Π·Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° бъдС Π΄ΠΎΠΌΠ°ΠΊΠΈΠ½ Π½Π° Ρ‚Π°ΠΊΠΎΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅. Π›ΠΈΠ½ΠΊ към тях - https://cloud.yandex.ru/prices

Ако трябва Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ към ΠΎΠ±Π»Π°ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ Π²ΡŠΠΏΡ€ΠΎΡΠΈ относно Π²Π°ΡˆΠ°Ρ‚Π° инфраструктура, Π½Π΅ сС ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡ‚Π΅ Π΄Π° оставитС заявка.

PS ИмамС 2 Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΈ ΠΎΠ΄ΠΈΡ‚Π° Π½Π° мСсСц, ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π²Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‰Π΅ бъдС Π΅Π΄ΠΈΠ½ ΠΎΡ‚ тях.

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

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