DevOps
22.9K subscribers
889 photos
91 videos
15 files
811 links
По всем вопросам- @workakkk

@itchannels_telegram - 🔥полезные ит-каналы

https://yangx.top/Golang_google - Golang программирование

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golang_jobsgo - go chat jobs

РКН: clck.ru/3FmvZA
加入频道
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Проекты с открытым исходным кодом, которые изменили мир

Веб: Node.js, React, Apache
Базы данных: PostgreSQL, Redis, Elasticsearch
Инструменты разработчика: Git, VSCode, Jupyter Notebook
ML и Big Data: Tensorflow, Apache Spark, Kafka
DevOps: Docker, Kubernetes, Linux


@DevOPSitsec
👍17🔥4👎21🤪1
Forwarded from Linux Academy
🔥 Лучшие бесплатные ресурсы для изучения этичного хакинга и кибербезопасности

🔗 Смотреть

Linux Academy
👍81🔥1
💻 Wasm vs Docker containers vs Kubernetes vs serverless: битва за первенство

Держите годную статью
О чём она:
WebAssembly (Wasm) — новая технология, которая может заменить контейнеры в некоторых сценариях использования.

Wasm имеет преимущества в размере, скорости, безопасности и переносимости.

Контейнеры имеют экосистему, такую как Kubernetes, которая предоставляет множество инструментов и сервисов.

• Wasm может стать жизнеспособной альтернативой контейнерам, если создаст свою экосистему или станет частью экосистемы Docker и Kubernetes.

Wasm может быть использован в serverless-сервисах и на edge-устройствах, где существуют проблемы с размером, скоростью, безопасностью и экосистемой.

Выбор использования Wasm зависит от конкретных потребностей и сценариев использования.

📎 А вот сама статья

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93🌚2🔥1
📌CI/CD pipeline с помощью Jenkins

Отличное видео, в нём говорится про:

Создание образа Docker и отправка его в Docker Hub

Развертывание образа Docker в кластере Kubernetes

Создание проекта и настройка Jenkins

Сборка и развертывание в Kubernetes

Тестирование приложения

📎 Кликабельный план ролика
📎 Видео

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2🤔1
🖥 Как устроены конвейеры CI/CD 💻

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

1️⃣Утилита podman с помощью Libpod API обращается к библиотеке libpod, которая вызывает низкоуровневый container runtime (по умолчанию утилиту runc)
containers/podman
Podman Commands

2️⃣Утилита docker с помощью Docker API вызывает сервис dockerd
docker/cli
Docker CLI reference
Docker architecture
Docker API

3️⃣Сервис dockerd вызывает сервис containerd
Dockerd reference

4️⃣Сервис containerd вызывает низкоуровневый container runtime (по умолчанию утилиту runc)
containerd/containerd
Containerd Scope and principles

5️⃣Сервис kubelet с помощью протокола CRI вызывает сервис container runtime (например, containerd или crio)
Container Runtime Interface
Container Runtimes
CRI: the Container Runtime Interface

6️⃣Сервис containerd вызывает низкоуровневый container runtime (по умолчанию runc)
Containerd CRI

7️⃣Сервис cri-o вызывает низкоуровневый container runtime (по умолчанию runc)
cri-o/cri-o

8️⃣Утилита OCI container runtime (по умолчанию runc):

🔘runc с помощью библиотеки libcontainer создает контейнер по runtime-spec, взаимодействуя с подсистемами ядра Linux – пространствами имен (namespaces) и контрольными группами (cgroups)
opencontainers/runc
runc man
opencontainers/runc/libcontainer

🔘crun создает контейнер по runtime-spec, взаимодействуя с подсистемами ядра Linux – пространствами имен (namespaces) и контрольными группами (cgroups)
containers/crun

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124🔥2
🖥 Уязвимость в runc, позволяющая выбраться из контейнеров Docker и Kubernetes

В инструментарии для запуска изолированных контейнеров runc, применяемом в Docker и Kubernetes, найдена уязвимость CVE-2024-21626, позволяющая получить доступ к файловой системе хост-окружения из изолированного контейнера. В ходе атаки злоумышленник может перезаписать некоторые исполняемые файлы в хост-окружения и таким образом добиться выполнения своего кода вне контейнера.

Уязвимость устранена в выпуске runc 1.1.12. В runtime LXC, crun и youki, альтернативных runc, проблема не проявляется.

В случае использования инструментариев Docker или Kubernetes атака может быть совершена через подготовку специально оформленного образа контейнера, после установки и запуска которого из контейнера можно обратиться к внешней ФС. При использовании Docker имеется возможность эксплуатации через специально оформленный Dockerfile. Уязвимость также может быть эксплуатирована в случае запуска в контейнере процессов командой runc exec через привязку рабочего каталога к пространству имён хостового окружения

Уязвимость вызвана утечкой внутренних файловых дескрипторов. Перед запуском кода внутри контейнера в runc выполняется закрытие файловых дескрипторов при помощи флага O_CLOEXEC. Однако, после последующего выполнения функции setcwd() остаётся открытым файловый дескриптор, указывающий на рабочий каталог и продолжающий оставаться доступным после запуска контейнера. Предложено несколько базовых сценария атаки на хост-окружение, используя оставшийся файловый дескриптор

Например, атакующий может указать в образе контейнера параметр process.cwd, указывающий на "/proc/self/fd/7/", что приведёт к привязке к процессу pid1 в контейнере рабочего каталога, находящегося в пространстве монтирования хост-окружения. Таким образом, в образе контейнера можно настроить запуск "/proc/self/fd/7/../../../bin/bash" и через выполнение shell-скрипта перезаписать содержимое "/proc/self/exe", которое ссылается на хостовую копию /bin/bash.

📎 Читать подробнее

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥32
💻Мультирегиональная репликация Apache Kafka: кластерные топологии

Неплохая статья о том, какую топологию может иметь кластер Apache Kafka при межрегиональной репликации по нескольким ЦОД и как это реализовать.
Плюс описывается, чем брокеры-наблюдатели отличаются от подписчиков в Confluent Server и при чем здесь конфигурация подтверждений acks в приложении-продюсере.

Для репликации в нескольких регионах кластер Kafka может иметь следующую топологию:

растянутые кластеры (stretched clusters), когда один кластер Kafka устанавливается в нескольких ЦОД. При этом используется протокол синхронной репликации Kafka.

связанные кластеры (connected clusters) с асинхронной репликацией в нескольких регионах. В этом случае может использоваться внешняя система для копирования данных из одного или нескольких кластеров в другой.

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

📎 Статья

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥2
🖥 Как работает сеть в контейнерах: Docker Bridge с нуля

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

Также неплохо бы разобраться с работой сети в контейнерах. Для этого в статье освещаются такие вопросы:

Как виртуализировать сетевые ресурсы, чтобы контейнеры думали, что у них есть отдельные сетевые среды?

Как превратить контейнеры в дружелюбных соседей и научить общаться друг с другом?

Как выйти во внешний мир (например, в Интернет) изнутри контейнера?

Как связаться с контейнерами, работающими на хосте Linux, из внешнего мира?

Как реализовать публикацию портов, подобную Docker?

Параллельно в статье строится контейнерная сеть с одним хостом с нуля при помощи стандартных инструментов Linux.
В общем, отличная статья, рекомендую)

📎 Статья

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥2🥰1
⚡️ ИИ-самоучитель Learn Anything - новый идеальный инструмент для освоения любых навыков.

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

Github

@DevOPSitsec
👍92🔥1😁1
🖥 5 советов, как ускорить сборку образа Docker

Совет 1. Можно ли избежать создания образов?

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


Совет 2. Структурируйте инструкции Dockerfile как перевернутую пирамиду.

Каждая инструкция в вашем Dockerfile приводит к созданию слоя изображения. Docker использует слои для повторного использования работы. Слои кэшируются и их не нужно пересобирать, если:
— Все предыдущие слои не изменяются.
— В случае инструкции COPY: файлы/папки не изменяются.
— В случае всех остальных инструкций: текст команды не изменяется.


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

Представьте, что у нас есть следующий фрагмент Dockerfile:
RUN mkdir /code
COPY code code/
RUN pip install code/requirements.txt

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

Вот как мы могли бы избежать повторного запуска этапа установки при каждом изменении кода:
RUN mkdir /code
COPY code/requirements.txt code/
RUN pip install code/requirements.txt
COPY code /code



Совет 4. Скачивайте меньше файлов.

Во-первых, проверьте, не загружаете ли вы зависимости разработки, которые вообще не нужны вашему образу.

Ещё нужно помнить про поведение менеджера пакетов на уровне ОС. Например, `apt`который используется в Ubuntu и Debian, по умолчанию устанавливает «рекомендуемые» пакеты.
Вы можете избежать этого, добавив к apt-get install флаг --no-install-recommends


Совет 5. Используйте BuildKit с новой функцией монтирования кэша.

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

📎 Читать подробнее

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143
📌Лучшие практики по безопасности при использовании Docker

Держите рекомендации по безопасной работе с образами и контейнерами
PDF

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1
🖥 Как использовать Node.js с Docker

Как мы знаем Node.js позволяет создавать быстрые и масштабируемые веб-приложения, используя JavaScript и на сервере, и на клиенте.
Ну и для того, что приложение предсказуемо работало и там, и там, мы используем Docker, конечно же.

Эта статья поможет структурировать знания о сборке контейнеров с помощью Docker, поможет освежить азы основы с образами и не только.
Уверен, будет полезно, держите

📎 Статья

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93👎1
💻 Запуск проекта в Kubernetes за 60 минут: инструменты, GitLab, Terraform

В этой статье детально рассматривается пример CI/CD-пайплайна, который собирает разбитое на 2 микросервиса CRUD-приложение, пушится в платформенный реджистри и деплоится в Kubernetes.

Подробно рассматриваются все шаги поднятия: создание кластера и базы данных, настройка абстракций Kubernetes вроде Service, Ingress, Deployment и т. д. и установка платформенных аддонов в кластер. А также поднятие инфраструктуры стенда при помощи подхода Infrastructure-as-a-code.

🖥 Все файлы Terraform и Kubernetes, код приложения и сокращённая пошаговая инструкция доступны в репозитории

Полезная статья, рекомендую)
📎 Статья

@DevOPSitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥41👀1