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
|
```yaml
|
||||||
namespaces:
|
namespaces:
|
||||||
- name: pulse
|
- name: pulse
|
||||||
|
manage: true
|
||||||
labels:
|
labels:
|
||||||
environment: stage
|
environment: stage
|
||||||
annotations:
|
annotations:
|
||||||
managed-by: terraform
|
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" {
|
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 {
|
metadata {
|
||||||
name = each.value.name
|
name = each.value.name
|
||||||
|
|||||||
@ -4,8 +4,11 @@ variable "namespaces" {
|
|||||||
name = string
|
name = string
|
||||||
labels = optional(map(string), {})
|
labels = optional(map(string), {})
|
||||||
annotations = optional(map(string), {})
|
annotations = optional(map(string), {})
|
||||||
# When true, the secrets stack rolls the common regcred (dockerconfigjson)
|
# false для уже существующего неймспейс: он остаётся вне state этого модуля,
|
||||||
# into this namespace. Not used by the namespace module itself.
|
# но запись доступна другим стекам как декларативная цель.
|
||||||
|
manage = optional(bool, true)
|
||||||
|
# true раскатывает общий regcred в неймспейс через стек secrets.
|
||||||
|
# Сам модуль namespace это поле не использует.
|
||||||
image_pull_secret = optional(bool, false)
|
image_pull_secret = optional(bool, false)
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user