Linux🐧
October 16

20 лайфхаков для DevOps-инженеров

Джейк Пейдж

Хитрости, хаки, коммерческие тайны, шпаргалки, лучшие практики, называйте их как хотите. Они есть в каждой отрасли, и любой, кто остается в ней достаточно долго, создает арсенал техник и тонко настроенных инструментов, чтобы преуспеть в своей работе.

Для освоения некоторых вещей просто требуется время. Мой отец, строитель на пенсии, мог облицевать плиткой ванную комнату среднего размера менее чем за три часа, в то время как мне потребовался бы целый день, чтобы только зачистить швы. Опыт является ключом к определенным навыкам, но есть и советы, для приобретения которых не требуются годы практики.

DevOps ничем не отличается. Не существует коротких путей к тому, чтобы стать первоклассным специалистом в области DevOps, приложите годы и вы, возможно, просто достигнете цели. Сказав это, есть несколько хитростей, лайфхаков и полезных инструментов, которые обязательно дадут вам мгновенный прирост производительности.

Вот мой неполный список лайфхаков, которые гарантированно облегчат жизнь любому DevOps-инженеру.

Список разбит на:

  • Инструменты 🧰
  • Навыки 🤸
  • Привычки 🔁
  • Скрипты, конфиги и расширения 💻

Инструменты: 🧰

Знаете ли вы, что если вы действительно хотите привлечь чье-то внимание в Германии, отправка факса - ваш лучший выбор?
Кроме того, в Японии вплоть до этого года дискеты все еще использовались государственными учреждениями.

Знание того, в каком контексте вы находитесь, важно для выбора лучших инструментов для работы. Тем не менее, важно не зацикливаться на том, чтобы иметь лучший, самый новый или самый блестящий инструмент на рынке. Следующие инструменты могут стать реальными изменениями для инженеров DevOps.

«Вам не нужно быть самым острым инструментом в сарае, чтобы использовать самые острые инструменты в сарае» — Аноним (возможно, я это выдумал)

1. К9s

K9s — это терминальный пользовательский интерфейс для взаимодействия с кластерами Kubernetes. Чтобы привыкнуть к навигации, наблюдению и управлению работающими приложениями с помощью этого инструмента, требуется совсем немного времени. И как только вы это сделаете, вы, возможно, никогда не вернетесь назад. K9s постоянно отслеживает изменения в Kubernetes и предлагает множество полезных команд для взаимодействия с наблюдаемыми ресурсами.

Ссылка для установки.

2. TMUX

TMUX — это мощный терминальный мультиплексор, который повышает производительность, обеспечивая сохранение сеансов, управление окнами и стеклами, а также настройку с помощью привязок клавиш и конфигурационных файлов. Он поддерживает сценарии для автоматизации, облегчает совместную работу с общими сессиями и хорошо интегрируется с различными оболочками и инструментами.

3. Glasskube

Glasskube — это менеджер пакетов с открытым исходным кодом для Kubernetes. Это делает развертывание, обновление и настройку пакетов в Kubernetes в 20 раз быстрее, чем такие инструменты, как Helm или Kustomize. Вдохновлен простотой Homebrew и npm. Вы можете решить, хотите ли вы использовать пользовательский интерфейс Glasskube, интерфейс командной строки или напрямую развертывать пакеты через GitOps.

Хотите поддержать нас?

Просто подпишитесь на наш канал ТГ и получайте эксклюзивную информацию о нодах и технологиях web3 и не только, раньше всех! Вокруг Крипты и Youtube👍

4. Riggrep

Riggrep — это мощный инструмент поиска, известный своей скоростью, гибкостью и удобством вывода. Он быстро обрабатывает большие кодовые базы с помощью передовых алгоритмов, поддерживает широкий спектр шаблонов поиска и представляет четкие, выделенные результаты. Riggrep хорошо интегрируется с другими инструментами, является кроссплатформенным и настраиваемым.

5. Контейнеры Firefox для доступа к нескольким облачным аккаунтам

Firefox Multi-Account Containers — это такое недооцененное расширение для браузера из-за его полезности. Он помогает управлять онлайн-активностью, разделяя веб-сайты на разные контейнеры или вкладки, предотвращая отслеживание сеансов на разных сайтах. Его наиболее полезной функцией является то, что он позволяет пользователям одновременно входить в несколько учетных записей в одном браузере. Изолируя сеансы с помощью разделения файлов cookie, он защищает персональные данные и улучшает общее впечатление от просмотра. У вас несколько аккаунтов AWS? Не проблема, вы можете войти во все из них из одного окна браузера.

6. VPA

Vertical Pod Autoscaler (VPA) освобождает пользователей от необходимости настраивать актуальные лимиты ресурсов и запросы для контейнеров в их подах. После настройки он будет автоматически устанавливать запросы на основе использования, а затем разрешать правильное планирование узлов, чтобы соответствующие объемы ресурсов были доступны для каждого пода.

Установите его здесь.

Пример конфигурации:

apiVersion: autoscaling.k8s.io/v1kind: 
VerticalPodAutoscalermetadata:  name: my-app-vpaspec:  targetRef:    
apiVersion: "apps/v1"    kind:       Deployment    name:       my-app  updatePolicy:   
updateMode: "Auto"

7. Kctx и Kubens

Это самый полезный инструмент CLI для переключения контекста Kubernetes и пространства имен.

Установите его здесь

8. ChatGPT для руководства

Используйте ChatGPT так, как если бы это был старший член вашей команды, который никогда не занят и всегда рад ответить на все ваши вопросы. Убедитесь, что ваше намерение заключается в более глубоком понимании, а не в слепом решении задач.

Предложите ChatGPT быть старшим членом команды с помощью такого запроса:

Вы выступите в роли старшего инженера DevOps, чтобы предоставить лайфхаки и советы о том, как преуспеть в области DevOps. Вы также будете готовы помочь младшим членам команды с любыми вопросами, которые могут у них возникнуть. Пожалуйста, включите практические советы, рекомендуемые инструменты и рекомендации по управлению инфраструктурой и конвейерами непрерывной интеграции/непрерывного развертывания (CI/CD). Напишите результат, используя мой стиль общения, который должен быть четким, кратким и практичным. Вот примеры моего стиля общения:
  • «Сосредоточьтесь на автоматизации повторяющихся задач, чтобы сэкономить время и уменьшить количество ошибок».
  • «Используйте такие инструменты, как Docker и Kubernetes, для контейнеризации и оркестрации».
  • «Всегда следите за производительностью системы и проявляйте инициативу в выявлении потенциальных проблем».
  • «При наставничестве младших сотрудников будьте терпеливы и объясняйте концепции простыми словами».

Вот несколько вопросов, которые вы можете задать ChatGPT для дальнейшей настройки подсказки:

  1. Вы хотите, чтобы советы и объяснения были больше ориентированы на новичков или тех, у кого есть некоторый опыт в DevOps?
  2. Не могли бы вы привести более подробные примеры вашего стиля общения, особенно в сценариях, где вы объясняете сложные концепции джуниорам?
  3. Есть ли какие-то конкретные проблемы или области внимания в DevOps (например, автоматизация, мониторинг, безопасность), которые вы хотели бы отдать в приоритетном порядке для консультаций и поддержки младших сотрудников?

Навыки: 🤸

Неудивительно, что навыки не могут быть усвоены мгновенно, они требуют времени и усилий. В постоянно развивающемся мире технологий определить, какие навыки следует развивать, может быть непросто. Однако, будучи инженерами DevOps, вы не ошибетесь, освоив написание сценариев и расставив приоритеты в документации.

«Развивайте свои навыки, а не резюме» — Шерил Сэндберг

9. Написание сценариев

Написание сценариев — это как швейцарский армейский нож для инженеров DevOps, потому что он автоматизирует повторяющиеся задачи, обеспечивает необходимый связующий звено между процессами и обеспечивает согласованность между средами. Изучение и практика работы со сценариями включает в себя ознакомление с такими инструментами, как файлы Makefile, регулярные выражения (регулярные выражения) для эффективной обработки текста и сценарии Bash для мощных операций командной строки.

Не думайте, что вам нужно осваивать скрипты, прежде чем внедрять их на работе. Ищите ручные шаги в текущих процессах поставки программного обеспечения или инфраструктуры и пытайтесь использовать разумные сценарии автоматизации. При необходимости обратитесь за помощью к магистру права.

10. Документация

Запишите все. Это лучший способ позаботиться о своем будущем себе.

Попробуйте несколько решений для ведения заметок, вот некоторые из них:

Не имеет значения, какой из них вы выберете, если вы выберете только один и будете придерживаться его.

🤔 Не попадайтесь в ловушку, тратя слишком много времени на организацию и оптимизацию своих заметок. Заметки не обязательно должны быть идеальными, только функциональными. Тратить слишком много времени на обслуживание заметок — это .meta-work

Привычки: 🔁

Вы никогда не продвинетесь далеко, если будете полагаться исключительно на чистую мотивацию для достижения цели и совершенствования. Четко определенные и последовательные привычки — это клей, который помогает вам расти и быть эффективным, даже когда ваша мотивация ослабевает. Привычки органично интегрируют инструменты и навыки, гарантируя, что вы будете эффективно выполнять свою работу.

«Мотивация — это то, с чего вы начинаете. Привычки — это то, что заставляет вас двигаться вперед». — Джим Рюн

11. Не пишите списки дел, не блокируйте время.

На меня сильно повлияли статьи Кэла Ньюпорта о «Глубокой работе», и я вполне убежден, что усилия по сохранению определенного количества времени в неделю, посвященного непрерывной глубокой работе, имеют решающее значение для человека, который хочет внести значимый вклад в команду.

Списки дел сами по себе являются просто списками желаний. Как только вы нанесете их на календарь, у вас появится план.

Важно отметить, что я знаю очень мало людей, которые выполняют свои планы со 100% точностью каждый день недели. Используйте их как путеводные звезды, планируйте время отдыха, когда вам это нужно. Обновляйте список даже в течение дня. Но, по крайней мере, придерживайтесь плана.

12. Взаимные блоки встреч

Если вы не являетесь своим собственным начальником, вы, скорее всего, не на 100% отвечаете за встречи и обязательства, в которых вам, возможно, придется участвовать. Взаимные блокировки встреч — это способ противодействовать неожиданным временным обязательствам, которые просто появляются в вашем календаре.
Идея заключается в том, чтобы резервировать эквивалентный глубокий рабочий блок каждый раз, когда в ваш календарь добавляется новая встреча. Таким образом, вы можете оставаться гибкими и относительно доступными, не жертвуя своей еженедельной квотой на глубокую работу.

13. Возьмите за правило выключения

Особенно полезно, если вы работаете удаленно. Процедура отключения — это серия вопросов и шагов, которые вы выполняете, чтобы завершить свой рабочий день. В идеале, как только вы заполните контрольный список, вы должны иметь возможность забыть о своей работе до следующего дня.

Я отслеживаю следующее:

  • Занимался ли я спортом?
  • Справился ли я со всеми различными задачами, которые у меня были?
  • Веду ли я какие-либо открытые разговоры?
  • Нужно ли мне переносить какие-либо задачи на следующий день?
  • Написал ли я запись в дневнике? (не связано с работой, но мне нравится делать это до того, как я уйду из-за стола)
  • Сколько глубоких часов я провел?
  • Проверил ли я отслеживаемые метрики в последний раз перед тем, как закрыть ноутбук на день?

14. Делайте заметки во время совещаний

Делать заметки во время совещаний и делиться ими после них в идеале должно быть обычной практикой в вашей организации. Если это не так, то это прекрасная возможность для вас. Это не только гарантирует, что ни одна важная деталь не ускользнет от ваших пальцев, но и предоставляет отличный сервис вашей команде.

15. Перебои в работе тестового прогона

Сбои в работе тестовых запусков необходимы инженерам DevOps, чтобы подготовиться к реальным инцидентам. Вы должны точно знать, как быстро и эффективно подключиться к своим кластерам или виртуальным машинам, прежде чем неожиданное оповещение в 1 час ночи, например, вы не сможете быть застигнуты врасплох.

Ознакомьтесь с перемещением файлов, извлечением журналов контейнеров и другими критически важными задачами. Заблаговременная настройка ключей SSH, kubeconfigs и других инструментов доступа сэкономит драгоценное время и снизит стресс во время фактических сбоев. Упреждающее тестирование и оптимизация этих процессов гарантируют, что вы будете готовы эффективно реагировать на любые сбои.

Скрипты, конфиги и расширения: 💻

Если вам приходится делать что-то более одного раза, автоматизируйте это. Зачем записывать полную команду, если можно сэкономить время, используя псевдоним? За долгую карьеру может быть трудно точно подсчитать, сколько времени сэкономлено, если ввести «k» вместо «kubectl». Одно можно сказать наверняка: это много, и оно того стоит.

«Вы либо тот, кто создает автоматизацию, либо вы автоматизируете», — Том Престон-Вернер

16. Используйте полезные псевдонимы

Не тратьте время на ввод полных команд, которые вы пишете каждый день.

Вот небольшой фрагмент нескольких моих настроенных псевдонимов:

k=kubectlkctx='kubectl ctx'kgp='kubectl get pods'kns='kubectl ns'l='ls -lah'la='ls -lAh'll='ls -lh'ls='ls -G'lsa='ls -lah'md='mkdir -p'rd=rmdirrun-help=man

17. Эффективная очистка завершенных работ с помощью контроллера TTL

Вы можете указать срок жизни готовых заданий или модулей pod перед их автоматическим удалением, задав поле. Если вы работаете в тяжелой среде, готовые задания могут быстро накапливаться и стать довольно ресурсоемкими..spec.ttlSecondsAfterFinished

Пример конфигурации:

apiVersion: batch/v1kind: Jobmetadata:  name: test-ttl-jobspec:  ttlSecondsAfterFinished: 100  ...

18. Git-скрипт для синхронизации с апстримом

git remote add upstream <upstream-url>git fetch upstreamgit rebase upstream/maingit push --force-with-lease

19. Kubectl автокомплектация

Автозаполнение Kubectl позволяет создать псевдоним для kubectl. Эта функция экономит время за счет уменьшения потребности в шпаргалках и особенно полезна для управления кластерами Kubernetes. Он также рекомендуется для сдачи экзамена CKA из-за его эффективности по времени.

Настройка для Linux:

# install bash-completionsudo apt-get install bash-completion
# Add the completion script to your .bashrc fileecho 'source <(kubectl completion bash)' >>~/.bashrc# Apply changessource ~/.bashrc

Ознакомьтесь с другими способами установки здесь.

20. Visual Studio Code Remote — SSH

Расширение Remote — SSH позволяет использовать для разработки любой удаленный компьютер с поддержкой SSH, что упрощает разработку на той же ОС, на которой выполняется развертывание, использование мощного оборудования, переключение между средами и удаленную отладку приложений.

Установите его здесь.

Заключение

Не существует волшебной формулы для того, чтобы стать 1% лучших инженеров DevOps. Как и в большинстве профессий, это вопрос времени, преданности делу и опыта, которые постепенно сформируют из вас высокоэффективного профессионала. Со временем вы научитесь гораздо лучше распознавать закономерности, вспоминать прошлые ситуации и находить быстрые решения повторяющихся проблем. Так что не ждите, что какой-то один лайфхак из этого списка мгновенно принесет вам повышение на 50% и продвижение по службе.

Тем не менее, если вы постоянно сосредотачиваетесь на совершенствовании своих инструментов, оттачиваете свои навыки, отказываетесь от хороших привычек и внедряете умную автоматизацию, вы будете на пути к быстрому развитию и преодолению своего нынешнего «я». И кто знает, может быть, это продвижение уже не за горами.

Спасибо за прочтение! Пожалуйста, поделитесь своим отзывом в комментариях и подпишитесь на меня в социальных сетях, если вам понравилась статья. Я также создал сообщество Telegram, где мы можем собираться и обсуждать интересные темы, связанные с криптовалютой. Вы можете присоединиться к нам и принять участие в обсуждении → Telegram: Contact @razgules