Документация по сервису Cloud.ru Secret Manager
docker-compose.yaml
version: '3.8'
services:
cloud-secrets:
image: swarmdeployorg/cloud-secrets:v0.4.0
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
environment:
- CS_REFRESH_INTERVAL=10s
- CS_SECRET_NAME_FOLDER_DELIMITER=-
- CLOUDRU_PROJECT_ID=<uuid>
- CLOUDRU_IAM_CLIENT_ID=/var/run/secrets/iam_id
- CLOUDRU_IAM_CLIENT_SECRET=/var/run/secrets/iam_secret
- CLOUDRU_ROOT_FOLDER=""
- CLOUDRU_ROOT_FOLDER_OMIT_PREFIX=false
# Удаляет только managed secrets, которых больше нет в Cloud.ru
# и которые не используются ни одним сервисом.
- CS_CLEANUP_ORPHANED=true
secrets:
- iam_id
- iam_secret
deploy:
labels:
- prometheus.port=8000
placement:
constraints:
- node.role == manager
secrets:
iam_id:
external: true
iam_secret:
external: true» 1. Скопировать файл docker-compose.yaml
» 2. Заполнить ID проекта в переменной CLOUDRU_PROJECT_ID.
Опционально можно ограничить синхронизацию одной папкой и ее дочерними папками:
CLOUDRU_ROOT_FOLDER=prod/appsограничивает поиск секретов указанной папкой.CLOUDRU_ROOT_FOLDER_OMIT_PREFIX=trueубирает префиксprod/apps/из имен секретов в Docker Swarm.
3. Создать сервисный аккаунт с доступом к сервису Secret Manager и ролью scsm.user
» 4. Создать ключ доступа для сервисного аккаунта
5. Полученные Key ID и Key Secret установить как секреты в кластере
echo "<client-id>" > iam_id
echo "<client-secret>" > iam_secret
docker secret create iam_id ./iam_id
docker secret create iam_secret ./iam_secret6. Задеплоить стек
docker stack deploy -c docker-compose.yaml cloud-secrets --detach=false