Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
67cabb5
feat: team-specific secret management with sealed secrets
ferruhcihan May 28, 2026
611ea19
Merge branch 'main' into APL-1871
ferruhcihan May 28, 2026
0263f3e
Merge branch 'main' into APL-1871
svcAPLBot May 28, 2026
16d711a
Merge branch 'main' into APL-1871
svcAPLBot May 28, 2026
5dade23
Merge branch 'main' into APL-1871
svcAPLBot May 28, 2026
96190dc
Merge branch 'main' into APL-1871
svcAPLBot May 28, 2026
d078743
feat: improve team secret management
ferruhcihan May 28, 2026
e346f0d
chore: update sealed secrets tests
ferruhcihan May 28, 2026
862ac3d
chore: clean up comments in sealed secrets and operator files for cla…
ferruhcihan May 28, 2026
5973ed9
fix: update annotations from 'apl.io' to 'otomi.io' for secret manage…
ferruhcihan May 28, 2026
dd5de16
Merge branch 'main' into APL-1871
svcAPLBot May 29, 2026
e2555a9
Merge branch 'main' into APL-1871
svcAPLBot May 29, 2026
29e7242
Merge branch 'main' into APL-1871
svcAPLBot May 29, 2026
08d2d5c
Merge branch 'main' into APL-1871
svcAPLBot May 29, 2026
de6b98c
Merge branch 'main' into APL-1871
svcAPLBot May 29, 2026
e954481
Merge branch 'main' into APL-1871
svcAPLBot May 29, 2026
b431e71
Merge branch 'main' into APL-1871
svcAPLBot May 29, 2026
7fe7f94
feat: team secret management with ESO push secrets
ferruhcihan May 29, 2026
2b7caf9
feat: add PushSecret CustomResourceDefinition for external secrets ma…
ferruhcihan May 29, 2026
12c5665
feat: remove optional secretType and namespace field
ferruhcihan May 29, 2026
87c182f
feat: update SecretStore to ClusterSecretStore for team secret manage…
ferruhcihan May 29, 2026
8717c2d
feat: enable processPushSecret for external secrets management
ferruhcihan May 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
638 changes: 638 additions & 0 deletions charts/external-secrets/crds/pushsecret.yaml

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
"sourceMap": true,
"strict": false,
"strictNullChecks": true,
"target": "esnext"
"target": "esnext",
"types": ["jest", "node"]
},
"exclude": ["node_modules", "dist"],
"include": ["src", "jest.config.ts"],
Expand Down
13 changes: 13 additions & 0 deletions values/external-secrets/external-secrets-raw.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ resources:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list", "watch"]
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: eso-push-secret-writer
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "create", "update", "patch", "delete"]
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
Expand All @@ -31,6 +39,11 @@ resources:
metadata:
name: core-secrets-store
spec:
conditions:
- namespaceSelector:
matchExpressions:
- key: otomi.io/team
operator: DoesNotExist
provider:
kubernetes:
remoteNamespace: apl-secrets
Expand Down
2 changes: 1 addition & 1 deletion values/external-secrets/external-secrets.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ installCRDs: false
processClusterExternalSecret: false
processClusterPushSecret: false
processClusterGenerator: false
processPushSecret: false
processPushSecret: true
41 changes: 14 additions & 27 deletions values/k8s/k8s-raw-teams.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -10,38 +10,12 @@ resources:
labels:
name: {{ $ns }}
type: team
otomi.io/team: "true"
{{- if $v.apps.istio.defaultRevision }}
istio.io/rev: {{ $v.apps.istio.defaultRevision | quote }}
{{- else }}
istio-injection: enabled
{{- end }}
{{- with $v.otomi | get "globalPullSecret" nil }}
{{- $gpsUsername := . | get "username" "" }}
{{- $gpsServer := . | get "server" "docker.io" }}
{{- $gpsEmail := . | get "email" "not@val.id" }}
- apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: otomi-pullsecret-global
namespace: {{ $ns }}
spec:
refreshInterval: 1h
secretStoreRef:
name: core-secrets-store
kind: ClusterSecretStore
target:
name: otomi-pullsecret-global
creationPolicy: Owner
template:
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: '{"auths":{"{{ $gpsServer }}":{"username":"{{ $gpsUsername }}","password":"{{ "{{ .password | toString }}" }}","email":"{{ $gpsEmail }}"}}}'
data:
- secretKey: password
remoteRef:
key: otomi-secrets
property: globalPullSecret_password
{{- end }}
# patching service account here as helm does not recognize it as it's own
- apiVersion: v1
kind: ServiceAccount
Expand All @@ -57,4 +31,17 @@ resources:
- name: harbor-pullsecret
{{- end }}
{{- end }}
- apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: eso-push-secret-writer
namespace: {{ $ns }}
subjects:
- kind: ServiceAccount
name: eso-store-sa
namespace: external-secrets
roleRef:
kind: ClusterRole
name: eso-push-secret-writer
apiGroup: rbac.authorization.k8s.io
{{- end }}
Loading
Loading