- Пример: клиент шифрует данные публичным ключом сервера, а сервер расшифровывает их своим приватным.
Также используется в TLS-сертификатах, PGP, SSH.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В Kubernetes есть несколько механизмов, которые могут запретить или ограничить запуск подов на определенных нодах.
Taints – метки на нодах, запрещающие размещение подов, если у них нет соответствующего допуска (Toleration).
Используется для изоляции, приоритизации узлов или резервирования ресурсов.
kubectl taint nodes my-node key=value:NoSchedule
Разрешить конкретному поду запускаться на этой ноде
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoSchedule"
Запрещает запускаться на всех нодах, кроме указанных.
Используется для привязки подов к определенным серверам.
spec:
nodeSelector:
disktype: ssd
Позволяет задать гибкие условия (обязательные и предпочтительные).
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: region
operator: In
values:
- us-east-1
Запрещает запуск новых подов, если их уже запущено определенное количество.
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-pdb
spec:
maxUnavailable: 3
selector:
matchLabels:
app: my-app
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💊1
DNS (Domain Name System) преобразует читаемые доменные имена (например,
Процесс включает:
- запрос к локальному кешу;
- обращение к DNS-рекурсору;
- переход к корневым серверам, затем к серверам доменов верхнего уровня (TLD), затем к авторитетным серверам;
- возврат IP-адреса клиенту.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Terraform стал популярнее, чем SaltStack, потому что он лучше решает задачи управления инфраструктурой как кодом (IaC) и обеспечивает декларативный и удобный подход.
Terraform = управление инфраструктурой (создание виртуальных машин, баз данных, сетей и т. д.).
SaltStack = управление конфигурацией (разворачивание ПО, управление пользователями, файлами и т. д.).
В современном DevOps важнее быстро и гибко создавать инфраструктуру (AWS, Kubernetes, облака).
Salt же больше заточен под настройку серверов, но это стало второстепенным.
Terraform = декларативный язык HCL (HashiCorp Configuration Language)
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Terraform = не требует агентов, просто вызывает API облачных провайдеров.
Salt = требует установки Salt Master и Minion'ов на серверах.
Terraform нативно интегрируется с облаками (AWS, GCP, Azure, Kubernetes).
Salt тоже умеет работать с облаками, но его основное применение – настройка серверов.
- У Terraform больше модулей и провайдеров.
- Salt – сложнее настроить для облаков, и сообщество у него меньше.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊5👍1🔥1
CI заканчивается после:
- успешной сборки,
- прохождения тестов,
- публикации артефактов.
Далее идёт этап доставки (delivery) или развёртывания (deployment) — это уже CD.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Обычно хранятся в каталоге
/var/log. Также многие современные дистрибутивы используют систему журналирования systemd для управления и просмотра логов.Каталог
/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 — это утилита для просмотра и управления журналами 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
Логи доступа
tail -f /var/log/apache2/access.log
Логи ошибок
tail -f /var/log/apache2/error.log
Логи доступа
tail -f /var/log/nginx/access.log
Логи ошибок
tail -f /var/log/nginx/error.log
Все логи Nginx
journalctl -u nginx.service
Последние логи Nginx в реальном времени
journalctl -u nginx.service -f
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Из release-веток обычно:
- деплой идёт в staging/QA окружение для тестирования;
- после подтверждения — в master, что может инициировать production-деплой.
Это даёт возможность проверить стабильность перед боевым запуском.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В Linux список дескрипторов файлов можно посмотреть, используя утилиты и команды, которые позволяют работать с процессами и их открытыми файлами. Основным методом является использование файловой системы
/proc, которая содержит информацию о процессах, включая их открытые файловые дескрипторы.Каждый процесс в Linux имеет свой подкаталог в
/proc с идентификатором процесса (PID). В подкаталоге fd хранятся ссылки на открытые дескрипторы файлов.ls -l /proc/$(pidof <имя_процесса>)/fd
Вывод
lrwx------ 1 user user 64 Dec 23 12:00 0 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 1 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 2 -> /dev/pts/0
Команда
lsof (list open files) отображает список всех открытых файлов в системе.lsof -p <PID>
Пример для всех процессов
lsof
Вывод
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1234 user cwd DIR 8,1 4096 256 /home/user
bash 1234 user rtd DIR 8,1 4096 2 /
bash 1234 user 0u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 1u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 2u CHR 136,0 0 3 /dev/pts/0
Утилита
lsfd (из пакета util-linux) удобна для просмотра файловых дескрипторов.lsfd
Вывод
PID FD TTY TYPE DEVICE SIZE/OFF NODE NAME
1234 0 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 1 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 2 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
Список дескрипторов определенного пользователя:
lsof -u <имя_пользователя>
Список файлов определенного типа (например, сокеты):
lsof -i
Фильтрация по определенному файлу или устройству:
lsof /path/to/file
Определение, какие файлы, сокеты или устройства использует процесс.
Проверка, остаются ли ненужные дескрипторы открытыми.
Диагностика проблем, связанных с блокировкой файлов.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Он регистрируется в GitLab и запускает задачи (jobs) из .gitlab-ci.yml.
2. Работает в разных режимах (shell, Docker, Kubernetes) для выполнения сборок, тестов и деплоя.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Security-тестирование – это процесс проверки системы на уязвимости, угрозы и риски атак. Оно помогает защитить данные и сервисы от хакеров.
- Загружают базу известных уязвимостей (CVE).
- Проверяют систему на наличие этих уязвимостей.
- Используют сигнатурный анализ (по шаблонам) и эвристический анализ (поведенческий).
- Автоматически подставляют вредоносные SQL-запросы (
' OR 1=1 --). - Проверяют, есть ли доступ к базе данных.
- Выполняют дамп данных, если нашли уязвимость.
SELECT * FROM users WHERE username = 'admin' --' AND password = 'password'
- Вставляют вредоносный JavaScript-код в форму ввода.
- Если скрипт исполняется в браузере – уязвимость найдена.
<script>alert('XSS!')</script>- Пробуют тысячи вариантов паролей (
rockyou.txt). - Используют
John the Ripper, Hydra, Hashcat. hydra -l admin -P passwords.txt 192.168.1.1 ssh
Захватывают пакеты сети (
tcpdump, Wireshark). Ищут передаваемые пароли, сессии, токены.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Файловую систему — разбивка данных на блоки, управление метаданными.
2. ОС и драйверы — планируют чтение/запись, оптимизируют доступ.
3. Кэширование — часто используется буферизация в RAM.
4. Контроллер диска — управляет физическим доступом на уровне блоков.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Чтобы посмотреть логи работающего контейнера в Docker, используйте команду:
docker logs <container_id>
или
docker logs <container_name>
следить за логами в реальном времени (как
tail -f): docker logs -f <container_id>
показать только последние N строк:
docker logs --tail 100 <container_id>
добавить метки времени:
docker logs -t <container_id>
Если контейнер запущен через
docker-compose, можно использовать: docker-compose logs -f
или для конкретного сервиса:
docker-compose logs -f <service_name>
journalctl -u docker -f
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. livenessProbe
2. readinessProbe
3. startupProbe
Каждая решает свою задачу и настраивается отдельно в манифесте pod'а.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Если вам нужно собирать метрики (нагрузка, ошибки, задержки, бизнес-показатели) с вашего продукта, то вот лучшие инструменты
Prometheus – база данных временных рядов (time-series DB) для хранения метрик.
Grafana – мощная визуализация метрик.
Метрики собираются экспортерами (
node_exporter, blackbox_exporter и т. д.). Данные хранятся в Prometheus.
Grafana показывает красивые графики.
rate(http_requests_total[5m]) # Запросы в секунду за 5 минут
Устанавливается агент на сервер (
zabbix-agent). Сервер собирает метрики и генерирует алерты.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Выделение ресурсов:
- Использование kubernetes requests/limits, cgroups, namespaces.
- Автоматическое масштабирование под CPU/Memory.
Балансировка нагрузки:
- Внутри кластера — через kube-proxy, kube-dns, Istio, Envoy.
- Наружу — Ingress Controller, L7 балансировщики (Nginx, Traefik), L4 (HAProxy, AWS ALB).
Масштабирование:
- Horizontal Pod Autoscaler по метрикам.
- Vertical Pod Autoscaler для подбора ресурсов.
- Cluster Autoscaler — масштабирует сам кластер.
Оркестрация + наблюдение:
- Prometheus + Grafana для метрик.
- Alertmanager для алертов.
- Tracing (Jaeger, OpenTelemetry).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
Максимальное количество адресов оперативной памяти (ОП), с которыми может взаимодействовать процессор, зависит от ширины адресной шины процессора. Адресная шина определяет, сколько уникальных адресов памяти процессор может адресовать.
Количество адресуемых ячеек памяти определяется по формуле:
\text{Максимальное количество адресов} = 2^{\text{ширина адресной шины (в битах)}}
Максимально возможное количество адресов:
2^{32} = 4,294,967,296 \, (\approx 4 \, \text{Гбайт})
Теоретический максимум
2^{64} = 18,446,744,073,709,551,616 \, (\approx 16 \, \text{эксабайт})
Однако современные процессоры обычно поддерживают меньше, например
Архитектура x86-64 (например, Intel и AMD): ограничена 48–57 битами для адресов памяти, что позволяет адресовать от 256 Тбайт до 128 Пбайт.
Производители процессоров могут использовать меньшее количество адресных линий, чтобы снизить сложность и стоимость. Например, современные 64-битные процессоры адресуют только часть 64-битного пространства (например, 48 бит).
Даже если процессор поддерживает большое количество адресов, максимальная память ограничивается количеством слотов памяти и их емкостью на материнской плате.
Некоторые адреса зарезервированы для системных нужд (например, для ввода/вывода или BIOS).
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Используйте команду ps (например, ps aux для подробной информации).
2. Команда top показывает активные процессы в реальном времени.
3. Для фильтрации можно использовать pgrep <имя процесса>.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
В Bash функция возвращает код завершения (exit status), который представляет собой числовое значение от 0 до 255. Это значение используется для указания успешного или неуспешного выполнения функции. По умолчанию, если явно не указано возвращаемое значение, функция возвращает код завершения последней выполненной команды внутри нее.
Чтобы явно задать код завершения функции, используется команда
return. my_function() {
if [[ $1 -gt 0 ]]; then
return 0 # Успех
else
return 1 # Ошибка
fi
}
my_function 5
echo $? # Выведет 0 (успех)Для передачи данных из функции (например, строки или числа) можно использовать
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 обычно означает успех, а любое другое число — ошибку.Удобен для передачи данных из функции.
Полезно, если функция должна сохранять данные для дальнейшей обработки.
# Функция проверки файла
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
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
- Убедиться, что используется GitLab Plugin.
- Включить webhook из GitLab.
- Установить refspec:
- +refs/merge-requests/*/head:refs/remotes/origin/mr/*
- Убедиться, что Jenkins имеет доступ к правильным permissions в GitLab.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Вал (или "валидность данных") в Prometheus определяется настройками временного диапазона хранения данных. Обычно данные в Prometheus живут столько, сколько задано в параметре
--storage.tsdb.retention.time, который устанавливает период хранения временных рядов.Если не указать параметр
--storage.tsdb.retention.time, данные хранятся 15 дней. Это соответствует 360 часам.Вы можете настроить период хранения данных, передав значение параметра при запуске Prometheus:
CLI-параметр:
prometheus --storage.tsdb.retention.time=30d
Если Prometheus запускается как часть системы CI/CD через Docker Compose, Kubernetes или другой инструмент, параметр указывается в соответствующем разделе.
services:
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=7d' # 7 дней (168 часов)
Большие периоды хранения требуют больше дискового пространства. Если валидация данных больше не нужна, лучше очищать старые временные ряды.
Длительное хранение может замедлить обработку запросов, особенно если используемые метрики застарелые или редко запрашиваются.
Для CI/CD-пайплайнов обычно достаточно короткого периода (например, 7–15 дней), чтобы сохранять данные релевантными и свежими.
Если вы хотите, чтобы метрики для CI/CD жили 12 часов (подходящий срок для проверки тестов и сборок), настройте
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=12h'
Перейдите на страницу
/status → /status/flags, где можно увидеть значение параметра --storage.tsdb.retention.time.Проверьте журнал запуска Prometheus или конфигурационный файл.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Kubernetes используют для:
- управления контейнерами и их жизненным циклом;
- масштабирования микросервисов;
- автоматизации деплоя;
- отказоустойчивости и самовосстановления сервисов.
Можно использовать в облаке, on-premise, edge и гибридных решениях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊4