Skip to content

Commit ba698b5

Browse files
Merge pull request #350 from projectsyn/feat/support-backup-ca
Support custom CA for Backup Backends
2 parents 7a0ff4d + cccc7fe commit ba698b5

File tree

5 files changed

+121
-1
lines changed

5 files changed

+121
-1
lines changed

class/defaults.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ parameters:
184184
bucket: k8up-${cluster:name}-syn-keycloak
185185
accessKey: "?{vaultkv:${cluster:tenant}/${cluster:name}/keycloak/k8up-s3-accesskey}"
186186
secretKey: "?{vaultkv:${cluster:tenant}/${cluster:name}/keycloak/k8up-s3-secretkey}"
187+
customCA: null
187188

188189
helm_values:
189190
image:

component/main.jsonnet

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,18 @@ local k8up_s3_secret_ref = {
185185
secretkeyname: 'password',
186186
};
187187

188+
local k8up_custom_ca = if params.k8up.customCA != null then {
189+
apiVersion: 'v1',
190+
kind: 'ConfigMap',
191+
metadata: {
192+
name: 'k8up-custom-ca',
193+
},
194+
data: {
195+
'ca.crt': params.k8up.customCA,
196+
},
197+
};
198+
local k8up_custom_ca_name = if params.k8up.customCA != null then k8up_custom_ca.metadata.name else null;
199+
188200
local k8up_schedule =
189201
k8up.Schedule(
190202
'backup',
@@ -194,6 +206,7 @@ local k8up_schedule =
194206
backupkey=k8up_repo_secret_ref,
195207
s3secret=k8up_s3_secret_ref,
196208
create_bucket=false,
209+
caConfigMap=k8up_custom_ca_name,
197210
).schedule + k8up.PruneSpec('@daily-random', 30, 20);
198211

199212
// Define outputs below
@@ -206,5 +219,5 @@ local k8up_schedule =
206219
[if create_keycloak_cert_secret then '13_keycloak_certs']: keycloak_cert_secret,
207220
[if create_ingress_cert_secret then '14_ingress_certs']: ingress_tls_secret,
208221
[if create_ingress_cert then '20_le_cert']: cert_manager_cert,
209-
[if params.k8up.enabled then '30_k8up']: [ k8up_repo_secret, k8up_s3_secret, k8up_schedule ],
222+
[if params.k8up.enabled then '30_k8up']: [ k8up_repo_secret, k8up_s3_secret, k8up_schedule ] + if params.k8up.customCA != null then [ k8up_custom_ca ] else [],
210223
}

docs/modules/ROOT/pages/references/parameters.adoc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -774,6 +774,14 @@ default:: `?{vaultkv:${cluster:tenant}/${cluster:name}/keycloak/k8up-s3-secretke
774774

775775
S3 secret key to the bucket where the backups gets stored.
776776

777+
== `k8up.s3.customCA`
778+
779+
[horizontal]
780+
type:: dict
781+
default:: `null`
782+
783+
Configure a custom CA for connecting to the backend.
784+
777785

778786
== `helm_values`
779787

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
apiVersion: v1
2+
data: {}
3+
kind: Secret
4+
metadata:
5+
annotations: {}
6+
labels:
7+
app.kubernetes.io/component: keycloak
8+
app.kubernetes.io/instance: openshift
9+
app.kubernetes.io/managed-by: commodore
10+
app.kubernetes.io/name: keycloak
11+
name: k8up-repo
12+
name: k8up-repo
13+
stringData:
14+
password: t-silent-test-1234/c-green-test-1234/keycloak/k8up-repo-password
15+
type: Opaque
16+
---
17+
apiVersion: v1
18+
data: {}
19+
kind: Secret
20+
metadata:
21+
annotations: {}
22+
labels:
23+
app.kubernetes.io/component: keycloak
24+
app.kubernetes.io/instance: openshift
25+
app.kubernetes.io/managed-by: commodore
26+
app.kubernetes.io/name: keycloak
27+
name: k8up-s3-credentials
28+
name: k8up-s3-credentials
29+
stringData:
30+
password: t-silent-test-1234/c-green-test-1234/keycloak/k8up-s3-secretkey
31+
username: t-silent-test-1234/c-green-test-1234/keycloak/k8up-s3-accesskey
32+
type: Opaque
33+
---
34+
apiVersion: k8up.io/v1
35+
kind: Schedule
36+
metadata:
37+
name: backup
38+
spec:
39+
backend:
40+
repoPasswordSecretRef:
41+
key: password
42+
name: k8up-repo
43+
s3:
44+
accessKeyIDSecretRef:
45+
key: username
46+
name: k8up-s3-credentials
47+
bucket: k8up-c-green-test-1234-syn-keycloak
48+
endpoint: null
49+
secretAccessKeySecretRef:
50+
key: password
51+
name: k8up-s3-credentials
52+
tlsOptions:
53+
caCert: /mnt/ca/ca.crt
54+
volumeMounts:
55+
- mountPath: /mnt/ca/
56+
name: ca
57+
backup:
58+
keepJobs: 3
59+
schedule: '@hourly-random'
60+
volumes:
61+
- configMap:
62+
name: k8up-custom-ca
63+
name: ca
64+
check:
65+
schedule: 30 3 * * *
66+
prune:
67+
retention:
68+
keepDaily: 30
69+
keepLast: 20
70+
schedule: '@daily-random'
71+
---
72+
apiVersion: v1
73+
data:
74+
ca.crt: |
75+
-----BEGIN CERTIFICATE-----
76+
MY AWESOME CA
77+
-----END CERTIFICATE-----
78+
kind: ConfigMap
79+
metadata:
80+
name: k8up-custom-ca

tests/openshift.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@ parameters:
33
facts:
44
distribution: openshift4
55

6+
kapitan:
7+
dependencies:
8+
- type: https
9+
source: https://raw.githubusercontent.com/projectsyn/component-backup-k8up/master/lib/backup-k8up.libjsonnet
10+
output_path: vendor/lib/backup-k8up.libjsonnet
11+
12+
backup_k8up:
13+
global_backup_config:
14+
s3_endpoint: null
15+
prometheus_push_gateway: null
16+
617
keycloak:
718
namespace: keycloak-dev
819
tls:
@@ -79,3 +90,10 @@ parameters:
7990
name: themes
8091
mountPath: /opt/keycloak/themes/dev-app2
8192
subPath: dev-app2
93+
94+
k8up:
95+
enabled: true
96+
customCA: |
97+
-----BEGIN CERTIFICATE-----
98+
MY AWESOME CA
99+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)