mirror of
https://gitlab.sarex.io/infra/terraform-contour-mirror.git
synced 2026-08-05 18:31:00 +03:00
44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
# sops и infrastructure-secrets.yaml
|
||
|
||
`infrastructure-secrets.yaml` хранит секретную часть k8s-секретов. В `infrastructure.yaml` остаётся публичное описание: имя секрета, неймспейс, тип, зависимости и набор ключей.
|
||
|
||
Формат файла:
|
||
|
||
```yaml
|
||
environments:
|
||
prod:
|
||
secrets:
|
||
- name: yc-kafka-secret
|
||
namespace: eav-prod
|
||
data:
|
||
username: <base64>
|
||
password: <base64>
|
||
host: <base64>
|
||
```
|
||
|
||
`name` и `namespace` — реальные имя и неймспейс k8s-секрета. `data` — значения в том же виде, что в k8s `.data`, то есть base64.
|
||
|
||
`resource_key` в этот файл обычно не пишется. Это внутренний ключ terraform для state, а не имя секрета в кластере. Если совпадение по `namespace/name` невозможно, `resource_key` можно указать явно, но это исключение.
|
||
|
||
Редактирование:
|
||
|
||
```bash
|
||
sops infrastructure-secrets.yaml
|
||
```
|
||
|
||
После ручной правки расшифрованного файла:
|
||
|
||
```bash
|
||
sops -e -i infrastructure-secrets.yaml
|
||
```
|
||
|
||
В ci `scripts/generate-pipeline.sh` расшифровывает файл во временный путь и передаёт его в terragrunt через `INFRA_SECRET_VALUES_FILE`. Расшифрованный файл не должен попадать в git и артефакты.
|
||
|
||
Для adopt существующего секрета:
|
||
|
||
```bash
|
||
kubectl --context yc-sarex-prod -n <namespace> get secret <name> -o jsonpath='{.data}'
|
||
```
|
||
|
||
Полученную `.data` нужно перенести в `environments.prod.secrets[]` без декодирования.
|