blob: 8cdd1a9b35783480382dd28c2c63569c90510c17 [file] [log] [blame]
{{ $runCfg := .Values.runCfg | b64dec }}
---
{{- if .Values.sshPrivateKey }}
apiVersion: v1
kind: Secret
metadata:
name: {{ .Values.name }}-ssh-key
type: Opaque
data:
private: {{ .Values.sshPrivateKey }}
{{- end }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.name }}-run-cfg
data:
run: |
{{ indent 4 $runCfg }}
---
{{- if .Values.appPorts }}
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.name }}-app
namespace: {{ .Release.Namespace }}
spec:
type: ClusterIP
selector:
app: {{ .Values.name }}-app
ports:
{{- range .Values.appPorts }}
- name: {{ .name }}
port: {{ .containerPort }}
targetPort: {{ .name }}
protocol: {{ .protocol }}
{{- end }}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.name }}-api
namespace: {{ .Release.Namespace }}
spec:
type: ClusterIP
selector:
app: {{ .Values.name }}-app
ports:
- name: api
port: 80
targetPort: api
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.name }}-app
namespace: {{ .Release.Namespace }}
annotations:
dodo.cloud/config-checksum: {{ sha256sum .Values.runCfg }}
spec:
selector:
matchLabels:
app: {{ .Values.name }}-app
replicas: 1
template:
metadata:
labels:
app: {{ .Values.name }}-app
annotations:
dodo.cloud/config-checksum: {{ sha256sum .Values.runCfg }}
spec:
runtimeClassName: {{ .Values.runtimeClassName }}
volumes:
{{- if .Values.sshPrivateKey }}
- name: ssh-key
secret:
secretName: {{ .Values.name }}-ssh-key
{{- end }}
- name: run-cfg
configMap:
name: {{ .Values.name }}-run-cfg
{{- range .Values.volumes }}
- name: volume-{{ .name }}
persistentVolumeClaim:
claimName: {{ .name }}
{{- end }}
containers:
- name: app
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: api
containerPort: {{ .Values.apiPort }}
protocol: TCP
{{- if .Values.appPorts }}
{{ toYaml .Values.appPorts | nindent 8 }}
{{- end }}
env:
- name: SELF_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
command:
- app-runner
- --port={{ .Values.apiPort }}
- --app-id={{ .Values.appId }}
- --app-dir={{ .Values.appDir }}
- --repo-addr={{ .Values.repoAddr }}
- --branch={{ .Values.branch }}
- --root-dir={{ .Values.rootDir }}
{{- if .Values.sshPrivateKey }}
- --ssh-key=/pcloud/ssh-key/private
{{- end }}
- --run-cfg=/pcloud/config/run
- --manager-addr={{ .Values.managerAddr }}
volumeMounts:
{{- if .Values.sshPrivateKey }}
- name: ssh-key
readOnly: true
mountPath: /pcloud/ssh-key
{{- end }}
- name: run-cfg
readOnly: true
mountPath: /pcloud/config
{{- range .Values.volumes }}
- name: volume-{{ .name }}
mountPath: {{ .mountPath }}
{{- end }}
{{- if .Values.extraContainers }}
{{ toYaml .Values.extraContainers | nindent 6 }}
{{- end }}