{{/* # 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 }}