fix(security): CR ESO в отдельный Kustomization после оператора
This commit was merged in pull request #9.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
---
|
||||
apiVersion: external-secrets.io/v1
|
||||
kind: ClusterSecretStore
|
||||
metadata:
|
||||
name: vault
|
||||
spec:
|
||||
provider:
|
||||
vault:
|
||||
# Внутрикластерный адрес, а не https://vault.<домен>: Vault слушает без TLS
|
||||
# (tls_disable), а поход через шлюз потребовал бы ещё и доверия к internal-ca
|
||||
# внутри ESO. Снаружи UI остаётся на https через envoy.
|
||||
server: http://vault.security.svc:8200
|
||||
path: kv
|
||||
version: v2
|
||||
auth:
|
||||
kubernetes:
|
||||
mountPath: kubernetes
|
||||
role: eso
|
||||
# Service account оператора: имя и namespace должны совпадать с
|
||||
# bound_service_account_names/namespaces роли eso в Vault.
|
||||
serviceAccountRef:
|
||||
name: external-secrets
|
||||
namespace: security
|
||||
# Vault 1.21+ требует audience в роли, ESO по умолчанию просит "vault".
|
||||
audiences:
|
||||
- vault
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
# Проверочный ExternalSecret: доказывает всю цепочку ESO -> kubernetes-auth ->
|
||||
# Vault -> Secret в кластере. Значение кладётся в Vault командой
|
||||
# vault kv put kv/demo username=demo password=s3cr3t
|
||||
# (key в ExternalSecret указывается без префикса path: demo -> kv/data/demo).
|
||||
# Когда появятся настоящие потребители (токен вебхука Flux и приложения),
|
||||
# этот объект можно удалить.
|
||||
apiVersion: external-secrets.io/v1
|
||||
kind: ExternalSecret
|
||||
metadata:
|
||||
name: vault-smoke
|
||||
namespace: security
|
||||
spec:
|
||||
refreshInterval: 1h
|
||||
secretStoreRef:
|
||||
name: vault
|
||||
kind: ClusterSecretStore
|
||||
target:
|
||||
name: vault-smoke
|
||||
creationPolicy: Owner
|
||||
deletionPolicy: Retain
|
||||
data:
|
||||
- secretKey: username
|
||||
remoteRef:
|
||||
key: demo
|
||||
property: username
|
||||
- secretKey: password
|
||||
remoteRef:
|
||||
key: demo
|
||||
property: password
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- ./clustersecretstore.yaml
|
||||
- ./externalsecret.yaml
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||
kind: Kustomization
|
||||
metadata:
|
||||
name: external-secrets-stores
|
||||
spec:
|
||||
interval: 1h
|
||||
path: ./kubernetes/apps/security/external-secrets-stores/app
|
||||
prune: true
|
||||
sourceRef:
|
||||
kind: GitRepository
|
||||
name: flux-system
|
||||
namespace: flux-system
|
||||
targetNamespace: security
|
||||
wait: true
|
||||
# ClusterSecretStore и ExternalSecret — это CR, которые ставят CRD'ы из чарта
|
||||
# external-secrets. В одном Kustomization с HelmRelease оператора они падали бы
|
||||
# с `no matches for kind "ClusterSecretStore"`, потому что CRD'ы появляются
|
||||
# только после установки релиза. Поэтому отдельный Kustomization и dependsOn.
|
||||
dependsOn:
|
||||
- name: external-secrets
|
||||
Reference in New Issue
Block a user