ДевОпс блиц, практика. СОБЕСЕДОВАНИЕ Middle DevOps инженера. Часть 4.

Подготовка к собеседованию на DevOps

Транскрипция видео:

  • Здравствуйте я Антон Павленко Сегодня вы увидите продолжение собеседования midle The WS инженера Я знаю тебе интересно Так что наливай приятную для твоего организма жидкость усаживаясь поудобнее погружаемся в мир собеседования прежде чем мы начнём хочу сказать Спасибо за поддержку образовательного контента моих партнёров First vds если ты ищешь надёжный хостинг Обрати внимание на First vds это известный хостинг-провайдер который отличается надёжностью и низкими ценами у First vds есть как готовые тарифы так и

    00:00:00 - 00:01:03

  • настраиваемые конфигурации где можно докупить ресурс можно заказать высокопроизводительные сервера сервера с повышенной надёжностью и сервера с большими дисками до 5.000 ГБ переходи по ссылке в описании ознакамливается с предложениями там тебе ждёт двадцатипятилетие и она будет про devops Хотя я не разделяю разработку от девопса скажем так вот Давай поговорим про контейнеры и в целом сначала поговорим попробую поняти контейнера что вообще такое контейнер именно в Linux что он себе описа контейнер это в процесс в

    00:00:31 - 00:01:42

  • отдельном нейм спейсе который работает независимо от других процессов вне этого нейм спейса хорошо э вот ты сейчас говоришь namespace что что это за такой механизм в Linux что он вообще нужен для чего он нужен для того чтобы группировать процессы и разделять их друг от друга Ладно давай так сейчас с чуть-чуть попозже поговорим мы к ним Прим мы к ним придём в целом Окей в начале Значит есть до начала вот этого до появления и разделения изолирования ру всяких ресурсов существовал другой механизм изоляции Ты знаешь как он называется

    00:01:15 - 00:02:52

  • LX Нет он называется ком а Да расскажи пожалуйста вообще в целом как он работает в том что вот ну в Linux Ну в оных системах на базе Linux есть вот Типовая структура файловых каталогов которы начинается с корня США и там есть вот каталоги содержат все необходимые файлы для запуска и суть чт в том что где-то внутри этого дерево файло системы находится ещё один такой же корень и мы переключаем с главного корня на наш какой-то второстепенный корень и запускаем все процессы из него как будто бы мы оттуда совали систему мы так можем

    00:02:05 - 00:03:39

  • сделать когда вот мы Зару ш статум чтото в сломанной основной системе починить мы просто монтируем её в нашу загрузочную систему и делаем Рут и дальше уже выполняем команды как будто бы мы находимся в той системе Угу Ну вот какой такой основной недостаток один из Рут и почему и Ну и как бы и в дальнейшем из-за этого появляется механизм namespace ну Я предполагаю что там процессы которые запускаются после чут они всё равно имеют родительским процессом systemd родительского родительской системы Я

    00:02:53 - 00:04:34

  • честно не знаю об этом не задумывался и Ну да правильно что на самом деле рут имеет Общее пространство имён там например да и ограничить ресурсы Руту никак нельзя То есть он как то есть Он полностью имеет те же самые ресурсы что имеет Ну и основная операционная система Да вот хорошо дальше нейс Вот как раз таки Для чего был были придуманы так ну он позволяют Вот как я понимаю группировать процессы по нейм спейса и уже выделять ресурсы в зависимости то есть для оного позволяем воспользоваться определённым объёмов ресурсов но не

    00:03:45 - 00:05:17

  • превысить его под ресурсами Что ты имеешь в виду имею в виду оперативную память Центральный процессор Ну этим занимается такой механизм Как си Group Да и об этом мы поговорим чуть чуть попозже но давай сетевые Наверное тогда ресурсы и диск уссов есть несколько пространств вот этих вот которые он изолирует то есть это такой вот namespace это программный слой который добавляет а такую вот абстракцию и изолирует а какие-то а пространства например как мы сказали пространство ID процессов Пит пространство и вот Какие ещё

    00:04:36 - 00:06:06

  • пространства изолируют нейм спейсы Ты знаешь мне кажется сетевые интерфейсы у да пользователей Да ну также он ещё изолирует пространство файловых систем то есть называется также изолируется межпроцессное взаимодействие и таким образом изолируем между контейнерами не может пойти к другому контейнеру не через сеть там как-то изолируется как ки Вот случайно не получится у него это сделать вот и ещё получается uts но это связано с домен именами и так далее Окей сиг Давай к ним перейдём Вот теперь Для чего нужно си

    00:05:20 - 00:07:12

  • групы ты уже начал говорить управление ресурсами как вот Центральный процессор оперативная память ограничение на процесс который там работает Угу Ну ладно да в принципе не обязательно уходить глубоко в целом идея именно такая что мы с помощью C Group и Space можем с помощью Space мы отделяем изолируем процессы друг от друга что они не могут взаимодействовать Таким образом мы создаём изолированную среду а си группами мы убавляем количество ресурсами Таким образом у нас получается такой контейнер который Ну с помощь ещё

    00:06:26 - 00:07:41

  • дополнительных абстракций может быть создан по сути мы М Спей изолируем там процессы и взаимодействия с гсо мы изолируем ресурсы всё так всё так ладно И теперь я попрошу тебя расшарить ID пожалуйста а мы поговорим опра Dock File как его оптимизировать Угу и содержимое докер файла Ну и собственно задача следующая посмотри на него и потихонечку как-то его улучши Ага первым делом Вот это переносим сюда и меняем Add на копи так хорошо давай ты это сделаешь и расскажи что ты сделал почему так ну это

    00:07:04 - 00:08:42

  • и копии э они в чём-то похожи но у э есть фичи в которых нету копи считается использовать только тогда когда это необходимо по использ в ЧМ разница умеет работать с архивами и сетевыми ресурсами то есть мы можем там написать строчку в стиле скачает фай с этого ресурса и положит его в указанный путь также если это окажется архив может его ещ и распаковать и тоже куда нужно и считается что просто так этим безумно пользоваться не стоит что может приводить к ри безопасности и стабильности сборок и е то мы пользуемся только копией и не

    00:07:53 - 00:09:43

  • это угу Окей согласен А почему ты копии перенёс вниз потому что слои которые находятся выше Ну вот эти слои когда мы копируем файлы из нашего проекта они будут изменяться как правило чаще и вносить Ну меньше вклад в образ то есть скажем вот установка пакетов Мы это можем сделать один раз дальше слой у нас закрут иг нужно просто скопировать файл или каталог мы уже будем только перестраивать слои начиная с копии и ниже А вот этот эти слои будут уже законы тем самым мы получим выигрыш производительности при сборке за счёт

    00:09:02 - 00:10:42

  • использования кэша если мы вдруг положим эти строки выше то как только у нас Измени наш C файл у нас эти слои тут же потухает и докер заново делает все вот эти Фран команды то есть вот как по Best prac Мы самые тяжёлые и редко изменяемые слои двигаем выше а более часто изменяемые и как правило более лёгкие стараемся расположить ближе к концу Угу дадада Всё правильно кстати говоря в выводе LS нету кам коф но на это не обращаю внимания представим что он там есть Ага я честно даже пока ещё не смотрел Просто я пока вижу ещё несколько

    00:09:52 - 00:11:27

  • красных тряпок за которые цепляется глаз и Ну да Сначала с красных тряпок можно начать Да здесь всё здесь первое что хочется сделать это указать хотя бы мажорную версию Дена Ну хотя бы там ба или или что-нибудь или ещ лучше конечно более конкретно Но как правило довольно стабильный и нам важно указать Лиз сечас вышел следующий Суть в том что если мы просто пишем имя образа без тега он по умолчанию будет выкачивать м и если он не существует тот естт последний образ и скажем если у на вышел новый

    00:10:41 - 00:12:26

  • мажорный релиз то у нас будет скорее всего внутри и если там Ну в зависимости от того что у нас дальше в образе могут быть неожиданные проблемы То есть у нас получится что код нашего репозитория не поменялся А вот мыра и собрали его через погода назат об и это может привести вот к неожиданным ошибкам которые Бут сложно отладить неня в м дело правило когда что-то ломается мы смотрим на Дельту изменений если наме у нас был что Я обновил там на и у нас работало с имиджем ба И сломалась на и мы сразу пом дело в этом

    00:11:34 - 00:13:11

  • и будем копать хорошая Практика это указать хотя бы конкретный мажорный релиз с которым работает наш базовый образ Если же это базовый образ собранный внутри компании скажем у нас есть компании набор базовых образов то желательно использовать тоже конкретную версию этого образа потому что к выпускают это дистрибутива сделать какие-то справки и нас будет возможность быстро откатиться Если вдруг мы вот увеличили версию в теге оно сломалось и откатились обратно ну и плюс опять-таки при использовании

    00:12:24 - 00:14:01

  • кэше А ну ещё тут это уже касается рования конечном образ если мы задам названием когда ВИМ уже в Production менте запущенное приложение мы видим г latest Мы скорее всего не сможем ответить на вопрос Вообще что это за версия запущена Откуда она тут появилась если мы увидим там версию 1 2 3 или там видим что это 1 2 3 имя ветки snapshot то мы поймём Что ага Это скорее всего Вот кто-то чтото вот сделал то есть будет намного проще это отладить в общем да здесь угу вот Окей From так дальше тут у нас есть три слоя которые

    00:13:16 - 00:14:44

  • работают с пакетом менеджером АТ вот здесь ошибка в том что каждая инструкция R создаёт отдельный слой и файлы которые Ну изменение файло системе которые произошли в рамках слоя они уже записываются в образ и не изменяются соответственно получается ситу сде запи потом этот кэш прочищает в этом следующем слое то он конечно скажет что он в этом слое его прочистил но по факту они останутся в внутри этого образа Поэтому нам необходимо будет эти инструкции ран объединить в одну инструкцию и в вызывать следующим

    00:14:02 - 00:15:44

  • образом то есть мы в рамках одного слоя сделаем сечас остальное тоже поправим после этого ещ нужно будет сделать я так сходу не вспомню общем там есть что-то такое вот и ещё есть как правило можно с скажу там лист по памяти не отвечу общем давай давай для красоты я сейчас скину может добавить дадада спасибо а Clean я правильно написал а Ну на самом деле мне кажется для очистки кэша достаточно удалить Он Окей неважно Давай оставим идея с очисткой Дане в этом отношении вот мне нравится как это реализовано в ижах там мы можем

    00:15:00 - 00:16:38

  • при установки пакетов задать витуаль нет кроме мы ещё можем задать виртуальную группу для этих пакетов и потом в конце сделать АК вот этой группы то скажем вот мы собираем Python из исходников то есть базовый образ условно 10мб мы поставили там все компиляторы для сборки Панов получилось Там скажем 400 меб образ мы поставили Python из исходников то есть мы собрали положили и потом мы делаем в конце этого слоя а APK Remove этой группы и у нас на выходе получается образ там порядка там ну скажем 30 МБ собственно если мы

    00:16:06 - 00:17:35

  • пойдём в официальный дош Python на dockerhub для Alpine мы это Увидим как они это делают и вот меня очень-то порадовало так можно сделать Вот хорошо улучшаем дальше здесь у нас и ещё мы можем вот эти Ил команды объединить в одну и более того хорошо их писать каждую С новой строки для того чтобы при фиксации изменений скажем когда мы смотрим потом commit changes этого докер файла м кто-то добавил новый пакет Мы видим что тут у нас пришёл человек который у нас поставил нано что он там не любит ВИМ Вот и мы будем

    00:16:50 - 00:18:14

  • видеть что это пришёл там человек вот в такой-то день в таком-то порек это поменял Если же у нас всё это в одну строчку то у нас будет одна днища строка которую сложно считать и сложно понять Вот кто именно этот пакет добавил плюс иногда если это важно мы можем здесь указать версию пакета с которой он устанавливается я по памяти не напишу как это дела для АТ но я знаю что давай ну Давай напишем просто какой Ну не обязательно правильно Просто то что ты это сделал да Ну вот там Да например там C равно

    00:17:33 - 00:18:52

  • 2023 Ну ну да не обязательно супер правильно общем да какая-то версия Вот и тогда при повторной сборки этого докер иджа будут взяты те же версии пакетов что были в этом есть плюсы и минусы потому что в зависимости от дистрибутива скажем у нас де на считается стабильным дистрибутива и как правило Breaking changes там не возникает и там как правило можно не фиксировать версию пакета чтобы получать пач версии без ручного вмешательства Но если дистрибутив менее стабильный или есть риск что мы вот резко поменяем например

    00:18:12 - 00:19:35

  • базовый образ или там у нас есть привязка к конкретной версии пакета то очень важно его зафиксировать и тогда при без Ну прямого действия он не обновится на другую версию Если вдруг этот пакет не доступен при сборке мы увидим ошибку и будем там же принимать меры То есть это не пройдёт незаметно такая ситуация [музыка] у Да окей ещё можем сделать так хорошо смотрим дальше Т нут думаю вне всё угу так Ну смотри Наша задача теперь в принципе уменьшить размер образа так Ага Так всё я понял в чём речь вот здесь на стоит копи точка И

    00:18:53 - 00:20:28

  • в директории у нас нету файла Dock ignore вот do гр - это файл по аналогии с Gore который позволяет убрать из контекст сборки файла которые мы не считаем необходимыми для сборки образа это может привести например Python проект У нас есть локальное виртуальное окружение с кучей пакетов там на 1 гиб и если у нас будет копия всего в нашем текущем каталоге который является при docker Build контекстом корнем контекста вот ну это Поэтому в данном случае у нас здесь есть каталог src и сам то есть вот При таком подходе у нас и

    00:19:46 - 00:21:13

  • соно сам дофа и получится что мы целевой образ для того кто будет этим пользоваться то есть мы соль исходники приложения мы сом какой-то фа случайно оказался Да и собственно исходники файла подут туда это тоже плохая прак пере вместе во-первых как можно точнее перечислять Что именно мы копируем в образ Чтобы избежать неожиданности во-вторых использовать доке игнор чтобы крупные на само есть плюс допустим у нас есть вот большой Virtual environment и наличие его в контексте сборки очень сильно замедляет потому что докер

    00:20:34 - 00:21:56

  • начинает проверять весь контекст и замедляет сборка если у нас будет виртуальное окружение пайтона в игноре то тогда получится что э докер проигнорировать этот момент и сборка пойдёт быстрее можеш добавить пожалуйста в наш там вывод Ну не надо вот это вот все писать просто Файлик один доке ignore чтобы не забыть Угу супер А что ещё можем ещё сделать да для уменьшения образа для уменьшения образа Так ну исходя из того что что у нас тут есть ты уже называл это я понимаю что я назвал просто сейчас не могу

    00:21:19 - 00:23:04

  • зацепиться В каком направлении именно уменьшать образ Так ну име сейчас можем переписать копи на то что нам нужно нет добавили do ignore вот этот вот который весит 123 МБ мы исключили Да вот с файлами Окей допустим туда попадает только то что нам нужно Ну вот допустим там src и PDF просто или у нас с должен попасть СР - это наш там да код PDF да Тогда мы перепишем что мы срц копируем op Up или там в В общем там кто как Да это неважно Да здесь на самом деле есть нюансы с наличием концевых слешей Я

    00:22:16 - 00:24:07

  • честно сходу сейчас не скажу как правильно я обычно методом тыка То есть я на память честно не помню я просто обращаю на это внимание что тут есть тонкие моменты в каком случае скопие папка вот в этот путь в каком случае она скопие внутрь как под каталог В каком случае там скопируют содержимое этой папки то есть ну это не очень важно по-моему Так правильно вот возвращаемся к уменьшению Дада правильно понял да спасибо Вот Потом у нас тут вот этот файл он отсутствует в каталоге Ну как я сказал что обращать на это внимание он

    00:23:12 - 00:24:50

  • есть Ага Хорошо Да я тогда его допишу Да Допиши Ну просто там с каким-нибудь да да неважном Угу Так что ещё тут можно уменьшить тут Какая задача что мы берём Ну базовый образ ставим туда кладём туда конфиг и запускаем да А нужен ли нам вообще базовый образ дебина может быть можем поменять его ну мы можем можем взять меньше базовый образ можем взять базовый образ Alpine или или или хотя бы Slim версию Бена если нам не нужны другие больше пакеты Да ну идея в том что просто поменять образ Зачем нам de

    00:24:00 - 00:25:40

  • может быть може попробовать что-нибудь другое например 3 и переписать тогда вот это на АК Ну да но на самом деле не знаю Если хочешь можешь этим заняться но не обязательно понятно что ты а добавишь там Может напишешь Там и так далее Да в целом ничего не изменится вот Ну да Если вот мы так вот улучшили что мы убрали ненужные файлы мы поменяли базовый образ и добавили только то что нам нужно из там нескольких сотен мегабайт у нас превратилось там ну в 20 там меб ну в общем очень круто Ну в целом на самом

    00:24:58 - 00:26:16

  • деле всё возможно здесь ещё можно что-то уже улучшать но Давайте на этом виму брать Зачем он в докере Ну да здесь согласен здесь Баш надо убирать в таком случае вот я ещё польз случаем добавлю что не всегда Ай прям так во-первых при их установке ВС потянутся там компиляторы которые превратят образ вте есть нюанс с разными компилятора скажем в и в системах то есть получится скоре всего принимать внимание специфику приложения пре чем выбирать просто то есть нельзя просто безумно выбирать а потому что там ещё

    00:25:37 - 00:27:12

  • есть вот там с НМ особенности Я слышал Есть особенности с безопасностью то что не все пользуются всеми пакетами там жне их выявлять то есть в общем нету идеального дистрибутива он выбирается уже под конкретную ситуацию под инструмент у Да вот Ой давай тогда дальше пойм в принципе можешь перестать шарить экран здесь мы всё хорошо сделали угу Значит так немножко поговорим про кубернетес ты не писал что у тебя есть опыт но не знаю может быть какие-то общие вещи ты знаешь Ну вот такой знаешь общий вопрос по кубернетес вот что

    00:26:36 - 00:27:59

  • происходит при когда ты пишешь у себя Cub Create deployment Как можно подробнее можешь рассказать у Я сначала дам в контекст так как я работал с онп инфраструктурой в основном и своего ку Бернеса моих владениях никогда не было Я знаю про него только в теории то есть по что это система оркестрация для чего нужна система оркестрация то есть такие вещи я понимаю что когда происходит Ну вот я расскажу что я знаю про кубернетес все все обычно говорят что кубернетес - это Пять бинарник там три из которых запускаются на контроллер

    00:27:17 - 00:28:30

  • ноде там два на рабочем узле вот и что происходит когда запускается Я в деталях честно не отвечу но я я я знаю что в кубернетес так архитектурно устроено что все команды от скажем администратора все получают управляющий узел А дальше передают их на рабочий узел и все контейнеры запускаются только на рабочих узлах О'кей Ну давай тогда немножко упрости вопрос ты да говорил про бинарник Вот что за бинарник ты можешь их назвать знаешь так ну э на Корол п на дата плене Так ну Корол п - это который управляющий узел Угу

    00:27:53 - 00:29:26

  • воркеры воркеры Да вернее да да и и воркеры так ну на Control Plane находится API по взаимодействуют с кластером То есть у нас кубернетес единицей Ну вот окружение является кластер то есть вот мы работаем с кластером Вот и все команды от администратора получает как раз Control вот я помню что там есть etcd процесс который журнали ется естно не самый приоритетный про который рассказать конечно Просто первы которые я помню А в остальном я просто тогда по сути того что происходит то есть вот там есть

    00:28:43 - 00:30:09

  • процесс в который следит за тем какие есть рабочие доступные рабочие узлы сколько на них свободных ресурсов Ага есть планировщик который скажем когда приходит задание что-то развернуть он смотрит на каких рабочих узлах сколько есть доступных ресурсов и принимат решение на какой узел отправить задачу скорее всего элемент который следит за доступностью рабочих узлов доступностью их ресурсов Ну да за счёт того что я не работа практике Я даже название плохо так что то я Слыш новое название если я раз и им

    00:29:29 - 00:31:10

  • раз Уси через себя я с трудом это запоминаю да это нормально Ну в целом Да ну идея правильно что есть компоненты на ко плене которые занимаются планированием это sked есть а-сервис AP сервер который Как раз-таки принимает это такой Центрально звено Да есть контроллер менеджер который следит за ресурсами это такие как Ну знаешь ли ты ка как раз Какие ресурсы есть базовые базовые ресурсы но я предполагаю что это количество свободных ядер процесса Нет Нет я имею в виду ну например слышал что такое не в терминах Я не

    00:30:26 - 00:31:59

  • уверен что я знаю что это такое Ну да есть просто такие базовые абстракции деплой реплика поды и так далее Ну ладно если ты о них не знаешь то Ну да Пока не знаю но мне очень интересно с этим разобраться когда-нибудь Я надеюсь начнём с этим работать или с чем-то аналогичным угу Там ничего сложного именно такого супер сложного система очень комплексная из-за этого там очень много частей но части они в принципе в них разобраться не так сложно как мне кажется да Ну ладно я думаю с ку бернем Понятно опыта не очень много Ну

    00:31:15 - 00:32:33

  • ещё есть нардах у нас cbet Cu Proxy которая cbet он запускает контейнеры Cu Proxy отвечает за сеть вот всё это общается все вот эти вот м компоненты общаются через IP друг с другом vcd хранятся Как раз-таки записи о созданных манифестах созданных ресурсах их статусы и так далее Кстати я правильно понимаю что информация про пять бинарник устарело их теперь шесть Ну мм там сечас уже на Ну просто не ну как понимаешь здесь ВС сложнее может быть он на самом деле может быть распределённый он может быть

    00:31:55 - 00:33:17

  • он не обязан находиться на даже наверно и не нужно по-хорошему выделять их в отдельную Понятно Вот будет такой квиз в принципе вопросы короткие по в целом по облакам алу и промис вот ну давай значит по блокам В чём разница между и па и сас так это infrastructure в данном случае мы предоставляем в качестве сервиса виртуальной машины то есть там клиенту неважно знать откуда они появились Он просто говорит что я хочу столько-то виртуальных машин в таких-то регионах с такими-то ресурсами И предоставляет эти

    00:32:41 - 00:34:16

  • виртуальные машины для пользования это пфс это уже скорее на сотовом уровне то есть там Клиент не не занимается сейчас то есть приложение которое работает скажем есть какой-нибудь который там ариу польва есть какой-то который используется для для сбора логов есть какой-то сервис для очередей то есть вот э ну скажем вот сервису нужен фредис и и владельцы сервиса они его не сами поднимают они пользуются редисом которые им предоставляет платформа или там суд То есть просто есть Connection СН они к

    00:33:33 - 00:34:55

  • нему подключаются А администрировать всё это дело другая Команда А что там было третье SAS это софт за сервис Ага ну я уже перемешал нему Сас и пас что я говорю скоре са пото что мы скажем база данных Это са же правильно то Так подождите ЧМ тут отличие А может быть это как вот лямда когда мы запускаем нума том где он запускается и как онни ково АСТ Мы уходим как можно дальше от вообще думать о инфраструктуре то есть иас это мы нам нам Мы забываем о железных серверах но самом виртуальной машине Да

    00:34:14 - 00:35:53

  • мы думаем Мы администрировать её не сами но управлением то есть там ну всё равно есть вещи которые мы за отвечаем А ну пользуемся ну скажем кадь Облачный там TAS или чтото такое ну от слова софт то есть программа программа как то есть сервис просто там почта и так далее получается что скажем там сервис очереди это компонент этого софт который скажем используют татре Облачный то есть или там локальный Да я понял А в случае СС мы уже не думаем что внутри этого приложения мы просто им пользуемся Да и или как бывает вот са

    00:35:08 - 00:36:42

  • даже в рабочее пространство когда люди там по rdb цепляются к какой-то там машине и с ней работают То есть у них даже не с компьютера а просто уже готовая машина там Угу Да окей давай про поговорим вот в где можно указывать переменные там довольно много мест где можно основные Назови Я знаю много да дадада Ну первое обычно что приходит на ум это инвентори Но это то место куда по Best practices их класть не нужно Ну не будем по бе пракса просто Где где можно их можно класть внутри инвентори файла

    00:36:06 - 00:37:33

  • причём как в и синтаксис так и в я можно класть в Гру можно класть в можно вро и в можно класть просто в любой фай ить его используя директиву Так что е можно читать из окружения можно передавать из командной строки [музыка] используя хорошо вот зачем нужны теги н теги нужны для того чтобы управлять э запуск управлять плейбук и при необходимости э сужать э ээ набор задач которые запускаются в этом плейбук то есть там скажем если у нас там есть там 10 ролей Ко и вот и у нас есть PlayBook Аля вот я хочу

    00:36:49 - 00:38:58

  • настроить наен аен ситуаци что мы хотим обновить какую-то систему одну из этих де только одну роль применив можем на эту роль повесить Г И тогда при запуске с этим тегом будут выполнены задачи только из этой в разных ролях просто в конкретной тас нас нам нужно обновить все ба скрипты например не зависи от того какая роль там вот тоже можно сделать плюс есть универсальный г Always который позволяет исправить проблему ког нам запустить какую-то роль но нужно какие-то предварительные шаги чтобы роль

    00:37:58 - 00:39:20

  • заработала какие-то переменные проверить например входные и мы можем в ПБУ добавить скажем идас пом запу с тегом Always Угу Или наве В общем я понял что он есть я точно не вспомню как я его конфигурирован помогает в работе Угу А есть противоположный Always э наверное не но я его не писал Я просто запускал No Tex когда мы хотим какой-то тек исключить из запуска Ну да не вот насколько я помню просто уже давно не пользуюсь но Мне кажется я не ошибаюсь что есть Так тег Never который Если ты не укажешь то есть ты пишешь Never и ещё

    00:38:46 - 00:40:25

  • один тег какой-нибудь и если Ты запускаешь ПБК без тегов то он не прогони но ты можешь его только явно запустить Здорово это может быть полезно в каких-то ситуациях когда хочется вот окей да с тегами Всё ясно Смотри Вот у нас у нас есть лейбу да мы можем там описывать какие-то действия и так далее Зачем вообще появились роли в таком случае мы же в ПБУ Можем всё тоже самое сделать роли нужны для пере переиспользование кодовой базы в разных ПБУ то есть скажем если у нас есть леб ну к примеру который

    00:39:35 - 00:41:02

  • устанавливает Engine X и там добавляет виртуальные Хосты там с онми параметрами вот так как установка nginx состоит из скольки-то шагов чтобы не копировать эти таски из лейбу в ПБК из рери в репозиторий мы можем использовать роль для того чтобы абстрагироваться то есть добавить абстракцию и вызывать конкретно только этот эту роль и поск бывает что у нас в ПБУ может даже не быть раздела TAS может быть только вызов ролей и получится что ПБУ выполняет там из вот этих вот кубиков все необходимые действия плюс так как ПБУ можно

    00:40:17 - 00:41:59

  • настраивать за счёт переменных которые мы определяем на уровне ПБУ там групп или где-то ещё там И тем самым даже ПБУ Ну в роли написаны там одним могут решаться зада плюс роли могут в себе содержать разную логику для разных платформ то есть там для семейство Linux для frad семейство может быть даже для ма там то есть в зависимости от ситуации можно реализовать разную логику И это всё будет внутри роли Мы просто будем этим пользоваться считать как сервисом Угу Окей хорошо Давай дальше пойдём И последнее о чём мы поговорим сегодня это

    00:41:10 - 00:42:34

  • о мониторинге конкретно про про Вот ты можешь мне рассказать Верхне уровне Как работает про его можно сказать архитектуру так ну в просе есть сам про север который стартует с его конфигом который описан в формате в нём прописано С каких таргеториум ходит к экспортерам и забирает метри то есть сказано Какие таргеты проходит какими нехо учётными данными вот также на НМ описаны правила для срабатывания алертов Ну в конфигах описа также есть отдельно амер который получает информацию о том что возник Ар

    00:41:50 - 00:43:24

  • и обрабатывает и при необходимости отправляет в один из источников ИО электронная почта позво занимается Вот всей вот этой обработкой Ар следит за тем что Ар Он всё ещё актуален или он уже не актуален та при необходимости отсылает уведомление о том что Ар закрылся вот Окей Ты назвал такое слово экспортер экспортер это демон который на указанном веб-ресурс отдаёт в текстовом виде метрики в формате прометеус при этом его реализация может быть какой угодно это может быть хоть Баш скрипт который Угу Или netcad который

    00:42:43 - 00:44:36

  • выкидывает какие-то данные А зачем нужны экспортёры Ну вот смотри какие-то ресурсы отдают метрики то есть а экспортёры для чего они в таком случае экспортёры - это Ну это Ну то есть это наверное приложения такие которые ходят и собирают метрики у тех ресурсов и приложений которые сами не отдают правильно Ну как наме если у нас есть Java приложение или какое-то там сторонней написанно на Java сервис условно какой-нибудь TAS написаны на Джаве его задача работать но сам по себе он может не отдавать

    00:43:41 - 00:45:13

  • метрики в формате но может быть в виде плагина либо отдельного сервиса эрте который будет извлекать из Java все необходимые метрики формировать их и в текстовом виде отдавать в том формате чтобы прос мог прийти и их получить либо бывают ситуации когда у нас скажем нету интеграции с каким-то нет подходящего готового просто какой-то редкий процесс можем использовать скажем Это для тоже сбора метрик поговорим да Зачем он нужен вообще как он работает Дан в себе аккумулирует ри которы некуда потом приходит в него как в

    00:44:28 - 00:46:08

  • обыч забирает Ну вот например у нас есть скажем контроллер и нам хочется мониторить что у нас в просе и в фане там был график сколько у нас билдов в очереди вот и один из вариантов как это можно сделать можно написать которая будет через получать данные о том Каю величину у нас потом при помои htp запроса посылать Push G и ээ в текстовом формате нашу метрику там дрова будут запускаться условно там раз в 30 секунд и Отдавать вот э метрику пуги и прометеус уже То есть это по сути инкапсуляция и абстракция в деле

    00:45:28 - 00:47:00

  • промис Неважно кто и как Откуда эти метрики туда поставляют он просто их забирает и дальше с ними работает и в Push gway тоже это такой инструмент для адаптации вещей которые не умеют сами делать полноценный экспорте Ну и ещ Можно например там следить со состоянием жёстких дисков там живой или массив то есть скажем крону на гипервизор запускается то есть там в гипервизор который там вообще имеет очень узкий набор приложений которы него запу за даже видим чтов ЕС он вдг Ар и прислать команду администраторов которые этим

    00:46:15 - 00:47:57

  • займутся да А какие виды метрик Ты знаешь там есть Метрика счёт всех аккумулирует считает и потом уже кстати вот в этом ограничение он не умеет в Counter то есть на счёт ограничения также есть Метрика А ну и особенность счётчиков в том что считается что его значение монотонно растёт то есть оно не бывает отрицатель что целочисленное число лое положительное число бывает ри гау и как это правильно читается по-английски то есть это индикатор То есть он может иметь разные значения там оно может расти оно

    00:47:11 - 00:48:49

  • может уменьшаться скажем скажем загруженность ядер центрального процессора это будет гаш потому что он меняется и мы там уже какого титри можем по-разному есть ещё я сходу не назову Если ещё какие-то метри Ну я тебе подскажу Да ещё есть одна такая основная важная называется гистограмма Ага помнишь я может быть с ней напрямую не работал ну или не смотрел Что тип данных чем и Counter Он позволяет собирать значения и раскладывать по батам то есть мы мы создаём какое-то количество баке тов например смотри мы

    00:48:07 - 00:49:50

  • будем измерять с тобой задержку нашего приложения и мы создаём несколько баке тов что меньше 0,2 секунд То есть 200 миллисекунд Меньше 400 миллисекунд меньше 6 800 меньше о секунды и больше о секунды и таким образом мы можем как раз-таки создать некую гистограмму и Например у нас прилетает первый запрос и он проходит там за 0,1 То есть за 100 миллисекунд и все бакеты они увеличатся на на единицу затем у нас приходят медленный Запрос какой-нибудь который 0,7 секунд и у нас увеличивается только Бакет который меньше 8 мсн меньше 1

    00:49:08 - 00:50:33

  • секунды и больше секунды таким образом при большом количестве вот этого запроса мы можем сколько запросов было радение распределение да можем увидеть вот для чего это используется довольно полез вот ещ ещё появился са но я его никогда не использовал это Это что-то типа гистограммы но там как в документации написано более больше места требуется поэтому бы особом говорить будем Ты знаешь как это называется долгосрочного хранения Рик в проу То есть проу он не очень хорош для долгосрочного хранения Да он вообще Для

    00:49:51 - 00:51:16

  • этого Изначально и не познаешь то есть вот если работать с промити усом только без храни метрик то обычно считается что вот они там скажем сколько-то времени у нас живут А дальше мы их уже теряем и не пользуемся существует система хранения тамм как я знаю есть ещё другие Я просто с этим е Мне кажется тоже с этим связана Ну да конечно я просто сам это не настраивал ни разу я либо пользовался готовым как сервис либо вот когда вот бы поднимал всё с нуля и я пользовался штатным хранилищем не стоял вопрос мониторинга

    00:50:35 - 00:52:02

  • больше чем о неделя сжи Ека мо хранить метрики там это по-моему ну не подходит Да по-моему нет Да больше дженки хранит вс там infex Victoria matx и ещ Я кстати говоря все подыл самая топовая Ну да ещ есть Ну этим я не пользовался Но вот до этого Да ну у меня всё у меня больше вопросов нету поэтому спасибо очень хорошо справился в всё что ты знал ты хорошо рассказал возможно чуть больше чем нужно в детали но возможно мои вопросы были более такие расплывчатые поэтому Да ты говорил взял бы его на работу не я бы его взял бы точно на

    00:51:18 - 00:53:20

  • работу к с опытом Я думаю разберётся с кубернетес Тоже легко

    00:52:31 - 00:52:43

Менторы

Специалисты своей области, которые смогут помочь вам

  • Нигма Нурия
    Нигма Нурия

    Middle .Net Developer

  • Сущенко Татьяна
    Сущенко Татьяна

    Senior Product Manager

  • Гудков Денис
    Гудков Денис

    Middle Python Developer

  • Курочкин Константин
    Курочкин Константин

    Ведущий программист

  • Гудман Макс
    Гудман Макс

    Backend Software Engineer (PHP)

  • Гребенкин Антон
    Гребенкин Антон

    Senior .NET/C# developer

  • Ахназаров Фёдор
    Ахназаров Фёдор

    Middle DevOps Engineer | Tbilisi, Georgia

  • Шорохов Дмитрий
    Шорохов Дмитрий

    Middle C# .NET

  • Жуков Александр
    Жуков Александр

    Senior PHP-разработчик

  • Мазикин Павел
    Мазикин Павел

    Middle python developer

© 2024 HireGuru. Сделано в Санкт-Петербурге с hireguru.ru