Для смены секретов используйте rotate-secrets: контроллер обновит файлы и использующие их компоненты согласованно. Запланируйте короткий перерыв в работе.
Работайте из корня проекта: Source — на VPS под пользователем deploy, Archive/Registry — на управляющем компьютере, prod-local — на своём компьютере.
1. Выберите действие
--kind |
Что меняется | Что подготовить |
|---|---|---|
auth |
Ключи подписи токенов приложения | Новые значения создаются на сервере; JSON-файл не нужен |
postgres |
Пароль БД и связанные настройки подключения | Файл с новыми секретами не нужен |
media |
Ключи доступа к изображениям в S3 | media_access_key, media_secret_key, необязательный media_session_token |
backup |
Ключи доступа к резервным копиям в S3 | backup_access_key, backup_secret_key, необязательный backup_session_token |
registry |
Доступ к скачиванию Docker-образов | registry_username, registry_password |
db-leaf |
Сертификат PostgreSQL, подписанный действующим центром сертификации (CA) | Файл с новыми секретами не нужен |
db-ca |
Центр сертификации PostgreSQL, доверие к нему и сертификат | Файл с новыми секретами не нужен |
Registry доступен только при текущем registry-релизе; media и backup — только для S3. Эти действия меняют доступ к тому же хранилищу, а не переносят данные.
Сначала выполните status --env production --json и убедитесь, что нет активной операции.
2A. Ключи приложения, пароль БД или её сертификаты
Для этих видов JSON с новыми значениями не нужен:
bash ./deploy/control rotate-secrets --env production \
--kind auth --confirm production
Замените auth на postgres, db-leaf или db-ca, если требуется другое действие. После auth пользователям может понадобиться новый вход.
2B. Ключи S3 или registry
Получите новые ключи у провайдера, пока оставив старые действующими. Вне репозитория создайте файл:
umask 077
ROTATION_FILE="$HOME/admingen-media-rotation.json"
touch "$ROTATION_FILE"
chmod 600 "$ROTATION_FILE"
nano "$ROTATION_FILE"
Для media вставьте:
{
"media_access_key": "NEW_ACCESS_KEY",
"media_secret_key": "NEW_SECRET_KEY"
}
Для backup вместо этого используйте:
{
"backup_access_key": "NEW_ACCESS_KEY",
"backup_secret_key": "NEW_SECRET_KEY"
}
Для registry:
{
"registry_username": "NEW_USERNAME",
"registry_password": "NEW_TOKEN"
}
Выберите только один из трёх объектов; session token добавляйте, если он нужен провайдеру. Запустите соответствующий kind:
DEPLOY_SECRETS_FILE="$ROTATION_FILE" \
bash ./deploy/control rotate-secrets --env production \
--kind media --confirm production
Не передавайте значения ключей в аргументах команд или логах. После успеха проверьте нужную функцию: загрузку изображения, backup или доступ к образам. Затем отзовите старые ключи и удалите временный файл, если он больше не нужен.
Публичный HTTPS-сертификат
bash ./deploy/control certificates --env production --confirm production
Это обслуживание Nginx/Certbot, не сертификатов PostgreSQL. Для него должны работать DNS и доступ ACME. Prod-local использует свой локальный CA; его нужно добавить в доверенные на компьютере.
Если операция прервалась
bash ./deploy/control status --env production --json
bash ./deploy/control reconcile --env production --json
Обычный resume не поддерживает rotate-secrets. Выясните по журналу, какие значения уже применились, и продолжайте по инструкции восстановления. Не запускайте вторую ротацию параллельно. Abandon не возвращает прежние ключи у внешнего провайдера.