diff --git a/content/ru/docker-envs.md b/content/ru/docker-envs.md index e450755e4c7c8a3627bb167742706fcd3f38cddc..79873a04eb944992466f9e4366dc622f8670a682 100644 --- a/content/ru/docker-envs.md +++ b/content/ru/docker-envs.md @@ -9,12 +9,12 @@ category: DevOps # Разделение докера на Ñреды Должен ли ты разделÑть Ñреды докера в неÑколько `docker-compose` файлов? -Определенно! Ð’ некоторых ÑлучаÑÑ… невозможно разобратьÑÑ Ñ‡Ñ‚Ð¾ разработчики хотели Ñделать или почему ничего не работает. ÐаÑтройка раздельных Ñред может Ñтать наÑтоÑзей мешанино. Ð’ Ñтой Ñтатье Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñƒ как наÑтроить `docker-compose` и избежать миллиона проблем. +Определенно! Ð’ некоторых ÑлучаÑÑ… невозможно разобратьÑÑ Ñ‡Ñ‚Ð¾ разработчики хотели Ñделать или почему ничего не работает. ÐаÑтройка раздельных Ñред может Ñтать наÑтоÑшей мешаниной. Ð’ Ñтой Ñтатье Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñƒ как наÑтроить `docker-compose` и избежать миллиона проблем. Как мы вообще можем разделить Ñреды Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ разработки и продовые? Отет проÑÑ‚: ТребуетÑÑ Ð´ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ проект и Ñоздать отдельные файлы под каждую из Ñред или даже ÑервиÑов. -Ðто нормально, еÑли у Ñ‚ÐµÐ±Ñ Ð±ÑƒÐ´ÐµÑ‚ больше 2-ч `docker-compose` файлов. +Ðто нормально, еÑли у Ñ‚ÐµÐ±Ñ Ð±ÑƒÐ´ÐµÑ‚ больше 2-Ñ… `docker-compose` файлов. Ðапример: ``` @@ -33,9 +33,9 @@ deploy ``` ### Как Ñто работает? -Докер умеет работать Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтвом `docker-compose` файлов одновременно.И мы можем иÑпользовать Ñто Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñред. +Докер умеет работать Ñ Ð¼Ð½Ð¾Ð¶ÐµÑтвом `docker-compose` файлов одновременно. И мы можем иÑпользовать Ñто Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñред. -ВыглÑдит Ñто Ñледующим образом. +ЗапуÑк таких конфигураций выглÑдит Ñледующим образом: ```bash docker-compose \ -f "deploy/docker-compose.yml" \ @@ -46,12 +46,11 @@ docker-compose \ Ð’ каждом из Ñтих файлов определен какой-то куÑок конфигурации, который не переÑекаетÑÑ. Ðапример в `docker-compose.yml` определено приложение и некоторые необходимые ÑервиÑÑ‹, а в оÑтальных файлах добавлÑÑŽÑ‚ÑÑ ÑервиÑÑ‹ или менÑÑŽÑ‚ÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ…. -Ðаверное, тут проще на примере поÑÑнить. +Ðаверное, тут проще показать на примере. ДопуÑтим у Ð½Ð°Ñ ÐµÑть проект, у которого поднимаетÑÑ Ð±ÐµÐºÐµÐ½Ð´ Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸, которые отличаютÑÑ Ð½Ð° проде и локально. -Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñтоты Ñоздадим проÑтецикий проект Ñо Ñледующей Ñтруктурой. - +Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñтоты примера Ñоздадим проÑтецкий проект Ñо Ñледующей Ñтруктурой: ``` proj ├── deploy @@ -66,7 +65,7 @@ proj from sys import argv # Ñто аргуметы переданные в Ñкрипт def main(): - print("; ".join(argv[1:])) # выводитна Ñкран вÑе аргументы программы + print("; ".join(argv[1:])) # выводит на Ñкран вÑе аргументы программы if __name__ == "__main__": main() diff --git a/content/ru/makefiles.md b/content/ru/makefiles.md index c9fa26afaa8e89d2f472a5c2fd9ba2678c6c2296..cfc5482111612ecd7577e0a21c609d01e9bb81ca 100644 --- a/content/ru/makefiles.md +++ b/content/ru/makefiles.md @@ -6,9 +6,12 @@ category: 'DevOps' --- # Makefiles Ð´Ð»Ñ Ñ‡Ð°Ð¹Ð½Ð¸ÐºÐ¾Ð² -ЕÑли опиÑывать в двух Ñловах, то Ñто проÑто опиÑание команд Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¾Ð¼. Изначально делалиÑÑŒ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы удобно компилировать вÑÑкие проекты на любых Ñзыках. +Что такое мейкфайлы? Ð’Ñ‹ навернÑка их вÑтречали, +еÑли Ñобирали проекты из ихÑодных файлов. +ЕÑли опиÑывать в двух Ñловах, то Ñто проÑто опиÑание команд Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð¾Ñ‰ÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ +Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¾Ð¼. Изначально делалиÑÑŒ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы удобно компилировать вÑÑкие проекты на любых Ñзыках. -## Как они работают +## Как они работают? ДоÑтаточно проÑто. Вот пример `Makefile`: @@ -37,7 +40,7 @@ Hi! ## ЗавиÑимоÑти таргетов -Ðа Ñтрочке объÑÐ²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð°Ñ€Ð³ÐµÑ‚Ð° `run` видно, что объÑвлен `test.gen`. Ðто завиÑимоÑть данного таргета и она будет вызвана до того, как выполнитÑÑ Ñкрипт опиÑываемого таргета. Таких завиÑимоÑтей может быть много, перечиÑлÑÑŽÑ‚ÑÑ Ð¾Ð½Ð¸ чере пробел. +Ðа Ñтрочке объÑÐ²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð°Ñ€Ð³ÐµÑ‚Ð° `run` видно, что объÑвлен `test.gen`. Ðто завиÑимоÑть данного таргета и она будет вызвана до того, как выполнитÑÑ Ñкрипт опиÑываемого таргета. Таких завиÑимоÑтей может быть много, перечиÑлÑÑŽÑ‚ÑÑ Ð¾Ð½Ð¸ через пробел. Ðапример: ```makefile{}[Makefile] @@ -96,7 +99,7 @@ memes ## Ð’Ð°Ð»Ð¸Ð´Ð°Ñ†Ð¸Ñ Ñгенерированных файлов ЗачаÑтую `Makefile` иÑпользуют Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñции С и зачаÑтую требуетÑÑ -Ñобрать какую-либо чаÑть проект и пропуÑтить Ñборку Ñтой чаÑти, еÑли Ñта чаÑть уже Ñобрана. +Ñобрать какую-либо чаÑть проекта в файл и пропуÑтить Ñборку Ñтого файла, еÑли он уже Ñобран. РаÑкрою Ñекрет, в Makefile Ñто базовый функционал. Давайте немного поменÑем первый Makefile и запуÑтим дважды. diff --git a/content/ru/start-with-k8s.md b/content/ru/start-with-k8s.md index 02f6dcda0e3d1dd7c370aadfa0931b0acced8633..94892e385069ef763b5b0b3a3401ad5321074ab7 100644 --- a/content/ru/start-with-k8s.md +++ b/content/ru/start-with-k8s.md @@ -7,15 +7,15 @@ position: 4 # Проблема в изучении ÐºÑƒÐ±ÐµÑ€Ð½ÐµÑ‚ÐµÑ -Многие люди, кто задавалиÑÑŒ вопроÑом как начать работать Ñ -кубернетеÑом ÑталкивалиÑÑŒ Ñ Ñ‚ÐµÐ¼, что Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ ÐºÑ€Ð°Ð¹Ð½Ðµ +Многие люди, кто задавалиÑÑŒ вопроÑом "Как начать работать Ñ +кубернетеÑ?", ÑталкивалиÑÑŒ Ñ Ñ‚ÐµÐ¼, что Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ ÐºÑ€Ð°Ð¹Ð½Ðµ Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ ÑÐ»Ð¾Ð¶Ð½Ð°Ñ Ð¸ нет нормального опиÑÐ°Ð½Ð¸Ñ ÐºÐ°Ðº -завернуть маленький проект из одного проекта в Ñвой клаÑтер или -как развернуть Ñвой клаÑтер без боли. +завернуть маленький проект из одного контейнра в Ñвой клаÑтер или +как развернуть Ñам клаÑтер без боли. РвÑÑ‘ потому что вÑÑ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð°Ñ†ÐµÐ»ÐµÐ½Ð° на большие production-ready ÑиÑтемы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ rps и тому подобным. - +<br> Ð’ данной Ñтатье Ñ Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÑŽ иÑправить Ñто вÑеленÑкое недопонимание иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ k3s, Ñвой комплюктер и немного знаний по кодингу. @@ -28,12 +28,12 @@ production-ready ÑиÑтемы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ rps и тому подобны # Что такое ÐºÑƒÐ±ÐµÑ€Ð½ÐµÑ‚ÐµÑ Ð¸ почему Ñто лучше докера Многие ребÑта, кто хорошо знаком Ñ Ð´Ð¾ÐºÐµÑ€Ð¾Ð¼ и его -возможноÑÑ‚Ñми могут задаватьÑÑ Ñ‚Ð°ÐºÐ¸Ð¼ вопроÑом. +возможноÑÑ‚Ñми, могут задаватьÑÑ Ñ‚Ð°ÐºÐ¸Ð¼ вопроÑом. Ð”Ð»Ñ Ñ‚ÐµÑ… кто в танке, напомню, что докер имеет вариант запуÑка в режиме клаÑтера. -Ðтот функционал называетÑÑ docker swarm. +Ðтот функционал называетÑÑ [docker swarm](https://docs.docker.com/engine/swarm/). Ð’ целом, swarm отдалённо напоминает kubernetes, -так как в Ñтом режиме докер, худо-бедно но умеет +так как в Ñтом режиме докер худо-бедно умеет автоÑкейлитÑÑ Ð¸ запуÑкатьÑÑ Ð² клаÑтере, но Ñто вÑÑ‘ равно немного не то. @@ -54,7 +54,7 @@ production-ready ÑиÑтемы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ rps и тому подобны Так как Ñ Ð² Ñтой Ñтатье хотел затронуть ÑовÑем базовые и практичеÑкие вещи, то раÑÑматривать -мы будем только крайне полезные компоненты. +мы будем только Ñамые чаÑто иÑпользуемые компоненты. - Container - Pod @@ -65,12 +65,12 @@ production-ready ÑиÑтемы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ rps и тому подобны - Secret - ConfigMap -Ртеперь раÑÑмотрим немного поподробнее. +Ртеперь раÑÑмотрим каждый реÑÑƒÑ€Ñ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ поподробнее. ## Container -Контейнеры не то чтобы чаÑть ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ Ð´Ð»Ñ ÐºÑƒÐ±ÐµÑ€Ð½ÐµÑ‚ÐµÑ. -С контейнерами вы можете быть знакомы из кучи ÑиÑтем. +Контейнеры не ÑвлÑÑŽÑ‚ÑÑ Ñ‡ÐµÐ¼-то Ñпецифичным Ð´Ð»Ñ ÐºÑƒÐ±ÐµÑ€Ð½ÐµÑ‚ÐµÑ. +С контейнерами вы можете быть знакомы из кучи других ÑиÑтем. Ð’ контекÑте кубера они не обладают никакими дополнительными ÑвойÑтвами. Ðто ровно то же, что и контейнеры `containerd` или те, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ вы возилиÑÑŒ Ñ Ð´Ð¾ÐºÐµÑ€Ð¾Ð¼. Ðичего нового. @@ -80,9 +80,9 @@ production-ready ÑиÑтемы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ rps и тому подобны <b-message type="is-warning" has-icon> - Ð’Ð°Ð¶Ð½Ð°Ñ Ñ€ÐµÐ¼Ð°Ñ€ÐºÐ°. Кубер Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ 2021 ÐºÑƒÐ±ÐµÑ€Ð½ÐµÑ‚ÐµÑ Ð½Ðµ поддерживает - докер как бÑкенд. Теперь кубер будет общатьÑÑ Ñ - containerd напрÑмую. Ðто значит, что теперь перед иÑпользованием + Ð’Ð°Ð¶Ð½Ð°Ñ Ñ€ÐµÐ¼Ð°Ñ€ÐºÐ°. Кубер, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ 2021 года, не поддерживает + докер как бÑкенд. Теперь он будет общатьÑÑ Ñ + containerd напрÑмую. Ðто значит, что перед иÑпользованием контейнеров Ñобранных на локальной машине надо будет импортировать их в `containerd` иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ `ctr image import`. @@ -101,9 +101,9 @@ production-ready ÑиÑтемы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ rps и тому подобны Ð’ поде находитÑÑ Ð¾Ñ‚ одного до множеÑтва контейнеров. ИнтереÑÐ½Ð°Ñ Ð¾ÑобенноÑть пода в том, что вÑе контейнеры -делÑÑ‚ один Ñетевой адреÑÑ. Другими Ñловами, +делÑÑ‚ один Ñетевой адреÑ. Другими Ñловами, еÑли у Ð²Ð°Ñ Ð¾Ð´Ð¸Ð½ из контейнеров открыл порт `3000`, -то другие контейнеры из пода Ñти порты иÑпользовать не Ñмогут. +то другие контейнеры из пода Ñтот порт иÑпользовать не Ñмогут. То еÑть, еÑли вы хотите логичеÑки ÑвÑзанные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¼ÐµÑтить в под, то они могут ходить друг к другу через лупбек @@ -120,10 +120,10 @@ production-ready ÑиÑтемы Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ rps и тому подобны <br> -Deployment нужна именно Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð² и ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ +Deployment нужен именно Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð² и ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… реÑурÑов, нужных Ð´Ð»Ñ Ñкейлинга. Также Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ деплойментов можно делать откаты Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· -механиз роллбеков. Я Ñто раÑÑматривать не буду. Тут только база. +механиз роллбеков. Я Ñто раÑÑматривать не буду. Ð’ Ñтой Ñтатье только база. ## Service @@ -147,7 +147,7 @@ Deployment нужна именно Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð² и Ñоз Также ÑÐµÑ€Ð²Ð¸Ñ Ð²Ñ‹Ñтупает как баланÑировщик. <b-message type="is-info" has-icon> - ЕÑли вы хотите Ñделать Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚ одного пода до дргого внутри клаÑтера, то + ЕÑли вы хотите Ñделать Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚ одного пода до дргого, внутри клаÑтера, то вам придётÑÑ Ð¸Ñпользовать ÑервиÑ. <br> ЕÑли вы попробуете Ñделать Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð°Ð¿Ñ€Ñмую по IP пода, то у ваÑ, конечно же, @@ -157,7 +157,7 @@ Deployment нужна именно Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð² и Ñоз ## Ingress -ИнгреÑÑÑ‹ Ñто ÑÐµÑ€Ð²Ð¸Ñ Ð¾Ð¿Ð¸Ñывающий куда пуÑкать трафик, +ИнгреÑÑ - Ñто ÑÐµÑ€Ð²Ð¸Ñ Ð¾Ð¿Ð¸Ñывающий куда пуÑкать трафик, который поÑтупает Ñнаружи клаÑтера. <div align="center"> @@ -168,9 +168,9 @@ Deployment нужна именно Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð² и Ñоз Принцип работы ингреÑÑа Ñледующий: -Ð’Ñ‹ указываете хоÑÑ‚ ингреÑÑа и различные регекÑÑ‹ пути. +Ð’Ñ‹ указываете хоÑÑ‚ ингреÑÑа и различные пути. Ð’ завиÑимоÑти от входÑщего запроÑа ингреÑÑ Ð²Ñ‹Ð±Ð¸Ñ€Ð°ÐµÑ‚ в какой ÑÐµÑ€Ð²Ð¸Ñ -направить его и в какой порт. +направить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¸ в какой порт. ÐаÑтройка ингреÑÑа доÑтаточно Ð³Ð¸Ð±ÐºÐ°Ñ Ð¸ Ñ Ð½Ðµ думаю, что вы можете ÑтолкнутьÑÑ Ñ ÐºÐ°ÐºÐ¸Ð¼Ð¸ либо проблемами. @@ -218,10 +218,10 @@ Deployment нужна именно Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¾Ð² и Ñоз - minikube Ðа первый взглÑд minikube может показатьÑÑ Ð»ÑƒÑ‡ÑˆÐ¸Ð¼ вариантом. -И он дейÑтвительно хорош тем, что его легко почиÑтить поÑле +И он дейÑтвительно хорош тем, что его легко развернуть и почиÑтить поÑле Ñвоих ÑкÑпериментов. Однако, там еÑть проблемы Ñ Ð¸Ð½Ð³Ñ€ÐµÑÑами. По факту они не работают и там надо окольными путÑми получать -адреÑа приложениÑ. +адреÑа. <br> @@ -238,11 +238,10 @@ k3s - Ñто легковеÑÐ½Ð°Ñ production-ready Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ k8s. I ## Подключение клаÑтера -ПоÑле уÑтановки в домашней дериктории должен был быть +ПоÑле уÑтановки `kubectl` в домашней дериктории должен был быть Ñгенерирован файл `.kube/config`. Ðтот файл Ñодержит данные Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº различным клаÑтерам. `minikube` Сам добавлÑет -ключи Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº .kube/config. `K3S` не изменÑет -никаким образом `.kube/config`, поÑтому надо будет Ñто Ñделать вручную. +ключи Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº .kube/config. `K3S` никак не изменÑет `.kube/config`, поÑтому надо будет Ñто Ñделать вручную. Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñто Ñделать Ñначала разберёмÑÑ ÐºÐ°Ðº выглÑдит конфиг. @@ -298,27 +297,28 @@ current-context: "k3s" можете передать параметр `--context $CONTEXT_NAME`, где `$CONTEXT_NAME` Ñто название контекÑта. Чтобы доÑтать данные Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº `k3s` надо поÑмотреть его конфиг -и Ñкопировать данные. Либо выÑтавить переменную Ñреды, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ +и Ñкопировать данные. Либо выÑтавить переменную Ñреды `KUBECONFIG`, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ указывать конфиг k3s. Конфиг Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ `k3s` лежит в файле `/etc/rancher/k3s/k3s.yaml`. Можете выполнить команду, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ проÑить kubectl иÑпользовать указанный конфиг: -`export KUBE_CONFIG=/etc/rancher/k3s/k3s.yaml` +`export KUBECONFIG=/etc/rancher/k3s/k3s.yaml` <br> Либо Ñкопируйте нужные данные Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñебе в `.kube/config`. ПоÑле наÑтройки выполните команду и проверьте что вам вернулоÑÑŒ -что-то подобное. Ðто значит, что никаких реÑурÑов пока в -клаÑтере нет. Ðто мы иÑправим позже. Пока что можно Ñказать, -что подключение прошло уÑпешно. +что-то подобное. ```bash $ kubectl --context "my-context" get pods No resources found in default namespace. ``` -ЕÑли же у Ð²Ð°Ñ Ð²Ñ‹Ð¿Ð°Ð´Ð°ÐµÑ‚ ошибка, например такаÑ. +Ðто значит, что никаких реÑурÑов пока в +клаÑтере нет. Ðто мы иÑправим чуть позже. Пока что можно Ñказать, +что подключение прошло уÑпешно. +ЕÑли же у Ð²Ð°Ñ Ð²Ñ‹Ð¿Ð°Ð´Ð°ÐµÑ‚ ошибка, например такаÑ: ``` The connection to the server localhost:8080 was refused - did you specify the right host or port? @@ -331,18 +331,19 @@ sudo systemctl start k3s.service ``` Либо у Ð²Ð°Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ðµ данные Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°. +Перепроверьте Ñвой `.kube/config`. ### Мониторинг клаÑтера -Ð”Ð»Ñ Ð¿Ñ€Ð¾ÑÐ¼Ð°Ñ‚Ñ€Ð¸Ð²Ð°Ð½Ð¸Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°Ñтером иÑпользуетÑÑ cli утилита `kubectl`. -Ðо Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñ Ð½ÐµÐ¹ работать нужно получше понÑть что вообще в клаÑтере еÑть. +Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра реÑурÑов и ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°Ñтером иÑпользуетÑÑ `kubectl`. +Ðо Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñ Ð½ÐµÐ¹ работать нужно получше понÑть, что вообще в клаÑтере еÑть. Ð”Ð»Ñ Ñтого Ñ Ñоветую иÑпользовать [Lens](https://k8slens.dev/). Ðто крайне удобный Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñвоим клаÑтером. -Также там еÑть очень ÐºÐ»Ñ‘Ð²Ð°Ñ Ð½Ð°Ñтрока, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñама включит мониторинг +Также там еÑть очень ÐºÐ»Ñ‘Ð²Ð°Ñ Ð½Ð°Ñтройка, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñама включит мониторинг Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти и процеÑÑора Ð´Ð»Ñ Ð²Ñех подов и клаÑтера в общем. -Ðа локальной машине Ñто не очень много ÑмыÑла имеет, +Ðа локальной машине Ñто не имеет ÑмыÑла, а вот в проде было бы очень полезно. ВыглÑдит Lens примерно так: @@ -437,7 +438,7 @@ app.listen(port, host, () => { Ðто вÑÑ‘. Сервер готов. <hr> -ПротеÑтируем запуÑк Ñервера выполнив команду ниже и открыв в +ПротеÑтируем запуÑк Ñервера, выполнив команду ниже и открыв в Ñвоём любимом браузере http://localhost:8080. ``` @@ -501,7 +502,7 @@ docker run --rm -it -p 3400:8000 "s3rius/req-counter-express:latest" - Ð’Ñ‹ можете запушить Ñобранное приложение в [Docker HUB](https://hub.docker.com/) и иÑпользовать его. - Можете иÑпользовать мой образ `s3rius/req-counter-express:latest` -- Импортировать Ñобранный образ как tar файл и импортировать его в containerd напрÑмую. +- Сохранить Ñобранный образ как tar файл и импортировать его в containerd напрÑмую. Как Ñто Ñделать почитать можно в [Ñтой Ñтатье](https://cwienczek.com/2020/06/import-images-to-k3s-without-docker-registry/). ### Деплой в k8s @@ -645,7 +646,7 @@ service/req-counter-service created Готово. Теперь вы можете зайти в lens, выбрать Ñвой клаÑтер из ÑпиÑка и поÑмотреть как там поживает ваше приложение. -Также не забудьте указать неймÑпей, в который вы беплоиди приложение. +Также не забудьте указать неймÑпейÑ, в который вы деплоили приложение. ВыглÑдит Ñто чудо примерно так: @@ -694,7 +695,7 @@ ingress.networking.k8s.io/req-counter-ingress unchanged service/req-counter-service unchanged ``` -Как можно видеть изменилÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ наш `Deployment`. +Как можно видеть, изменилÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ наш `Deployment`. ОÑтальные реÑурÑÑ‹ оÑталиÑÑŒ нетронутыми. Давайте поÑмотрим на поды в нашем неймÑпейÑе. @@ -711,16 +712,15 @@ req-counter-deployment-764476db97-x28fr 1/1 Running 0 69s нашего приложениÑ. -Теперь Ñ Ð¿Ð¾Ð¹Ð´Ñƒ и выполню кучу запроÑов по адреÑу http://req-counter.local/ -и получу баланÑировку между подами из коробки, без дополнительных +Теперь можно выполнить кучу запроÑов по адреÑу http://req-counter.local/ +и получить баланÑировку между подами из коробки, без дополнительных конфигураций. ЕÑли у Ð²Ð°Ñ Ð½Ðµ получаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ адреÑ. Добавьте данный хоÑÑ‚ Ñебе в `/etc/hosts` на линукÑе или в `C:\Windows\System32\drivers\etc\hosts` на windows, допиÑав в конец файла Ñледующее: -``` -... +```[/etc/hosts] 127.0.0.1 req-couter.local ``` diff --git a/layouts/default.vue b/layouts/default.vue index 80912f79ed096da4d38fef6beed3bc401aa42a01..0577cdf17fe4e53920fcff5625f9b54ab2318cfb 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -3,7 +3,7 @@ <b-navbar type="is-primary w-100" :fixed-top="true"> <template #brand> <NuxtLink to="/" class="navbar-item"> - <img src="/icon.png" alt="Logo" /> Dev blog + <img src="/logo.png" alt="Logo" /> Dev blog </NuxtLink> </template> <template #end> diff --git a/nuxt.config.js b/nuxt.config.js index d9db53483ccbd6aa00aafcc455e72354f41627e3..3848b05edf04ec60b744c31adf07cb6ca652a8f1 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -13,8 +13,12 @@ export default { { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { hid: 'description', name: 'description', content: '' }, { name: 'format-detection', content: 'telephone=no' }, + { hid: "og:image", name: 'og:image', content: "https://s3rius.blog/icon.png"} ], link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }], + headAttrs: { + "prefix": "og: http://ogp.me/ns#" + } }, // Global CSS: https://go.nuxtjs.dev/config-css diff --git a/pages/_slug.vue b/pages/_slug.vue index 8063ad73c9bd7e5619420fd70ab01647b4115f20..46ecf3e68888094c409404db636a6f53076ff99a 100644 --- a/pages/_slug.vue +++ b/pages/_slug.vue @@ -48,12 +48,6 @@ export default defineComponent({ name: 'og:image', content: doc.image, }) - } else { - meta_data.push({ - hid: 'og:image', - name: 'og:image', - content: 'https://s3rius.blog/logo.png', - }) } meta.value = meta_data }) diff --git a/static/icon.png b/static/icon.png index de3a24790531063cdb20ef5d4509f450ce88c4a2..418f9325094f656d20cb2dcc63161b0ff381d2e3 100644 Binary files a/static/icon.png and b/static/icon.png differ diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..de3a24790531063cdb20ef5d4509f450ce88c4a2 Binary files /dev/null and b/static/logo.png differ