Media is too big
VIEW IN TELEGRAM
Kubernetes Tutorial for Beginners [FULL COURSE in 4 Hours]
0:00 - Course Overview
2:18 - What is K8s
5:20 - Main K8s Components
22:29 - K8s Architecture
34:47 - Minikube and kubectl - Local Setup
44:52 - Main Kubectl Commands - K8s CLI
1:02:03 - K8s YAML Configuration File
1:16:16 - Demo Project: MongoDB and MongoExpress
1:46:16 - Organizing your components with K8s Namespaces
2:01:52 - K8s Ingress explained
2:24:17 - Helm - Package Manager
2:38:07 - Persisting Data in K8s with Volumes
2:58:38 - Deploying Stateful Apps with StatefulSet
3:13:43 - K8s Services explained
👉 @devops_star
0:00 - Course Overview
2:18 - What is K8s
5:20 - Main K8s Components
22:29 - K8s Architecture
34:47 - Minikube and kubectl - Local Setup
44:52 - Main Kubectl Commands - K8s CLI
1:02:03 - K8s YAML Configuration File
1:16:16 - Demo Project: MongoDB and MongoExpress
1:46:16 - Organizing your components with K8s Namespaces
2:01:52 - K8s Ingress explained
2:24:17 - Helm - Package Manager
2:38:07 - Persisting Data in K8s with Volumes
2:58:38 - Deploying Stateful Apps with StatefulSet
3:13:43 - K8s Services explained
👉 @devops_star
👍4
Шпаргалка docker
Install DOCKER
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Info and Registry
docker info - Информация обо всём в установленном Docker
docker history - История образа
docker tag - Дать тег образу локально или в registry
docker login - Залогиниться в registry
docker search - Поиск образа в registry
docker pull - Загрузить образ из Registry себе на хост
docker push - Отправить локальный образ в registry
Container Management
docker ps -а - Посмотреть все контейнеры
docker start container-name - Запустить контейнер
docker kill/stop container-name - Убить (SIGKILL) /Остановить (SIGTERM) контейнер
docker logs --tail 100 container-name - Вывести логи контейнера, последние 100 строк
docker inspect container-name - Вся инфа о контейнере + IP
docker rm container-name - Удалить контейнер (поле каждой сборки Dockerfile)
docker rm -f $(docker ps -aq) - Удалить все запущенные и остановленные контейнеры
docker events container-name
docker port container-name - Показать публичный порт контейнера
docker top container-name - Отобразить процессы в контейнере
docker stats container-name - Статистика использования ресурсов в контейнере
docker diff container-name - Изменения в ФС контейнера
Images
docker build -t my_app . - Билд контейнера в текущей папке, Скачивает все слои для запуска образа
docker images / docker image ls - Показать все образы в системе
docker image rm / docker rmi image - Удалить image
docker commit <containerName/ID> lepkov/debian11slim:version3- Создает образ из контейнера
docker insert URL - вставляет файл из URL в контейнер
docker save -o backup.tar - Сохранить образ в backup.tar в STDOUT с тегами, версиями, слоями
docker load - Загрузить образ в .tar в STDIN с тегами, версиями, слоями
docker import - Создать образ из .tar
docker image history --no-trunc - Посмотреть историю слоёв образа
docker system prune -f - Удалит все, кроме используемого (лучше не использовать на проде, ещё кстати из-за старого кеша может собираться cтарая версия контейнера)
Run
docker run -d -p 80:80 -p 22:22 debian:11.1-slim sleep infinity (--rm удалит после закрытия контейнера, --restart unless-stopped добавит автозапуск контейнера) - Запуск контейнера интерактивно или как демона/detached (-d), Порты: слева хостовая система, справа в контейнере, пробрасывается сразу 2 порта 80 и 22, используется легкий образ Debian 11 и команда бесконечный сон
docker update --restart unless-stopped redis - добавит к контейнеру правило перезапускаться при закрытии, за исключением команды стоп, автозапуск по-сути
docker exec -it container-name /bin/bash (ash для alpine) - Интерактивно подключиться к контейнеру для управления, exit чтобы выйти
docker attach container-name - Подключиться к контейнеру чтоб мониторить ошибки логи в реалтайме
👉 @devops_star
Install DOCKER
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Info and Registry
docker info - Информация обо всём в установленном Docker
docker history - История образа
docker tag - Дать тег образу локально или в registry
docker login - Залогиниться в registry
docker search - Поиск образа в registry
docker pull - Загрузить образ из Registry себе на хост
docker push - Отправить локальный образ в registry
Container Management
docker ps -а - Посмотреть все контейнеры
docker start container-name - Запустить контейнер
docker kill/stop container-name - Убить (SIGKILL) /Остановить (SIGTERM) контейнер
docker logs --tail 100 container-name - Вывести логи контейнера, последние 100 строк
docker inspect container-name - Вся инфа о контейнере + IP
docker rm container-name - Удалить контейнер (поле каждой сборки Dockerfile)
docker rm -f $(docker ps -aq) - Удалить все запущенные и остановленные контейнеры
docker events container-name
docker port container-name - Показать публичный порт контейнера
docker top container-name - Отобразить процессы в контейнере
docker stats container-name - Статистика использования ресурсов в контейнере
docker diff container-name - Изменения в ФС контейнера
Images
docker build -t my_app . - Билд контейнера в текущей папке, Скачивает все слои для запуска образа
docker images / docker image ls - Показать все образы в системе
docker image rm / docker rmi image - Удалить image
docker commit <containerName/ID> lepkov/debian11slim:version3- Создает образ из контейнера
docker insert URL - вставляет файл из URL в контейнер
docker save -o backup.tar - Сохранить образ в backup.tar в STDOUT с тегами, версиями, слоями
docker load - Загрузить образ в .tar в STDIN с тегами, версиями, слоями
docker import - Создать образ из .tar
docker image history --no-trunc - Посмотреть историю слоёв образа
docker system prune -f - Удалит все, кроме используемого (лучше не использовать на проде, ещё кстати из-за старого кеша может собираться cтарая версия контейнера)
Run
docker run -d -p 80:80 -p 22:22 debian:11.1-slim sleep infinity (--rm удалит после закрытия контейнера, --restart unless-stopped добавит автозапуск контейнера) - Запуск контейнера интерактивно или как демона/detached (-d), Порты: слева хостовая система, справа в контейнере, пробрасывается сразу 2 порта 80 и 22, используется легкий образ Debian 11 и команда бесконечный сон
docker update --restart unless-stopped redis - добавит к контейнеру правило перезапускаться при закрытии, за исключением команды стоп, автозапуск по-сути
docker exec -it container-name /bin/bash (ash для alpine) - Интерактивно подключиться к контейнеру для управления, exit чтобы выйти
docker attach container-name - Подключиться к контейнеру чтоб мониторить ошибки логи в реалтайме
👉 @devops_star
👍11
Шпаргалка docker
Best Practice
🟢 Следуй принципу минимальных привилегий, процессы в контейнере никогда не должны выполняться из под рута, кроме редких случаев, нужно добавлять команду user и менять юзера на non-root.
🟢 Не привязываться к UID, он динамичен, можно записать во временную папку UID.
🟢 Сделать все исполняемые файлы владельцем рута, чтобы никто не изменил исполняемые файлы, а пользователю достаточно только права на выполнение.
🟢 Чем меньше компонентов и открытых портов, тем меньше поверхность для атак.
🟢 Использовать multistage для промежуточного контейнера для компиляции всего, зависимостей, временных файлов, образ может весить на треть меньше.
🟢 Distroless с чистого листа, использовать минимальный набор пакетов, например избавиться от образа Ubuntuи выбрать Debian-base, наши контейнеры содержат уязвимости изначального образа, чекать это.
🟢 Нужно обновлять всё до того, как выйдет из под поддержки.
🟢 Оставлять только те порты, которые реально нужны, избегать 22 и 21 3389 (ssh & ftp & rdp).
🟢 Никогда не помещайте логины/пароли в команде, в докерфайлах, переменных, docker secret или любой другой менеджер секретов ok.
🟢 Не использовать ADD, только COPY (когда используем точку - это воркдир где лежит докерфайл).
🟢 При сборке используйте .dockerignore чтобы убрать сенситив дату, это как .gitignore.
🟢 При сборке вначале команд лучше кешировать команду ран, а потом скопировать исходные данные.
🟢 Метадату записать.
🟢 Использовать тесты типа Linter и сканеры образов для CI.
🟢 Время от времени делать prune, докер любит много места жрать
👉 @devops_star
Best Practice
👉 @devops_star
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
Media is too big
VIEW IN TELEGRAM
Кто такой DevOps-инженер // Что должен уметь, какие задачи, сколько платят
Кто такой этот ваш DevOps-инженер? Чем он занимается, какие задачи? Что должен уметь девопс-инженер? Какие бывают Девопс-инженеры? За что им столько платят, а главное — сколько платят? Всё это я разбираю в видео.
⏱️ Таймкоды:
0:00 Вступление
1:00 Цикл разработки по DevOps
2:14 Какие бывают DevOps-инженеры
2:37 И швец, и жнец
4:40 Делаешь что-то одно
6:25 Общие плюсы и минусы профессии
8:15 Программисты и ChatGPT забирают работу
10:00 Задачи DevOps-инженера
11:30 Формы развития навыков, I, T-shaped
12:34 Софт-скиллы DevOps-инженера
13:25 Хард-скиллы DevOps-инженера
15:12 Кто становится DevOps-инженером
15:56 За что нам платят деньги
17:00 Смотрим вакансии и анализ зарплат
источник
👉 @devops_star
Кто такой этот ваш DevOps-инженер? Чем он занимается, какие задачи? Что должен уметь девопс-инженер? Какие бывают Девопс-инженеры? За что им столько платят, а главное — сколько платят? Всё это я разбираю в видео.
⏱️ Таймкоды:
0:00 Вступление
1:00 Цикл разработки по DevOps
2:14 Какие бывают DevOps-инженеры
2:37 И швец, и жнец
4:40 Делаешь что-то одно
6:25 Общие плюсы и минусы профессии
8:15 Программисты и ChatGPT забирают работу
10:00 Задачи DevOps-инженера
11:30 Формы развития навыков, I, T-shaped
12:34 Софт-скиллы DevOps-инженера
13:25 Хард-скиллы DevOps-инженера
15:12 Кто становится DevOps-инженером
15:56 За что нам платят деньги
17:00 Смотрим вакансии и анализ зарплат
источник
👉 @devops_star
👍8
Media is too big
VIEW IN TELEGRAM
Контейнеры и Mikrotik, чем еще можно нагрузить ваш девайс
Расширение возможностей в приборах латвийского производителя сетевого оборудования практически не знает границ, но и сейчас их смогли широко раздвинуть при помощи введения дополнительного функционала - контейнеров. Во время доклада пообщаемся о том, как это все работает и как нам могут быть полезны контейнеры.
Обсудим подводные и надводные камни.
источник
👉 @devops_star
Расширение возможностей в приборах латвийского производителя сетевого оборудования практически не знает границ, но и сейчас их смогли широко раздвинуть при помощи введения дополнительного функционала - контейнеров. Во время доклада пообщаемся о том, как это все работает и как нам могут быть полезны контейнеры.
Обсудим подводные и надводные камни.
источник
👉 @devops_star
👍3
Media is too big
VIEW IN TELEGRAM
DevOps Engineering курс для начинающих
16:22 -TDD
20:33 - CI
24:44 - CI Setup
34:44 - Code Coverage
46:55 - Linting
57:33 - Ephemeral Environments
1:10:55 - VM vs Container
1:23:22 - Rolling Deployments
1:28:33 - Blue Green Deployments
1:45:33 - Auto Scaling
1:58:44 - Service Discovery
2:02:22 - Log Aggregation
2:11:11 - Vital Production Metrics
👉 @devops_star
16:22 -TDD
20:33 - CI
24:44 - CI Setup
34:44 - Code Coverage
46:55 - Linting
57:33 - Ephemeral Environments
1:10:55 - VM vs Container
1:23:22 - Rolling Deployments
1:28:33 - Blue Green Deployments
1:45:33 - Auto Scaling
1:58:44 - Service Discovery
2:02:22 - Log Aggregation
2:11:11 - Vital Production Metrics
👉 @devops_star
👍11
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
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
👍8❤2
Как настроить Docker, чтобы он переподнимался при ошибках и перезапуске хоста
Настройка политики перезапуска Docker контейнеров
Для начала стоит добавить параметр --restart=always к команде запуска Docker:
Политика перезапуска Docker-контейнера устанавливается параметром --restart – именно он указывает как поступать с контейнером, который завершил свою работу / упал с ошибкой / при старте системы. Возможные варианты:
- no – не перезапускать docker-контейнер;
- on-failure – рестартануть контейнер, в случае если entry point процесс завершился с ненулевым кодом;
- always – перезапускать всегда, вне зависимости от того, что случилось с docker-контейнером.
Также можно установить максимальное количество попыток перезапустить контейнер при использовании политики перезапуска on-failure. По умолчанию Docker будет постоянно пытаться перезапустить.
А здесь Docker попытается только 10 раз:
Если контейнер поднимется хотя бы и завершится с нулевым кодом возврата, то счётчик начнётся с начала. Работает это только с политикой on-failure.
👉 @devops_star
Настройка политики перезапуска Docker контейнеров
Для начала стоит добавить параметр --restart=always к команде запуска Docker:
docker run --restart=always -d {{ name }}
Политика перезапуска Docker-контейнера устанавливается параметром --restart – именно он указывает как поступать с контейнером, который завершил свою работу / упал с ошибкой / при старте системы. Возможные варианты:
- no – не перезапускать docker-контейнер;
- on-failure – рестартануть контейнер, в случае если entry point процесс завершился с ненулевым кодом;
- always – перезапускать всегда, вне зависимости от того, что случилось с docker-контейнером.
Также можно установить максимальное количество попыток перезапустить контейнер при использовании политики перезапуска on-failure. По умолчанию Docker будет постоянно пытаться перезапустить.
docker run --restart=always {{ name }}
А здесь Docker попытается только 10 раз:
docker run --restart=on-failure:10 {{ name }}
Если контейнер поднимется хотя бы и завершится с нулевым кодом возврата, то счётчик начнётся с начала. Работает это только с политикой on-failure.
👉 @devops_star
👍7
Основные команды Docker
Рассмотрим систему управления контейнерами под названием Docker. Ознакомимся с базовыми принципами ее работы, а также подробно рассмотрим основные команды, необходимые для управления Docker и ее составляющими.
https://telegra.ph/Osnovnye-komandy-Docker-09-24
👉 @devops_star
Рассмотрим систему управления контейнерами под названием Docker. Ознакомимся с базовыми принципами ее работы, а также подробно рассмотрим основные команды, необходимые для управления Docker и ее составляющими.
https://telegra.ph/Osnovnye-komandy-Docker-09-24
👉 @devops_star
👍3👎1🤬1
DevOps_Culture_and_Practice_with_OpenShift_Deliver_continuous_business.pdf
124.2 MB
DevOps Culture and Practice With OpenShift
Mike Hepburn, Time Beatie, Noel OConnor, Donal Spring (2021)
Have you ever wondered what the secret is to a successful DevOps transformation? What is it made up of? Where do you start? If only someone made the recipe and the ingredients available, perhaps everyone could try it out in their kitchens. We are part of the Red Hat Open Innovation Labs and Services teams, and it is in our DNA to share with you what we have learned in our kitchens and with our customers while taking these journeys to be more successful at DevOps
👉 @devops_star
Mike Hepburn, Time Beatie, Noel OConnor, Donal Spring (2021)
Have you ever wondered what the secret is to a successful DevOps transformation? What is it made up of? Where do you start? If only someone made the recipe and the ingredients available, perhaps everyone could try it out in their kitchens. We are part of the Red Hat Open Innovation Labs and Services teams, and it is in our DNA to share with you what we have learned in our kitchens and with our customers while taking these journeys to be more successful at DevOps
👉 @devops_star
🔥3👍1😐1
Как определить DNS в контейнерах Docker
Когда вы развертываете контейнер в сети, если он не может найти DNS-сервер, определенный в файле /etc/resolv.conf, по умолчанию он будет использовать DNS, настроенный для хоста.
Это может быть хорошо и удобно для определенных ситуаций.
Но что если (возможно, по соображениям безопасности) вы не хотите, чтобы ваши контейнеры использовали тот же DNS, что и хосты.
https://telegra.ph/Kak-opredelit-DNS-v-kontejnerah-Docker-09-26
👉 @devops_star
Когда вы развертываете контейнер в сети, если он не может найти DNS-сервер, определенный в файле /etc/resolv.conf, по умолчанию он будет использовать DNS, настроенный для хоста.
Это может быть хорошо и удобно для определенных ситуаций.
Но что если (возможно, по соображениям безопасности) вы не хотите, чтобы ваши контейнеры использовали тот же DNS, что и хосты.
https://telegra.ph/Kak-opredelit-DNS-v-kontejnerah-Docker-09-26
👉 @devops_star
👍4
Jeffery_D_Smith_Operations_Anti_Patterns,_DevOps_Solutions_Manning.pdf
6.3 MB
Operations Anti-Patterns, DevOps Solutions
Автор: Jeffery D. Smith (2020)
В своей книге автор показывает, как реализовывать методологию DevOps в несовершенных средах, в которых работают большинство разработчиков. Отчасти учебник по технологиям, отчасти справочное руководство и отчасти справочник по психологии - эта книга показывает реалистичные способы внедрения DevOps в вашу команду, когда у вас нет гибкости для радикальных изменений в организационной структуре.
👉 @devops_star
Автор: Jeffery D. Smith (2020)
В своей книге автор показывает, как реализовывать методологию DevOps в несовершенных средах, в которых работают большинство разработчиков. Отчасти учебник по технологиям, отчасти справочное руководство и отчасти справочник по психологии - эта книга показывает реалистичные способы внедрения DevOps в вашу команду, когда у вас нет гибкости для радикальных изменений в организационной структуре.
👉 @devops_star
👍4
3 довольно неизвестных команды Docker, которые помогут вам в самых различных ситуациях
Если вы какое-то время используете Docker, у вас, вероятно, уже есть адаптированный для вас простой и эффективный рабочий процесс, который включает в себя некоторые из ваших любимых команд Docker (если это технически правильные подкоманды).
https://telegra.ph/3-dovolno-neizvestnyh-komandy-Docker-kotorye-pomogut-vam-v-samyh-razlichnyh-situaciyah-09-26
👉 @devops_star
Если вы какое-то время используете Docker, у вас, вероятно, уже есть адаптированный для вас простой и эффективный рабочий процесс, который включает в себя некоторые из ваших любимых команд Docker (если это технически правильные подкоманды).
https://telegra.ph/3-dovolno-neizvestnyh-komandy-Docker-kotorye-pomogut-vam-v-samyh-razlichnyh-situaciyah-09-26
👉 @devops_star
👍5🫡1
Naml - это инструмент управления конфигурацией для описания конфигурации Kubernetes в Go. Имеет хороший инструмент для преобразования YAML в Go.
Особенности
- Создавайте приложения с помощью 🎉 Go вместо YAML.
- Используйте компилятор Go для проверки синтаксиса.
- Пишите реальные тесты 🤓 на Go для проверки и валидации ваших развертываний.
- Тестируйте свои приложения в Kubernetes с использованием kind.
- Определяйте пользовательскую логику установки. Что произойдет, если она не сработает? А что насчет логических проблем во время выполнения?
- Определяйте пользовательские реестры приложений. Множество приложений одного типа? Нет проблем.
- Используйте последний клиент (тот же клиент, который использует остальная часть Kubernetes).
https://github.com/kris-nova/naml
👉 @devops_star
Особенности
- Создавайте приложения с помощью 🎉 Go вместо YAML.
- Используйте компилятор Go для проверки синтаксиса.
- Пишите реальные тесты 🤓 на Go для проверки и валидации ваших развертываний.
- Тестируйте свои приложения в Kubernetes с использованием kind.
- Определяйте пользовательскую логику установки. Что произойдет, если она не сработает? А что насчет логических проблем во время выполнения?
- Определяйте пользовательские реестры приложений. Множество приложений одного типа? Нет проблем.
- Используйте последний клиент (тот же клиент, который использует остальная часть Kubernetes).
https://github.com/kris-nova/naml
👉 @devops_star
👍3
Как подключиться к контейнеру Docker по ssh
После того, как у вас появился контейнер Docker, работающий в системе Linux, одна из вещей, которые вам, вероятно, потребуется сделать, – это запустить команды внутри контейнера.
https://telegra.ph/Kak-podklyuchitsya-k-kontejneru-Docker-po-ssh-09-26
👉 @devops_star
После того, как у вас появился контейнер Docker, работающий в системе Linux, одна из вещей, которые вам, вероятно, потребуется сделать, – это запустить команды внутри контейнера.
https://telegra.ph/Kak-podklyuchitsya-k-kontejneru-Docker-po-ssh-09-26
👉 @devops_star
👍8🤨3