terraform-contour-mirror/SOPS.md

1.8 KiB
Raw Permalink Blame History

sops и infrastructure-secrets.yaml

infrastructure-secrets.yaml хранит секретную часть k8s-секретов. В infrastructure.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 можно указать явно, но это исключение.

Редактирование:

sops infrastructure-secrets.yaml

После ручной правки расшифрованного файла:

sops -e -i infrastructure-secrets.yaml

В ci scripts/generate-pipeline.sh расшифровывает файл во временный путь и передаёт его в terragrunt через INFRA_SECRET_VALUES_FILE. Расшифрованный файл не должен попадать в git и артефакты.

Для adopt существующего секрета:

kubectl --context yc-sarex-prod -n <namespace> get secret <name> -o jsonpath='{.data}'

Полученную .data нужно перенести в environments.prod.secrets[] без декодирования.