Skip to content

Commit dbbb366

Browse files
committed
create ESO manifest for k8s deployment
1 parent 0751694 commit dbbb366

1 file changed

Lines changed: 142 additions & 0 deletions

File tree

k8s/external-secrets.yaml

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
# ----------------------
2+
# Namespaces
3+
# ----------------------
4+
apiVersion: v1
5+
kind: Namespace
6+
metadata:
7+
name: external-secrets
8+
---
9+
apiVersion: v1
10+
kind: Namespace
11+
metadata:
12+
name: student-api
13+
14+
# ----------------------
15+
# ServiceAccount for ESO
16+
# ----------------------
17+
---
18+
apiVersion: v1
19+
kind: ServiceAccount
20+
metadata:
21+
name: external-secrets
22+
namespace: external-secrets
23+
24+
# ----------------------
25+
# ClusterRole for ESO
26+
# ----------------------
27+
---
28+
apiVersion: rbac.authorization.k8s.io/v1
29+
kind: ClusterRole
30+
metadata:
31+
name: external-secrets-cluster-role
32+
rules:
33+
- apiGroups: [""]
34+
resources: ["secrets", "namespaces"]
35+
verbs: ["get", "list", "watch", "create", "update", "patch"]
36+
- apiGroups: ["external-secrets.io"]
37+
resources: ["secretstores", "clustersecretstores", "externalsecrets", "clusterexternalsecrets"]
38+
verbs: ["get", "list", "watch", "create", "update", "patch"]
39+
40+
# ----------------------
41+
# ClusterRoleBinding for ESO
42+
# ----------------------
43+
---
44+
apiVersion: rbac.authorization.k8s.io/v1
45+
kind: ClusterRoleBinding
46+
metadata:
47+
name: external-secrets-cluster-role-binding
48+
roleRef:
49+
apiGroup: rbac.authorization.k8s.io
50+
kind: ClusterRole
51+
name: external-secrets-cluster-role
52+
subjects:
53+
- kind: ServiceAccount
54+
name: external-secrets
55+
namespace: external-secrets
56+
57+
# ----------------------
58+
# Vault token secret (in external-secrets namespace)
59+
# ----------------------
60+
---
61+
apiVersion: v1
62+
kind: Secret
63+
metadata:
64+
name: vault-token
65+
namespace: external-secrets
66+
type: Opaque
67+
stringData:
68+
token: "root"
69+
70+
# ----------------------
71+
# ESO deployment
72+
# ----------------------
73+
---
74+
apiVersion: apps/v1
75+
kind: Deployment
76+
metadata:
77+
name: external-secrets-operator
78+
namespace: external-secrets
79+
spec:
80+
replicas: 1
81+
selector:
82+
matchLabels:
83+
app: external-secrets
84+
template:
85+
metadata:
86+
labels:
87+
app: external-secrets
88+
spec:
89+
serviceAccountName: external-secrets
90+
nodeSelector:
91+
type: dependent_services
92+
containers:
93+
- name: external-secrets-operator
94+
image: ghcr.io/external-secrets/external-secrets:v0.9.9
95+
imagePullPolicy: IfNotPresent
96+
97+
# ----------------------
98+
# ClusterSecretStore pointing to Vault
99+
# ----------------------
100+
---
101+
apiVersion: external-secrets.io/v1beta1
102+
kind: ClusterSecretStore
103+
metadata:
104+
name: vault-secretstore
105+
spec:
106+
provider:
107+
vault:
108+
server: "http://vault.vault.svc.cluster.local:8200"
109+
path: "secret"
110+
version: "v2"
111+
auth:
112+
tokenSecretRef:
113+
name: vault-token
114+
key: token
115+
namespace: external-secrets # ✅ Explicit namespace
116+
117+
# ----------------------
118+
# ExternalSecret pulling Postgres credentials
119+
# ----------------------
120+
---
121+
apiVersion: external-secrets.io/v1beta1
122+
kind: ExternalSecret
123+
metadata:
124+
name: postgres-secret
125+
namespace: student-api
126+
spec:
127+
refreshInterval: 1m
128+
secretStoreRef:
129+
name: vault-secretstore
130+
kind: ClusterSecretStore
131+
target:
132+
name: postgres-secret
133+
creationPolicy: Owner
134+
data:
135+
- secretKey: POSTGRES_USER
136+
remoteRef:
137+
key: studentdb
138+
property: POSTGRES_USER
139+
- secretKey: POSTGRES_PASSWORD
140+
remoteRef:
141+
key: studentdb
142+
property: POSTGRES_PASSWORD

0 commit comments

Comments
 (0)