🤔 Из каких ключевых особенностей состоит 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
🤔 Что такое cherry pick?
Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.
🚩Когда используется
🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям,
🚩Примеры использования
🟠Простого `cherry-pick`
Перенос одного коммита из другой ветки.
🟠Применения нескольких коммитов
Перенос нескольких коммитов из другой ветки.
🟠Применения диапазона коммитов
Перенос диапазона коммитов из другой ветки.
🚩Разрешение конфликтов
1⃣Разрешите конфликты в файлах.
2⃣Добавьте изменения в индекс
3⃣Завершите процесс
🚩Прерывание
Если вы хотите прервать процесс
Ставь 👍 и забирай 📚 Базу знаний
Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.
🚩Когда используется
🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям,
cherry-pick позволяет аккуратно перенести только нужные коммиты.🚩Примеры использования
🟠Простого `cherry-pick`
Перенос одного коммита из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick коммита
git cherry-pick <commit-hash>
🟠Применения нескольких коммитов
Перенос нескольких коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick нескольких коммитов
git cherry-pick <commit-hash-1> <commit-hash-2> <commit-hash-3>
🟠Применения диапазона коммитов
Перенос диапазона коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick диапазона коммитов
git cherry-pick <start-commit-hash>..<end-commit-hash>
🚩Разрешение конфликтов
1⃣Разрешите конфликты в файлах.
2⃣Добавьте изменения в индекс
git add <filename>
3⃣Завершите процесс
cherry-pick git cherry-pick --continue
🚩Прерывание
Если вы хотите прервать процесс
cherry-pick, можно использовать командуgit cherry-pick --abort
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Как создать собственный плагин во Vue 3?
Собственный плагин — это объект с методом install, куда передаётся app. Внутри можно:
- Добавить глобальные компоненты.
- Расширить экземпляр приложения (app.config.globalProperties).
- Зарегистрировать директивы или provide/inject.
Это полезно для переиспользуемого функционала или внутренних библиотек.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Собственный плагин — это объект с методом install, куда передаётся app. Внутри можно:
- Добавить глобальные компоненты.
- Расширить экземпляр приложения (app.config.globalProperties).
- Зарегистрировать директивы или provide/inject.
Это полезно для переиспользуемого функционала или внутренних библиотек.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊1
🤔 Какие есть три вида монтирования в докере?
В Docker есть три типа монтирования данных в контейнеры:
Volumes (Тома) – рекомендуемый способ хранения данных
Bind Mounts (Привязанные тома) – монтирование локальных файлов/папок
Tmpfs (Временное хранилище в RAM) – для быстрого доступа без записи на диск
🚩Volumes (Тома) – лучший вариант хранения данных
Данные хранятся внутри Docker (
Можно использовать в нескольких контейнерах
Не зависят от файловой системы хоста
Удаление тома (только если он не используется)
🚩Bind Mounts (Привязанные тома) – монтирование папок с хоста
Монтирует директорию с хоста в контейнер
Изменения сразу видны на хосте
Зависит от структуры файлов на хосте
🚩Tmpfs (Временное хранилище в RAM) – быстрый, но не сохраняющийся вариант
Хранит данные в оперативной памяти (RAM)
Очень быстрое чтение/запись
Пропадает при перезапуске контейнера
Пример: создать
Ставь 👍 и забирай 📚 Базу знаний
В Docker есть три типа монтирования данных в контейнеры:
Volumes (Тома) – рекомендуемый способ хранения данных
Bind Mounts (Привязанные тома) – монтирование локальных файлов/папок
Tmpfs (Временное хранилище в RAM) – для быстрого доступа без записи на диск
🚩Volumes (Тома) – лучший вариант хранения данных
Данные хранятся внутри Docker (
/var/lib/docker/volumes) Можно использовать в нескольких контейнерах
Не зависят от файловой системы хоста
sh
docker volume create mydata
docker run -d -v mydata:/app/data --name mycontainer ubuntu
Удаление тома (только если он не используется)
sh
docker volume rm mydata
🚩Bind Mounts (Привязанные тома) – монтирование папок с хоста
Монтирует директорию с хоста в контейнер
Изменения сразу видны на хосте
Зависит от структуры файлов на хосте
sh
docker run -d -v /home/user/logs:/app/logs --name mycontainer ubuntu
🚩Tmpfs (Временное хранилище в RAM) – быстрый, но не сохраняющийся вариант
Хранит данные в оперативной памяти (RAM)
Очень быстрое чтение/запись
Пропадает при перезапуске контейнера
Пример: создать
tmpfs-монтирование для /app/cache sh
docker run -d --tmpfs /app/cache:size=100m --name mycontainer ubuntu
Ставь 👍 и забирай 📚 Базу знаний
👍6
🤔 Кластер БД висит, запросы копятся, но другие выполняются быстро. Что происходит?
Скорее всего:
- Приложение удерживает блокировку, из-за чего остальные запросы висят в очереди.
- Блокировки возникают при долгих UPDATE, INSERT, TRANSACTION, особенно без COMMIT.
Что делать:
1. Проверить активные сессии и блокировки (pg_stat_activity — для PostgreSQL).
2. Выяснить какой запрос держит блокировку.
3. Убить зависшие транзакции или перезапустить зависший компонент.
4. Настроить таймауты транзакций и контроль количества соединений от приложения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Скорее всего:
- Приложение удерживает блокировку, из-за чего остальные запросы висят в очереди.
- Блокировки возникают при долгих UPDATE, INSERT, TRANSACTION, особенно без COMMIT.
Что делать:
1. Проверить активные сессии и блокировки (pg_stat_activity — для PostgreSQL).
2. Выяснить какой запрос держит блокировку.
3. Убить зависшие транзакции или перезапустить зависший компонент.
4. Настроить таймауты транзакций и контроль количества соединений от приложения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥3
🤔 Как linux выбирает, какой из процессов завершить?
Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.
🚩Как работает OOM Killer?
🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).
🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.
🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.
🚩Пример расчета OOM Score
🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)
🚩Настройка OOM Killer
Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге
🚩Логирование и мониторинг
При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно
Ставь 👍 и забирай 📚 Базу знаний
Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.
🚩Как работает OOM Killer?
🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).
🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.
🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.
🚩Пример расчета OOM Score
🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)
🚩Настройка OOM Killer
Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге
/proc. Например, для изменения приоритета процесса:echo -1000 > /proc/<PID>/oom_score_adj
🚩Логирование и мониторинг
При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно
/var/log/syslog или /var/log/messages), что позволяет администраторам анализировать причины и предпринимать меры по предотвращению в будущем.Ставь 👍 и забирай 📚 Базу знаний
👍2🔥1
🤔 Какая разница между Deployment и StatefulSet?
- Deployment:
- Стейтлес.
- Поды с одинаковыми именами.
- Легко масштабируется.
- StatefulSet:
- Стейтфул.
- Поды с уникальными именами (pod-0, pod-1...).
- Поддерживает привязку к PersistentVolumeClaim.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Deployment:
- Стейтлес.
- Поды с одинаковыми именами.
- Легко масштабируется.
- StatefulSet:
- Стейтфул.
- Поды с уникальными именами (pod-0, pod-1...).
- Поддерживает привязку к PersistentVolumeClaim.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2💊2
🤔 Что возвращает функция в bash?
В Bash функция возвращает код завершения (exit status), который представляет собой числовое значение от 0 до 255. Это значение используется для указания успешного или неуспешного выполнения функции. По умолчанию, если явно не указано возвращаемое значение, функция возвращает код завершения последней выполненной команды внутри нее.
🚩Как возвращать значения из функции?
🟠Код завершения (exit status)
Чтобы явно задать код завершения функции, используется команда
🟠Вывод данных через `echo`
Для передачи данных из функции (например, строки или числа) можно использовать
🟠Изменение глобальных переменных
Функция может менять значения глобальных переменных, которые затем используются за ее пределами
🚩Почему это важно?
🟠Код завершения
Используется в сценариях для проверки, выполнилась ли функция успешно. Значение
🟠Вывод через `echo`
Удобен для передачи данных из функции.
🟠Изменение переменных
Полезно, если функция должна сохранять данные для дальнейшей обработки.
Ставь 👍 и забирай 📚 Базу знаний
В Bash функция возвращает код завершения (exit status), который представляет собой числовое значение от 0 до 255. Это значение используется для указания успешного или неуспешного выполнения функции. По умолчанию, если явно не указано возвращаемое значение, функция возвращает код завершения последней выполненной команды внутри нее.
🚩Как возвращать значения из функции?
🟠Код завершения (exit status)
Чтобы явно задать код завершения функции, используется команда
return. my_function() {
if [[ $1 -gt 0 ]]; then
return 0 # Успех
else
return 1 # Ошибка
fi
}
my_function 5
echo $? # Выведет 0 (успех)🟠Вывод данных через `echo`
Для передачи данных из функции (например, строки или числа) можно использовать
echo. Вывод можно перехватить через подстановку команд $()my_function() {
echo "Hello, $1!"
}
result=$(my_function "world")
echo "$result" # Выведет "Hello, world!"🟠Изменение глобальных переменных
Функция может менять значения глобальных переменных, которые затем используются за ее пределами
my_function() {
result=$(( $1 + $2 ))
}
my_function 3 7
echo $result # Выведет 10🚩Почему это важно?
🟠Код завершения
Используется в сценариях для проверки, выполнилась ли функция успешно. Значение
0 обычно означает успех, а любое другое число — ошибку.🟠Вывод через `echo`
Удобен для передачи данных из функции.
🟠Изменение переменных
Полезно, если функция должна сохранять данные для дальнейшей обработки.
# Функция проверки файла
check_file() {
if [[ -f $1 ]]; then
echo "Файл $1 существует."
return 0
else
echo "Файл $1 не найден."
return 1
fi
}
# Вызов функции
check_file "/etc/passwd"
status=$? # Сохраняем код завершения
if [[ $status -eq 0 ]]; then
echo "Продолжаем работу..."
else
echo "Останавливаемся из-за ошибки."
fi
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Что вообще означает eviction или evict?
Evict означает "выселить" или "удалить". В Kubernetes это означает, что pod удаляется с текущей ноды — либо временно (будет пересоздан), либо навсегда (если не управляется контроллером). Это часть механизма автоматического самовосстановления и балансировки нагрузки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1