Стать DevOps-инженером в 2023 году: [Практическая дорожная карта]
В этом подробном руководстве я расскажу о практической дорожной карте становления DevOps-инженера, основанной на моем 10-летнем опыте работы в качестве DevOps-инженера в различных организациях.
На современном ИТ-рынке сфера DevOps является одним из лучших вариантов для повышения заработной платы и карьерного роста ИТ-специалистов. Один из часто задаваемых мне вопросов: "Как стать инженером DevOps?".
Многие утверждают (в том числе и я), что нет ничего похожего на "DevOps-инженера" или "DevOps-команду", потому что этого понятия не существует. Однако все в отрасли уже привыкли к термину "инженер DevOps", и если вы понимаете философию DevOps, то эти названия не имеют большого значения.
Ближе к концу статьи я добавил различные команды, в которые может входить инженер DevOps.
https://devopscube.com/become-devops-engineer#devops-engineer-roadmap
#devops #девопс
👉 @devops_star
В этом подробном руководстве я расскажу о практической дорожной карте становления DevOps-инженера, основанной на моем 10-летнем опыте работы в качестве DevOps-инженера в различных организациях.
На современном ИТ-рынке сфера DevOps является одним из лучших вариантов для повышения заработной платы и карьерного роста ИТ-специалистов. Один из часто задаваемых мне вопросов: "Как стать инженером DevOps?".
Многие утверждают (в том числе и я), что нет ничего похожего на "DevOps-инженера" или "DevOps-команду", потому что этого понятия не существует. Однако все в отрасли уже привыкли к термину "инженер DevOps", и если вы понимаете философию DevOps, то эти названия не имеют большого значения.
Ближе к концу статьи я добавил различные команды, в которые может входить инженер DevOps.
https://devopscube.com/become-devops-engineer#devops-engineer-roadmap
#devops #девопс
👉 @devops_star
👍4❤1
Media is too big
VIEW IN TELEGRAM
Практика DevOps: разворачиваем простое приложение на AWS
Илия Карин демонстрирует развертывание простого приложения с не самой простой архитектурой на Amazon Web Services. Проходится весь процесс, который присущ вполне реальному проекту.
00:00 Знакомство с Илией Кариным. План действий.
01:56 Запускаем создание инфраструктуры на Amazon Web Services (AWS).
03:30 Переходим к Terraform - инструмента для описания инфраструктуры кодом.
04:37 Что такое Docker и Docker-Compose? Их сравнение.
08:53 Рассмотрение нашего стендового приложения (калькулятор Фибоначчи).
11:11 Архитектура приложения.
12:14 Локальное демо приложения.
16:28 Сверяем проделанное по шагам. Повторный запуск Terraform для исправления проблем.
19:38 Что такое Continuous Integration и Continuous Delivery (CI/CD)? Работа с Travis CI. Разнообразие CD-сервисов.
24:12 Окончание развертывания архитектуры на AWS.
28:31 Еще про CI/CD. Командная работа и пайплайн CI/CD.
29:42 Инфраструктура развернута на AWS. Вносим изменение и пушим его в Git. Подхват изменений Travis'ом и их развертывание.
36:34 Смотрим на наше приложение на AWS. Делаем еще изменение.
38:10 Проверяем инфраструктуру. Опасность снятия немалой суммы денег, если не обратить внимание!
40:23 Смотрим на результат последнего коммита. Тест успешно развернутого приложения.
👉 @devops_star
Илия Карин демонстрирует развертывание простого приложения с не самой простой архитектурой на Amazon Web Services. Проходится весь процесс, который присущ вполне реальному проекту.
00:00 Знакомство с Илией Кариным. План действий.
01:56 Запускаем создание инфраструктуры на Amazon Web Services (AWS).
03:30 Переходим к Terraform - инструмента для описания инфраструктуры кодом.
04:37 Что такое Docker и Docker-Compose? Их сравнение.
08:53 Рассмотрение нашего стендового приложения (калькулятор Фибоначчи).
11:11 Архитектура приложения.
12:14 Локальное демо приложения.
16:28 Сверяем проделанное по шагам. Повторный запуск Terraform для исправления проблем.
19:38 Что такое Continuous Integration и Continuous Delivery (CI/CD)? Работа с Travis CI. Разнообразие CD-сервисов.
24:12 Окончание развертывания архитектуры на AWS.
28:31 Еще про CI/CD. Командная работа и пайплайн CI/CD.
29:42 Инфраструктура развернута на AWS. Вносим изменение и пушим его в Git. Подхват изменений Travis'ом и их развертывание.
36:34 Смотрим на наше приложение на AWS. Делаем еще изменение.
38:10 Проверяем инфраструктуру. Опасность снятия немалой суммы денег, если не обратить внимание!
40:23 Смотрим на результат последнего коммита. Тест успешно развернутого приложения.
👉 @devops_star
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Murex - bash-подобная среда оболочки и сценариев с расширенными возможностями, разработанными для обеспечения безопасности и производительности (например, более интеллектуальный инструментарий DevOps).
https://github.com/lmorg/murex
👉 @devops_star
https://github.com/lmorg/murex
👉 @devops_star
👍4
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
43:25 – 5. Курс DevOps Engineering в JohnBryce, Израиль
49:12 – 6. Как стать профессиональным DevOps инженером
54:24 – 7. Эпилог
👉 @devops_star
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
43:25 – 5. Курс DevOps Engineering в JohnBryce, Израиль
49:12 – 6. Как стать профессиональным DevOps инженером
54:24 – 7. Эпилог
👉 @devops_star
👍4
Выводим список установленных пакетов в Linux по дате
Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!
https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
👉 @devops_star
Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!
https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
👉 @devops_star
👍4🫡1
Media is too big
VIEW IN TELEGRAM
Что такое CI/CD? // Зачем и как работает
Что такое CI/CD: простое объяснение для новичков про Continuous Integration, Continuous Delivery/Deployment. Они же - непрерывная интеграция и непрерывная доставка или развертывание. Что там за магия происходит под капотом, зачем это вообще придумали и какие цели преследуются?
Расскажу про то, какие есть процессы внутри, как и где это запускается без привязки к конкретным инструментам вроде Gitlab и Jenkins. Про артефакты, Nexus, тест-гейты, агенты и раннеры.
источник
👉 @devops_star
Что такое CI/CD: простое объяснение для новичков про Continuous Integration, Continuous Delivery/Deployment. Они же - непрерывная интеграция и непрерывная доставка или развертывание. Что там за магия происходит под капотом, зачем это вообще придумали и какие цели преследуются?
Расскажу про то, какие есть процессы внутри, как и где это запускается без привязки к конкретным инструментам вроде Gitlab и Jenkins. Про артефакты, Nexus, тест-гейты, агенты и раннеры.
источник
👉 @devops_star
👍4
Топ-10 опций команды docker run
Консольная команда
Пример команды с опциями, которые будут рассмотрены в данной статье:
Начнем с азов. Консольная команда docker run создает из docker-образа контейнер (точнее создает доступный для записи слой поверх слоев, содержащихся в docker-образе) и запускает его (выполняет указанную команду). В общем виде это выглядит так:
Команда docker run очень похожа на комбинацию команд docker create ... и docker start ..., подробнее о которых можно узнать в официальной документации.
Топ-10 опций команды docker run в алфавитном порядке.
👉 @devops_star
Консольная команда
docker run
имеет около сотни опций, в том числе -d
, -i
, -t
, -v
и -w
. В данной статье рассмотрим десять наиболее популярных опций, с которыми наверняка придется работать. Давайте разберемся!Пример команды с опциями, которые будут рассмотрены в данной статье:
docker run \
--rm \
--detach \
--env KEY=VALUE \
--ip 10.10.9.75 \
--publish 3000:3000 \
--volume my_volume \
--name my_container \
--tty --interactive \
--volume /my_volume \
--workdir /app \
IMAGE bash
Начнем с азов. Консольная команда docker run создает из docker-образа контейнер (точнее создает доступный для записи слой поверх слоев, содержащихся в docker-образе) и запускает его (выполняет указанную команду). В общем виде это выглядит так:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Команда docker run очень похожа на комбинацию команд docker create ... и docker start ..., подробнее о которых можно узнать в официальной документации.
Топ-10 опций команды docker run в алфавитном порядке.
--detach
, -d
- по умолчанию, docker-контейнер запускается присоединенным (attached) к стандартным потокам ввода-вывода. Параметр -d, --detach позволяет запускать контейнер в фоне и не выводить на экран содержимое потоков ввода-вывода.--entrypoint
- устанавливает или переопределяет используемую по умолчанию команду (и параметры) из docker-образа. Подробнее о Docker ENTRYPOINT можно узнать здесь.--env
, -e
- устанавливает переменные окружения в формате пар КЛЮЧ=ЗНАЧЕНИЕ. Если у вас есть список переменных окружения в файле, тогда необходимо использовать опцию --env-file.--ip
- назначает docker-контейнеру IP-адрес, например, --ip=10.10.9.75.
--name
- назначает docker-контейнеру имя (--name my-super-container).--publish
, -p
или --publish-all
, -P
- сопоставляет порт(ы) docker-контейнера порту(ам) на хост системе. Стоит отметить, что --publish-all откроет доступ к портам, описанным в Dockerfile с помощью директивы EXPOSE.--rm
- автоматически удалить контейнер после завершения его работы (в том числе, при завершении с ошибкой).--tty, -t
- назначает псевдо-TTY, подключенный к STDIN контейнера. Зачастую используется с опцией --interactive, -i - например, если вам нужно подключиться к оболочке (bash) внутри docker-контейнера для выполнения каких-то действий.--volume, -v
- монтирование тома. Подробнее о томах можно почитать здесь.--workdir, -w
- устанавливает рабочую директорию внутри docker-контейнера. Например, если вы скопировали некие файлы в папку app контейнера, то вполне разумно будет установить этот каталог в качестве рабочей директории.👉 @devops_star
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Ansible На Русском Языке
1 - Автоконфигурирование для DevOps - Полный Курс на Простом Языке
2 - Установка на Ubuntu и CentOS
3 - Установка на Amazon Linux через PIP
4 - Подключение к серверам LINUX
5 - Подключение к серверам WINDOWS
6 - Правила создания файла Inventory
7 - Запуск Ad-Hoc Комманд
8 - Правила Формата YAML
9 - Перенос переменных в group_vars
10 - Первые Playbook
👉 @devops_star
1 - Автоконфигурирование для DevOps - Полный Курс на Простом Языке
2 - Установка на Ubuntu и CentOS
3 - Установка на Amazon Linux через PIP
4 - Подключение к серверам LINUX
5 - Подключение к серверам WINDOWS
6 - Правила создания файла Inventory
7 - Запуск Ad-Hoc Комманд
8 - Правила Формата YAML
9 - Перенос переменных в group_vars
10 - Первые Playbook
👉 @devops_star
👍7❤1
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