Skip to content

Commit 9266f98

Browse files
authored
feat: add poddisruptionbudget (#66)
* feat: add poddisruptionbudget patches * test: update pdb * test: include pdbs in patches * test: using kustomization * test: include in resources * fix: include conditional for mfe and forum * fix: correct endlines * feat: pdb value parametrizable * fix: delete undefined variable * fix: drydock variable names * fix: change comparison operator and pdb path
1 parent 5e41bf9 commit 9266f98

File tree

4 files changed

+99
-0
lines changed

4 files changed

+99
-0
lines changed

README.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ The following configuration options are available:
5757
- `DRYDOCK_ENABLE_SENTRY` : Whether to enable sentry. Defaults to `true`.
5858
- `DRYDOCK_SENTRY_DSN` : The sentry DSN. Defaults to `""`.
5959
- `DRYDOCK_POD_LIFECYCLE` : Whether to enable pod lifecycle. Defaults to `true`.
60+
- `DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_MFE` : The minimum available percentage for the MFE's PodDisruptionBudget. To disable the PodDisruptionBudget, set `0`. Defaults to `0`.
61+
- `DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_FORUM` : The minimum available percentage for the FORUM's PodDisruptionBudget. To disable the PodDisruptionBudget, set `0`. Defaults to `0`.
62+
- `DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CADDY` : The minimum available percentage for the CADDY's PodDisruptionBudget. To disable the PodDisruptionBudget, set `0`. Defaults to `0`.
63+
- `DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_LMS` : The minimum available percentage for the LMS's PodDisruptionBudget. To disable the PodDisruptionBudget, set `0`. Defaults to `0`.
64+
- `DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_LMS_WORKER` : The minimum available percentage for the LMS WORKER's PodDisruptionBudget. To disable the PodDisruptionBudget, set `0`. Defaults to `0`.
65+
- `DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CMS` : The minimum available percentage for the CMS's PodDisruptionBudget. To disable the PodDisruptionBudget, set `0`. Defaults to `0`.
66+
- `DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CMS_WORKER` : The minimum available percentage for the worker's PodDisruptionBudget. To disable the PodDisruptionBudget, set `0`. Defaults to `0`.
6067

6168
Rationale
6269
---------

drydock/patches/kustomization-resources

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
- plugins/drydock/k8s/multipurpose-jobs.yml
2+
- plugins/drydock/k8s/pdb/openedx-pdb.yml
23
{%- if DRYDOCK_INIT_JOBS %}
34
- plugins/drydock/k8s/drydock-jobs/mysql.yml
45
- plugins/drydock/k8s/drydock-jobs/mongodb.yml

drydock/plugin.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@
3131
"SENTRY_DSN": "",
3232
"POD_LIFECYCLE": True,
3333
"BYPASS_CADDY": False,
34+
"PDB_MINAVAILABLE_PERCENTAGE_LMS": 0,
35+
"PDB_MINAVAILABLE_PERCENTAGE_LMS_WORKER": 0,
36+
"PDB_MINAVAILABLE_PERCENTAGE_CMS": 0,
37+
"PDB_MINAVAILABLE_PERCENTAGE_CMS_WORKER": 0,
38+
"PDB_MINAVAILABLE_PERCENTAGE_MFE": 0,
39+
"PDB_MINAVAILABLE_PERCENTAGE_FORUM": 0,
40+
"PDB_MINAVAILABLE_PERCENTAGE_CADDY": 0,
3441
},
3542
# Add here settings that don't have a reasonable default for all users. For
3643
# instance: passwords, secret keys, etc.
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
{%- if MFE_HOST is defined and DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_MFE > 0 %}
2+
---
3+
apiVersion: policy/v1
4+
kind: PodDisruptionBudget
5+
metadata:
6+
name: mfe-pdb
7+
spec:
8+
minAvailable: {{DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_MFE}}%
9+
selector:
10+
matchLabels:
11+
app.kubernetes.io/name: mfe
12+
{%- endif %}
13+
{%- if FORUM_DOCKER_IMAGE is defined and DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_FORUM > 0 %}
14+
---
15+
apiVersion: policy/v1
16+
kind: PodDisruptionBudget
17+
metadata:
18+
name: forum-pdb
19+
spec:
20+
minAvailable: {{DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_FORUM}}%
21+
selector:
22+
matchLabels:
23+
app.kubernetes.io/name: forum
24+
{%- endif %}
25+
{%- if DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CADDY > 0 %}
26+
---
27+
apiVersion: policy/v1
28+
kind: PodDisruptionBudget
29+
metadata:
30+
name: caddy-pdb
31+
spec:
32+
minAvailable: {{DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CADDY}}%
33+
selector:
34+
matchLabels:
35+
app.kubernetes.io/name: caddy
36+
{%- endif %}
37+
{%- if DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_LMS > 0 %}
38+
---
39+
apiVersion: policy/v1
40+
kind: PodDisruptionBudget
41+
metadata:
42+
name: lms-pdb
43+
spec:
44+
minAvailable: {{DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_LMS}}%
45+
selector:
46+
matchLabels:
47+
app.kubernetes.io/name: lms
48+
{%- endif %}
49+
{%- if DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_LMS_WORKER > 0 %}
50+
---
51+
apiVersion: policy/v1
52+
kind: PodDisruptionBudget
53+
metadata:
54+
name: lms-worker-pdb
55+
spec:
56+
minAvailable: {{DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_LMS_WORKER}}%
57+
selector:
58+
matchLabels:
59+
app.kubernetes.io/name: lms-worker
60+
{%- endif %}
61+
{%- if DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CMS > 0 %}
62+
---
63+
apiVersion: policy/v1
64+
kind: PodDisruptionBudget
65+
metadata:
66+
name: cms-pdb
67+
spec:
68+
minAvailable: {{DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CMS}}%
69+
selector:
70+
matchLabels:
71+
app.kubernetes.io/name: cms
72+
{%- endif %}
73+
{%- if DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CMS_WORKER > 0 %}
74+
---
75+
apiVersion: policy/v1
76+
kind: PodDisruptionBudget
77+
metadata:
78+
name: cms-worker-pdb
79+
spec:
80+
minAvailable: {{DRYDOCK_PDB_MINAVAILABLE_PERCENTAGE_CMS_WORKER}}%
81+
selector:
82+
matchLabels:
83+
app.kubernetes.io/name: cms-worker
84+
{%- endif %}

0 commit comments

Comments
 (0)