🤔 Что такое гипервизор?
Гипервизор — это программный или аппаратный слой, позволяющий запускать несколько операционных систем (виртуальных машин) на одной физической машине. Бывает двух типов: на уровне железа и в ОС.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Гипервизор — это программный или аппаратный слой, позволяющий запускать несколько операционных систем (виртуальных машин) на одной физической машине. Бывает двух типов: на уровне железа и в ОС.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1💊1
🤔 Для чего нужен Elasticsearch?
Elasticsearch — это распределённый поисковый движок на основе Lucene. Он используется для полнотекстового поиска, анализа логов, мониторинга, а также как база данных для аналитики. Отличается скоростью, горизонтальной масштабируемостью и богатой системой фильтрации.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Elasticsearch — это распределённый поисковый движок на основе Lucene. Он используется для полнотекстового поиска, анализа логов, мониторинга, а также как база данных для аналитики. Отличается скоростью, горизонтальной масштабируемостью и богатой системой фильтрации.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как заставить процесс отпустить файловые дескрипторы?
Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.
🟠Завершение процесса
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
или принудительно
Чтобы найти процессы, удерживающие файлы
или
🟠Закрытие дескриптора вручную
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать
1⃣Найдите открытые дескрипторы процесса:
2⃣Закройте конкретный дескриптор:
🟠Использование `gdb` для вмешательства в процесс
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через
🟠Перемонтирование файловой системы
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
Или использовать
🟠Использование `systemctl restart` для сервисов
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
или
Ставь 👍 и забирай 📚 Базу знаний
Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.
🟠Завершение процесса
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
kill <PID>
или принудительно
kill -9 <PID>
Чтобы найти процессы, удерживающие файлы
lsof | grep <filename>
или
fuser <filename>
🟠Закрытие дескриптора вручную
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать
lsof и /proc 1⃣Найдите открытые дескрипторы процесса:
ls -l /proc/<PID>/fd/
2⃣Закройте конкретный дескриптор:
exec 3>&-
🟠Использование `gdb` для вмешательства в процесс
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через
gdb: gdb -p <PID>
(gdb) call close(<FD>)
(gdb) detach
(gdb) quit
🟠Перемонтирование файловой системы
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
mount -o remount /
Или использовать
lsof для очистки удаленных файловlsof | grep deleted
🟠Использование `systemctl restart` для сервисов
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
systemctl restart <service>
или
service <service> restart
Ставь 👍 и забирай 📚 Базу знаний
👍3
🤔 В каком файле по дефолту будет хранится инормация об ОС, версии в линуксе?
В Linux информация о версии дистрибутива и ядра хранится в нескольких файлах.
🟠Основной файл — `/etc/os-release`
Этот файл есть во всех современных дистрибутивах (Debian, Ubuntu, RHEL, CentOS, Fedora).
Пример содержимого
🟠Альтернативный файл — `/etc/issue`
Некоторые дистрибутивы используют
Вывод
🟠Информация о ядре — `/proc/version`
Этот файл содержит версию ядра и информацию о компиляции.
Вывод
🟠Команды для проверки версии ОС
Проверить версию через
Вывод
Проверить ядро через
Вывод
Можно также вывести полную информацию:
Ставь 👍 и забирай 📚 Базу знаний
В Linux информация о версии дистрибутива и ядра хранится в нескольких файлах.
🟠Основной файл — `/etc/os-release`
Этот файл есть во всех современных дистрибутивах (Debian, Ubuntu, RHEL, CentOS, Fedora).
cat /etc/os-release
Пример содержимого
/etc/os-release NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
PRETTY_NAME="Ubuntu 22.04.3 LTS"
VERSION_ID="22.04"
HOME_URL="https://www.ubuntu.com/"
🟠Альтернативный файл — `/etc/issue`
Некоторые дистрибутивы используют
/etc/issue. cat /etc/issue
Вывод
Ubuntu 22.04.3 LTS \n \l
🟠Информация о ядре — `/proc/version`
Этот файл содержит версию ядра и информацию о компиляции.
cat /proc/version
Вывод
Linux version 5.15.0-84-generic (buildd@lcy02-amd64-016) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0) #93-Ubuntu SMP
🟠Команды для проверки версии ОС
Проверить версию через
lsb_release lsb_release -a
Вывод
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
Проверить ядро через
unameuname -r
Вывод
5.15.0-84-generic
Можно также вывести полную информацию:
uname -a
Ставь 👍 и забирай 📚 Базу знаний
👍5
🤔 Что такое Basic Auth?
Basic Auth — это простой способ авторизации в HTTP, при котором имя пользователя и пароль передаются в заголовке запроса, закодированные в Base64. Используется в базовых API или в системе без сессий.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Basic Auth — это простой способ авторизации в HTTP, при котором имя пользователя и пароль передаются в заголовке запроса, закодированные в Base64. Используется в базовых API или в системе без сессий.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какой инструмент нам может помочь в снятии метрик с продукта?
Если вам нужно собирать метрики (нагрузка, ошибки, задержки, бизнес-показатели) с вашего продукта, то вот лучшие инструменты
🟠Prometheus + Grafana
Prometheus – база данных временных рядов (time-series DB) для хранения метрик.
Grafana – мощная визуализация метрик.
Метрики собираются экспортерами (
Данные хранятся в Prometheus.
Grafana показывает красивые графики.
🟠Zabbix
Устанавливается агент на сервер (
Ставь 👍 и забирай 📚 Базу знаний
Если вам нужно собирать метрики (нагрузка, ошибки, задержки, бизнес-показатели) с вашего продукта, то вот лучшие инструменты
🟠Prometheus + Grafana
Prometheus – база данных временных рядов (time-series DB) для хранения метрик.
Grafana – мощная визуализация метрик.
Метрики собираются экспортерами (
node_exporter, blackbox_exporter и т. д.). Данные хранятся в Prometheus.
Grafana показывает красивые графики.
rate(http_requests_total[5m]) # Запросы в секунду за 5 минут
🟠Zabbix
Устанавливается агент на сервер (
zabbix-agent). Сервер собирает метрики и генерирует алерты.Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Что такое CRD (Custom Resource Definition)?
CRD — это механизм расширения API Kubernetes, позволяющий создавать свои типы ресурсов. Они управляются как стандартные ресурсы, но определяются и обрабатываются отдельно.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
CRD — это механизм расширения API Kubernetes, позволяющий создавать свои типы ресурсов. Они управляются как стандартные ресурсы, но определяются и обрабатываются отдельно.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Как определить ресурс, который необходим одной node?
Чтобы определить нагрузку на Node и правильно выделить ресурсы, нужно:
Проверить текущее потребление ресурсов (CPU, RAM, диски)*
Оценить нагрузку от подов (
Использовать мониторинг (Prometheus, Grafana,
🚩Проверить нагрузку на Node (`kubectl top node`)
Команда
Вывод
🚩Проверить потребление ресурсов подами (`kubectl top pods`)
Команда
Вывод
🚩Анализ `requests` и `limits` подов
Команда
Вывод (пример секции Allocatable)
Проверить
Вывод
🚩Использование Prometheus и Grafana для анализа нагрузки
Prometheus-запросы для анализа Node
Средняя загрузка CPU за 5 минут
Среднее использование памяти
Ставь 👍 и забирай 📚 Базу знаний
Чтобы определить нагрузку на Node и правильно выделить ресурсы, нужно:
Проверить текущее потребление ресурсов (CPU, RAM, диски)*
Оценить нагрузку от подов (
requests и limits) Использовать мониторинг (Prometheus, Grafana,
kubectl top) 🚩Проверить нагрузку на Node (`kubectl top node`)
Команда
sh
kubectl top nodes
Вывод
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
node-1 500m 25% 2Gi 50%
node-2 1000m 50% 4Gi 80%
🚩Проверить потребление ресурсов подами (`kubectl top pods`)
Команда
sh
kubectl top pods --all-namespaces
Вывод
NAMESPACE POD CPU(cores) MEMORY(bytes)
default web-app-1 250m 256Mi
default web-app-2 300m 512Mi
monitoring prometheus-1 600m 1Gi
🚩Анализ `requests` и `limits` подов
Команда
sh
kubectl describe node node-1
Вывод (пример секции Allocatable)
Allocatable:
cpu: 4
memory: 8Gi
pods: 110
Проверить
requests и limits у подовsh
kubectl describe pod my-pod
Вывод
Requests:
cpu: 500m
memory: 1Gi
Limits:
cpu: 1
memory: 2Gi
🚩Использование Prometheus и Grafana для анализа нагрузки
Prometheus-запросы для анализа Node
Средняя загрузка CPU за 5 минут
promql
avg(rate(node_cpu_seconds_total[5m])) * 100
Среднее использование памяти
promql
avg(node_memory_Active_bytes) / avg(node_memory_MemTotal_bytes) * 100
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Из каких ключевых особенностей состоит Kafka?
- Топики и партиции — масштабируемость.
- Продюсеры и консьюмеры — разделение обязанностей.
- Offset-архитектура — полная история сообщений.
- Брокеры и Zookeeper / KRaft — управление кластером.
- Репликация и лог-сегменты — надёжность и производительность.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Топики и партиции — масштабируемость.
- Продюсеры и консьюмеры — разделение обязанностей.
- Offset-архитектура — полная история сообщений.
- Брокеры и Zookeeper / KRaft — управление кластером.
- Репликация и лог-сегменты — надёжность и производительность.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3
🤔 Какие Enterprise Firewall знаешь?
В мире корпоративных (Enterprise) межсетевых экранов (firewall) существует множество решений от разных вендоров. Основные из них:
🟠Palo Alto Networks (Next-Generation Firewall, NGFW)
Palo Alto — один из лидеров в сфере NGFW. Он использует глубокий анализ трафика и машинное обучение для выявления угроз.
Контроль трафика на уровне приложений (App-ID)
Инспекция SSL/TLS
Встроенная защита от вредоносных программ (WildFire)
Интеграция с SIEM/SOAR
🟠Cisco Firepower (ранее ASA с FirePOWER Services)
Cisco Firepower объединяет традиционные возможности Cisco ASA с функциями, полученными после покупки Sourcefire.
IPS/IDS (интеграция с Snort)
Защита от атак нулевого дня
Автоматизация защиты на базе машинного обучения
Полная интеграция с экосистемой Cisco
🟠3. Fortinet FortiGate
Fortinet — это NGFW, ориентированный на производительность и безопасность.
Встроенный SD-WAN
Антивирусный сканер и веб-фильтрация
DLP (Data Loss Prevention)
Поддержка IoT и OT-безопасности
🟠Check Point Next Generation Firewall
Check Point — один из старейших игроков в сфере межсетевых экранов, известный своими решениями безопасности.
Инспекция шифрованного трафика
Защита от APT (Advanced Persistent Threats)
Встроенный Threat Intelligence (ThreatCloud)
- Многослойная защита от DoS/DDoS
🟠Juniper Networks SRX
Juniper предлагает мощные межсетевые экраны, которые часто используются в телекоммуникациях.
Высокая производительность
Поддержка виртуализации (vSRX)
Гибкая маршрутизация и VPN
Интеграция с AI для автоматического обнаружения угроз
🟠Huawei USG (Unified Security Gateway)
Huawei предлагает сетевые экраны для корпоративного и государственного сектора.
Интеграция с 5G-сетями
Встроенные функции DDoS-защиты
Высокая масштабируемость
Ставь 👍 и забирай 📚 Базу знаний
В мире корпоративных (Enterprise) межсетевых экранов (firewall) существует множество решений от разных вендоров. Основные из них:
🟠Palo Alto Networks (Next-Generation Firewall, NGFW)
Palo Alto — один из лидеров в сфере NGFW. Он использует глубокий анализ трафика и машинное обучение для выявления угроз.
Контроль трафика на уровне приложений (App-ID)
Инспекция SSL/TLS
Встроенная защита от вредоносных программ (WildFire)
Интеграция с SIEM/SOAR
🟠Cisco Firepower (ранее ASA с FirePOWER Services)
Cisco Firepower объединяет традиционные возможности Cisco ASA с функциями, полученными после покупки Sourcefire.
IPS/IDS (интеграция с Snort)
Защита от атак нулевого дня
Автоматизация защиты на базе машинного обучения
Полная интеграция с экосистемой Cisco
🟠3. Fortinet FortiGate
Fortinet — это NGFW, ориентированный на производительность и безопасность.
Встроенный SD-WAN
Антивирусный сканер и веб-фильтрация
DLP (Data Loss Prevention)
Поддержка IoT и OT-безопасности
🟠Check Point Next Generation Firewall
Check Point — один из старейших игроков в сфере межсетевых экранов, известный своими решениями безопасности.
Инспекция шифрованного трафика
Защита от APT (Advanced Persistent Threats)
Встроенный Threat Intelligence (ThreatCloud)
- Многослойная защита от DoS/DDoS
🟠Juniper Networks SRX
Juniper предлагает мощные межсетевые экраны, которые часто используются в телекоммуникациях.
Высокая производительность
Поддержка виртуализации (vSRX)
Гибкая маршрутизация и VPN
Интеграция с AI для автоматического обнаружения угроз
🟠Huawei USG (Unified Security Gateway)
Huawei предлагает сетевые экраны для корпоративного и государственного сектора.
Интеграция с 5G-сетями
Встроенные функции DDoS-защиты
Высокая масштабируемость
Ставь 👍 и забирай 📚 Базу знаний
🤔 Что известно о стеке TCP/IP?
Стек TCP/IP — это модель сетевых протоколов, лежащая в основе Интернета.
Он определяет, как данные упаковываются, передаются, маршрутизируются и принимаются.
Основан на четырёх уровнях, проще и практичнее по сравнению с 7-уровневой моделью OSI.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Он определяет, как данные упаковываются, передаются, маршрутизируются и принимаются.
Основан на четырёх уровнях, проще и практичнее по сравнению с 7-уровневой моделью OSI.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊5
🤔 Где хранятся данные о группах которые существуют в системе?
В Linux информация о группах пользователей хранится в файле:
🚩Как посмотреть список групп?
Вывести содержимое файла
Формат строк в файле
Пример
Найти группу по имени
Выведет
Узнать, в каких группах состоит пользователь
или
Выведет
🚩Где ещё хранятся группы?
🟠Файл `/etc/gshadow`
хранит пароли групп
Если у группы есть пароль (редкость), он хранится здесь.
Формат:
Пример:
Посмотреть содержимое
🟠LDAP или Active Directory (если система подключена к домену)
Если используется корпоративный домен, данные о группах могут храниться в LDAP или Active Directory.
Ставь 👍 и забирай 📚 Базу знаний
В Linux информация о группах пользователей хранится в файле:
/etc/group — основной файл, содержащий список всех групп системы. 🚩Как посмотреть список групп?
Вывести содержимое файла
/etc/group cat /etc/group
Формат строк в файле
имя_группы:x:GID:пользователи
Пример
root:x:0:
sudo:x:27:alice,bob
developers:x:1001:john,mary
Найти группу по имени
grep '^sudo:' /etc/group
Выведет
sudo:x:27:alice,bob
Узнать, в каких группах состоит пользователь
groups alice
или
id -Gn alice
Выведет
alice sudo developers
🚩Где ещё хранятся группы?
🟠Файл `/etc/gshadow`
хранит пароли групп
Если у группы есть пароль (редкость), он хранится здесь.
Формат:
имя_группы:пароль:GID:админы_группы
Пример:
sudo:!:27:
developers:!:1001:john
Посмотреть содержимое
sudo cat /etc/gshadow
🟠LDAP или Active Directory (если система подключена к домену)
Если используется корпоративный домен, данные о группах могут храниться в LDAP или Active Directory.
getent group
Ставь 👍 и забирай 📚 Базу знаний
🤔 Какими командами делал бэкап?
Зависит от задачи, но чаще всего:
- tar — архивирование каталогов и файлов.
- rsync — резервное копирование с синхронизацией.
- pg_dump / mysqldump — дампы баз данных.
- cp -a — полная копия с сохранением прав и ссылок.
- dd — побитовая копия диска (в случае аварийных восстановлений).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Зависит от задачи, но чаще всего:
- tar — архивирование каталогов и файлов.
- rsync — резервное копирование с синхронизацией.
- pg_dump / mysqldump — дампы баз данных.
- cp -a — полная копия с сохранением прав и ссылок.
- dd — побитовая копия диска (в случае аварийных восстановлений).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4
🤔 Что произойдет если под не пройдет readiness пробу?
Если под (Pod) в Kubernetes не пройдет readiness-пробу (readiness probe), он будет считаться не готовым для обработки запросов.
🚩Что делает readiness-проба?
Readiness-проба используется для определения того, готов ли контейнер в поде обрабатывать входящие запросы. Если проба не проходит, Kubernetes исключает этот под из списка доступных для обслуживания запросов (например, через Service).
🚩Основные последствия
🟠Под не будет получать трафик через Service
Kubernetes автоматически исключает под из группы Endpoints для соответствующего сервиса. Другие компоненты системы, обращающиеся к сервису, не будут направлять запросы в этот под.
🟠Под продолжает работать
Под не будет удален или перезапущен. Kubernetes продолжит проверять его состояние readiness-пробой до тех пор, пока он не станет готовым.
🟠Нет влияния на liveness-пробу
Если readiness-проба не проходит, это не влияет на liveness-пробу. Под будет работать, пока не нарушена его "жизнеспособность".
🟠Аварийное поведение приложения может быть скрыто
Если под зависнет или будет не в состоянии обработать запросы, но при этом не нарушит liveness-пробу, он останется запущенным, но не будет получать трафик.
🚩Как это выглядит на практике?
Пример readiness-пробы
🚩Сценарий
🟠На старте
После создания пода Kubernetes ждет
🟠Если проба продолжает проваливаться
Kubernetes исключает под из группы доступных эндпоинтов. Под остается запущенным, и проба выполняется каждые
🚩Что произойдет с трафиком?
Если под — единственный в сервисе: Запросы к сервису вернут ошибку (например, 503 Service Unavailable), так как ни один под не готов.
Если подов несколько: Трафик перенаправляется на другие поды, готовые обрабатывать запросы.
🚩Как это помогает?
🟠Обеспечивает стабильность приложения
Под начинает обрабатывать трафик только после полной инициализации.
🟠Улучшает отказоустойчивость
В случае проблем с подом система перенаправляет запросы на другие экземпляры.
🟠Поддерживает обновления без простоя
Во время обновления подов через Deployment новые поды добавляются в пул доступных только после успешного прохождения readiness-проб.
Ставь 👍 и забирай 📚 Базу знаний
Если под (Pod) в Kubernetes не пройдет readiness-пробу (readiness probe), он будет считаться не готовым для обработки запросов.
🚩Что делает readiness-проба?
Readiness-проба используется для определения того, готов ли контейнер в поде обрабатывать входящие запросы. Если проба не проходит, Kubernetes исключает этот под из списка доступных для обслуживания запросов (например, через Service).
🚩Основные последствия
🟠Под не будет получать трафик через Service
Kubernetes автоматически исключает под из группы Endpoints для соответствующего сервиса. Другие компоненты системы, обращающиеся к сервису, не будут направлять запросы в этот под.
🟠Под продолжает работать
Под не будет удален или перезапущен. Kubernetes продолжит проверять его состояние readiness-пробой до тех пор, пока он не станет готовым.
🟠Нет влияния на liveness-пробу
Если readiness-проба не проходит, это не влияет на liveness-пробу. Под будет работать, пока не нарушена его "жизнеспособность".
🟠Аварийное поведение приложения может быть скрыто
Если под зависнет или будет не в состоянии обработать запросы, но при этом не нарушит liveness-пробу, он останется запущенным, но не будет получать трафик.
🚩Как это выглядит на практике?
Пример readiness-пробы
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: my-container
image: nginx
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10
🚩Сценарий
🟠На старте
После создания пода Kubernetes ждет
initialDelaySeconds (5 секунд) перед выполнением первой проверки. Если / не отвечает на HTTP-запрос, под считается не готовым.🟠Если проба продолжает проваливаться
Kubernetes исключает под из группы доступных эндпоинтов. Под остается запущенным, и проба выполняется каждые
periodSeconds (10 секунд), пока под не станет готовым.🚩Что произойдет с трафиком?
Если под — единственный в сервисе: Запросы к сервису вернут ошибку (например, 503 Service Unavailable), так как ни один под не готов.
Если подов несколько: Трафик перенаправляется на другие поды, готовые обрабатывать запросы.
🚩Как это помогает?
🟠Обеспечивает стабильность приложения
Под начинает обрабатывать трафик только после полной инициализации.
🟠Улучшает отказоустойчивость
В случае проблем с подом система перенаправляет запросы на другие экземпляры.
🟠Поддерживает обновления без простоя
Во время обновления подов через Deployment новые поды добавляются в пул доступных только после успешного прохождения readiness-проб.
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Какие типы заголовков есть?
Заголовки в HTTP делятся на:
- General — общие (Date, Connection);
- Request — только для клиента (Accept, User-Agent, Authorization);
- Response — только для ответа (Server, Set-Cookie);
- Entity — описывают тело (Content-Type, Content-Length).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Заголовки в HTTP делятся на:
- General — общие (Date, Connection);
- Request — только для клиента (Accept, User-Agent, Authorization);
- Response — только для ответа (Server, Set-Cookie);
- Entity — описывают тело (Content-Type, Content-Length).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что касается безопасности где хранить переменные секреты?
Хранение секретных переменных, таких как пароли, ключи API, токены доступа и прочие конфиденциальные данные, требует особого подхода для обеспечения безопасности. Ниже описаны рекомендуемые методы и инструменты для безопасного хранения секретных переменных в различных средах разработки и производства.
🟠Использование специализированных хранилищ секретов
HashiCorp Vault:
Это инструмент для управления секретами и защиты данных. Он позволяет централизованно хранить, доступ к которым строго контролируется, и динамически создавать секреты.
Преимущества: Поддержка динамических секретов, интеграция с большинством сред и технологий, высокий уровень безопасности.
AWS Secrets Manager и Azure Key Vault:
Эти облачные сервисы предоставляют управляемые решения для безопасного хранения и управления доступом к секретным данным, включая автоматическое обновление секретов.
Преимущества: Интеграция с облачными сервисами, упрощение ротации секретов, мониторинг и логирование доступа.
🟠Инкапсуляция секретов в среде выполнения
Docker Secrets и Kubernetes Secrets:
Предлагают встроенные механизмы для безопасного хранения секретов, которые используются контейнерами во время выполнения.
Преимущества: Локальная интеграция с системами оркестрации контейнеров, базовое шифрование на диске и управление доступом.
🟠Секреты в контролируемом CI/CD
Платформы CI/CD, такие как GitLab и GitHub, предоставляют возможности для безопасного хранения переменных среды и секретов, которые могут быть использованы в процессах автоматизации без разглашения.
Преимущества: Простота использования, интеграция с процессами разработки, защита от внешнего доступа.
🟠Шифрование секретов
Инструменты шифрования: Использование инструментов, таких как GnuPG (GPG), для шифрования секретов перед их сохранением в системах контроля версий или конфигурационных файлах.
Преимущества: Высокий уровень безопасности, контроль доступа к секретам на уровне пользователя.
Ставь 👍 и забирай 📚 Базу знаний
Хранение секретных переменных, таких как пароли, ключи API, токены доступа и прочие конфиденциальные данные, требует особого подхода для обеспечения безопасности. Ниже описаны рекомендуемые методы и инструменты для безопасного хранения секретных переменных в различных средах разработки и производства.
🟠Использование специализированных хранилищ секретов
HashiCorp Vault:
Это инструмент для управления секретами и защиты данных. Он позволяет централизованно хранить, доступ к которым строго контролируется, и динамически создавать секреты.
Преимущества: Поддержка динамических секретов, интеграция с большинством сред и технологий, высокий уровень безопасности.
AWS Secrets Manager и Azure Key Vault:
Эти облачные сервисы предоставляют управляемые решения для безопасного хранения и управления доступом к секретным данным, включая автоматическое обновление секретов.
Преимущества: Интеграция с облачными сервисами, упрощение ротации секретов, мониторинг и логирование доступа.
🟠Инкапсуляция секретов в среде выполнения
Docker Secrets и Kubernetes Secrets:
Предлагают встроенные механизмы для безопасного хранения секретов, которые используются контейнерами во время выполнения.
Преимущества: Локальная интеграция с системами оркестрации контейнеров, базовое шифрование на диске и управление доступом.
🟠Секреты в контролируемом CI/CD
Платформы CI/CD, такие как GitLab и GitHub, предоставляют возможности для безопасного хранения переменных среды и секретов, которые могут быть использованы в процессах автоматизации без разглашения.
Преимущества: Простота использования, интеграция с процессами разработки, защита от внешнего доступа.
🟠Шифрование секретов
Инструменты шифрования: Использование инструментов, таких как GnuPG (GPG), для шифрования секретов перед их сохранением в системах контроля версий или конфигурационных файлах.
Преимущества: Высокий уровень безопасности, контроль доступа к секретам на уровне пользователя.
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Пример асимметричного шифрования?
- RSA — самый популярный алгоритм.
- Пример: клиент шифрует данные публичным ключом сервера, а сервер расшифровывает их своим приватным.
Также используется в TLS-сертификатах, PGP, SSH.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Пример: клиент шифрует данные публичным ключом сервера, а сервер расшифровывает их своим приватным.
Также используется в TLS-сертификатах, PGP, SSH.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как и где посмотреть логи какого-нибудь сервиса?
Обычно хранятся в каталоге
🚩Способы просмотра
🟠Просмотр логов в /var/log
Каталог
Логи системных сообщений
Логи конкретных сервисов
Apache: /var/log/apache2/ или /var/log/httpd/ Логи доступа: /var/log/apache2/access.log или /var/log/httpd/access_log Логи ошибок: /var/log/apache2/error.log или /var/log/httpd/error_log
Nginx: /var/log/nginx/ Логи доступа: /var/log/nginx/access.log Логи ошибок: /var/log/nginx/error.log
MySQL: /var/log/mysql/ или /var/log/mysqld.log
SSH: /var/log/auth.log или /var/log/secure
🟠Использование `journalctl` для системных логов
Основные команды
Просмотр всех журналов
Логов конкретного сервиса
Последних логов и продолжение просмотра в реальном времени
Логов за определённый период
Логов с определённым уровнем логирования
🚩Примеры использования
🟠Просмотр логов Apache
Логи доступа
Логи ошибок
🟠Просмотр логов Nginx
Логи доступа
Логи ошибок
🟠Использование `journalctl` для просмотра логов Nginx
Все логи Nginx
Последние логи Nginx в реальном времени
Ставь 👍 и забирай 📚 Базу знаний
Обычно хранятся в каталоге
/var/log. Также многие современные дистрибутивы используют систему журналирования systemd для управления и просмотра логов.🚩Способы просмотра
🟠Просмотр логов в /var/log
Каталог
/var/log содержит логи большинства системных сервисов и приложений. Логи системных сообщений
/var/log/syslog: Содержит общие системные логи. /var/log/messages: Содержит общие системные сообщения (не во всех дистрибутивах).cat /var/log/syslog
less /var/log/syslog
tail -f /var/log/syslog
Логи конкретных сервисов
Apache: /var/log/apache2/ или /var/log/httpd/ Логи доступа: /var/log/apache2/access.log или /var/log/httpd/access_log Логи ошибок: /var/log/apache2/error.log или /var/log/httpd/error_log
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
Nginx: /var/log/nginx/ Логи доступа: /var/log/nginx/access.log Логи ошибок: /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
MySQL: /var/log/mysql/ или /var/log/mysqld.log
tail -f /var/log/mysql/error.log
SSH: /var/log/auth.log или /var/log/secure
tail -f /var/log/auth.log
🟠Использование `journalctl` для системных логов
journalctl — это утилита для просмотра и управления журналами systemd. Она позволяет фильтровать логи по различным критериям, таким как время, сервис и уровень логирования.Основные команды
journalctlПросмотр всех журналов
journalctl
Логов конкретного сервиса
journalctl -u nginx.service
Последних логов и продолжение просмотра в реальном времени
journalctl -f
journalctl -u nginx.service -f
Логов за определённый период
journalctl --since "2024-07-25 12:00:00" --until "2024-07-25 13:00:00"
Логов с определённым уровнем логирования
journalctl -p err
journalctl -p warning
🚩Примеры использования
🟠Просмотр логов Apache
Логи доступа
tail -f /var/log/apache2/access.log
Логи ошибок
tail -f /var/log/apache2/error.log
🟠Просмотр логов Nginx
Логи доступа
tail -f /var/log/nginx/access.log
Логи ошибок
tail -f /var/log/nginx/error.log
🟠Использование `journalctl` для просмотра логов Nginx
Все логи Nginx
journalctl -u nginx.service
Последние логи Nginx в реальном времени
journalctl -u nginx.service -f
Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Что известно про workflow GitLab?
GitLab CI/CD workflow — это последовательность стадий (stages) и заданий (jobs), определённых в .gitlab-ci.yml. Стадии выполняются последовательно: build → test → deploy. Jobs могут выполняться параллельно внутри одной стадии. Также можно использовать правила (rules), переменные (env), артефакты и условия запуска.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 В каких случаях удобно использовать kubernetes, а в каких docker-compose?
Оба инструмента управляют контейнерами, но предназначены для разных сценариев.
🚩Когда использовать Docker Compose?
Docker Compose удобен для локальной разработки и небольших проектов.
Разворачиваете приложение на одном сервере.
Нужно быстро поднять несколько сервисов (БД, кэш, бекенд, фронт).
Разработка ведется в команде, и среда должна быть одинаковой.
Нет необходимости в сложном оркестрационном механизме (авто-масштабирование, балансировка нагрузки).
Файл
Команда запуска:
🚩Когда использовать Kubernetes?
Kubernetes удобен для продакшн-окружений, облаков и сложных приложений.
Нужно масштабирование (автоматическое увеличение/уменьшение количества контейнеров).
Требуется автоисправление (если контейнер падает, он перезапускается).
Используется балансировка нагрузки (Kubernetes распределяет трафик между подами).
Нужна развертка в кластере (несколько машин, облако).
Требуется обновление без простоя (rolling updates).
Разворачиваем в Kubernetes:
Ставь 👍 и забирай 📚 Базу знаний
Оба инструмента управляют контейнерами, но предназначены для разных сценариев.
🚩Когда использовать Docker Compose?
Docker Compose удобен для локальной разработки и небольших проектов.
Разворачиваете приложение на одном сервере.
Нужно быстро поднять несколько сервисов (БД, кэш, бекенд, фронт).
Разработка ведется в команде, и среда должна быть одинаковой.
Нет необходимости в сложном оркестрационном механизме (авто-масштабирование, балансировка нагрузки).
Файл
docker-compose.yml для запуска бэкенда и базы данных локально: version: '3'
services:
app:
image: my-backend:latest
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Команда запуска:
docker-compose up -d
🚩Когда использовать Kubernetes?
Kubernetes удобен для продакшн-окружений, облаков и сложных приложений.
Нужно масштабирование (автоматическое увеличение/уменьшение количества контейнеров).
Требуется автоисправление (если контейнер падает, он перезапускается).
Используется балансировка нагрузки (Kubernetes распределяет трафик между подами).
Нужна развертка в кластере (несколько машин, облако).
Требуется обновление без простоя (rolling updates).
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-backend:latest
ports:
- containerPort: 5000
Разворачиваем в Kubernetes:
kubectl apply -f my-app.yaml
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Как определить в GitLab запуск job по кнопке?
Добавляется параметр when: manual в .gitlab-ci.yml
Это добавляет кнопку запуска вручную в UI пайплайна GitLab.
Можно также задать allow_failure: true, чтобы не блокировать pipeline
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Добавляется параметр when: manual в .gitlab-ci.yml
Это добавляет кнопку запуска вручную в UI пайплайна GitLab.
Можно также задать allow_failure: true, чтобы не блокировать pipeline
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2