🤔 Можно ли на лету изменить настройки DNS в контейнере через CLI?
Да, можно:
docker exec <container> bash -c "echo nameserver8.8.8.8 > /etc/resolv.conf"
Но после рестарта DNS вернётся. Лучше задать при запуске.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Да, можно:
docker exec <container> bash -c "echo nameserver
Но после рестарта DNS вернётся. Лучше задать при запуске.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 Что касается безопасности где хранить переменные секреты?
Хранение секретных переменных, таких как пароли, ключи 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), для шифрования секретов перед их сохранением в системах контроля версий или конфигурационных файлах.
Преимущества: Высокий уровень безопасности, контроль доступа к секретам на уровне пользователя.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Если удалить terraform.tfstate, а потом сделать terraform init — что будет?
- terraform init не восстановит state.
- Terraform не будет знать, что уже развернуто, и при следующем apply может создать ресурсы заново.
- Лучше использовать terraform state pull/push или хранить state в remote backend (S3, GitLab, etc).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- terraform init не восстановит state.
- Terraform не будет знать, что уже развернуто, и при следующем apply может создать ресурсы заново.
- Лучше использовать terraform state pull/push или хранить state в remote backend (S3, GitLab, etc).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Зачем нужен стейт в Terraform?
Файл
🟠Отслеживание ресурсов
Terraform использует
В коде создаем виртуальную машину
Запускаем
В
При следующем
🟠Управление зависимостями
Когда ресурсы связаны (например, сервер и security group), Terraform понимает связи через
🟠Работа в команде (`remote state`)
Когда несколько разработчиков работают с Terraform,
- S3 + DynamoDB (AWS)
- Terraform Cloud
- GCS + Firestore (GCP)
- Azure Storage + CosmosDB (Azure)
Ставь 👍 и забирай 📚 Базу знаний
Файл
terraform.tfstate хранит текущее состояние инфраструктуры. Он нужен, чтобы Terraform знал, какие ресурсы уже существуют, и мог правильно управлять изменениями. 🟠Отслеживание ресурсов
Terraform использует
tfstate, чтобы сопоставлять код с реальными ресурсами. В коде создаем виртуальную машину
hcl
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Запускаем
terraform apply, создается сервер в AWS В
terraform.tfstate записывается информация об этом ресурсе При следующем
terraform apply Terraform сверяет tfstate с реальными ресурсами и вносит только изменения 🟠Управление зависимостями
Когда ресурсы связаны (например, сервер и security group), Terraform понимает связи через
tfstate и удаляет ресурсы в правильном порядке 🟠Работа в команде (`remote state`)
Когда несколько разработчиков работают с Terraform,
tfstate должен храниться в общем месте, например - S3 + DynamoDB (AWS)
- Terraform Cloud
- GCS + Firestore (GCP)
- Azure Storage + CosmosDB (Azure)
hcl
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
encrypt = true
dynamodb_table = "terraform-lock"
}
}
Ставь 👍 и забирай 📚 Базу знаний
🤔 Какой будет ID в Podman?
Podman использует тот же механизм контейнеризации, что и Docker, но без демона. Если запустить контейнер в Podman, он получит свой уникальный контейнерный ID, аналогично Docker. Это будет хеш, состоящий из символов, идентифицирующих контейнер.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Podman использует тот же механизм контейнеризации, что и Docker, но без демона. Если запустить контейнер в Podman, он получит свой уникальный контейнерный ID, аналогично Docker. Это будет хеш, состоящий из символов, идентифицирующих контейнер.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊2
🤔 Что сделать если зависает ssh?
Если SSH завис, не стоит сразу закрывать терминал. Есть несколько причин и решений.
🚩Проверить, можно ли выйти без разрыва сессии
Если SSH завис, но сессия не разорвана, попробуйте выйти без закрытия терминала:
Переключение в режим управления SSH
🚩Проверить соединение с сервером
Если SSH завис, причина может быть в разрыве соединения. Проверьте:
Работает ли пинг до сервера:
🔹 Открыт ли SSH-порт (22):
🚩Перезапустить SSH-клиент
Если только один SSH-клиент завис, попробуйте:
или
Затем переподключитесь
🚩Проверить SSH-сервер
Если сервер доступен, но SSH зависает, войдите через консоль или другой метод (например, VNC, IPMI).
Если SSH не отвечает, перезапустите его:
или
🚩Отключить TCP KeepAlive или изменить таймауты
Иногда SSH зависает из-за разрыва соединения на роутере или файрволе.
Добавьте в
Или в
Затем перезапустите SSH
🚩Убить зависшую SSH-сессию на сервере
Если осталось зависшее подключение, найдите его и завершите:
Ставь 👍 и забирай 📚 Базу знаний
Если SSH завис, не стоит сразу закрывать терминал. Есть несколько причин и решений.
🚩Проверить, можно ли выйти без разрыва сессии
Если SSH завис, но сессия не разорвана, попробуйте выйти без закрытия терминала:
~.
Переключение в режим управления SSH
~Ctrl+Z
🚩Проверить соединение с сервером
Если SSH завис, причина может быть в разрыве соединения. Проверьте:
Работает ли пинг до сервера:
ping server_ip
🔹 Открыт ли SSH-порт (22):
nc -zv server_ip 22
🚩Перезапустить SSH-клиент
Если только один SSH-клиент завис, попробуйте:
pkill -9 ssh
или
killall -9 ssh
Затем переподключитесь
ssh user@server_ip
🚩Проверить SSH-сервер
Если сервер доступен, но SSH зависает, войдите через консоль или другой метод (например, VNC, IPMI).
Если SSH не отвечает, перезапустите его:
sudo systemctl restart ssh
или
service ssh restart
🚩Отключить TCP KeepAlive или изменить таймауты
Иногда SSH зависает из-за разрыва соединения на роутере или файрволе.
Добавьте в
~/.ssh/config на клиентеHost *
ServerAliveInterval 60
ServerAliveCountMax 5
Или в
/etc/ssh/sshd_config на сервере ClientAliveInterval 60
ClientAliveCountMax 5
Затем перезапустите SSH
sudo systemctl restart ssh
🚩Убить зависшую SSH-сессию на сервере
Если осталось зависшее подключение, найдите его и завершите:
who # Показывает активные пользователи
ps aux | grep ssh # Показывает процессы SSH
pkill -9 -u username # Завершает все сессии пользователя
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 В чём причина, если мы запускаем сервисы с ReplicaSet, меняем версию nginx, и поды не перезапущены?
Причина:
- Selector не изменился, а PodTemplate тоже не изменился.
- ReplicaSet не обновляет поды сам при изменении образа.
Нужно использовать Deployment, который пересоздаёт поды при изменении spec.template.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Причина:
- Selector не изменился, а PodTemplate тоже не изменился.
- ReplicaSet не обновляет поды сам при изменении образа.
Нужно использовать Deployment, который пересоздаёт поды при изменении spec.template.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 Как и где посмотреть логи какого-нибудь сервиса?
Обычно хранятся в каталоге
🚩Способы просмотра
🟠Просмотр логов в /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
Ставь 👍 и забирай 📚 Базу знаний
🤔 Как описать исполняемый файл как демон?
Чтобы сделать программу демоном (службой):
1. Обеспечить фоновый запуск, отсоединение от терминала.
2. Обеспечить логирование, PID-файл, работу в фоне.
3. Зарегистрировать как systemd unit или использовать init.d.
При этом важно, чтобы демон:
- Не блокировал терминал.
- Обрабатывал сигналы (например, SIGTERM).
- Логировал свою работу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Чтобы сделать программу демоном (службой):
1. Обеспечить фоновый запуск, отсоединение от терминала.
2. Обеспечить логирование, PID-файл, работу в фоне.
3. Зарегистрировать как systemd unit или использовать init.d.
При этом важно, чтобы демон:
- Не блокировал терминал.
- Обрабатывал сигналы (например, SIGTERM).
- Логировал свою работу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний