Collectd operator utilties
[demo.git] / vnfs / DAaaS / deploy / training-core / charts / kubernetes-HDFS / charts / hdfs-datanode-k8s / templates / datanode-daemonset.yaml
1 # Provides datanode helper scripts.
2 apiVersion: v1
3 kind: ConfigMap
4 metadata:
5   name: {{ template "hdfs-k8s.datanode.fullname" . }}-scripts
6   labels:
7     app: {{ template "hdfs-k8s.datanode.name" . }}
8     chart: {{ template "hdfs-k8s.subchart" . }}
9     release: {{ .Release.Name }}
10 data:
11   check-status.sh: |
12     #!/usr/bin/env bash
13     # Exit on error. Append "|| true" if you expect an error.
14     set -o errexit
15     # Exit on error inside any functions or subshells.
16     set -o errtrace
17     # Do not allow use of undefined vars. Use ${VAR:-} to use an undefined VAR
18     set -o nounset
19     # Catch an error in command pipes. e.g. mysqldump fails (but gzip succeeds)
20     # in `mysqldump |gzip`
21     set -o pipefail
22     # Turn on traces, useful while debugging.
23     set -o xtrace
24
25     # Check if datanode registered with the namenode and got non-null cluster ID.
26     _PORTS="50075 1006"
27     _URL_PATH="jmx?qry=Hadoop:service=DataNode,name=DataNodeInfo"
28     _CLUSTER_ID=""
29     for _PORT in $_PORTS; do
30       _CLUSTER_ID+=$(curl -s http://localhost:${_PORT}/$_URL_PATH |  \
31           grep ClusterId) || true
32     done
33     echo $_CLUSTER_ID | grep -q -v null
34 ---
35 # Deleting a daemonset may need some trick. See
36 # https://github.com/kubernetes/kubernetes/issues/33245#issuecomment-261250489
37 apiVersion: extensions/v1beta1
38 kind: DaemonSet
39 metadata:
40   name: {{ template "hdfs-k8s.datanode.fullname" . }}
41   labels:
42     app: {{ template "hdfs-k8s.datanode.name" . }}
43     chart: {{ template "hdfs-k8s.subchart" . }}
44     release: {{ .Release.Name }}
45 spec:
46   template:
47     metadata:
48       labels:
49         app: {{ template "hdfs-k8s.datanode.name" . }}
50         release: {{ .Release.Name }}
51       {{- if .Values.podAnnotations }}
52       annotations:
53 {{ toYaml .Values.podAnnotations | indent 8 }}
54       {{- end }}
55     spec:
56       {{- if .Values.affinity }}
57       affinity:
58 {{ toYaml .Values.affinity | indent 8 }}
59       {{- else if .Values.global.defaultAffinityEnabled }}
60       affinity:
61         nodeAffinity:
62           requiredDuringSchedulingIgnoredDuringExecution:
63             nodeSelectorTerms:
64               - matchExpressions:
65                 - key: {{ template "hdfs-k8s.datanode.fullname" . }}-exclude
66                   operator: DoesNotExist
67       {{- end }}
68       {{- if .Values.nodeSelector }}
69       nodeSelector:
70 {{ toYaml .Values.nodeSelector | indent 8 }}
71       {{- end }}
72       {{- if .Values.tolerations }}
73       tolerations:
74 {{ toYaml .Values.tolerations | indent 8 }}
75       {{- end }}
76       hostNetwork: true
77       hostPID: true
78       dnsPolicy: ClusterFirstWithHostNet
79       containers:
80         - name: datanode
81           image: uhopper/hadoop-datanode:2.7.2
82           env:
83             - name: HADOOP_CUSTOM_CONF_DIR
84               value: /etc/hadoop-custom-conf
85             - name: MULTIHOMED_NETWORK
86               value: "0"
87             {{- if and .Values.global.kerberosEnabled .Values.global.jsvcEnabled }}
88             - name: HADOOP_SECURE_DN_USER
89               value: root
90             - name: JSVC_OUTFILE
91               value: /dev/stdout
92             - name: JSVC_ERRFILE
93               value: /dev/stderr
94             - name: JSVC_HOME
95               value: /jsvc-home
96             {{- end }}
97           livenessProbe:
98             exec:
99               command:
100                 - /dn-scripts/check-status.sh
101             initialDelaySeconds: 60
102             periodSeconds: 30
103           readinessProbe:
104             exec:
105               command:
106                 - /dn-scripts/check-status.sh
107             initialDelaySeconds: 60
108             periodSeconds: 30
109           securityContext:
110             privileged: true
111           volumeMounts:
112             - name: dn-scripts
113               mountPath: /dn-scripts
114               readOnly: true
115             - name: hdfs-config
116               mountPath: /etc/hadoop-custom-conf
117               readOnly: true
118             {{- range $index, $path := .Values.global.dataNodeHostPath }}
119             - name: hdfs-data-{{ $index }}
120               mountPath: /hadoop/dfs/data/{{ $index }}
121             {{- end }}
122             {{- if .Values.global.kerberosEnabled }}
123             - name: kerberos-config
124               mountPath: /etc/krb5.conf
125               subPath: {{ .Values.global.kerberosConfigFileName }}
126               readOnly: true
127             - name: kerberos-keytab-copy
128               mountPath: /etc/security/
129               readOnly: true
130             {{- if .Values.global.jsvcEnabled }}
131             - name: jsvc-home
132               mountPath: /jsvc-home
133             {{- end }}
134             {{- end }}
135       {{- if .Values.global.kerberosEnabled }}
136       initContainers:
137         - name: copy-kerberos-keytab
138           image: busybox:1.27.1
139           command: ['sh', '-c']
140           args:
141             - cp /kerberos-keytabs/$MY_NODE_NAME.keytab /kerberos-keytab-copy/hdfs.keytab
142           env:
143             - name: MY_NODE_NAME
144               valueFrom:
145                 fieldRef:
146                   fieldPath: spec.nodeName
147           volumeMounts:
148             - name: kerberos-keytabs
149               mountPath: /kerberos-keytabs
150             - name: kerberos-keytab-copy
151               mountPath: /kerberos-keytab-copy
152         {{- if .Values.global.jsvcEnabled }}
153         - name: copy-jsvc
154           # Pull by digest because the image doesn't have tags to pin.
155           image: mschlimb/jsvc@sha256:bf20eb9a319e9a2f87473d8da7418d21503a97528b932800b6b8417cd31e30ef
156           command: ['sh', '-c']
157           args:
158             - cp /usr/bin/jsvc /jsvc-home/jsvc
159           volumeMounts:
160             - name: jsvc-home
161               mountPath: /jsvc-home
162         {{- end }}
163       {{- end }}
164       restartPolicy: Always
165       volumes:
166         - name: dn-scripts
167           configMap:
168             name: {{ template "hdfs-k8s.datanode.fullname" . }}-scripts
169             defaultMode: 0744
170         {{- range $index, $path := .Values.global.dataNodeHostPath }}
171         - name: hdfs-data-{{ $index }}
172           hostPath:
173             path: {{ $path }}
174         {{- end }}
175         - name: hdfs-config
176           configMap:
177             name: {{ template "hdfs-k8s.config.fullname" . }}
178         {{- if .Values.global.kerberosEnabled }}
179         - name: kerberos-config
180           configMap:
181             name: {{ template "krb5-configmap" . }}
182         - name: kerberos-keytabs
183           secret:
184             secretName: {{ template "krb5-keytabs-secret" . }}
185         - name: kerberos-keytab-copy
186           emptyDir: {}
187         {{- if .Values.global.jsvcEnabled }}
188         - name: jsvc-home
189           emptyDir: {}
190         {{- end }}
191         {{- end }}