gitops/services/platform/postgresql-tls-sync/postgresql-tls-sync.yaml

121 lines
2.8 KiB
YAML

apiVersion: v1
kind: Service
metadata:
name: postgresql-tls-placeholder
namespace: platform
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app.kubernetes.io/name: postgresql-tls-placeholder
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: postgresql-tls
namespace: platform
annotations:
external-dns.alpha.kubernetes.io/hostname: postgresql-prod.svc.plus
spec:
ingressClassName: caddy
tls:
- hosts:
- postgresql-prod.svc.plus
secretName: postgresql-tls
rules:
- host: postgresql-prod.svc.plus
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: postgresql-tls-placeholder
port:
number: 80
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: postgresql-tls-sync
namespace: platform
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: postgresql-tls-sync-source
namespace: platform
rules:
- apiGroups: [""]
resources: ["secrets"]
resourceNames: ["postgresql-tls"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: postgresql-tls-sync-target
namespace: database
rules:
- apiGroups: [""]
resources: ["secrets"]
resourceNames: ["postgresql-tls"]
verbs: ["get", "create", "update", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: postgresql-tls-sync-source
namespace: platform
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: postgresql-tls-sync-source
subjects:
- kind: ServiceAccount
name: postgresql-tls-sync
namespace: platform
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: postgresql-tls-sync-target
namespace: database
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: postgresql-tls-sync-target
subjects:
- kind: ServiceAccount
name: postgresql-tls-sync
namespace: platform
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: postgresql-tls-sync
namespace: platform
spec:
schedule: "* * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
serviceAccountName: postgresql-tls-sync
restartPolicy: OnFailure
containers:
- name: sync
image: bitnami/kubectl:latest
command:
- /bin/sh
- -ec
- |
kubectl -n platform get secret postgresql-tls -o yaml \
| sed '/^ resourceVersion:/d;/^ uid:/d;/^ creationTimestamp:/d;/^ managedFields:/d;/^ annotations:/d;/^ ownerReferences:/d;/^ namespace:/d;/^ selfLink:/d' \
| kubectl -n database apply -f -