mirror of
https://gitlab.sarex.io/infra/terraform-contour-mirror.git
synced 2026-08-05 18:31:00 +03:00
add regcred namespace propagation
This commit is contained in:
parent
417a2bdb77
commit
e445c6689b
55
README.md
55
README.md
@ -244,12 +244,67 @@ valkey_users:
|
||||
```yaml
|
||||
namespaces:
|
||||
- name: pulse
|
||||
manage: true
|
||||
labels:
|
||||
environment: stage
|
||||
annotations:
|
||||
managed-by: terraform
|
||||
```
|
||||
|
||||
`manage` по умолчанию равен `true`. Для уже существующего неймспейс укажите
|
||||
`manage: false`: модуль не будет пытаться создать или изменить его, но запись можно использовать
|
||||
как цель для других стеков.
|
||||
|
||||
#### Раскатка общего regcred в неймспейс
|
||||
|
||||
Единый источник учётных данных —
|
||||
`environments.<env>.vault.common.regcred.dockerconfigjson` в зашифрованном
|
||||
`infrastructure-secrets.yaml`. Из него независимо работают два направления:
|
||||
|
||||
- vault-платформа записывает значение в Vault, если включён `vault.features.create_regcred`;
|
||||
- стек `live/secrets` создаёт секрет `regcred` типа `kubernetes.io/dockerconfigjson`
|
||||
в каждом неймспейс с `image_pull_secret: true`.
|
||||
|
||||
Для уже существующих неймспейс:
|
||||
|
||||
```yaml
|
||||
environments:
|
||||
yc-k8s-test:
|
||||
namespaces:
|
||||
- name: django
|
||||
manage: false
|
||||
image_pull_secret: true
|
||||
- name: issues
|
||||
manage: false
|
||||
image_pull_secret: true
|
||||
```
|
||||
|
||||
`manage: false` обязателен, если неймспейс уже существует и не находится в state
|
||||
`live/namespace`: иначе terraform попытается создать его заново.
|
||||
|
||||
Если `regcred` в целевом неймспейс уже существует, перед первым apply его нужно один раз
|
||||
принять в state стека `live/secrets`:
|
||||
|
||||
```bash
|
||||
cd live/secrets
|
||||
|
||||
terragrunt import \
|
||||
'kubernetes_secret.without_ignore["django/regcred"]' \
|
||||
django/regcred
|
||||
|
||||
terragrunt import \
|
||||
'kubernetes_secret.without_ignore["issues/regcred"]' \
|
||||
issues/regcred
|
||||
|
||||
terragrunt plan
|
||||
terragrunt apply
|
||||
```
|
||||
|
||||
Если секрета ещё нет, импорт не требуется: apply создаст его. После одноразового импорта
|
||||
дальнейшие изменения общего `dockerconfigjson` раскатываются обычным apply. Для k8s fan-out
|
||||
включать `vault.features.create_regcred` не требуется — этот флаг управляет только записью
|
||||
в Vault.
|
||||
|
||||
## Использование
|
||||
|
||||
### Локальный запуск
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
# Создание namespace'ов в Kubernetes
|
||||
# Создание неймспейс в kubernetes
|
||||
resource "kubernetes_namespace" "this" {
|
||||
for_each = { for ns in var.namespaces : ns.name => ns }
|
||||
for_each = { for ns in var.namespaces : ns.name => ns if ns.manage }
|
||||
|
||||
metadata {
|
||||
name = each.value.name
|
||||
|
||||
@ -4,8 +4,11 @@ variable "namespaces" {
|
||||
name = string
|
||||
labels = optional(map(string), {})
|
||||
annotations = optional(map(string), {})
|
||||
# When true, the secrets stack rolls the common regcred (dockerconfigjson)
|
||||
# into this namespace. Not used by the namespace module itself.
|
||||
# false для уже существующего неймспейс: он остаётся вне state этого модуля,
|
||||
# но запись доступна другим стекам как декларативная цель.
|
||||
manage = optional(bool, true)
|
||||
# true раскатывает общий regcred в неймспейс через стек secrets.
|
||||
# Сам модуль namespace это поле не использует.
|
||||
image_pull_secret = optional(bool, false)
|
||||
}))
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user