แแแแแ แฏแแแ แงแแแแแก, แแแแแแ แแแ!
* แแก แกแขแแขแแ แแคแฃแซแแแแ REBRAIN & Yandex.Cloud แฆแแ แกแแฎแแแแกแแแก, แแฃ แแแแแแก แงแฃแ แแแ แแแ แฉแแแแแแ, แจแแแแซแแแแ แแแแแแ แแแ แแ แแแฃแแแ -
แฉแแแ แชแแขแ แฎแแแก แฌแแ แแแฅแแแแ แจแแกแแซแแแแแแแ แแแแชแแแ Yandex.Cloud แแแ แแแแแ แแแแ แจแ. แแแก แจแแแแแ, แ แแช แแแแแแแแ แฎแแแแ แซแแแแ แแ แ แแฃแแ แแแแแแแแแแ, แแแจแแแแ แแแแแขแแแแ แแแแ, แ แแ แแแแแแแแฅแแแ แแแ แขแแแ Wordpress แแแแแ แฆแ แฃแแแแแแแ แแแแแ - แแก แซแแแแแ แแแกแแฌแงแแแ แแงแ. แแแ แแแแฃแแ แคแแฅแ แแก แจแแแแแ, แฉแแแ แแแแแแฌแงแแแขแแ แแแแแแแแงแแแแแแแ แฌแแ แแแแแแก แกแแ แแแกแแก แแ แฅแแขแแฅแขแฃแ แแก แแกแแแแกแ แ แแ แแแแแแแแแแก แแแแฅแแแก แ แแแแฃแ แแ แแจแ แแแฆแแแแกแ แแ แแแแแแแแกแแแแก.
แแ แแแกแแแฃแขแฃแ แแ แแแ แฌแแฃแแแแฃแแ แแแ , แ แแ แแแแแแ (แแ แแ แ แแฎแแแแ) แแแแแแกแแก แแแแ แฃแแ แแแแแกแแแ แ แแแแ แฆแแช แแแ แแแแแก แฃแแแ แแ แแแคแแ แแแชแแแก แแแแ แแแแฎแแแ แแแแแแแกแ แแ แแแแ แฅแแแแแแแแแก แจแแกแแฎแแ. แแแแแแฃแ, แแก แแฃแชแแแแแแแแ แแแ แแแแฃแแ แแแแแฌแงแแแขแแแแแแแแก แแแกแแฆแแแแ - แแแแแแแแแ, แแฃ แแฅแแแ แแแ แแแแ แแแแแแ แแแแแจแก, แจแแแแซแแแแ แแแฎแแ แกแขแแขแแกแขแแแ, แ แแแแ แแแแแแ แฉแแ แแแแแแ แแแแฎแแแ แแแแแแ แงแแแแแแ แฎแจแแ แแ แแ แฌแแจแแแแ แแฅแแแแก แกแแแแแแจแแก. แแ แ แแขแแ แขแแแแแแ แแแแฎแแแ แแแแแแ แแฅแแแแก แกแแแขแก แแ แแคแ แแก แจแแซแแแแก แแแ แแจแ (แแแแแ แฏแแแ, Yandex.Metrica).
แแแจ แแกแ, แฉแแแแ แแกแขแแ แแ: แ แแแแ แแแแฌแแ แแ แแแแแแแชแแ golang-แจแ, แจแแแแแแฌแแแ kafka vs rabbitmq vs yqs, แแแแฌแแ แแ แแแแแชแแแแ แแแแแแ Clickhouse แแแแกแขแแ แจแ แแ แแแแฃแแแฃแ แแ แแแฉแแแแแ แแแแแชแแแแแ Yandex datalens-แแก แแแแแงแแแแแแ. แแฃแแแแ แแแแ, แแก แงแแแแแคแแ แ แแแแฆแแแแแแ แแงแ แแแคแ แแกแขแ แฃแฅแขแฃแ แฃแแ แกแแแแแแแแแแ แแแแแ แแก, แขแแ แแคแแ แแแก, แแแขแแแแแก แกแแแก แแ, แ แ แแฅแแ แฃแแแ, แแ แแแแแแก แกแแฎแแ. แฒฌแแแแแแ!
แแกแฃแ แก แแแฃแงแแแแแแแแ แแแแแแแแ แแแแฅแแ, แ แแ แฉแแแ แแแ แจแแแซแแแแ แงแแแแแคแ แแก แแแแคแแแฃแ แแชแแแก แแ แ แกแฎแแแแแแ - แแแแกแแแแแก แแแแแญแแ แแแแ แกแแ แแแก แ แแแแแแแแ แกแขแแขแแ. แชแแขแ แกแขแ แฃแฅแขแฃแ แแก แจแแกแแฎแแ:
แแแฌแแแ 1 (แแฅแแแ แแแแฎแฃแแแแ แแแก). แฉแแแ แแแแแแฌแงแแแขแ แแแแแฌแงแแแขแแก แกแแแชแแคแแแแชแแแแกแ แแ แแ แฅแแขแแฅแขแฃแ แแก, แแกแแแ แแแแฌแแ แ แแแแแแแชแแแก แแแแแแแจแ.
แฒแ -2 แแแฌแแแ. แฉแแแ แแแซแแแแ แฉแแแแก แแแแแแแชแแแก แฌแแ แแแแแแจแ, แแแฅแชแแแ แแแก แแแกแจแขแแแฃแ แก แแ แแแแแฌแแแแ แแแขแแแ แแแแก.
แแแฌแแแ 3. แจแแแแชแแแแ แแแแ แแแแแ, แ แแขแแ แแแญแแ แแแแ แจแแขแงแแแแแแแแแแก แจแแแแฎแแ แแฃแคแแ แจแ แแ แแ แ แคแแแแแแจแ, แแกแแแ แจแแแแแแ แแ kafka, rabbitmq แแ yandex queue แกแแ แแแกแ.
แแแฌแแแ 4 แฉแแแ แแแแแแแแแกแแแ Clickhouse แแแแกแขแแ แก, แแแแฌแแ แ แกแขแ แแแแแ แกแแ แแแกแก, แ แแแ แแแแแแแขแแแแ แแแแแชแแแแแ แแฅ แแฃแคแแ แแแแ แแ แแแแแงแแแแ แแแแฃแแแแแแชแแ datalens-แจแ.
แแแฌแแแ 5 แแแแแ แแแแแงแแแแแ แแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แ แกแแแแแแแ แคแแ แแแจแ - แแแแแงแแแแ ci/cd gitlab ci-แก แแแแแงแแแแแแ, แแแแแแแแจแแ แแ แแแแแขแแ แแแแ แแ แกแแ แแแกแแก แแฆแแแฉแแแ แแ แแแแแแกแ แแ แแแแกแฃแแแก แแแแแงแแแแแแ.
ะขะ
แแแ แแแ แ แแแจแ, แแแแแ แฉแแแแแแงแแแแแแ แแแแแแแแแก แแแ แแแแแ - แแแแแ แแขแฃแแแ แ แ แแแแแแ แแแแแฆแแ แจแแแแแแ.
- แฉแแแ แแแแแแ แแแฅแแแแแก แแกแแแ แกแแแแแแ แฌแแ แขแแแ, แ แแแแ แแชแแ events.kis.im (kis.im แแ แแก แกแแขแแกแขแ แแแแแแ, แ แแแแแกแแช แฉแแแ แแแแแแแงแแแแแ แงแแแแ แกแขแแขแแแจแ), แ แแแแแแช แฃแแแ แแแแฆแแก แแแแแแแแแ HTTPS-แแก แแแแแงแแแแแแ.
- แแแแแแแแแ แแ แแก แแแ แขแแแ json, แ แแแแ แแชแแ: {โeventโ: โviewโ, โosโ: โlinuxโ, โbrowserโ: โchromeโ}. แคแแแแแฃแ แแขแแแแ แแแแแ แชแแขแ แแแแก แแแแแแแขแแแ, แแแแ แแ แแก แแแ แ แแแก แแ แแแแแแจแแแก. แแฃ แแกแฃแ แ, แจแแแแซแแแแ แแแแแฎแแแแแ แแ แแขแแแฃแคแแ.
- แกแแ แแแกแก แฃแแแ แจแแแซแแแก แฌแแแจแ 10 แแแแแแแแก แแแแฃแจแแแแแ.
- แจแแกแแซแแแแแแ แฃแแแ แแงแแก แฐแแ แแแแแขแแแฃแ แแ แแแกแจแขแแแแ แแแ, แฃแแ แแแแ แแฎแแแ แแแกแขแแแชแแแแแก แแแแแขแแแแ แฉแแแแก แแแแแฌแงแแแขแแจแ. แแ แแแ แแ แแฅแแแแ, แแฃ แฉแแแ แจแแแซแแแแ แฌแแแ แแแฌแแแแก แแแแแขแแแแก แกแฎแแแแแกแฎแแ แแแแแแแแชแแแแแ, แ แแแ แจแแแแแชแแ แแ แแแแแแขแแก แแแแฎแแแแแแแก แจแแงแแแแแแ.
- แจแแชแแแแแก แขแแแแ แแแขแแแ. แแแแแกแแแแแ แฃแแแ แแงแแก แกแแแแแ แแกแแ แกแขแแแแแฃแ แ แแ แจแแแซแแแก แแแแแ แฉแแก แแแแแกแแแแ แ แแแฌแแแแก แแแชแแแแก (แ แ แแฅแแ แฃแแแ, แแแ แแแแฃแ แ แแแแแแแแแแแ).
แแ แฅแแขแแฅแขแฃแ แ
แแแแแแแ, แแ แขแแแแก แแแแชแแแแแแกแแแแก แแแแ แฎแแแแ แแแแแแแแแแก แแแแกแแแฃแ แ แแ แฅแแขแแฅแขแฃแ แแแ, แ แแแแแแแช แแคแแฅแขแฃแ แ แแแกแจแขแแแแก แกแแจแฃแแแแแแก แแซแแแแ. แคแแแฃแ แแจแ แแแฉแแแแแแแ แฉแแแแ แแแแแฌแงแแแขแแก แแแแแแแแ.
แแกแ แ แแ, แ แแช แแแแฅแแก:
1. แแแ แชแฎแแแ แแ แแก แฉแแแแ แแแฌแงแแแแแแแแแ, แ แแแแแแแช แฌแแ แแแฅแแแแแ แกแฎแแแแแกแฎแแ แแแแแแแแแก, แแฅแแแแ แแก แแแแแแแจแแแแ, แ แแแแแแแช แแกแ แฃแแแแแ แแแแแก แกแแแแแแจแแจแ แกแแแ แขแคแแแแ แแ แจแแแแแแแก แแแแแแ แแแฆแแแแแจแ แฉแแแฃแแแแ แแแ แแ แแฃแแแ แแก แกแแจแฃแแแแแแ. แฆแแแแกแซแแแแ, แ แแแแ แช แกแแแชแแคแแแแชแแแจแแ แแแแแแแแฃแแ, แแ แแก แแแ แขแแแ json, แ แแแแแแช แแแแแแแแแ แฉแแแแก แแแแ แฌแแ แขแแแจแ - events.kis.im.
2. แแแ แแแแ แแ แ แกแแ แแแ แ แแ แแก แแแ แขแแแ แแแแแแกแแ แ, แแแแ แซแแ แแแแแ แแแแชแแแแแแ:
- แแงแแแ แแฃแแแแแแ แฎแแแแแกแแฌแแแแแ. แแแแกแแแแแก แจแแแแซแแแแ แแแแแแงแแแแ, แแแแแแแแแ, keepalived, แ แแแแแแช แแ แแแแแแแแแก แจแแแแฎแแแแแจแ แแแแแ แแแแก แแแ แขแฃแแแฃแ IP แแแแแซแแแก แจแแ แแก.
- TLS-แแก แจแแฌแงแแแขแ. แแแแฎ, แฉแแแ แจแแแฌแงแแแขแ แแแ TLS-แก. แฏแแ แแ แแ, แ แแแ แฉแแแแ แแแแแฌแงแแแขแ แจแแแกแแแแแแแแแแก แขแแฅแแแแฃแ แแแฎแแกแแแแแแแแแก แแ แแแแ แแช, แ แแแ แแแแแแแแแกแฃแคแแแแ แแแจแแคแ แฃแแ แแแแจแแ แแก แแแแงแแ แแแแก แขแแแ แแ แฉแแแแ backend แกแแ แแแ แแแแแแ.
- แแแแแแแแกแแแ แจแแแแแแแแแ แแแแฎแแแแแแ แฎแแแแแกแแฌแแแแแ backend แกแแ แแแ แแแแ. แกแแแแแแซแ แกแแขแงแแ แแฅ แฎแแแแแกแแฌแแแแแแ. แแแแก แกแแคแฃแซแแแแแ แแแแแแแแ แ แแแแก แแแแแแแแแ, แ แแ แแแขแแแ แแแแก แแแแแแกแแ แแแก แฃแแแ แจแแแซแแแ แฉแแแแ แกแแ แแแ แแแแก แแแแแขแแ แแแแ แแแแแแแชแแแแแ แแ แจแแแฉแแ แแ แขแ แแคแแแแก แแแแแแแแกแแแ แฌแแ แฃแแแขแแแแ แแแแแซแแแแแ.
3. แแแแแแกแแ แแแแก แจแแแแแ แแแแฅแแก แแแแแแแชแแแก แกแแ แแแ แแแ, แ แแแแแแแช แกแแแแแแ แแแ แขแแ แแแแแแแชแแแก แแฌแแ แแแแแแ. แแแก แฃแแแ แจแแแซแแแก HTTP-แแ แจแแแแแแแแแ แแแแฎแแแแแแแก แแแฆแแแ, แแแแแแแแแแ json-แแก แแแแแแแชแแ แแ แแแแแชแแแแแแก แแฃแคแแ แจแ แจแแขแแแ.
4. แแแแแ แแแแแ แแแฉแแแแแแแ แแแคแแ, แ แแแแ แช แแฃแคแแ แ, แแฃแแชแ, แ แ แแฅแแ แฃแแแ, แกแฎแแ แแกแแแแกแ แกแแ แแแกแแแแก แแแแแงแแแแแ แจแแกแแซแแแแแแแ แแ แแแแแแ. แแแคแแแก, rabbitmq-แก แแ yqs-แก แจแแแแแแ แแแ แแแกแแแ แกแขแแขแแแจแ.
5. แฉแแแแ แแ แฅแแขแแฅแขแฃแ แแก แแแแ แฌแแ แขแแแ แแ แแก Clickhouse โ แกแแแขแแแแแ แแแแแชแแแแ แแแแ, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แจแแแแแฎแแ แแ แแแแแฃแจแแแแ แฃแแแ แแแแแ แ แแแแแชแแแแแ. แแ แแแแแแ, แฉแแแ แฃแแแ แแแแแแแขแแแแ แแแแแชแแแแแ แแฃแคแแ แแแแ แแแแแ แจแแแแฎแแแก แกแแกแขแแแแจแ (แแแฌแแ แแแแแแ แแแแก แจแแกแแฎแแ แแ-4 แกแขแแขแแแจแ).
แแก แแแแแแแ แกแแจแฃแแแแแแก แแแแซแแแแก แแแแแแฃแแ แคแแแแก แแแแแฃแแแแแแแแ แฐแแ แแแแแขแแแฃแ แแ แแแกแจแขแแแแ แแแ. Backend แกแแ แแแ แแแ แแแ แฃแแแแแแแแแแแ - แแแแแ แแแแแแแขแแ แแแแแ แแ แแ แ แแ - แแแแแก แแ แแแแแก, แแกแแแ แแแฅแแแแฅแแแแแก แแ แแฅแแแ แแแแแแแชแแแแแ แแ, แจแแกแแแแแแกแแ, แแก แจแแแซแแแแ แแแแแแแแก แแฃแแแแช แแแขแแแแขแฃแ แแ. แแแคแแแก แกแขแแแแก แแฃแคแแ แ แแ แแฃแจแแแแก - แแแแแ แแแแแแแขแแ แแแขแ แกแแ แแแ แ แแ แแแแแแแขแแแแ แฉแแแแ แแแแแก แแแแแแ แแ แแแแแงแแคแ แแแแแ. Clickhouse แแแ แฃแแแแแแแแแ - แแก แจแแฃแซแแแแแแแ :) แคแแฅแขแแแ แแแแ, แฉแแแ แแกแแแ แแแแแแแแจแแ แแแ แกแแ แแแ แแแก แแ แแแแแแแฌแแแแแ แแแแแชแแแแแก.
แกแฎแแแแ แจแแ แแก, แแฃ แแกแฃแ แ แฉแแแแ แขแแฅแแแแฃแ แ แแแฎแแกแแแแแแแแแแกแ แแ แแแกแจแขแแแแก แแ แแกแแแแแแแแฃแแ แแแฌแแแแก แแแแแ แแแ แกแฎแแแแแกแฎแแ แแแแแแแแชแแแแจแ, แแแจแแ แแ แแคแแ แแ แแแ แขแแแ:
แแแแแแฃแ แแแแแแแแชแแแจแ แฉแแแ แแแงแแแแแ แแแขแแแ แแแแก แแแแแแกแแ แก แแแแแแแชแแแ แแ แแแคแแแแ. แแแแแแแ, แกแแแแแ แแกแแ 2 แแแแแแแชแแแก แกแแ แแแ แ, 3 แแแคแแ แแแแแซแ แแ แฆแ แฃแแแแแแแ แแแแแแกแแ แ, แแแแแแแแแ, cloudflare, แ แแแแแแช แจแแแแแฌแแแแก แแแแแแแชแแแก แแแแแซแแแแก แฎแแแแแกแแฌแแแแแแแแก แแ แแแแแแกแแก แแแแฎแแแแแแก แแแแแแแแชแแแก แแแฎแแแแแ, แแแแแแขแแก แฌแงแแ แแก IP แแแกแแแแ แแแก แแแฎแแแแแ. แแแ แแแแ, แแแแ แแแแแ แแแแแแขแแก แแแแ แแแแแแแแแแ แแแแแชแแแแแ แแแแ แแแฃแ แกแแ แแแ แแแแ แแแฎแแแแแ. แฎแแแ แแแแแชแแแแแ แแคแ แแแแแแ แแ แแก แแคแ แแแฃแแ.
แแแจแแ แงแแแแแคแแ แ แกแแแแแแ แแแ แขแแแแ - แฉแแแ แแแงแแแแแ แกแแ แแแก แฎแแแกแแฌแงแแก แแแคแแแก แแแแ แแแแแแ แแ แแแแแแแ แแแ แงแแแแ แแแแแชแแแก แงแแแแ แแแแแแแแแ แฉแแแแก แชแแแขแ แแแฃแ แแแแแชแแแแ แชแแแขแ แจแ, แ แแแแแแช แแแแแแ แแแแก แ แฃแกแแแจแ. แจแแแ, แฉแแแ แแแแแแแแแแแ แแแแแชแแแแแก แแ แฉแแแฌแแ แ Clickhouse-แจแ แจแแแแแแแ แแแแฃแแแแแแชแแแกแแแแก.
แแกแ แ แแ, แฉแแแ แแแแแฎแแ แแกแฎแแ แแ แฅแแขแแฅแขแฃแ แ - แแแแแฌแงแแ Yandex.Cloud-แแก แจแแ แงแแแ!
แแแแแชแฎแแแแก แแแฌแแ แ
Cloud-แแแ แแแแแช แฃแแแ แแงแแ แชแแขแ แแแแแแแแแ แแ แแแฌแแ แแ แกแแแแแแ แแแ แขแแแ แกแแ แแแกแ แจแแแแแแแแแ แแแแแแแแแแก แแแกแแแฃแจแแแแแแแ. แฉแแแ แแแแแแแงแแแแแ golang-แก, แ แแแแแ แแแ แแแ แแแ แแแแแขแแแชแ แแแแ, แ แแแแ แช แฅแกแแแฃแ แ แแแแแแแชแแแแแก แฉแแฌแแ แแก แแแ.
แแ แแ แกแแแแแก (แจแแกแแซแแแ แ แแแแแแแแ แกแแแแแก) แแแขแแ แแแแก แจแแแแแ แแแแแฆแแแ แแกแแ แ แแฆแแชแแก:
แ แ แแ แแก แแก แซแแ แแแแแ แแฃแแฅแขแแแ, แ แแแแแแแช แแแแแ แแฆแแแแจแแ แแฅ:
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 แแแแแแแแแแแก (
config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForLocal
config.Producer.Compression = sarama.CompressionSnappy
config.Producer.Return.Successes = true
3. แฉแแแแก แแแแแแแชแแแก แแกแแแ แแฅแแก แฉแแจแแแแแฃแแ แแ แแแแแ แแแแแแขแ, แ แแแแแแช แแแ แแแแแก แกแฎแแแแแกแฎแแ แแแขแ แแแแก, แ แแแแ แแชแแ:
- แฉแแแแก แแแแแแแชแแแแ แแแแฎแแแแแก แ แแแแแแแแ;
- แจแแชแแแแแแแก แ แแแแแแแแ แแแแฎแแแแแก แจแแกแ แฃแแแแแกแแก (แจแแฃแซแแแแแแแ แแแกแขแแก แแแแฎแแแแแก แฌแแแแแฎแแ, แแแขแแฎแแแ json, แจแแฃแซแแแแแแแ แแแคแแแก แแแฌแแ แ);
- แแแแแแขแแก แแ แแ แแแแฎแแแแแก แแแแฃแจแแแแแแก แแ แ, แแแคแแแกแแแแก แจแแขแงแแแแแแแแก แแแฌแแ แแก แแ แแแก แฉแแแแแแ.
4. แกแแแ แกแแแแแแ แฌแแ แขแแแ, แ แแแแแกแแช แฉแแแแ แแแแแแแชแแ แแแฃแจแแแแแก:
- / แกแขแแขแฃแกแ - แฃแแ แแแแ แแแแ แฃแแแแ ok, แ แแแ แแฉแแแแแ, แ แแ แชแแชแฎแแแแ แแแ แ. แแฃแแชแ แจแแแแซแแแแ แแแแแแขแแ แ แแแแแแแแ แจแแแแฌแแแแ, แ แแแแ แแชแแ แแแคแแแก แแแแกแขแแ แแก แฎแแแแแกแแฌแแแแแแแ.
- /metrics - แแ url-แแก แแแฎแแแแแ แแ แแแแแแฃแกแแก แแแแแแขแ แแแแแ แฃแแแแก แแแก แแแแ แจแแแ แแแแแฃแ แแแขแ แแแก.
- /post แแ แแก แแแแแแ แ แกแแแแแแ แฌแแ แขแแแ, แกแแแแช แแแแแแแแแแแ POST แแแแฎแแแแแแ แจแแแแแ json-แแ. แฉแแแแ แแแแแแแชแแ แแแแฌแแแแก json-แก แแแแแแแแแแ แแ แแฃ แงแแแแแคแแ แ แฌแแกแ แแแจแแ, แแก แแแแแชแแแแแก แฌแแ แก แแแคแแแก แแแแกแขแแ แจแ.
แแ แแแแแแแแแ แแแแฅแแแก, แ แแ แแแแ แแ แแ แแก แกแ แฃแแงแแคแแแ - แแก แจแแแซแแแแ (แแ แฃแแแ!) แแแกแ แฃแแแแก. แแแแแแแแแ, แจแแแแซแแแแ แจแแฌแงแแแขแแ แฉแแจแแแแแฃแแ net/http-แแก แแแแแงแแแแแ แแ แแแแแฎแแแแแ แกแฌแ แแค แกแฌแ แแค http-แแ. แแ แจแแแแซแแแแ แแแแฆแแ แแแแฃแจแแแแแแก แแ แ แแ แแ แแชแแกแแ แแก แ แแกแฃแ แกแแแ json แแแแแแแแแก แจแแแแฌแแแแแก แจแแแแแแ แแขแแแแ แแแแแขแแแแ - แ แแแแกแแช แแแแแชแแแแแ แแแแแแชแแแ แแฃแคแแ แแแแ clickhouse แแแแกแขแแ แจแ.
แกแแแแแฎแแก แแแแแแแแ แแแแก แแฎแแ แแก แแแ แแ, แฉแแแ แแแจแแแแ แแแคแแฅแ แแ แฉแแแแก แแแแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแแ แแ แแแแแแฌแงแแแขแแ แฉแแแแ แแแแแแแชแแแก แแแแแแแกแแแ แแแแแ แแก แกแแจแฃแแแแแแ. แกแแแแแแ Dockerfile แแแแแชแฎแแแแก แจแแกแแฅแแแแแแ แแ แแก
แแแ แแแแ แแแแแฏแแแ แฆแ แฃแแแแจแ
แแแ แแแ แ แแแจแ, แแแ แแแแกแขแ แแ แแแ
แ แแแแกแขแ แแชแแแก แจแแแแแ แแฅแแแแแแแก แจแแแฅแแแแแ แชแแแแ แฆแ แฃแแแแ แแ แแแแฃแแแกแฎแแแแ แแแ แแฅแขแแ แแ, แ แแแแแจแแช แจแแแแซแแแแ แแแแฌแงแแ แฆแ แฃแแแแแแแ แ แแกแฃแ แกแแแแก แจแแฅแแแ. แแแแแแแ, Yandex.Cloud-แจแ แ แแกแฃแ แกแแแแก แฃแ แแแแ แแแแ แแกแ แแแแแแงแฃแ แแแ:
แแฅแแแ แจแแแแซแแแแ แจแแฅแแแแ แ แแแแแแแแ แฆแ แฃแแแแ แแ แแ แแแแแ แแจแแกแแแแก. แแ แฆแ แฃแแแแก แจแแแแแ แจแแฅแแแแแ แกแฎแแแแแกแฎแแ แแแ แแฅแขแแ แแแแ แกแฎแแแแแกแฎแแ แแแแแแแแแก แแ แแแฅแขแแแแกแแแแก. แแแแก แจแแกแแฎแแ แแแขแ แจแแแแซแแแแ แฌแแแแแแฎแแ แแแแฃแแแแขแแชแแแจแ -
แฆแ แฃแแแแก แกแแแแ แแแแแ, แจแแแแซแแแแ แแแแแแงแแแแ แ แแแแ แช แแแ แแแขแแ แคแแแกแ, แแกแแแ แแแแกแแแแก แแ แแแ แแแ - 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 แแแขแแแ แฆแ แฃแแแแก แกแแแแ แแแแแ, แจแแแ แฉแแแ แฆแ แฃแแแแ แแ แกแแฅแแฆแแแแ, แ แแแแแกแแช แแแแแแงแแแแแ.
แแฃ แแฅแแแ แแแฅแแ แ แแแแแแแแ แแแแแ แแจแ แแ แกแแฅแแฆแแแแ แแแแแ แฆแ แฃแแแแจแ, แจแแแแซแแแแ แจแแฅแแแแ แแแแแขแแแแแ แแ แแคแแแแแ แชแแแแแฃแแ แแแ แแแแขแ แแแแ yc config แแ แแคแแแแก แจแแฅแแแแกแ แแ แแแ แจแแ แแก แแแแแ แแแแก แแแจแแแแแแ.
แแแแแแฆแแแจแแฃแแ แแแแแแแแแก แแแ แแ, Yandex.Cloud-แแก แแฃแแแแ แแแฌแแ แ แซแแแแแ แแแ แแ
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 แแแแคแแแฃแ แแชแแแก แกแแแแแ, แ แแแแแ แฉแแแ แฃแแแ แแแแแแแแคแแแฃแ แแ แแ แแแแกแแแแก แแ แแแ แแแ. แแแ แฉแแแ, แแแฃแงแแแแแแแแ แแแแแแขแแ private.auto.tfvars .gitignore-แแ, แ แแแ แจแแแแฎแแแแแ แแ แแแแแฅแแแงแแแแก แแแ แแแ แแแแแชแแแแแ.
private.auto.tfvars-แจแ แฉแแแ แแกแแแ แแแแแแฃแกแขแแ แแแแแชแแแแแ Cloudflare-แแแ - DNS แฉแแแแฌแแ แแแแก แจแแกแแฅแแแแแแ แแ แแแแแแ แ แแแแแแแก events.kis.im แแ แแฅแกแแก แฉแแแ แกแแ แแแ แแแแ. แแฃ แแ แแกแฃแ แ แแแแแแงแแแแ cloudflare, แแแจแแ แฌแแจแแแแ cloudflare แแ แแแแแแแ แแก แแแแชแแแแแแแชแแ main.tf-แจแ แแ dns.tf แคแแแแจแ, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ แกแแญแแ แ dns แฉแแแแฌแแ แแแแก แจแแฅแแแแแ.
แฉแแแแก แแฃแจแแแแแจแ แฉแแแ แแแแแแ แแแแแแแ แกแแแแแ แแแแแแก - แแแ แแแขแแ แคแแแกแก, แแแแกแแแแก แฃแขแแแแขแแก แแ แขแแ แแคแแ แแก.
แแแ แขแฃแแแฃแ แ แฅแกแแแแแ
แแแ แแแแ แแแแฎแ แแ, แจแแแแซแแแแ แแแแแขแแแแ แแก แแแแแฏแ, แ แแแแแ แแฎแแแ แฆแ แฃแแแแก แจแแฅแแแแกแแก แแแขแแแแขแฃแ แแ แแแฅแแแแแ แชแแแแ แฅแกแแแ แแ 3 แฅแแแฅแกแแแ แจแแฅแแแแแ - แแ แแ แฎแแแแแกแแฌแแแแแแแแก แแแแแกแแแแก. แแแแ แแ แฉแแแ แแแแแช แแแกแฃแ แก แจแแแฅแแแแ แชแแแแ แฅแกแแแ แฉแแแแ แแ แแแฅแขแแกแแแแก แกแแแฃแแแ แ แแแกแแแแ แแแ. แแแแแแ แแแแแ แแแ, แแฃ แ แแแแ แแฃแจแแแแก แฅแกแแแ Yandex.Cloud-แจแ แแแฉแแแแแแแ แฅแแแแแ แแแชแแแฃแ แคแแแฃแ แแจแ (แแฃแแฌแ แคแแแแ แแฆแแแฃแแแ
แแกแ แ แแ, แแฅแแแ แฅแแแแ แกแแแ แแ แฅแกแแแก, แ แแแแแก แคแแ แแแแแจแแช แ แแกแฃแ แกแแแก แจแแฃแซแแแแ แแ แแแแแแแแแ แแแแฃแแแแแชแแ. แแแแแแฃแแ แฎแแแแแกแแฌแแแแแแแแก แแแแแกแแแแก แแฅแแแแแ แฅแแแฅแกแแแ แแแแแกแ แแแกแแแแ แแแ แแ แแแแแแจแแ แแแฃแแแ แแแแแ แฅแกแแแแแ. แจแแแแแแ, แแแกแจแ แแ แกแแแฃแแ แฆแ แฃแแแแก แงแแแแ แ แแกแฃแ แกแก แจแแฃแซแแแ แแแแฃแแแแแชแแ, แแแจแแแแช แแ, แแฃ แแกแแแ แกแฎแแแแแกแฎแแ แฎแแแแแกแแฌแแแแแแแแก แแแแแจแ แแ แแแ. แกแฎแแแแแกแฎแแ แฆแ แฃแแแแแแ แฅแกแแแแแ แแแแแแจแแ แแแฃแ แ แแกแฃแ แกแแแก แจแแฃแซแแแแ แแ แแแแแแแแก แแแแแฎแแ แแฎแแแแ แแแ แ แแแกแแแแ แแแแแก แกแแจแฃแแแแแแ. แกแฎแแแแ แจแแ แแก, แ แแแแ แแฃแจแแแแก แแก แแแแแ แจแแแแแ,
แฅแกแแแแก แจแแฅแแแ แแฆแฌแแ แแแแ network.tf แคแแแแจแ แกแแชแแแแแแ. แแฅ แฉแแแ แแฅแแแแ แแ แ แกแแแ แแ แแแ แซแ แฅแกแแแก แจแแแ แแ แแฃแแแแจแแ แแแแแ แแแก แกแแ แฅแแแฅแกแแแก แกแฎแแแแแกแฎแแ แฎแแแแแกแแฌแแแแแแแแก แแแแแจแ - แจแแแ-a (172.16.1.0/24), แจแแแ-b (172.16.2.0/24), แจแแแ-c (172.16.3.0/24). ).
แขแแ แแคแแ แแแก แแแแชแแ แแแ แแ แฅแกแแแแแแก แจแแฅแแแ:
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.
แแแแ! แฉแแแ แจแแแฅแแแแแ แฉแแแแ แฅแกแแแ แแ แแฎแแ แแแแ แแแ แ แจแแแฅแแแแ แฉแแแแ แจแแแ แกแแ แแแกแแแ.
แแแ แขแฃแแแฃแ แ แแแแฅแแแแแแก แจแแฅแแแ
แแแแแแแชแแแก แจแแกแแแแฌแแแแแแ แแแแแญแแ แแแแ แแฎแแแแ แแ แ แแแ แขแฃแแแฃแ แ แแแแ แแขแแก แจแแฅแแแ - แแแ แแแแ แแแแแญแแ แแแแ แแแแแแแชแแแก แจแแกแแฅแแแแแแ แแ แแแกแแจแแแแแ, แแแแ แแก แแแคแแแก แแแกแแจแแแแแ, แ แแแแแกแแช แแแแแแแงแแแแแ แจแแแแแแแแแ แจแแขแงแแแแแแแแแแก แจแแกแแแแฎแแ. แแ แฉแแแ แจแแแฅแแแแ แกแฎแแ แแแแฅแแแแก, แกแแแแช แแแแแแแแคแแแฃแ แแ แแแ แแ แแแแแแก แแแแแแแชแแแก แแแแแขแแ แแแแแกแแแแก.
แแแ แขแฃแแแฃแ แ แแแแฅแแแแแแก แแแแคแแแฃแ แแชแแ แแแฎแแแแ ansible-แแก แแแแแงแแแแแแ, แแแแขแแ แขแแ แแคแแ แแแก แแแฌแงแแแแแแ แแแ แฌแแฃแแแแ, แ แแ แแแฅแแ 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-agent แแแจแแแแฃแแ แแ แแแแแขแแแฃแแ แแแฅแแ ssh แแแกแแฆแแแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ terraform แแแ แจแแซแแแแก แจแแฅแแแแ แแแแฅแแแแแแแ แแแแแแจแแ แแแแก. แแ, แ แ แแฅแแ แฃแแแ, แฌแแแแฌแงแแ แจแแชแแแแแก os x-แจแ:
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 ...
แแฃ แงแแแแแคแแ แ แฌแแ แแแขแแแแ แแแกแ แฃแแแ (แแ แแกแแช แฃแแแ แแงแแก), แแแจแแ แแแแฅแแแแ แกแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแ:
- build - แแแแฅแแแ แขแแกแขแแ แแแแกแ แแ แแแแแชแฎแแแแก แจแแกแแฅแแแแแแ. Docker แแแแแกแขแแแแ แแ แแแขแแแแขแฃแ แแ Ansible-แแก แแแแ .
- แแแแแขแแ แแแแ - แแแกแแ แแแแแแขแแแแแฃแแ แแแแแขแแ แแแแแก แแแแฅแแแ - แแ แแแแแ แแ แแ แแแ. แจแแกแแแ / แแแ แแแ แกแขแแแแแ แขแ: admin / admin
- แแแคแแ แแ แแก แแแขแแ แ แแแแฅแแแ แแแงแแแแแฃแแ แแแคแแแแ, แฌแแแแแ 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
แแก แกแแกแแ แแแแแ แแฅแแแแ แฉแแแแแแแก, แ แแ แแแแฃแแแแแ แแแแแแแชแแแก แแแแ แฌแแ แขแแแ แแแคแฅแแ.
แแแแแแแชแแแก แแฌแงแแแ
แจแแกแแแแจแแแแแ, แแ แแก แกแแ แแแ แแแ, แแ แแก แแแแแแแชแแ - แ แฉแแแ แแฎแแแแ แแแกแ แแฌแงแแแ แแ แแแแแฅแแแงแแแแ. แแแแกแขแ แฃแฅแชแแแกแแแแก แฉแแแ แแแแแแแงแแแแแ แฉแแแฃแ แแแแแ แแก แแแแกแขแ แฃแฅแชแแแก, แแแแ แแ แแแแแกแแฎแฃแแแแแก แจแแกแแแแฎแแ แแแแแแแงแแแแแ แกแแ แแแกแก Yandex - แแแแขแแแแแ แแก แ แแแกแขแ แแแแ. แแแแ แแ แแแ แแแ แ แแแจแ.
แฉแแแ แแแแแแแ แแแ แแแแแแแชแแแก build แแแแฅแแแแจแ, แจแแแแแแแ แ 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
แแแฎแแแแ แ แแ แซแแแ แแแกแ แฃแแแแฃแแแ - แแฎแแ แฉแแแ แจแแแแแซแแแ แจแแแแแแฌแแแ แฉแแแแ แแแแแแแชแแแก แคแฃแแฅแชแแแแแ แแแ แแแกแ แแแจแแแแแ แแ แแแคแแแแ แแแแแแแแแ:
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) $
แแแแแแแชแแแ แฌแแ แแแขแแแแ แฃแแแกแฃแฎแ แฉแแฌแแ แแก แแ แแแฃแแแแ แแแแแงแแคแแก ID แแ แแคแกแแขแ, แ แแแแแจแแช แจแแแแแแ แจแแขแงแแแแแแแ. แแแ แฉแแแแแแ แแฎแแแแ 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 แขแแแแแแก แแ แกแแ แแแกแแก แแแแแ แแจแแก แแแกแแฆแแแแก แแแแแงแแแแแแ. แแแแแขแแแแแ แแแขแแแแแ แแ แแแแแแแแแก แจแแกแแฎแแ แจแแแแซแแแแ แแฎแแแแ แแแแฃแแแแขแแชแแแจแ.
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
แฉแแแ แแแฆแแแ แแแคแแ แแแชแแแก แฉแแแแ แกแแชแแแแก ID-แแก แจแแกแแฎแแ, แแแแแแชแแแ แแแกแแฆแแแก แแ แจแแแแแแแ แ:
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:~$
แกแฃแ แแแแก แ แแแกแขแ แจแ แแกแแขแแแ แแแ, แฉแแแ แแแญแแ แแแแ แแแแขแแแแแ แแก แ แแแกแขแ แแก ID, แฉแแแ แแแก แแแฆแแแ 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
แแแแแ แแก แแแแคแแแฃแ แแชแแแกแแแแก.
แแแกแแแแ
แฉแแแ แแแแ แ แแแจแ แแแแ แแ แจแแแแแแ:
- แฉแแแ แแแแแฆแแ แฉแแแแ แแแแแแแแ แกแแ แแแกแแก แแ แฅแแขแแฅแขแฃแ แ.
- แฉแแแ แแแแฌแแ แแ แแแแชแฎแแแแแ แแแแแแแจแ, แ แแแแแแช แแฎแแ แชแแแแแแก แฉแแแแก แแแแแแก แแแแแแแก.
- แฉแแแ แจแแแแแ แแแแ แแ แฉแแแแกแฎแแ แแแ แซแ แแแแขแแแแแ แแแแก แ แแแกแขแ แจแ.
แจแแแแแ แแแฌแแแจแ, แฉแแแ แแแแแแแแ แกแแแแขแแ แแกแ แกแแแแแฎแแแแ - แฉแแแ แแแแแแฃแจแแแแ แฉแแแแก แแแแแแแชแแแก แฌแแ แแแแแแจแ แแ แกแแแแแแแ แแแแแฌแงแแแ แแแกแแ แแแขแแแ แแแแก. แแฃ แแแแแ แแแ!
แแก แแแกแแแ แแแแแแแกแแแฃแแแ แฆแแ แกแแฎแแแแกแแแก REBRAIN & Yandex.Cloud-แแก แแแแแ แฉแแแแฌแแ แจแ: แฉแแแ แแแฆแแแ 10 แแแแฎแแแแแก แฌแแแจแ Yandex Cloud-แแ -
แแฃ แแแแแขแแ แแกแแแ แแกแแแแก แฆแแแแกแซแแแแแแแ แแแกแฌแ แแแ แแแแแแ แแ แแแแฎแแแแแก แแแกแแ แ แแแแฃแ แแ แแจแ, แแแฃแแแแจแแ แแแ
แแแแแแ แแแแกแแแฃแแ แแแฃแแ แแแแแแแ แแแแแแฃแฎแแแแ Yandex.Cloud-แก แแกแแแ แฆแแแแกแซแแแแแก แแแกแแแแซแแแแแก แจแแกแแซแแแแแแแแกแแแแก. แแแฃแแ แแแแแแ -
แแฃ แแญแแ แแแแแ แฆแ แฃแแแแแ แแแแแกแแแ แแ แแแฅแแ แจแแแแแฎแแแแ แแฅแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แจแแกแแฎแแ,
PS แแแแจแ 2 แฃแคแแกแ แแฃแแแขแ แแแแฅแแก, แแแแแ แแฅแแแแ แแ แแแฅแขแ แแฅแแแแ แแ แ-แแ แแ แแแแแแแ.
แฌแงแแ แ: www.habr.com