DevOps as a Career
From Zero to DevOps Engineer - DevOps Roadmap for YOUR specific background
How I learn new technologies as a DevOps Engineer (without being overwhelmed)
DevOps Roadmap 2023 - How to become a DevOps Engineer? What is DevOps?
5 reasons I chose DevOps as a Career
Is DevOps right for you? 13 points to consider
#devops #девопс
@DevOPSitsec
From Zero to DevOps Engineer - DevOps Roadmap for YOUR specific background
How I learn new technologies as a DevOps Engineer (without being overwhelmed)
DevOps Roadmap 2023 - How to become a DevOps Engineer? What is DevOps?
5 reasons I chose DevOps as a Career
Is DevOps right for you? 13 points to consider
#devops #девопс
@DevOPSitsec
👍2🔥1
Dockerfile - файл содержащий инструкции для создания образа контейнера
#devops #девопс
@DevOPSitsec
FROM
- задаёт базовый (родительский) образLABEL
- описывает метаданные. Например — сведения о том, кто создал и поддерживает образENV
- устанавливает постоянные переменные средыRUN
- выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетовCOPY
- копирует в контейнер файлы и папкиADD
- копирует файлы и папки в контейнер, может распаковывать архив на летуCMD
- описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD(запускается оболочка /bin/sh)USER
- указывает от какого пользователя всё будет работатьWORKDIR
- задаёт рабочую директорию для следующей инструкцииARG
- задаёт переменные для передачи Docker во время сборки образаENTRYPOINT
- предоставляет команду с аргументами для вызова во время выполнения контейнера. Аргументы не переопределяютсяEXPOSE
- указывает на необходимость открыть порт, сам порт не открываетVOLUME
- создаёт точку монтирования для работы с постоянным хранилищемMAINTAINER
- информация об авторе имя и <email>#devops #девопс
@DevOPSitsec
🔥18👍11❤1🤔1
Почему мы используем Kafka вместо RabbitMQ: сравнение и преимущества
При построении больших и сложных систем не обойтись без программных брокеров сообщений. Однако часто возникает вопрос, какой из них выбрать для того или иного проекта. Сегодня мы поделимся особенностями работы Apache Kafka и RabbitMQ, дав точный рецепт, когда и какой брокер стоит использовать.
#devops #девопс
@DevOPSitsec
При построении больших и сложных систем не обойтись без программных брокеров сообщений. Однако часто возникает вопрос, какой из них выбрать для того или иного проекта. Сегодня мы поделимся особенностями работы Apache Kafka и RabbitMQ, дав точный рецепт, когда и какой брокер стоит использовать.
#devops #девопс
@DevOPSitsec
Telegraph
Почему мы используем Kafka вместо RabbitMQ: сравнение и преимущества
При построении больших и сложных систем не обойтись без программных брокеров сообщений. Однако часто возникает вопрос, какой из них выбрать для того или иного проекта. Lead architect Группы «Иннотех» Александр Соляр поделился особенностями работы Apache Kafka…
👍8🔥3❤2🥰1
Практические вопросы для экзамена Certified Kubernetes Security Specialist (CKS)
https://github.com/snigdhasambitak/cks/tree/main
#devops #девопс
@DevOPSitsec
https://github.com/snigdhasambitak/cks/tree/main
#devops #девопс
@DevOPSitsec
👍8❤3🔥2
Практические вопросы для экзамена Certified Kubernetes Security Specialist (CKS)
https://github.com/snigdhasambitak/cks/tree/main
#devops #девопс
@DevOPSitsec
https://github.com/snigdhasambitak/cks/tree/main
#devops #девопс
@DevOPSitsec
GitHub
GitHub - snigdhasambitak/cks: Practice questions for Certified Kubernetes Security Specialist (CKS) exam
Practice questions for Certified Kubernetes Security Specialist (CKS) exam - snigdhasambitak/cks
❤3
5 приемов оптимизации сборки Docker-образов
Прием 1 — уменьшаем количество слоев в образе
Уменьшить количество слоев в образе можно сворачиванием нескольких однородных инструкций в одну. Например, несколько логически связанных инструкций RUN можно объединить в одну инструкцию с помощью конвейера Linux:
RUN apt-get update && apt-get install -y nginx
Прием 2 — удаляем ненужный кэш apt-get
Пакетный менеджер apt-get, обновляя репозиторий, сохраняет кэш, который в большинстве случаев не нужен, и его можно удалить, уменьшив тем самым собираемый образ на 100+ Мбайт. Сделать это совсем несложно, достаточно в инструкции RUN последней командой указать: && rm -f /var/lib/apt/lists/*.
Соединим оба приёма в одну инструкцию:
RUN apt-get update && apt-get install -y nginx && rm -f /var/lib/apt/lists/*
Такая конструкция работает именно в одной инструкции RUN, если вы вынесете rm -f /var/lib/apt/lists/* в отдельный RUN — ничего не сработает, так как кеш будет очищаться в другом слое, а его обновление будет оставаться в предыдущем слое.
Прием 3 — копируем только нужные файлы проекта в образ с помощью .dockerignore-файла
Обычно для копирования проекта в образ используется инструкция COPY с указанием места расположения проекта, как «.», что указывает на текущею директорию. Такой подход имеет один недостаток — будут скопированы все вложенные подкаталоги и файлы, что может значительно увеличить размер образа.
Исправить ситуацию призван .dockerignore-файл, который работает так же как и .gitignore-файл. В этих файлах указываются те папки и файлы, которые «не надо трогать». Gitignore-файл располагается в корневом каталоге копируемого в образ проекта. Обратите внимание на точку в начале названия файла — «.gitignore», так и должно быть.
Рассмотрим пример работы .gitignore-файла. Например, мы работаем с GIT, и в нашем проекте есть GIT-репозиторий. В образе он нам не нужен, поэтому его можно не копировать, а ещё в образе нам не нужен Dockerfile. Укажем эти файлы в .gitignore-файле:
.GIT
Dockerfile
При сборке образа Docker прочтет .dockerignore-файл и не включит в образ указанные в нем папки и файлы.
Приём 4 — используем минималистические Linux-образа Alpine
Как правило, для сборки образов применяются дистрибутивы Debian, Ubuntu, CentOS. Но это оправдано в том случае, если ваш проект будет использовать всё обилие возможностей ядра и пакетов, которые предоставляет выбранный дистрибутив. Если же вам нужно просто создать контейнер с Nginx или иной другой программой — используйте Alpine-сборки.
Alpine-образ весит считанные мегабайты, а не сотни Мбайт как Debian или Ubuntu, при этом в нём есть всё необходимое для запуска большинства приложений. Например, так выглядит dockerfile Nginx-образа на Alpine-сборке, который занимает 7 Мбайт:
FROM alpine
RUN apk add --no-cache nginx && mkdir -p /run/nginx
EXPOSE 80
COPY custom.conf /etc/nginx/conf.d
dockerCOPY . /opt/
CMD ["nginx”,”-g”,”daemon off;”]
Еще один бесспорный плюс Alpine — скорость сборки образа. Она разительно отличается в лучшую сторону по сравнению со скоростью сборки на любом другом дистрибутиве Linux.
Прием 5 — часто изменяемые слои ставим в конец dockerfile
Слоистая структура Docker-образов имеет одно неприятное свойство — при внесении изменения в один из слоев, это слой и все последующие слои будут пересобраны. Поэтому, чтобы сэкономить время на сборке образа — старайтесь ставить инструкции копирования кода проекта и конфигов в конец dockerfile до команды CMD или ENTRYPOINT.
#devops #девопс
@DevOPSitsec
Прием 1 — уменьшаем количество слоев в образе
Уменьшить количество слоев в образе можно сворачиванием нескольких однородных инструкций в одну. Например, несколько логически связанных инструкций RUN можно объединить в одну инструкцию с помощью конвейера Linux:
RUN apt-get update && apt-get install -y nginx
Прием 2 — удаляем ненужный кэш apt-get
Пакетный менеджер apt-get, обновляя репозиторий, сохраняет кэш, который в большинстве случаев не нужен, и его можно удалить, уменьшив тем самым собираемый образ на 100+ Мбайт. Сделать это совсем несложно, достаточно в инструкции RUN последней командой указать: && rm -f /var/lib/apt/lists/*.
Соединим оба приёма в одну инструкцию:
RUN apt-get update && apt-get install -y nginx && rm -f /var/lib/apt/lists/*
Такая конструкция работает именно в одной инструкции RUN, если вы вынесете rm -f /var/lib/apt/lists/* в отдельный RUN — ничего не сработает, так как кеш будет очищаться в другом слое, а его обновление будет оставаться в предыдущем слое.
Прием 3 — копируем только нужные файлы проекта в образ с помощью .dockerignore-файла
Обычно для копирования проекта в образ используется инструкция COPY с указанием места расположения проекта, как «.», что указывает на текущею директорию. Такой подход имеет один недостаток — будут скопированы все вложенные подкаталоги и файлы, что может значительно увеличить размер образа.
Исправить ситуацию призван .dockerignore-файл, который работает так же как и .gitignore-файл. В этих файлах указываются те папки и файлы, которые «не надо трогать». Gitignore-файл располагается в корневом каталоге копируемого в образ проекта. Обратите внимание на точку в начале названия файла — «.gitignore», так и должно быть.
Рассмотрим пример работы .gitignore-файла. Например, мы работаем с GIT, и в нашем проекте есть GIT-репозиторий. В образе он нам не нужен, поэтому его можно не копировать, а ещё в образе нам не нужен Dockerfile. Укажем эти файлы в .gitignore-файле:
.GIT
Dockerfile
При сборке образа Docker прочтет .dockerignore-файл и не включит в образ указанные в нем папки и файлы.
Приём 4 — используем минималистические Linux-образа Alpine
Как правило, для сборки образов применяются дистрибутивы Debian, Ubuntu, CentOS. Но это оправдано в том случае, если ваш проект будет использовать всё обилие возможностей ядра и пакетов, которые предоставляет выбранный дистрибутив. Если же вам нужно просто создать контейнер с Nginx или иной другой программой — используйте Alpine-сборки.
Alpine-образ весит считанные мегабайты, а не сотни Мбайт как Debian или Ubuntu, при этом в нём есть всё необходимое для запуска большинства приложений. Например, так выглядит dockerfile Nginx-образа на Alpine-сборке, который занимает 7 Мбайт:
FROM alpine
RUN apk add --no-cache nginx && mkdir -p /run/nginx
EXPOSE 80
COPY custom.conf /etc/nginx/conf.d
dockerCOPY . /opt/
CMD ["nginx”,”-g”,”daemon off;”]
Еще один бесспорный плюс Alpine — скорость сборки образа. Она разительно отличается в лучшую сторону по сравнению со скоростью сборки на любом другом дистрибутиве Linux.
Прием 5 — часто изменяемые слои ставим в конец dockerfile
Слоистая структура Docker-образов имеет одно неприятное свойство — при внесении изменения в один из слоев, это слой и все последующие слои будут пересобраны. Поэтому, чтобы сэкономить время на сборке образа — старайтесь ставить инструкции копирования кода проекта и конфигов в конец dockerfile до команды CMD или ENTRYPOINT.
#devops #девопс
@DevOPSitsec
👍15🔥5❤1
Media is too big
VIEW IN TELEGRAM
DevSecOps
DevSecOps. Общее погружение
DevOps на пальцах
SecOps. Защита кластера
DevSec. Встраивание ИБ в конвейер разработки
DevSecOps. Process edition
Что такое Audit Policy? Вебинар из цикла DevSecOps
Зачем GitOps в Enterprise? Вебинар из цикла DevSecOps 2-й сезон
Управление секретами: основы
Persistent данные и резервное копирование в кластере
8 Bad Pods: атаки на Kubernetes
Kubernetes в Enterprise: VMware Tanzu
Kubernetes в Enterprise. Обзор, проблематика, решения
DevOps – начало работы в кластере Kubernetes
DevOps в Enterprise. Tech Talks Юрий Семенюков на High Load ++
Как пережить сертификацию по Kubernetes. Личный опыт
источник
#devops #девопс
@DevOPSitsec
DevSecOps. Общее погружение
DevOps на пальцах
SecOps. Защита кластера
DevSec. Встраивание ИБ в конвейер разработки
DevSecOps. Process edition
Что такое Audit Policy? Вебинар из цикла DevSecOps
Зачем GitOps в Enterprise? Вебинар из цикла DevSecOps 2-й сезон
Управление секретами: основы
Persistent данные и резервное копирование в кластере
8 Bad Pods: атаки на Kubernetes
Kubernetes в Enterprise: VMware Tanzu
Kubernetes в Enterprise. Обзор, проблематика, решения
DevOps – начало работы в кластере Kubernetes
DevOps в Enterprise. Tech Talks Юрий Семенюков на High Load ++
Как пережить сертификацию по Kubernetes. Личный опыт
источник
#devops #девопс
@DevOPSitsec
👍7🔥2❤1
⚡️ Лекции: Основы контейнеризации, микросервисы, Kubernetes и как это защитить?
Контейнеры, микросервисы, лямбды и где они обитают
Устройство сети в Kubernetes
Calico для сети в Kubernetes
Межсетевой экран и Kubernetes
Сетевые политики Kubernetes
CloudGuard для Kubernetes - Обзор и демо
📌 источник
#devops #девопс
@DevOPSitsec
Контейнеры, микросервисы, лямбды и где они обитают
Устройство сети в Kubernetes
Calico для сети в Kubernetes
Межсетевой экран и Kubernetes
Сетевые политики Kubernetes
CloudGuard для Kubernetes - Обзор и демо
📌 источник
#devops #девопс
@DevOPSitsec
🔥9👍6❤1
Media is too big
VIEW IN TELEGRAM
⚡️ Как стать DevOps Инженером с Нуля, что учить и в каком порядке
00:00 – 1. Вступление
01:06 – 2. Всевозможные компетенции DevOps инженера
10:35 – 3. Кому проще стать DevOps
15:01 – 4. Что учить по минимуму и в каком порядке
30:04 – 4.1. Основы Network TCP/IP
31:36 – 4.2. Администрирование Windows
34:09 – 4.3. Основы Linux
35:54 – 4.4. Ansible
36:48 – 4.5. Git
37:37 – 4.6. GitHub
38:04 – 4.7. Jenkins
38:23 – 4.8. Docker+DockerHub
38:44 – 4.9. Cloud Platform AWS
42:10 – 4.10. CloudFormation + Terraform
3:25 – 5. Курс DevOps Engineering в JohnBryce, Израиль
49:12 – 6. Как стать профессиональным DevOps инженером
54:24 – 7. Эпилог
✅ источник
#video #devops #девопс
00:00 – 1. Вступление
01:06 – 2. Всевозможные компетенции DevOps инженера
10:35 – 3. Кому проще стать DevOps
15:01 – 4. Что учить по минимуму и в каком порядке
30:04 – 4.1. Основы Network TCP/IP
31:36 – 4.2. Администрирование Windows
34:09 – 4.3. Основы Linux
35:54 – 4.4. Ansible
36:48 – 4.5. Git
37:37 – 4.6. GitHub
38:04 – 4.7. Jenkins
38:23 – 4.8. Docker+DockerHub
38:44 – 4.9. Cloud Platform AWS
42:10 – 4.10. CloudFormation + Terraform
3:25 – 5. Курс DevOps Engineering в JohnBryce, Израиль
49:12 – 6. Как стать профессиональным DevOps инженером
54:24 – 7. Эпилог
#video #devops #девопс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍7⚡1👎1🥰1
Основные возможности aws2tf:
- Генерация Terraform-кода на основе существующей AWS-инфраструктуры.
- Поддержка множества сервисов AWS.
- Автоматическое создание зависимостей между ресурсами.
- Упрощение миграции и управления конфигурацией.
Gitgub: https://github.com/aws-samples/aws2tf
#devops #девопс
@devopsitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥2
CI/CD без боли: оптимизация пайплайнов на GitHub Actions 🚀
GitHub Actions — мощный инструмент, но без оптимизации ваш пайплайн легко превратится в тормозную мясорубку. Разбираемся, как выжать максимум из CI/CD на GitHub.
Почему это важно:
Быстрые и надёжные пайплайны — ключ к высокой скорости доставки. Медленные сборки = потеря времени, нервов и денег.
1. Кэшируй разумно
Используй
⚠️ Ключ должен быть завязан на lock-файлы, иначе можно словить конфликты версий.
2. Делай job-ы параллельными
Разделяй пайплайн на независимые шаги — unit-тесты, линтеры, сборка. Добавляй
3. Matrix strategy — must-have
Хочешь тестировать на разных версиях языка/ОС? Используй
Это масштабирует проверку без дублирования кода.
4. Отключи ненужные события
Не запускай воркфлоу на каждом чихе. Используй
Это поможет не перегружать runners.
5. Используй
Иногда надо протестить пайплайн руками — не бойся добавить ручной триггер:
6. Логи и таймауты — твои друзья
Добавляй
Вывод:
Грамотно настроенный GitHub Actions экономит время и снижает головную боль. Избегай монолитных пайплайнов, кэшируй умно и тестируй только то, что нужно. Автоматизация — это про контроль, а не хаос.
#devops #девопс
GitHub Actions — мощный инструмент, но без оптимизации ваш пайплайн легко превратится в тормозную мясорубку. Разбираемся, как выжать максимум из CI/CD на GitHub.
Почему это важно:
Быстрые и надёжные пайплайны — ключ к высокой скорости доставки. Медленные сборки = потеря времени, нервов и денег.
1. Кэшируй разумно
Используй
actions/cache
для ускорения зависимостей, но не кэшируй всё подряд. Пример для Node.js:
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
⚠️ Ключ должен быть завязан на lock-файлы, иначе можно словить конфликты версий.
2. Делай job-ы параллельными
Разделяй пайплайн на независимые шаги — unit-тесты, линтеры, сборка. Добавляй
needs:
там, где реально нужно, а не везде.3. Matrix strategy — must-have
Хочешь тестировать на разных версиях языка/ОС? Используй
matrix
:
strategy:
matrix:
node-version: [16, 18, 20]
Это масштабирует проверку без дублирования кода.
4. Отключи ненужные события
Не запускай воркфлоу на каждом чихе. Используй
on:
грамотно:
on:
push:
branches:
- main
pull_request:
paths:
- 'src/**'
Это поможет не перегружать runners.
5. Используй
workflow_dispatch
для ручных запусков Иногда надо протестить пайплайн руками — не бойся добавить ручной триггер:
on:
workflow_dispatch:
6. Логи и таймауты — твои друзья
Добавляй
timeout-minutes
к job-ам и выводи ключевые логи через ::group::
и ::endgroup::
, чтобы не утонуть в консоли.Вывод:
Грамотно настроенный GitHub Actions экономит время и снижает головную боль. Избегай монолитных пайплайнов, кэшируй умно и тестируй только то, что нужно. Автоматизация — это про контроль, а не хаос.
#devops #девопс
👍12🔥5❤1
digital-periodic-table-of-devsecops.png
615.1 KB
Полезная таблица инструментов DevSecOps
Если ты учишься с нуля, устраняешь пробелы или заменяешь существующие инструменты, начни с Периодической таблицы, чтобы подобрать оптимальные решения для своей DevOps-пайплайна.
#devops #девопс
@devopsitsec
Если ты учишься с нуля, устраняешь пробелы или заменяешь существующие инструменты, начни с Периодической таблицы, чтобы подобрать оптимальные решения для своей DevOps-пайплайна.
#devops #девопс
@devopsitsec
👍2🙏2❤1🏆1