DevOps – Telegram
DevOps
8.47K subscribers
1.46K photos
812 videos
28 files
1.74K links
Docker, Kubernetes, облачные сервисы (AWS, GCP, Azure), Infrastructure as a Code (Terraform, CloudFormation), администрирование Windows и Linux, сети TCP, IP, скрипты (Bash, PowerShell), Ansible, Jenkins, DevSecOps, логирование. По вопросам @evgenycarter
Download Telegram
📌Что такое service mesh и для чего он нужен?

Service mesh - это шаблон, который обеспечивает более гибкое управление трафиком в Kubernetes. Service mesh включает в себя control plane, который собирает информацию о кластере Kubernetes, запущенных в нем приложениях, а также дополнительных объектах (custom resources), которые могут быть описаны для настройки, и sidecar-контейнеры, которые обычно инжектируются в PODы автоматически с помощью mutation webhook. Sidecar-контейнеры являются прокси-серверами, перехватывающими входящий и исходящий трафик приложений в контейнерах и управляющими ими в соответствии с конфигурацией, полученной из control plane.

📌Каким образом организована сеть в k8s?

В Kubernetes существуют три типа сетей:

1. Сеть узлов (node network) — это сеть, в которую объединены узлы кластера. В зависимости от используемого CNI-плагина, узлы могут работать либо в одной подсети, либо в нескольких.
2. Сеть POD-ов (pod network) — это сеть, в которой получают IP-адреса запускаемые POD-ы.
3. Сеть сервисов (service network) — это сеть, в которой получают адреса сервисы Kubernetes. Сети POD-ов и сервисов организуются с помощью CNI-плагинов.

📌Что такое bearer token?

Bearer token, также известный как токен учетной записи службы, представляет собой JWT-токен, который генерируется автоматически при создании новой учетной записи службы. Он содержит информацию о конкретной учетной записи службы и подписывается корневым сертификатом кластера. Этот токен сохраняется в объекте типа secret, который затем монтируется в POD по стандартному пути и периодически обновляется. При использовании данного токена процесс, запущенный в контейнере, получает доступ к API Kubernetes и может выполнять только разрешенные действия.

#devops #девопс

Подпишись 👉@i_DevOps
👍6
Flagd

Демон управления фичами, основанный на философии Unix.

https://github.com/open-feature/flagd

#devops #девопс

Подпишись 👉@i_DevOps
👍2
Git, Gitflow и ветка release: как разместить общий код команды в прод

Привет, меня зовут Николай Пискунов — я ведущий разработчик в подразделении Big Data. И сегодня в блоге beeline cloud мы продолжим серию статей про Git и Gitflow — рассмотрим релизный цикл: то есть то, как общий код команды должен попасть в прод. Для этого в GitFlow существует процесс и ветка под названием release.

https://habr.com/ru/companies/beeline_cloud/articles/836922/

#devops #девопс

Подпишись 👉@i_DevOps
👍3
Плюсы и минусы профессии DevOps: мысли для слушателей ИТ-курсов и не только

На дворе конец лета и слушатели ИТ-курсов в раздумьях о выборе обучения на осень 2024 и профессии как таковой. А мы продолжим цикл статей о плюсах и минусах разных профессий в ИТ. Давайте поговорим о DevOps-инженере. Как говорят рекрутеры, на фоне переизбытка выпускников курсов по разработке на Python и Java, профессия DevOps-инженера смотрится одной из топов по востребованности и оплате. Однако, DevOps требует на только очень разнообразных знаний и навыков, но и специфических черт характера, чтобы не выгореть при первом же погружении в профессию.
P.S. Иллюстрация ИИ к статье — “я художник, так вижу DevOps и девушки их любят”.

https://habr.com/ru/companies/ssp-soft/articles/837746/

#devops #девопс

Подпишись 👉@i_DevOps
😁3💩1
Что такое DevSecOps?

DevSecOps возник как естественная эволюция практик DevOps с акцентом на интеграцию безопасности в процессы разработки и развертывания программного обеспечения. Термин "DevSecOps" объединяет практики разработки (Dev), безопасности (Sec) и операций (Ops), подчеркивая важность безопасности на протяжении всего жизненного цикла разработки программного обеспечения.

Диаграмма выше показывает важные концепции в DevSecOps:

1. Автоматизированные проверки безопасности
2. Непрерывный мониторинг
3. Автоматизация CI/CD
4. Инфраструктура как код (IaC)
5. Безопасность контейнеров
6. Управление секретами
7. Моделирование угроз
8. Интеграция с обеспечением качества (QA)
9. Сотрудничество и коммуникация
10. Управление уязвимостями

#devops #девопс

Подпишись 👉@i_DevOps
👍8
📌Каким образом мы можем разделять права в k8s?

Для управления правами в Kubernetes используется механизм RBAC (Role Based Access Control). В этой системе выделяются три группы объектов: пользователь (user) или учетная запись сервиса (service account), которая определяет субъект доступа; роль (role) или кластерная роль (clusterRole), определяющая разрешения; и привязка роли (roleBinding) или кластерной роли (clusterRoleBinding) к конкретному субъекту.

📌Что такое CSI-плагин?

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

Мы определяем storageClass, который соответствует дискам определенного типа, и разворачиваем provisioner в кластере — специальное программное обеспечение, способное заказывать сетевые диски в системе, способной их предоставлять (например, NAS или СХД).

Затем мы создаем объект persistentVolumeClaim, указывая нужный storageClass.

При появлении запроса на persistentVolumeClaim, provisioner заказывает диск необходимого размера в системе, которая их предоставляет, создает объект persistentVolume и связывает его с persistentVolumeClaim. При запуске POD на узле, соответствующий диск монтируется на этот узел по определенному пути, который затем монтируется на файловую систему POD.

#devops #девопс

Подпишись 👉@i_DevOps
👍3
Безопасность контейнерных сред: как отбить атаки киберпиратов

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

https://habr.com/ru/companies/neoflex/articles/837946/

#devops #девопс

Подпишись 👉@i_DevOps
👍5
Это база: нюансы работы с Redis

Что такое Redis?
Redis — это база данных, которая размещается в памяти и хорошо подходит для следующих целей:

🔵Кэширование данных: этот сценарий подходит когда есть ключ, по которому вы можете прочитать или записать кэш. Частый случай: использование Redis как кэша перед другой базой-крепышом, вроде MySQL.

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

🔵Pub/Sub: помимо хранилища данных Redis можно использовать как брокер сообщений. В этом случае издатель может опубликовать сообщения в именованном канале для любого числа подписчиков. Когда клиент публикует сообщение в канале, Redis доставляет это сообщение всем клиентам, подписанным на этот канал, что обеспечивает обмен информацией между отдельными компонентами приложения в реальном времени. Однако, стоит помнить, что это сообщение опубликовывается по паттерну Fire & Forget — отправитель отправляет сообщение, не ожидая явного подтверждения от получателя о получении сообщения. То есть, отсутствует гарантия доставки и если часть подписчиков потеряет соединение, то после возвращения они не получат пропущенных сообщений. А если получателей не существует вовсе, то сообщение пропадает без возможности восстановления.

Мы не будем останавливаться на остальных возможных применениях Redis, а также на базовых моментах и перейдем к особенностям его работы, которые непосредственно влияют на конфигурирование и эффективность:

Часть 1 https://habr.com/ru/companies/nixys/articles/765694/

Часть 2 https://habr.com/ru/companies/nixys/articles/805463/

#devops #девопс

Подпишись 👉@i_DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Kubectx + Kubens: Power tools for kubectl

kubectx - инструмент для более быстрого переключения между контекстами (кластерами) на kubectl
kubens - инструмент, позволяющий легко переключаться между пространствами имен Kubernetes (и настраивать их для kubectl)

https://github.com/ahmetb/kubectx

Пример

# switch to another cluster that's in kubeconfig
$ kubectx minikube
Switched to context "minikube".

# switch back to previous cluster
$ kubectx -
Switched to context "oregon".

# rename context
$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context "gke_ahmetb_europe-west1-b_dublin" renamed to "dublin".

# change the active namespace on kubectl
$ kubens kube-system
Context "test" set.
Active namespace is "kube-system".

# go back to the previous namespace
$ kubens -
Context "test" set.
Active namespace is "default".

#devops #девопс

Подпишись 👉@i_DevOps
👍6
Шпаргалка по Docker

#devops #девопс

Подпишись 👉@i_DevOps
👍7
📌Какие типы volum’ов можно использовать в k8s?

Для подключения папки на ноде можно воспользоваться hostpath, однако необходимо учитывать, что POD должен быть привязан к конкретной ноде. В случае перемещения POD на другую ноду, он будет использовать ту же папку, но содержимое в ней может отсутствовать.

Другой вариант использования — local-storage, который также использует папку на диске, но привязан к конкретной ноде и автоматически привязывает POD к нужной ноде.

Также есть возможность использовать сетевые диски с помощью CSI-плагинов.



📌Можно ли запускать базы данных в k8s?

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

Если мы сможем обеспечить необходимое дисковое пространство для хранения файлов баз данных и возможность переноса их между узлами, то в k8s можно успешно запускать stateful-приложения. Существуют также базы данных и очереди, оптимизированные для работы в k8s, что делает их готовыми к облачным средам. Для управления приложениями в k8s существуют операторы (Kubernetes operators), которые облегчают эксплуатацию stateful-приложений, например, postgresql stolon для управления кластерами postgresql и strimzi для управления kafka.

#devops #девопс

Подпишись 👉@i_DevOps
👍9🔥1
DevSecOps гайд: от новичка до эксперта

DevOps подразумевает автоматизацию процессов сборки, настройки и развертывания ПО. Плюс — помогает наладить работу айтишников с другими подразделениями в компании: сократить time-to-market при запуске новых продуктов, снизить время разрешения инцидентов и упростить выпуск релизов.

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

https://habr.com/ru/companies/cloud_mts/articles/723862/

#devops #девопс

Подпишись 👉@i_DevOps
👍3👏2
Полезные ресурсы для системных администраторов и специалистов по информационной безопасности:

🔐 infosec — редкая литература, курсы и уникальные мануалы для системных администраторов и ИБ специалистов любого уровня и направления. Читайте, развивайтесь, практикуйте.

🧠 Social Engineering — авторский Telegram канал, посвященный информационной безопасности, OSINT и социальной инженерии.

💬 Вакансии в ИБ — актуальные предложения от самых крупных работодателей и лидеров рынка в сфере информационной безопасности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📌Можно ли запускать базы данных в k8s?

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

Если мы сможем обеспечить необходимое дисковое пространство для хранения файлов баз данных и возможность переноса их между узлами, то в k8s можно успешно запускать stateful-приложения. Существуют также базы данных и очереди, оптимизированные для работы в k8s, что делает их готовыми к облачным средам. Для управления приложениями в k8s существуют операторы (Kubernetes operators), которые облегчают эксплуатацию stateful-приложений, например, postgresql stolon для управления кластерами postgresql и strimzi для управления kafka.


📌Из каких компонентов состоит k8s и каково их назначение?

Kubernetes (K8s) включает в себя плоскость управления и плоскость данных.

Плоскость управления — это уровень управления, который работает на узлах, называемых главными узлами, и может работать в конфигурации с одним главным узлом или несколькими главными узлами.
Плоскость управления включает в себя:
— ETCD: хранилище конфигурации кластера
— Kubernetes API: предоставляет API для взаимодействия между компонентами K8s и клиентами внутри и вне кластера
— Kubernetes controller manager: реализует контроллеры, управляющие основными сущностями кластера, такими как контроллер узлов, контроллер задач и контроллер срезов конечных точек
— Kubernetes scheduler: выбирает узлы, на которых будут запускаться POD
— cloud controller manager: используется для реализации функций, специфичных для работы с облаком (если кластер K8s работает в облачной среде)

Плоскость данных состоит из компонентов, работающих на каждом узле:
— kubelet: отслеживает изменения конфигурации узла, применяет изменения конфигурации, выполняет проверки контейнера, сообщает о статусе контейнера, работает с плагином CRI и обеспечивает функции запуска и остановки контейнера
— kube-proxy: отвечает за сетевой компонент, работает с плагином CNI и обеспечивает работу сущности «сервис» на своем узле.

#devops #девопс

Подпишись 👉@i_DevOps
👍7
Лучшие практики безопасности Terraform

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

В этой статье мы хотим объяснить преимущества использования Terraform и дать рекомендации по безопасному использованию Terraform, ссылаясь на лучшие практики в области безопасности.

- Аудит конфигураций Terraform на наличие уязвимостей безопасности и внедрение средств контроля безопасности.
- Управление учетными данными доступа в безопасности Terraform.
- Лучшие практики безопасности при использовании модулей Terraform.
- Самостоятельное создание модулей Terraform.

Давайте начнем!

https://sysdig.com/blog/terraform-security-best-practices/

#devops #девопс

Подпишись 👉@i_DevOps
👍3
📌Kubernetes Roadmap

https://roadmap.sh/kubernetes


📌DevOps Roadmap

https://roadmap.sh/devops


📌Docker Roadmap

https://roadmap.sh/docker


#devops #девопс

Подпишись 👉@i_DevOps
👍4
Как я уменьшил размер образа docker на 40%

Ежедневно по работе я сталкиваюсь с Dockerfile, написал несколько из них самостоятельно, создавал контейнеры и всё такое. Но я никогда не публиковал их в реестре docker hub. Мне хотелось создать ugit — инструмент для отмены команд git (написанный в виде шелл‑скрипта), который бы могли использовать люди, не любящие устанавливать случайные шелл‑скрипты из Интернета.

Да‑да, знаю. НАДО ПЕРЕПИСАТЬ ЕГО НА GO/RUST/ЕЩЁ КАКОМ‑ТО ВОЛШЕБНОМ ЯЗЫКЕ. Сейчас скрипт состоит из пятисот с лишним строк Bash, поэтому я перепишу его на другом языке только под страхом смертной казни. Кроме того, в ugit уже есть практически все функции (осталось реализовать отмену лишь небольшого количества команд, используемых не так часто).

В этой статье я расскажу о том, как написал официальный Dockerfile для ugit (шелл‑скрипта) и снизил размер образа почти на 40% (с 31,4 МБ до 17,6 МБ), выполняя пошаговые попытки по инструкции. Надеюсь, это замотивирует других любителей шелла тоже публиковать свои скрипты в виде образов docker!

https://habr.com/ru/articles/791426/

#devops #девопс

Подпишись 👉@i_DevOps
👍6🔥31
📌Что такое egress?

Возможность установить внешний IP-адрес для исходящего трафика приложений за пределы кластера k8s может быть реализована через поддержку egress на уровне CNI-плагина. Эта функциональность может быть описана специальным объектом в неймспейсе.


📌Что вы можете рассказать об архитектуре Horizon?

API обратно совместим. Существует три типа панелей мониторинга: пользовательские, системные и настройки. Он обеспечивает базовую поддержку всех основных проектов OpenStack, таких как Neutron, Nova и т. д. (из коробки, нет необходимости устанавливать дополнительные пакеты или плагины). Любой может расширить информационные панели и добавить новые компоненты. Horizon предоставляет шаблоны и основные классы, на основе которых можно создать собственную панель мониторинга.

📌Если вы остановите контейнер — потеряете данные?

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

#devops #девопс

Подпишись 👉@i_DevOps
👍3
Анализ исходного кода — всестороннее понимание Kubelet

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

https://addozhang.medium.com/source-code-analysis-a-comprehensive-understanding-of-kubelet-7a9083514ff0

#devops #девопс

Подпишись 👉@i_DevOps
👍5