From bd2e69abbcb250d3a7f5f9d25d387c94283c3ac9 Mon Sep 17 00:00:00 2001 From: Wei He Date: Sun, 22 May 2022 21:02:04 +0800 Subject: [PATCH] etherpad start/stop cronjobs --- jitsi/Chart.yaml | 2 +- .../templates/etherpad/deployment.yaml | 2 +- jitsi/charts/jitsi-meet/values.yaml | 1 + .../cluster-role-binding.yaml | 15 ++++++ .../etherpad-schedule/cluster-role.yaml | 18 +++++++ .../templates/etherpad-schedule/cronjob.yaml | 54 +++++++++++++++++++ .../etherpad-schedule/serviceacount.yaml | 7 +++ jitsi/values.yaml | 6 ++- 8 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 jitsi/templates/etherpad-schedule/cluster-role-binding.yaml create mode 100644 jitsi/templates/etherpad-schedule/cluster-role.yaml create mode 100644 jitsi/templates/etherpad-schedule/cronjob.yaml create mode 100644 jitsi/templates/etherpad-schedule/serviceacount.yaml diff --git a/jitsi/Chart.yaml b/jitsi/Chart.yaml index 830fc6a..7aa0892 100644 --- a/jitsi/Chart.yaml +++ b/jitsi/Chart.yaml @@ -1,7 +1,7 @@ --- apiVersion: v2 name: jitsi-deploy -version: 0.1.3 +version: 0.1.4 dependencies: - name: jitsi-meet version: "1.2.2+etherpad.1" diff --git a/jitsi/charts/jitsi-meet/templates/etherpad/deployment.yaml b/jitsi/charts/jitsi-meet/templates/etherpad/deployment.yaml index ff84f5a..45c879f 100644 --- a/jitsi/charts/jitsi-meet/templates/etherpad/deployment.yaml +++ b/jitsi/charts/jitsi-meet/templates/etherpad/deployment.yaml @@ -10,7 +10,7 @@ metadata: {{ toYaml . | nindent 4 }} {{- end }} spec: - replicas: 1 + replicas: {{ .Values.etherpad.replicaCount }} selector: matchLabels: {{- include "jitsi-meet.etherpad.selectorLabels" . | nindent 6 }} diff --git a/jitsi/charts/jitsi-meet/values.yaml b/jitsi/charts/jitsi-meet/values.yaml index 8c14dc8..ede8d4b 100644 --- a/jitsi/charts/jitsi-meet/values.yaml +++ b/jitsi/charts/jitsi-meet/values.yaml @@ -254,6 +254,7 @@ jibri: etherpad: enabled: false + replicaCount: 1 image: repository: etherpad/etherpad diff --git a/jitsi/templates/etherpad-schedule/cluster-role-binding.yaml b/jitsi/templates/etherpad-schedule/cluster-role-binding.yaml new file mode 100644 index 0000000..f40f20f --- /dev/null +++ b/jitsi/templates/etherpad-schedule/cluster-role-binding.yaml @@ -0,0 +1,15 @@ +{{- if .Values.etherpad.scheduled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ .Release.Name }}-etherpad-scale-role-binding +subjects: + - namespace: {{ .Release.Namespace }} + kind: ServiceAccount + name: {{ .Release.Name }}-etherpad-startstop-account +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ .Release.Name }}-etherpad-scale-role +{{- end }} diff --git a/jitsi/templates/etherpad-schedule/cluster-role.yaml b/jitsi/templates/etherpad-schedule/cluster-role.yaml new file mode 100644 index 0000000..12117db --- /dev/null +++ b/jitsi/templates/etherpad-schedule/cluster-role.yaml @@ -0,0 +1,18 @@ +{{- if .Values.etherpad.scheduled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ .Release.Name }}-etherpad-scale-role +rules: + - apiGroups: + - apps + resources: + - deployments + verbs: [ "get" ] + - apiGroups: + - apps + resources: + - deployments/scale + verbs: [ "patch" ] +{{- end }} diff --git a/jitsi/templates/etherpad-schedule/cronjob.yaml b/jitsi/templates/etherpad-schedule/cronjob.yaml new file mode 100644 index 0000000..d68e49b --- /dev/null +++ b/jitsi/templates/etherpad-schedule/cronjob.yaml @@ -0,0 +1,54 @@ +{{- if .Values.etherpad.scheduled }} +--- +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ .Release.Name }}-start-etherpad +spec: + schedule: {{ .Values.etherpad.schedules.start }} + successfulJobsHistoryLimit: 1 + failedJobsHistoryLimit: 1 + jobTemplate: + spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: kubectl + image: bitnami/kubectl:1.23 + imagePullPolicy: IfNotPresent + args: + - -n + - {{ .Release.Namespace }} + - scale + - deployment + - {{ .Release.Name }}-jitsi-meet-etherpad + - --replicas=1 + serviceAccountName: {{ .Release.Name }}-etherpad-startstop-account +--- +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ .Release.Name }}-stop-etherpad +spec: + schedule: {{ .Values.etherpad.schedules.stop }} + successfulJobsHistoryLimit: 1 + failedJobsHistoryLimit: 1 + jobTemplate: + spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: kubectl + image: bitnami/kubectl:1.23 + imagePullPolicy: IfNotPresent + args: + - -n + - {{ .Release.Namespace }} + - scale + - deployment + - {{ .Release.Name }}-jitsi-meet-etherpad + - --replicas=0 + serviceAccountName: {{ .Release.Name }}-etherpad-startstop-account +{{- end }} diff --git a/jitsi/templates/etherpad-schedule/serviceacount.yaml b/jitsi/templates/etherpad-schedule/serviceacount.yaml new file mode 100644 index 0000000..73f6c17 --- /dev/null +++ b/jitsi/templates/etherpad-schedule/serviceacount.yaml @@ -0,0 +1,7 @@ +{{- if .Values.etherpad.scheduled }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Release.Name }}-etherpad-startstop-account +{{- end }} diff --git a/jitsi/values.yaml b/jitsi/values.yaml index ab28f7b..d1a73f0 100755 --- a/jitsi/values.yaml +++ b/jitsi/values.yaml @@ -4,7 +4,10 @@ certResolver: le-staging fqdn: "" etherpad: - resources: {} + scheduled: false + schedules: + start: "" + stop: "" jitsi-meet: publicURL: "" @@ -42,3 +45,4 @@ jitsi-meet: etherpad: enabled: true + replicaCount: 1