DevOps Star (Звезда Девопса)
2.16K subscribers
270 photos
211 videos
19 files
327 links
Devops, Linux, SRE, Kubernetes, Сисадмин, Девопс, Python, JS, Java, Git, IT канал, программирование, безопасность, ИТ, Sysadmin

По всем вопросам @evgenycarter
Download Telegram
Media is too big
VIEW IN TELEGRAM
Docker с 0 до 100%. Всё, что нужно знать.

00:00:00 Intro
00:01:35 Основы Docker.
00:19:30 Установка Docker в Linux и Windows.
00:25:40 Основные команды.
00:54:55 Управление портами: Port Mapping.
01:08:55 Переменные в Docker: Environment Variables.
01:20:20 Постоянные данные: Docker Volumes.
01:48:41 Сети в Docker. Network.
02:30:11 Создание своих контейнеров. Dockerfile.
03:40:59 Docker Compose. Применение.
04:32:28 Portainer – Web UI для управления Docker.

источник

👉 @devops_star
🔥61
Руководство по обнаружению сервисов с помощью Prometheus Operator - как использовать Pod Monitor, Service Monitor и Scrape Config.

Prometheus Operator - это популярный инструмент для управления и развертывания Prometheus и связанных с ним компонентов мониторинга в Kubernetes. Чтобы создать эффективную стратегию мониторинга с его помощью, нам нужно знать основы, например, как обнаруживать сервисы. В настоящее время это можно сделать с помощью Pod Monitor, Service Monitor и новой функции Scrape Config CRD.

https://medium.com/@helia.barroso/a-guide-to-service-discovery-with-prometheus-operator-how-to-use-pod-monitor-service-monitor-6a7e4e27b303

👉 @devops_star
👍1
В Ansible роли есть директории vars и default. Что они содержат и чем отличаются?

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

command line values (for example, -u my_user, these are not variables)
role defaults (defined in role/defaults/main.yml)
inventory file or script group vars
inventory group_vars/all
playbook group_vars/all
inventory group_vars/*
playbook group_vars/*
inventory file or script host vars
inventory host_vars/*
playbook host_vars/*
host facts / cached set_facts
play vars
play vars_prompt
play vars_files
role vars (определяемые в role/vars/main.yml)
block vars (только для задач в block)
task vars (только для задач)
include_vars
set_facts / registered vars
role (и include_role) params
include params
extra vars (например, -e "user=my_user") (всегда приоритетнее)

Соответственно, переменные в vars будут приорететнее, чем в defaults.

👉 @devops_star
👍3
🇷🇺 100% российская разработка

INFRAX — платформа all-in-one для управления ИТ-инфраструктурой:

Мониторинг инфраструктуры (ITOM)
Удаленный доступ для сотрудников и привилегированных пользователей
Обработка заявок пользователей (ServiceDesk)
База знаний с разграничением доступа к категориям (публичные и закрытые)
Автоматизация (скрипты и планировщик)
Контроль привилегированных пользователей. Видеозапись сессий RDP/SSH/VNC. (PAM)
Управление доступами. Доступ ко всем корпоративным сервисам через одну учетку (IAM)

БЕСПЛАТНО до 100 пользователей! 🎁

👉 Попробовать INFRAX

Реклама. ООО «АУДИТ-ТЕЛЕКОМ», ОГРН 1167746696776, erid: 2Vtzqv8Ag74
Архитектурные паттерны: Circuit-Breaker

Что такое « Circuit Breaker»?
В мире распределенных систем вероятность того, что компоненты выйдут из строя или перестанут реагировать на запросы, выше по сравнению с монолитными системами. Учитывая взаимозависимость микросервисов или модулей в распределенной системе, отказ одного компонента может привести к каскадным сбоям во всей системе, потенциально вызывая сбой или остановку всей системы. Поэтому устойчивость - способность системы справляться со сбоями и восстанавливаться после них - становится критически важной в распределенных средах.

https://lab.scub.net/architecture-patterns-the-circuit-breaker-8f79280771f1

👉 @devops_star
👍1
Что такое Trunk-based development?

Trunk-based Development (TBD) — модель ветвления, в которой разработчики совместно работают над кодом в одной ветви, называемой "стволом" (trunk). При этом другие ветви имеют короткий срок жизни благодаря использованию документированных методов.

👉 @devops_star
👍1
Профилирование: Flame Chart vs. Flame Graph

Flame charts и Flame graphs - это методы визуализации данных профилирования. Для многих инженеров-программистов они являются первыми визуализациями, с которыми мы сталкиваемся, когда начинаем работать над производительностью. Если вы, как и я, являетесь инженером фронтенда, то, скорее всего, диаграмма Flame - это то, с чем вы знакомы больше всего. Хотя диаграммы Flame и графики Flame выглядят и звучат похоже, это не одно и то же.

https://medium.com/performance-engineering-for-the-ordinary-barbie/profiling-flame-chart-vs-flame-graph-7b212ddf3a83

👉 @devops_star
1👍1
Что такое Docker? В чем отличие контейнера от образа?

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

Образ — шаблон приложения, который содержит слои файловой системы в режиме "только-чтение".

Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме "только чтение" содержит верхний слой в режиме "чтение-запись".

👉 @devops_star
👍31
Чем отличается StatefulSet от Deployment?

Deployment — ресурс Kubernetes предназнваенный для развертывания приложения без сохранения состояния. При использовании PVC все реплики будут использовать один и тот же том, и ни один из них не будет иметь собственного состояния.

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

👉 @devops_star
👍42
Что ты такое, dhclient?

Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.

Чтобы лишний раз не дёргать ядро прерываниями, придумали DMA — Direct Memory Access. Это когда трафик пишется напрямую в память, откуда он считывается приложением в обход ядра. И это дало жизнь классу софта с режимом работы kernel bypass. Например, при DPDK (Intel Data Plane Development Kit) сетевая карта целиком передаётся в userspace, а ядро даже не подозревает о её существовании.

Потом был BPF. А ещё потом усилиями Алексея Старовойтова и компании миру была показана eBPF — штука, умеющая делать прокол в ядро и инжектировать туда микроскопические виртуальные машины с кодом, которые могут в обход всего и вся взаимодействовать с системными событиями, и в том числе с трафиком. Супербыстро и оптимально (на фоне стандартного стека, конечно же). А это в свою очередь дало возможность использовать XDP для ускорения обработки трафика.

Но даже помимо хаков работы с ядром есть такие штуки, как sk_buff, в которой хранятся метаданные всех миллионов протоколов (в большинстве случаев они вообще не нужны: тащим с собой легаси). Есть NAPI (New API), которая призвана уменьшить число прерываний. А 100500 вариантов разных tables? Iptables, arptables, ip6tables, ebtables, nftables…

Если вам мало — ещё придумали SR-IOV. Там тоже уже упомянутый DMA, а ещё можно посплитить физическую карточку на несколько виртуальных и раздать их в разные виртуалки и приложения. Под ручку с DMA идёт и RDMA, когда мы пишем трафик напрямую в память, но не в свою, а в чужую на удалённой по сети машине.

И в этих копаниях можно уйти безгранично далеко. Но сегодня мы всё же поговорим о вещах более приземлённых и повседневных, которые лишь приоткрывают вход в эту разветвлённую сеть кроличьих нор. Мы разберём одну любопытную задачку, на примере которой ужаснёмся (а кто-то ухмыльнётся деловито в усы) тому, как сложно может быть реализован такой простой протокол, как DHCP.

https://habr.com/ru/companies/yandex/articles/774462/

👉 @devops_star
👍1
Собрал основные концепции Docker в одну диаграмму

👉 @devops_star
👍1
Настройка CI/CD для самых маленьких разработчиков

Считается, что построение CI/CD - задача для DevOps. Глобально это действительно так, особенно если речь идет о первоначальной настройке. Но часто с докручиванием отдельных этапов процесса сталкиваются и разработчики. Умение поправить что-то незначительное своими силами позволяет не тратить время на поход к коллегам (и ожидание их реакции), т.е. в целом повышает комфорт работы и дает понимание, почему все происходит именно так.

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

https://habr.com/ru/companies/maxilect/articles/799177/

👉 @devops_star
👍2
Чем отличается Kubernetes от Openshift?

Openshift имеет более строгие политики безопасности и модели аутентификации.
Openshift поддерживает полную интеграцию CI/CD Jenkins.
Openshift имеет веб-консоль по-умолчанию. В Kubernetes консоль необходимо дополнительно устанавливать консоль.
В Kubernetes возможно устанавливать сторонние сетевые плагины. В Openshift используется собственное сетевое решение Open vSwitch, которое предоставляет 3 различный плагина.
Kubernetes может быть установлен практически на любой дистрибутив Linux. Openshift имеет ограничения на устанавливаемые дистрибутивы, преимущественно используются RH-дистрибутивы.
Kubernets доступен в большинстве облачных платформ - GCP, AWS, Azure, Yandex.Cloud. Openshift доступен на облачной платформе Azure и облаке от IBM.
По-умолчанию, в Openshift поды в кластере могут быть запущены только под обычным пользователем, чтобы запустить под под пользователем root необходимо выдать права для сервисного аккаунта. В Kubernetes по-умолчанию поды могут быть запущены по пользователем root.

👉 @devops_star
👍2
Набор современных панелей Grafana для Kubernetes

https://github.com/dotdc/grafana-dashboards-kubernetes

👉 @devops_star
👍2
Что такое CBD?

Компонентно-ориентированное программирование (CBD) представляет собой инновационный подход к разработке продукта. Вместо традиционного создания продукта с нуля, разработчики используют CBD для поиска уже существующих, проверенных и качественных компонентов, которые затем комбинируются для создания нового и оригинального продукта. Этот подход позволяет улучшить качество и надежность продукта, а также упростить его сопровождение и обновление, благодаря использованию уже проверенных компонентов. CBD открывает новые возможности для разработчиков, позволяя им быстрее и эффективнее создавать продукты, используя уже существующие ресурсы. нового и оригинального продукта. Этот процесс проходит вместо обычного для многих процесса создания продукта с нуля.

👉 @devops_star
👍1
K9s

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

https://github.com/derailed/k9s

👉 @devops_star
👍1
SuperEdge

Это система управления контейнерами с открытым исходным кодом для пограничных вычислений, позволяющая управлять вычислительными ресурсами и контейнерными приложениями в нескольких пограничных регионах. В текущем подходе эти ресурсы и приложения управляются как единый кластер Kubernetes. Родной кластер Kubernetes может быть легко преобразован в кластер SuperEdge.

https://github.com/superedge/superedge

👉 @devops_star
1👍1
Какая роль у контроллера DaemonSet?

DaemonSet используется в Kubernetes, когда необходимо запустить один или несколько экземпляров приложения на всех узлах кластера. Это означает, что при добавлении новых узлов в кластер необходимость вручного запуска подов, предназначенных для определенных служебных задач, отпадает. Например, с помощью DaemonSet можно автоматически развернуть поды с Prometheus Node Exporter для мониторинга, collectd, а также поды с fluentd или logstash для логирования данных с узлов.

👉 @devops_star
👍2
Media is too big
VIEW IN TELEGRAM
Основы Docker. Большой практический выпуск

0:00:00 Вступление
0:02:22 Что такое Docker?
0:16:29 Простой пример Hello World
0:31:34 Пример WEB приложения
0:35:55 Работаем с портами
0:41:10 Что такое docker volume
0:46:54 Поднимаем временную базу данных
0:55:26 Разворачиваем реальный проект
1:00:35 Что такое docker-compose
1:05:23 Создаем виртуальную машину (подробно)
1:08:25 Ставим Docker и Docker compose на Linux
1:10:17 Delpoy проекта с ипользованием GitHub
1:16:50 Delpoy проекта с ипользованием DockerHub

источник

👉 @devops_star
👍3