- Заменить одного пользователя на список (массив).
- Пройтись по нему с помощью with_items или loop.
- Данные можно хранить в переменной или в отдельном файле YAML с массивом пользователей.
Таким образом, минимальные изменения: обобщение задачи и использование цикла.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Эти три термина относятся к управлению надежностью и качеством IT-сервисов. Они помогают определить, измерить и гарантировать уровень обслуживания пользователей.
SLI – это метрика, которая показывает, насколько хорошо работает сервис.
- Доступность (например, uptime 99.9%)
- Время ответа API (например, менее 200 мс)
- Ошибки запросов (например, не более 1% 5xx ошибок)
SLO – это цель, которую компания ставит для SLI.
Доступность 99.9% сервиса в месяц.
Среднее время ответа API ≤ 200 мс.
SLA – это официальное соглашение между клиентом и провайдером сервиса, которое описывает обязательства и штрафы за их невыполнение.
- Если доступность меньше 99.9%, клиент получает возврат денег.
- Если среднее время ответа API больше 500 мс, клиент получает скидку.
SLI (метрика) → измеряет, насколько хорош сервис.
SLO (цель) → устанавливает, каким должен быть сервис.
SLA (договор) → фиксирует обязательства и штрафы.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. worker_connections: количество соединений на один процесс-воркер.
2. worker_rlimit_nofile: количество открытых файлов.
3. Лимиты ОС: ulimit, параметры ядра (net.core.somaxconn, fs.file-max).
4. Аппаратные ограничения: ресурсы процессора и памяти.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Если у вас 1000 разработчиков и 2000 сервисов, то без автоматизации не обойтись.
Организация:
Каждое приложение → отдельный Pod.
Namespaces → для команд и сред (dev, stage, prod).
Helm → для удобного управления.
Манифест деплоя
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-registry.com/my-app:v1
Инструменты: GitLab CI/CD, ArgoCD
stages:
- build
- deploy
build:
script:
- docker build -t my-registry.com/my-app:$CI_COMMIT_SHA .
- docker push my-registry.com/my-app:$CI_COMMIT_SHA
deploy:
script:
- kubectl set image deployment/my-app my-app=my-registry.com/my-app:$CI_COMMIT_SHA
Prometheus + Grafana → метрики, алерты
Loki / ELK (Elasticsearch + Kibana) → логи
Запрос ошибок API:
rate(http_requests_total{status="500"}[5m])
Горизонтальный автоскейлинг (
HPA
) apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
minReplicas: 3
maxReplicas: 10
targetCPUUtilizationPercentage: 70
Разделение нагрузки между версиями:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
spec:
hosts:
- my-app.example.com
http:
- route:
- destination:
host: my-app
subset: v1
weight: 80
- destination:
host: my-app
subset: v2
weight: 20
Ограничение доступа разработчиков:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: dev-access
subjects:
- kind: User
name: dev-user
roleRef:
kind: Role
name: read-only
apiGroup: rbac.authorization.k8s.io
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Worker-нода содержит:
- kubelet — агент, управляющий подами.
- kube-proxy — сетевое взаимодействие и балансировка.
- container runtime — Docker, containerd, CRI-O.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Это область на диске, которую операционная система использует как виртуальную память, если основной оперативной памяти (RAM) не хватает. Swap может быть представлен в виде:
Swap может быть выделен как отдельный раздел диска. Он создается во время установки системы или вручную и не имеет файловой системы (тип раздела —
swap
).Swap может быть представлен как обычный файл в файловой системе (например,
/swapfile
).Используйте команды для проверки текущей конфигурации:
Проверка swap через
swapon
swapon --show
Пример вывода
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 4G 1G -2
/swapfile file 2G 0B -3
- NAME: Устройство или файл, используемый для swap.
- TYPE: Указывает, является ли swap разделом или файлом.
- SIZE: Размер swap.
- USED: Сколько swap в данный момент используется.
- PRIO: Приоритет использования (меньшее значение — меньший приоритет).
Проверка через
free
free -h
Если swap является разделом, он обычно прописан в
/etc/fstab
cat /etc/fstab | grep swap
Пример
/dev/sda2 none swap sw 0 0
Если swap — это раздел, то он отображается как устройство, например,
/dev/sda2
. Если swap — это файл, его путь будет, например, /swapfile
.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
- GitOps-подход — всё из Git, полная история.
- Автоматический синхрон и rollback.
- Поддержка хранения состояний, health check, diff, prune.
- Отличный UI и CLI.
- Прозрачность и безопасность — можно задать permissions, audit.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Это облачная модель, предоставляющая готовую среду для разработки, тестирования и развертывания приложений без необходимости управлять инфраструктурой (серверы, сети, ОС).
Heroku → Легкий деплой веб-приложений.
Google App Engine → Запуск приложений в облаке Google.
AWS Elastic Beanstalk → Автоматическое управление инфраструктурой.
Microsoft Azure App Services → Запуск приложений в Azure без управления серверами.
Если хотите быстро развернуть приложение без настройки серверов.
Когда важна автоматическая масштабируемость.*
Если не хотите заниматься управлением ОС и базами данных.
curl https://cli-assets.heroku.com/install.sh | sh
heroku login
git push heroku main
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
С помощью трёхстороннего рукопожатия (3-way handshake):
1. Клиент → сервер: SYN.
2. Сервер → клиент: SYN-ACK.
3. Клиент → сервер: ACK.
После этого соединение считается установленным. Это обеспечивает надёжный канал связи.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Хранение секретных переменных, таких как пароли, ключи API, токены доступа и прочие конфиденциальные данные, требует особого подхода для обеспечения безопасности. Ниже описаны рекомендуемые методы и инструменты для безопасного хранения секретных переменных в различных средах разработки и производства.
HashiCorp Vault:
Это инструмент для управления секретами и защиты данных. Он позволяет централизованно хранить, доступ к которым строго контролируется, и динамически создавать секреты.
Преимущества: Поддержка динамических секретов, интеграция с большинством сред и технологий, высокий уровень безопасности.
AWS Secrets Manager и Azure Key Vault:
Эти облачные сервисы предоставляют управляемые решения для безопасного хранения и управления доступом к секретным данным, включая автоматическое обновление секретов.
Преимущества: Интеграция с облачными сервисами, упрощение ротации секретов, мониторинг и логирование доступа.
Docker Secrets и Kubernetes Secrets:
Предлагают встроенные механизмы для безопасного хранения секретов, которые используются контейнерами во время выполнения.
Преимущества: Локальная интеграция с системами оркестрации контейнеров, базовое шифрование на диске и управление доступом.
Платформы CI/CD, такие как GitLab и GitHub, предоставляют возможности для безопасного хранения переменных среды и секретов, которые могут быть использованы в процессах автоматизации без разглашения.
Преимущества: Простота использования, интеграция с процессами разработки, защита от внешнего доступа.
Инструменты шифрования: Использование инструментов, таких как GnuPG (GPG), для шифрования секретов перед их сохранением в системах контроля версий или конфигурационных файлах.
Преимущества: Высокий уровень безопасности, контроль доступа к секретам на уровне пользователя.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Посмотреть exit code — может указать тип ошибки.
2. Проверить логи приложения.
3. Добавить логирование и вывод ошибок в консоль.
4. Запустить через strace или gdb.
5. Проверить зависимости, переменные окружения, права на доступ.
Ненулевой код означает ошибку исполнения — важно найти её источник.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Касается подходов к управлению релизами в системах контроля версий, таких как Git, и их интеграции с процессами CI/CD. Ответ зависит от структуры разработки и процесса релиза в конкретной команде или компании. Однако, в общем, деплой из релизных веток обычно идет на тестовые, стейджинговые или продакшн-окружения. Давайте разберем этот процесс подробнее.
Это ветки, которые создаются на этапе, когда функционал и исправления, готовые к выпуску, отделяются от основной ветки разработки (например,
main
или develop
). Они позволяют:Заморозить текущий набор изменений для подготовки к релизу.
Отделить доработки и исправления релиза от активной разработки.
Упростить процесс тестирования и последующего деплоя.
На тестовое окружение деплой из релизной ветки осуществляется для прохождения проверок качества: Автоматизированное и ручное тестирование.
Проверка производительности, безопасности и других аспектов.
stages:
- test
deploy:
stage: test
script:
- echo "Deploying release branch to QA"
- ./deploy.sh qa
only:
- release/*
После успешного прохождения тестов релизную ветку деплоят в стейджинг. Это окружение максимально похоже на продакшн и используется для финального тестирования: Проверка совместимости с продакшн-системами.
Демонстрация функционала заказчикам или заинтересованным сторонам.
stages:
- staging
deploy:
stage: staging
script:
- echo "Deploying release branch to Staging"
- ./deploy.sh staging
only:
- release/*
После прохождения всех этапов тестирования изменения из релизной ветки деплоятся в продакшн: Обычно это делается автоматически после финального подтверждения.
В некоторых командах финальный мерж релизной ветки в
main
инициирует деплой.stages:
- production
deploy:
stage: production
script:
- echo "Deploying release branch to Production"
- ./deploy.sh production
only:
- release/*
Релизные ветки позволяют избежать включения новых, неподготовленных изменений в текущий релиз.
Если в процессе тестирования или релиза найдены баги, их можно исправить прямо в релизной ветке без влияния на разработку.
Релизные ветки упрощают управление разными стадиями разработки и релиза.
release/1.0.0
от develop
.release/1.0.0
, и изменения деплоятся на стейджинг.main
, и начинается деплой в продакшн.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
- ELK (Elasticsearch + Logstash + Kibana) — мощный стек, Kibana предоставляет гибкий интерфейс для построения графиков, поиска по логам, дашбордов.
- Grafana Loki — лёгкая альтернатива ELK, лог-агрегатор, работает с Promtail и отображает логи через интерфейс Grafana.
- Fluentd / Fluent Bit + Grafana — логгеры, отправляющие данные в различные хранилища (включая Elasticsearch).
- Graylog — альтернатива ELK, заточенная под визуализацию и безопасность.
- Sentry / Datadog / Splunk — облачные сервисы для логирования и мониторинга.
Логи с подов в Kubernetes можно собирать через sidecar, DaemonSet, или использовать Fluent Bit/Fluentd с отправкой в централизованное хранилище.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊3
Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
kill <PID>
или принудительно
kill -9 <PID>
Чтобы найти процессы, удерживающие файлы
lsof | grep <filename>
или
fuser <filename>
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать
lsof
и /proc
ls -l /proc/<PID>/fd/
exec 3>&-
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через
gdb
: gdb -p <PID>
(gdb) call close(<FD>)
(gdb) detach
(gdb) quit
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
mount -o remount /
Или использовать
lsof
для очистки удаленных файловlsof | grep deleted
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
systemctl restart <service>
или
service <service> restart
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Это два смысла одного сокращения:
- Continuous Delivery (непрерывная доставка) — код всегда готов к деплою, но деплой в прод по кнопке.
- Continuous Deployment (непрерывное развёртывание) — код автоматически деплоится в прод после прохождения всех тестов.
Delivery — ручной шаг, Deployment — полностью автоматизированный.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊6👍2🤔1
Это практика управления и настройки IT-инфраструктуры (серверов, сетей, баз данных и других ресурсов) с помощью кода, а не вручную через консоли или графические интерфейсы.
вместо ручной настройки серверов вы пишете код, который делает это автоматически.
одинаковая среда на всех серверах, исключение человеческих ошибок.
развернуть инфраструктуру можно за минуты.
если что-то пошло не так, можно быстро вернуть предыдущее состояние.
легко добавить новые серверы или ресурсы при увеличении нагрузки.
С помощью IaC вы описываете всю инфраструктуру в коде (например, в YAML, JSON, HCL и др.), а затем используете инструменты для автоматического развертывания.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
универсальный инструмент для облаков (AWS, Azure, GCP и др.).
удобен для настройки серверов (конфигурации ПО).
похожи на Ansible, но требуют агента на серверах.
инструмент от AWS для управления ресурсами.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Чаще всего:
- /etc/os-release — стандартный файл с названием и версией дистрибутива.
- Иногда: /etc/issue, /etc/lsb-release (в зависимости от дистрибутива).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1