AWS OpsWorks — это сервис управления конфигурациями, который:
- Поддерживает Chef и Puppet.
- Используется для автоматизации серверной инфраструктуры.
- Позволяет управлять слоями, версиями, скриптами и зависимостями.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
В DevOps и Kubernetes важно безопасно хранить секретные данные (пароли, API-ключи, токены). Нельзя хранить их в коде, в
Git, в .env файлах без шифрования. Полностью управляемое решение для хранения и динамической ротации секретов.
Шифрование с поддержкой KMS.
API-доступ и интеграция с CI/CD.
Как получить секрет через CLI?
vault kv put secret/db password="SuperSecret123"
vault kv get secret/db
Как использовать в Jenkins?
withVault([vaultSecrets: [[path: 'secret/db', secretValues: [['envVar': 'DB_PASS', 'vaultKey': 'password']]]]]) {
sh 'echo $DB_PASS' # Переменная доступна только внутри блока
}Интеграция с Kubernetes, управление через
kubectl. Доступ через переменные окружения или монтирование в файл.
Можно использовать
Sealed Secrets или SOPS для шифрования. Как создать секрет?
kubectl create secret generic db-secret --from-literal=password='SuperSecret123'
Как использовать в
Deployment? env:
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-secret
key: password
Интеграция с облачными сервисами (IAM, Lambda, RDS).
Автоматическая ротация ключей.
Как получить секрет в AWS?
aws secretsmanager get-secret-value --secret-id my-secret
Как подключить к Kubernetes?
Используем External Secrets Operator:
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: db-secret
spec:
secretStoreRef:
name: aws-secrets
kind: SecretStore
target:
name: db-secret
data:
- secretKey: password
remoteRef:
key: my-db-password
Позволяет хранить секреты в Git без утечек.
Работает с
KMS, PGP, age. Как зашифровать секрет?
sops --encrypt --age YOUR_PUBLIC_KEY secrets.yaml > secrets.enc.yaml
Как расшифровать?
sops --decrypt secrets.enc.yaml
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
IPv4 — 32 бита (например,
IPv6 — 128 бит (например, 2001:0db8::1).
- Количество адресов:
IPv6 предоставляет намного больше адресов (2¹²⁸ против 2³²).
- Формат:
IPv4 использует десятичную точечную нотацию, IPv6 — шестнадцатеричную с двоеточиями.
- NAT:
В IPv6 NAT не обязателен, в IPv4 он широко используется.
- Упрощённые заголовки:
В IPv6 заголовок легче обрабатывается маршрутизаторами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов.
Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса.
Клиент делает запрос к серверу.
Сервер отвечает 401 Unauthorized и требует аутентификацию:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Restricted Area"
Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
В curl
curl -u username:password https://example.com/protected
В Python (requests):
import requests
from requests.auth import HTTPBasicAuth
response = requests.get("https://example.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)
В JavaScript (fetch):
fetch("https://example.com/protected", {
headers: {
"Authorization": "Basic " + btoa("username:password")
}
})
.then(response => response.text())
.then(data => console.log(data));данные передаются в открытом виде (Base64 — это не шифрование!).
что делает систему уязвимой.
браузеры кэшируют креды, и их сложно сбросить.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
- Устройство появляется как /dev/sdX
- Проверить с помощью lsblk или fdisk -l
2. Форматирование:
- Создание раздела: fdisk /dev/sdX
- Форматирование: mkfs.ext4 /dev/sdX1
- Монтирование: mount /dev/sdX1 /mnt/mydisk
- Добавление в /etc/fstab для автоподключения
Обязательно убедиться, что нужный диск выбран, чтобы избежать потери данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Если вы можете подключиться к серверу по SSH, но другие пользователи, использующие ту же учетную запись, не могут, возможны следующие причины:
В файле конфигурации SSH (
/etc/ssh/sshd_config) могут быть ограничения на число одновременных подключений. Открываем конфигурацию SSH
sudo nano /etc/ssh/sshd_config
Проверяем параметры
MaxSessions 1
MaxStartups 10:30:60
Решение
Увеличьте
MaxSessions, например: MaxSessions 10
Перезапустите SSH:
sudo systemctl restart sshd
Если у вас ключевая авторизация, возможно, права на файлы
.ssh/authorized_keys нарушены. На сервере выполните:
ls -l ~/.ssh/authorized_keys
Если права не
600, исправьте chmod 600 ~/.ssh/authorized_keys
Конфигурация SSH может блокировать подключения для определенных IP или пользователей.
Откройте
/etc/ssh/sshd_config и проверьте параметры DenyUsers user1
AllowUsers admin
Проверьте
/etc/hosts.deny и /etc/hosts.allow cat /etc/hosts.deny
cat /etc/hosts.allow
Если исчерпан лимит доступных PTY, новые сессии не смогут открываться.
Запустите
ls /dev/pts
Если там слишком много открытых сессий, попробуйте очистить:
pkill -u user
или увеличьте лимит в
/etc/security/limits.conf * hard nproc 1024
* soft nproc 1024
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Для этого используют:
- kubectl rollout history deployment <имя> — показывает историю версий (ревизий).
- Можно увидеть, какие изменения конфигурации были внесены и когда.
Это полезно для отслеживания конфигурационных изменений и откатов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Выполнить rebase на main в Git означает "перенести" ваши изменения поверх актуального состояния основной ветки (
main). Допустим, вы работаете в ветке
feature-branch: git checkout feature-branch
Сначала убедимся, что
main обновлена: git checkout main
git pull origin main
Теперь выполняем сам rebase:
git checkout feature-branch
git rebase main
Если у вас есть конфликты, Git остановит процесс и попросит их решить.
Откройте файлы с конфликтами, исправьте их.
Добавьте исправленные файлы:
git add <файл>
Продолжите rebase:
git rebase --continue
Если rebase прошёл успешно, вам нужно форсированно обновить удалённую ветку (так как история изменилась):
git push origin feature-branch --force
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Стартовая гипотеза:
- CPU: 0.5–1 core
- RAM: 512Mi–1Gi
- Подняться с requests по минимуму и оставить limits пустыми.
2. Понаблюдать:
- Метрики пода (kubectl top pod, Grafana).
- Поведение при запуске, пике и в простое.
3. Использовать Goldilocks или VPA:
- Эти инструменты подскажут оптимальные requests/limits на основе истории.
4. Снять perf-профиль:
- Если есть возможность — замерить поведение через нагрузочное тестирование.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
В 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
хранит пароли групп
Если у группы есть пароль (редкость), он хранится здесь.
Формат:
имя_группы:пароль:GID:админы_группы
Пример:
sudo:!:27:
developers:!:1001:john
Посмотреть содержимое
sudo cat /etc/gshadow
Если используется корпоративный домен, данные о группах могут храниться в LDAP или Active Directory.
getent group
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Операционные системы не всегда сразу удаляют данные с диска, а только помечают их как доступные для перезаписи. Причины:
- Журналирование (EXT4, XFS) – данные могут оставаться в журнале.
- TRIM для SSD не выполнен – стирание на SSD происходит не сразу.
- Блоки файловой системы не очищены – команда rm удаляет ссылки, но не сами данные.
- Кеширование и lazy-write – система может отложить освобождение пространства.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
ELK (Elasticsearch, Logstash, Kibana) – это стек для сбора, обработки, хранения и визуализации логов. Он помогает DevOps-инженерам анализировать логи в реальном времени и выявлять проблемы в системе.
- Хранит структурированные и неструктурированные данные (логи, метрики)
- Поддерживает быстрый полнотекстовый поиск
- Использует кластеризацию для высокой доступности
json
GET /logs/_search
{
"query": {
"match": { "message": "error" }
}
}
- Собирает логи из файлов, TCP, Kafka, Beats
- Фильтрует и преобразует данные перед отправкой в Elasticsearch
- Поддерживает шифрование и маршрутизацию
yaml
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
}
}
filter {
grok { match => { "message" => "%{COMBINEDAPACHELOG}" } }
}
output {
elasticsearch {
hosts => ["https://elasticsearch:9200"]
}
}
- Позволяет строить дашборды и графики
- Делает поиск по логам и метрикам
- Визуализирует реальное время работы системы
message: "error" AND @timestamp:[now-24h TO now]
Logstash собирает и обрабатывает логи
Отправляет их в Elasticsearch
Kibana визуализирует данные
yaml
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
environment:
- discovery.type=single-node
ports:
- "9200:9200"
logstash:
image: docker.elastic.co/logstash/logstash:8.5.0
depends_on:
- elasticsearch
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
- "5044:5044"
kibana:
image: docker.elastic.co/kibana/kibana:8.5.0
depends_on:
- elasticsearch
ports:
- "5601:5601"
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
- synchronized — встроенный механизм блокировки:
- Прост в использовании.
- Автоматически освобождает монитор.
- Lock (ReentrantLock):
- Предоставляет гибкость: можно попытаться захватить (tryLock), установить таймаут, прерывание.
- Требует явного освобождения — unlock().
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Для измерения качества системы (особенно в DevOps, SRE и разработке) используют различные метрики производительности, надежности и доступности.
Эти метрики помогают оценить эффективность процессов DevOps:
Lead Time for Changes (Время доставки изменений) — время от написания кода до его выхода в прод.
Deployment Frequency (Частота развертываний) — как часто изменения попадают в прод.
Mean Time to Restore (MTTR) (Среднее время восстановления) — как быстро исправляются инциденты.
Change Failure Rate (Процент неудачных изменений) — доля развертываний, вызывающих сбои.
Эти метрики помогают измерять надежность системы:
SLA (Service Level Agreement) — договорное время доступности (например, 99.9%).
SLO (Service Level Objective) — целевое значение доступности (например, 99.95%).
SLI (Service Level Indicator) — фактические измеренные показатели (например, 99.93%).
Error Rate — процент ошибок в системе (HTTP 500, таймауты и т. д.).
Latency (Задержка) — время ответа системы на запросы.
Они показывают, насколько быстро работает система:
CPU Utilization — загрузка процессора.
Memory Usage — использование оперативной памяти.
Disk I/O — скорость чтения/записи на диск.
Network Throughput — пропускная способность сети.
Response Time — время отклика системы.
Оценивают удобство работы пользователей с системой:
Apdex (Application Performance Index) — индекс удовлетворенности пользователей (0–1).
TTFB (Time to First Byte) — время до получения первого байта ответа от сервера.
Page Load Time — время полной загрузки страницы.
Bounce Rate — процент пользователей, покинувших сайт без взаимодействия.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
По умолчанию Kubernetes хранит 10 ревизий (revisionHistoryLimit = 10) для ресурсов типа Deployment. Это значит, ты можешь откатиться на одну из 10 предыдущих версий.
Это значение можно изменить в манифесте деплоймента.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊5