Inference package with Tensorflow Serving
[demo.git] / vnfs / DAaaS / inference-core / charts / tf-serving / templates / deployment.yaml
diff --git a/vnfs/DAaaS/inference-core/charts/tf-serving/templates/deployment.yaml b/vnfs/DAaaS/inference-core/charts/tf-serving/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..0a909e9
--- /dev/null
@@ -0,0 +1,138 @@
+{{/*
+# Copyright 2019 Intel Corporation, Inc
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "tf-serving.fullname" . }}
+  labels:
+    app: {{ include "tf-serving.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service | quote }}
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: {{ include "tf-serving.name" . }}
+      release: {{ .Release.Name }}
+      modelName: {{ .Values.modelName }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "tf-serving.name" . }}
+        release: {{ .Release.Name }}
+        modelName: {{ .Values.modelName }}
+    spec:
+      serviceAccountName: {{ template "tf-serving.serviceAccountName" . }}
+      containers:
+        - name: tf-serving
+          image: "{{ .Values.image.tensorflowServing.repository }}:{{ .Values.image.tensorflowServing.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          command:
+            - "/usr/bin/tensorflow_model_server"
+          args:
+            - "--port={{ .Values.service.tensorflowServingPort }}"
+            - "--model_name={{ .Values.modelName }}"
+            - "--model_base_path={{ .Values.modelBasePath }}"
+          ports:
+            - name: tf-serving
+              containerPort: {{ .Values.service.tensorflowServingPort }}
+              protocol: TCP
+          env:
+            - name: AWS_ACCESS_KEY_ID
+              valueFrom:
+                secretKeyRef:
+                  name: {{ if .Values.minio.existingSecret }}{{ .Values.minio.existingSecret }}{{ else }}{{ template "tf-serving.fullname" . }}{{ end }}
+                  key: accesskey
+            - name: AWS_SECRET_ACCESS_KEY
+              valueFrom:
+                secretKeyRef:
+                  name: {{ if .Values.minio.existingSecret }}{{ .Values.minio.existingSecret }}{{ else }}{{ template "tf-serving.fullname" . }}{{ end }}
+                  key: secretkey
+            {{- range $key, $val := .Values.minio.environment }}
+            - name: {{ $key }}
+              value: {{ $val | quote }}
+            {{- end}}
+          readinessProbe:
+            tcpSocket:
+              port: tf-serving
+            initialDelaySeconds: 15
+            timeoutSeconds: 1
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+          volumeMounts:
+            - mountPath: /models
+              name: models
+        - name: tensorboard
+          image: "{{ .Values.image.tensorboard.repository }}:{{ .Values.image.tensorboard.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          command:
+            - tensorboard
+          args:
+             - --logdir
+            - {{ .Values.modelBasePath }}
+            - --host
+            - 0.0.0.0
+          ports:
+            - name: tensorboard
+              containerPort: {{ .Values.service.tensorboardPort }}
+              protocol: TCP
+          env:
+            - name: AWS_ACCESS_KEY_ID
+              valueFrom:
+                secretKeyRef:
+                  name: {{ if .Values.minio.existingSecret }}{{ .Values.minio.existingSecret }}{{ else }}{{ template "tf-serving.fullname" . }}{{ end }}
+                  key: accesskey
+            - name: AWS_SECRET_ACCESS_KEY
+              valueFrom:
+                secretKeyRef:
+                  name: {{ if .Values.minio.existingSecret }}{{ .Values.minio.existingSecret }}{{ else }}{{ template "tf-serving.fullname" . }}{{ end }}
+                  key: secretkey
+            {{- range $key, $val := .Values.minio.environment }}
+            - name: {{ $key }}
+              value: {{ $val | quote }}
+            {{- end}}
+          livenessProbe:
+            httpGet:
+              path: /
+              port: {{ .Values.service.tensorboardPort }}
+          readinessProbe:
+            httpGet:
+              path: /
+              port: {{ .Values.service.tensorboardPort }}
+          volumeMounts:
+            - mountPath: /output/training_logs
+              name: training-logs-volume
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+      volumes:
+        - name: models
+          emptyDir: {}
+        - name: training-logs-volume
+          emptyDir: {}
+      {{- with .Values.nodeSelector }}
+      nodeSelector:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+    {{- with .Values.affinity }}
+      affinity:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
+    {{- with .Values.tolerations }}
+      tolerations:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}