1 # A headless service to create DNS records.
5 name: {{ template "hdfs-k8s.journalnode.fullname" . }}
7 app: {{ template "hdfs-k8s.journalnode.name" . }}
8 chart: {{ template "hdfs-k8s.subchart" . }}
9 release: {{ .Release.Name }}
11 # TODO: Deprecated. Replace tolerate-unready-endpoints with
12 # v1.Service.PublishNotReadyAddresses.
13 service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
22 app: {{ template "hdfs-k8s.journalnode.name" . }}
23 release: {{ .Release.Name }}
25 apiVersion: policy/v1beta1
26 kind: PodDisruptionBudget
28 name: {{ template "hdfs-k8s.journalnode.fullname" . }}
30 app: {{ template "hdfs-k8s.journalnode.name" . }}
31 chart: {{ template "hdfs-k8s.subchart" . }}
32 release: {{ .Release.Name }}
36 app: {{ template "hdfs-k8s.journalnode.name" . }}
37 release: {{ .Release.Name }}
38 minAvailable: {{ div .Values.global.journalnodeQuorumSize 2 | add1 }}
40 apiVersion: apps/v1beta1
43 name: {{ template "hdfs-k8s.journalnode.fullname" . }}
45 app: {{ template "hdfs-k8s.journalnode.name" . }}
46 chart: {{ template "hdfs-k8s.subchart" . }}
47 release: {{ .Release.Name }}
49 serviceName: {{ template "hdfs-k8s.journalnode.fullname" . }}
50 replicas: {{ .Values.global.journalnodeQuorumSize }}
54 app: {{ template "hdfs-k8s.journalnode.name" . }}
55 release: {{ .Release.Name }}
56 {{- if .Values.podAnnotations }}
58 {{ toYaml .Values.podAnnotations | indent 8 }}
61 {{- if .Values.affinity }}
63 {{ toYaml .Values.affinity | indent 8 }}
64 {{- else if .Values.global.defaultAffinityEnabled }}
67 requiredDuringSchedulingIgnoredDuringExecution:
73 - {{ template "hdfs-k8s.journalnode.name" . }}
78 topologyKey: "kubernetes.io/hostname"
80 {{- if .Values.nodeSelector }}
82 {{ toYaml .Values.nodeSelector | indent 8 }}
84 {{- if .Values.tolerations }}
86 {{ toYaml .Values.tolerations | indent 8 }}
89 - name: hdfs-journalnode
90 image: uhopper/hadoop-namenode:2.7.2
92 - name: HADOOP_CUSTOM_CONF_DIR
93 value: /etc/hadoop-custom-conf
94 command: ["/entrypoint.sh"]
95 args: ["/opt/hadoop-2.7.2/bin/hdfs", "--config", "/etc/hadoop", "journalnode"]
102 # Mount a subpath of the volume so that the journal subdir would be
103 # a brand new empty dir. This way, we won't get affected by
104 # existing files in the volume top dir.
106 mountPath: /hadoop/dfs/journal
109 mountPath: /hadoop/dfs/name
112 mountPath: /etc/hadoop-custom-conf
114 {{- if .Values.global.kerberosEnabled }}
115 - name: kerberos-config
116 mountPath: /etc/krb5.conf
117 subPath: {{ .Values.global.kerberosConfigFileName }}
119 - name: kerberos-keytab-copy
120 mountPath: /etc/security/
123 {{- if .Values.global.kerberosEnabled }}
125 - name: copy-kerberos-keytab
126 image: busybox:1.27.1
127 command: ['sh', '-c']
129 - cp /kerberos-keytabs/${MY_KERBEROS_NAME}*.keytab /kerberos-keytab-copy/hdfs.keytab
131 - name: MY_KERBEROS_NAME
134 fieldPath: metadata.name
136 - name: kerberos-keytabs
137 mountPath: /kerberos-keytabs
138 - name: kerberos-keytab-copy
139 mountPath: /kerberos-keytab-copy
141 restartPolicy: Always
145 name: {{ template "hdfs-k8s.config.fullname" . }}
146 {{- if .Values.global.kerberosEnabled }}
147 - name: kerberos-config
149 name: {{ template "krb5-configmap" . }}
150 - name: kerberos-keytabs
152 secretName: {{ template "krb5-keytabs-secret" . }}
153 - name: kerberos-keytab-copy
156 {{- if .Values.global.podSecurityContext.enabled }}
158 runAsUser: {{ .Values.global.podSecurityContext.runAsUser }}
159 fsGroup: {{ .Values.global.podSecurityContext.fsGroup }}
161 volumeClaimTemplates:
166 - {{ .Values.persistence.accessMode | quote }}
169 storage: {{ .Values.persistence.size | quote }}
170 {{- if .Values.persistence.storageClass }}
171 {{- if (eq "-" .Values.persistence.storageClass) }}
174 storageClassName: "{{ .Values.persistence.storageClass }}"
177 {{- if .Values.persistence.selector }}
179 {{ toYaml .Values.persistence.selector | indent 10 }}