Forráskód Böngészése

Flink. Add ability to choose Deployment instead of StatefulSet for Jobmanager/Taskmanager

vkropotko 5 éve
szülő
commit
635eb4e4ad

+ 4 - 1
flink/Chart.yaml

@@ -2,4 +2,7 @@ apiVersion: v1
 appVersion: "1.9.1"
 description: Chart for Apache Flink
 name: flink
-version: 0.1.3
+version: 0.1.4
+maintainers:
+  - name: charts-maintainers
+    email: charts-maintainers@riskfocus.com

+ 2 - 0
flink/templates/jobmanager-headless-service.yaml

@@ -1,3 +1,4 @@
+{{- if .Values.jobmanager.statefulset }}
 apiVersion: v1
 kind: Service
 metadata:
@@ -28,3 +29,4 @@ spec:
     app.kubernetes.io/name: {{ include "flink.name" . }}
     app.kubernetes.io/instance: {{ .Release.Name }}
     component: jobmanager
+{{- end }}

+ 13 - 2
flink/templates/jobmanager-statefulset.yaml

@@ -1,5 +1,9 @@
 apiVersion: apps/v1
+{{- if .Values.jobmanager.statefulset }}
 kind: StatefulSet
+{{- else }}
+kind: Deployment
+{{- end }}
 metadata:
   name: {{ include "flink.fullname" . }}-jobmanager
   labels:
@@ -11,13 +15,20 @@ metadata:
   {{- end }}
 spec:
   replicas: {{ .Values.jobmanager.replicaCount }}
+  {{- if .Values.jobmanager.statefulset }}
   podManagementPolicy: {{ .Values.jobmanager.podManagementPolicy }}
+  {{- else }}
+  strategy:
+    type: Recreate
+  {{- end }}
   selector:
     matchLabels:
       app.kubernetes.io/name: {{ include "flink.name" . }}
       app.kubernetes.io/instance: {{ .Release.Name }}
       component: jobmanager
+  {{- if .Values.jobmanager.statefulset }}
   serviceName: {{ include "flink.fullname" . }}-jobmanager-headless
+  {{- end }}
   template:
     metadata:
       labels:
@@ -90,7 +101,7 @@ spec:
               mountPath: {{ .Values.flink.workDir }}/conf/masters
               subPath: masters
               {{- end }}
-          {{- if .Values.jobmanager.persistent.enabled }}
+          {{- if and .Values.jobmanager.persistent.enabled .Values.jobmanager.statefulset }}
             - name: jobmanager-data
               mountPath: {{ .Values.jobmanager.persistent.mountPath }}
           {{- end }}
@@ -125,7 +136,7 @@ spec:
       tolerations:
         {{- toYaml . | nindent 8 }}
     {{- end }}
-{{- if .Values.jobmanager.persistent.enabled }}
+{{- if and .Values.jobmanager.persistent.enabled .Values.jobmanager.statefulset }}
   volumeClaimTemplates:
     - metadata:
         name: jobmanager-data

+ 11 - 2
flink/templates/taskmanager-statefulset.yaml

@@ -1,5 +1,9 @@
 apiVersion: apps/v1
+{{- if .Values.taskmanager.statefulset }}
 kind: StatefulSet
+{{- else }}
+kind: Deployment
+{{- end }}
 metadata:
   name: {{ include "flink.fullname" . }}-taskmanager
   labels:
@@ -11,7 +15,12 @@ metadata:
   {{- end }}
 spec:
   replicas: {{ .Values.taskmanager.replicaCount }}
+  {{- if .Values.taskmanager.statefulset }}
   podManagementPolicy: {{ .Values.taskmanager.podManagementPolicy }}
+  {{- else }}
+  strategy:
+    type: Recreate
+  {{- end }}
   selector:
     matchLabels:
       app.kubernetes.io/name: {{ include "flink.name" . }}
@@ -64,7 +73,7 @@ spec:
           volumeMounts:
             - name: flink-config-volume
               mountPath: {{ .Values.flink.workDir }}/conf
-          {{- if .Values.taskmanager.persistent.enabled }}
+          {{- if and .Values.taskmanager.persistent.enabled .Values.taskmanager.statefulset }}
             - name: taskmanager-data
               mountPath: {{ .Values.taskmanager.persistent.mountPath }}
           {{- end }}
@@ -99,7 +108,7 @@ spec:
       tolerations:
         {{- toYaml . | nindent 8 }}
     {{- end }}
-{{- if .Values.taskmanager.persistent.enabled }}
+{{- if and .Values.taskmanager.persistent.enabled .Values.taskmanager.statefulset }}
   volumeClaimTemplates:
     - metadata:
         name: taskmanager-data

+ 6 - 0
flink/values.yaml

@@ -64,6 +64,9 @@ flink:
 extraEnvs: []
 
 jobmanager:
+  # Statefulset option will create Jobmanager as a StatefulSet
+  # A necessary option for HA mode and Persistent
+  statefulset: true
   # highAvailability configuration based on zookeeper
   highAvailability:
     # enabled also will enable zookeeper Dependency
@@ -164,6 +167,9 @@ jobmanager:
     initialDelaySeconds: 20
 
 taskmanager:
+  # Statefulset option will create Taskmanager as a StatefulSet
+  # A necessary option for Persistent
+  statefulset: true
   # Additional param for JVM to support security.properties override
   # check configMap for more information
   jvmArgs: "-Djava.security.properties={{ .Values.flink.workDir }}/conf/security.properties"