DevOps Star (Звезда Девопса)
2.16K subscribers
270 photos
211 videos
19 files
327 links
Devops, Linux, SRE, Kubernetes, Сисадмин, Девопс, Python, JS, Java, Git, IT канал, программирование, безопасность, ИТ, Sysadmin

По всем вопросам @evgenycarter
Download Telegram
Какие инструкции есть у Dockerfile?


FROM Задаёт базовый (родительский) образ.

LABEL. Описывает метаданные. Например — сведения о том, кто создал и поддерживает образ.

ENV Устанавливает постоянные переменные среды.

RUN. Выполняет команду и создаёт слой образа. Используется для установки в контейнер пакетов.

COPY. Копирует в контейнер файлы и директории.

ADD. Копирует файлы и директории в контейнер, может распаковывать локальные .tar-файлы.

CMD Описывает команду с аргументами, которую нужно выполнить когда контейнер будет запущен. Аргументы могут быть переопределены при запуске контейнера. В файле может присутствовать лишь одна инструкция CMD.

WORKDIR. Задаёт рабочую директорию для следующей инструкции.

ARG Задаёт переменные для передачи Docker во время сборки образа.

ENTRYPOINT Предоставляет команду с аргументами для вызова во время выполнения контейнера. Аргументы не переопределяются.

EXPOSE Указывает на необходимость открыть порт.

VOLUME Создаёт точку монтирования для работы с постоянным хранилищем.

👉 @devops_star
👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
ContainerSSH

SSH-сервер, запускающий контейнеры в Kubernetes и Docker

https://github.com/ContainerSSH/ContainerSSH

👉 @devops_star
👍1
Чем отличается CMD от ENTRYPOINT в Dockerfile?

Инструкции CMD и ENTRYPOINT выполняются в момент запуска контейнера, тольо инструкция CMD позволяет переопределить передаваемые команде аргументы.

Пример 1. CMD: Опишем сборку образа в Dockerfile.
FROM alpine
CMD ["ping", "8.8.8.8"]



В инструкцию CMD передаются 2 аргумента. Выполним сборку образа docker build -t test . и запустим контейнер.
$ docker run test
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=43 time=32.976 ms
64 bytes from 8.8.8.8: seq=1 ttl=43 time=31.998 ms
64 bytes from 8.8.8.8: seq=2 ttl=43 time=31.843 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 31.708/33.316/36.823 ms



Теперь передадим 2 новых аргумента для запуска контейнера.
$ docker run test traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 46 byte packets
1 172.17.0.1 (172.17.0.1) 0.017 ms 0.016 ms 0.009 ms
2 192.168.168.1 (192.168.168.1) 0.996 ms 1.553 ms 2.069 ms
3 * * *
4 lag-2-435.bgw01.samara.ertelecom.ru (85.113.62.125) 1.454 ms 1.427 ms 1.984 ms
5 172.68.8.3 (172.68.8.3) 19.685 ms 15.722 ms 15.565 ms
6 172.68.8.2 (172.68.8.2) 15.846 ms 22.696 ms 35.093 ms
7 one.one.one.one (1.1.1.1) 17.439 ms 17.670 ms 24.202 ms


ping заменен на traceroute, IP адрес заменен на 1.1.1.1.


Пример 2. ENTRYPOINT: Опишем сборку образа в Dockerfile.
FROM alpine
ENTRYPOINT ["ping", "8.8.8.8"]



В инструкцию ENTRYPOINT передаются 2 аргумента. Выполним сборку образа docker build -t test . и запустим контейнер.
$ docker run test2
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=43 time=36.189 ms
64 bytes from 8.8.8.8: seq=1 ttl=43 time=44.120 ms
64 bytes from 8.8.8.8: seq=2 ttl=43 time=44.584 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 36.189/41.631/44.584 ms



Теперь передадим изменим один из аргументов для запуска контейнера.

$ docker run test2 ping 1.1.1.1
BusyBox v1.31.1 () multi-call binary.

Usage: ping [OPTIONS] HOST

Send ICMP ECHO_REQUEST packets to network hosts

-4,-6 Force IP or IPv6 name resolution
-c CNT Send only CNT pings
-s SIZE Send SIZE data bytes in packets (default 56)
-i SECS Interval
-A Ping as soon as reply is recevied
-t TTL Set TTL
-I IFACE/IP Source interface or IP address
-W SEC Seconds to wait for the first response (default 10)
(after all -c CNT packets are sent)
-w SEC Seconds until ping exits (default:infinite)
(can exit earlier with -c CNT)
-q Quiet, only display output at start
and when finished
-p HEXBYTE Pattern to use for payload



Как видим, аргумент передать контейнеру нельзя.

👉 @devops_star
👍2
Чем отличается COPY от ADD в Dockerfile?

Инструкция COPY копируют файлы и директории с хостовой машины внутрь контейнера, инструкция ADD копирует файлы и директории с хостовой машины внутрь контейнера и может распаковывать .tar архивы.

👉 @devops_star
👍2🫡1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
KubeSkoop

KubeSkoop — это инструмент диагностики сетей Kubernetes для различных CNI плагинов и провайдеров IAAS. KubeSkoop автоматически строит граф сетевого трафика Pod в кластере Kubernetes, осуществляет мониторинг и анализ критических путей ядра с помощью eBPF, чтобы решать большинство сетевых проблем кластера Kubernetes.

https://github.com/alibaba/kubeskoop

👉 @devops_star
👍1
Molecule

Проект Molecule предназначен для помощи в разработке и тестировании ролей Ansible.

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

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

https://github.com/ansible/molecule

👉 @devops_star
👍1
Как определить состояние контейнера Docker?


1. Проверить статус всех контейнеров:

docker ps -a

Эта команда выводит список всех контейнеров, их идентификаторы, имена, статус и время работы. В колонке "STATUS" можно увидеть текущее состояние контейнера, например:
- Up X hours — контейнер работает.
- Exited (code) — контейнер завершил работу с определённым кодом выхода.

2. Проверить состояние конкретного контейнера:
Используйте команду docker inspect, чтобы получить подробную информацию о состоянии контейнера:

docker inspect <container_id>

Эта команда выводит всю информацию о контейнере, включая статус, ошибки, время работы и другие параметры. Для удобства можно использовать фильтрацию JSON-вывода, например:

docker inspect -f '{{.State.Status}}' <container_id>

Возможные статусы:
- running — контейнер запущен.
- exited — контейнер завершил работу.
- paused — контейнер приостановлен.
- restarting — контейнер перезапускается.

3. Проверить логи контейнера:
Чтобы увидеть последние действия контейнера, можно просмотреть его логи:

docker logs <container_id>

Это поможет понять, что происходило с контейнером, особенно если он неожиданно завершил работу.

#devops #девопс

👉 @devops_star
👍2
Топ 4 лучших типа сервисов Kubernetes в одной диаграмме.

🔹 ClusterIP
ClusterIP - это стандартный и наиболее распространенный тип службы. Kubernetes назначает сервису ClusterIP внутренний IP-адрес кластера. Это делает службу доступной только в пределах кластера.

🔹 NodePort
Это позволяет вывести сервис за пределы кластера, добавив общекластерный порт поверх ClusterIP. Мы можем запросить сервис по NodeIP:NodePort.

🔹 LoadBalancer
Этот способ раскрывает сервис извне, используя балансировщик нагрузки облачного провайдера.

🔹 ExternalName
Сопоставляет службу с доменным именем. Обычно это используется для создания службы в Kubernetes для представления внешней базы данных.

#devops #девопс

👉 @devops_star
👍1
Технологический стек Netflix - CI/CD Pipeline


Эта статья основана на материалах многих инженерных блогов Netflix и проектов с открытым исходным кодом.

Планирование: Netflix Engineering использует JIRA для планирования и Confluence для документирования.

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

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

Упаковка: Пакет и зависимости упаковываются в машинный образ Amazon (AMI) для выпуска.

Тестирование: Тестирование подчеркивает ориентацию продакшен-культуры на создание хаос-инструментов.

Развертывание: Для развертывания Netflix использует самостоятельно созданный Spinnaker.

Мониторинг: Метрики мониторинга централизованы в Atlas, а для выявления аномалий используется Kayenta.

Отчет об инцидентах: Инциденты рассылаются в соответствии с приоритетом, а для их обработки используется PagerDuty.

#devops #девопс

👉 @devops_star
👍1
Kargo

Это платформа следующего поколения для организации непрерывной доставки и оркестрации жизненного цикла приложений для Kubernetes. Она основывается на принципах GitOps и интегрируется с существующими технологиями, такими как Argo CD, чтобы упростить и автоматизировать поэтапный выпуск изменений на различных этапах жизненного цикла приложения.

https://github.com/akuity/kargo

#devops #девопс

👉 @devops_star
👍3
5 вариантов генерации конфигурационных файлов Shell-скриптами

Подготовка конфигурационных файлов из шаблонов — весьма распространённая задача системного администрирования. Решать её можно разными способами, каждый из которых хорош по-своему, здесь же мы рассмотрим, как это сделать с помощью Shell-скриптов.

https://habr.com/ru/companies/ruvds/articles/843048/

#devops #девопс

👉 @devops_star
👍1
DCGM-Exporter

Экспортер метрик NVIDIA GPU для Prometheus с использованием DCGM

Чтобы собирать метрики на узле с GPU, просто запустите контейнер dcgm-exporter:


docker run -d --gpus all --rm -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.3.8-3.6.0-ubuntu22.04
curl localhost:9400/metrics
# HELP DCGM_FI_DEV_SM_CLOCK SM clock frequency (in MHz).
# TYPE DCGM_FI_DEV_SM_CLOCK gauge
# HELP DCGM_FI_DEV_MEM_CLOCK Memory clock frequency (in MHz).
# TYPE DCGM_FI_DEV_MEM_CLOCK gauge
# HELP DCGM_FI_DEV_MEMORY_TEMP Memory temperature (in C).
# TYPE DCGM_FI_DEV_MEMORY_TEMP gauge
...
DCGM_FI_DEV_SM_CLOCK{gpu="0", UUID="GPU-604ac76c-d9cf-fef3-62e9-d92044ab6e52"} 139
DCGM_FI_DEV_MEM_CLOCK{gpu="0", UUID="GPU-604ac76c-d9cf-fef3-62e9-d92044ab6e52"} 405
DCGM_FI_DEV_MEMORY_TEMP{gpu="0", UUID="GPU-604ac76c-d9cf-fef3-62e9-d92044ab6e52"} 9223372036854775794
...


https://github.com/NVIDIA/dcgm-exporter

#devops #девопс

👉 @devops_star
👍1
Настраиваем работу конвейера CI/CD (почти) без рук. Опыт использования Orchestra R в энтерпрайзе

Компании, что используют Jenkins в качестве CI/CD‑инструмента, обычно делают несколько экземпляров, если в разработке участвует множество команд или приходится работать с большим количеством проектов. При этом оркестрация Jenkins-ов в командах — не самая простая работа, а во многом ещё и рутинная. С одной стороны, сложно соблюдать все требования сборки и тестирования и вовремя находить согласующих. С другой, одним скриптом невозможно решить всю задачу от получения доступов до вывода релизов в эксплуатацию.

Есть правило, что если система становится слишком сложной, то люди чаще ищут способы обойти алгоритмы, а не следовать им. Чтобы не усложнять систему, а разложить всё по ролям и этапам, мы пришли к созданию собственного инструмента — Orchestra R. С его помощью мы хотели не только автоматизировать работу конвейера CI/CD, но и упростить жизнь всех DevOps‑инженеров. В этом материале поделимся особенностями работы инструмента и опытом эксплуатации в СберТехе.

https://habr.com/ru/companies/sberbank/articles/855556/

#devops #девопс

👉 @devops_star
👍1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌

https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌

https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
Docker vs. Kubernetes. Что мы должны использовать?

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

Что такое Kubernetes?
Kubernetes, также известная как K8s, - это система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями. Она группирует контейнеры, из которых состоит приложение, в логические блоки для удобства управления и обнаружения в кластере машин. Для запуска контейнеров в Kubernetes используются не Docker Engine, а такие среды выполнения контейнеров, как containerd и CRI-O.

Чем они отличаются?
Docker ориентирован на автоматизацию создания и развертывания отдельных контейнеров на одном узле. Хотя он может управлять коллекциями контейнеров с помощью Docker Swarm, он более ограничен по сравнению с Kubernetes с точки зрения масштабируемости и возможностей.

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

Таким образом, Docker отлично справляется с управлением контейнерами на одной системе, а Kubernetes предназначен для управления и масштабирования многоконтейнерных приложений в кластерах.

#devops #девопс

👉 @devops_star
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Cilicon - это приложение для macOS, использующее фреймворк виртуализации Apple для создания, предоставления и запуска эфемерных виртуальных машин CI с производительностью, близкой к нативной. В настоящее время оно поддерживает Github Actions, Buildkite Agent, GitLab Runner и произвольные скрипты.

В зависимости от ваших настроек, вы сможете запустить свой собственный CI в считанные минуты 🚀.


https://github.com/traderepublic/Cilicon

#devops #девопс

👉 @devops_star
👍1
SLD (Stack-Lifecycle-Deployment)

OpenSource решение для самообслуживания инфраструктуры, которое определяет и управляет полным жизненным циклом ресурсов, используемых и развёртываемых в облаке! Это интерфейс для Terraform с REST API для автоматизации Terraform и OpenTofu.

https://github.com/D10S0VSkY-OSS/Stack-Lifecycle-Deployment

#devops #девопс

👉 @devops_star
👍21
Pghero

Панель управления производительностью для Postgres

https://github.com/ankane/pghero

#devops #девопс

👉 @devops_star
👍1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌

https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌

https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
1🤮1💩1