zenml-nightly 0.73.0.dev20250204__py3-none-any.whl → 0.73.0.dev20250206__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. zenml/VERSION +1 -1
  2. zenml/cli/utils.py +42 -53
  3. zenml/client.py +6 -2
  4. zenml/constants.py +1 -0
  5. zenml/integrations/gcp/image_builders/gcp_image_builder.py +5 -8
  6. zenml/models/__init__.py +4 -2
  7. zenml/models/v2/base/filter.py +34 -11
  8. zenml/models/v2/base/scoped.py +4 -4
  9. zenml/models/v2/core/artifact.py +3 -3
  10. zenml/models/v2/core/artifact_version.py +22 -5
  11. zenml/models/v2/core/model.py +13 -3
  12. zenml/models/v2/core/model_version.py +13 -3
  13. zenml/models/v2/core/pipeline.py +11 -4
  14. zenml/models/v2/core/pipeline_run.py +20 -7
  15. zenml/models/v2/core/run_template.py +13 -3
  16. zenml/models/v2/core/step_run.py +9 -2
  17. zenml/pipelines/pipeline_definition.py +28 -12
  18. zenml/stack/stack.py +5 -0
  19. zenml/zen_stores/schemas/artifact_schemas.py +31 -4
  20. zenml/zen_stores/schemas/model_schemas.py +31 -6
  21. zenml/zen_stores/schemas/pipeline_run_schemas.py +1 -1
  22. zenml/zen_stores/schemas/pipeline_schemas.py +35 -8
  23. zenml/zen_stores/schemas/run_template_schemas.py +42 -14
  24. zenml/zen_stores/sql_zen_store.py +22 -56
  25. {zenml_nightly-0.73.0.dev20250204.dist-info → zenml_nightly-0.73.0.dev20250206.dist-info}/METADATA +1 -1
  26. {zenml_nightly-0.73.0.dev20250204.dist-info → zenml_nightly-0.73.0.dev20250206.dist-info}/RECORD +29 -46
  27. zenml/zen_server/deploy/helm/.helmignore +0 -23
  28. zenml/zen_server/deploy/helm/Chart.yaml +0 -12
  29. zenml/zen_server/deploy/helm/README.md +0 -50
  30. zenml/zen_server/deploy/helm/templates/NOTES.txt +0 -52
  31. zenml/zen_server/deploy/helm/templates/_environment.tpl +0 -511
  32. zenml/zen_server/deploy/helm/templates/_helpers.tpl +0 -70
  33. zenml/zen_server/deploy/helm/templates/cert-secret.yaml +0 -45
  34. zenml/zen_server/deploy/helm/templates/hpa.yaml +0 -32
  35. zenml/zen_server/deploy/helm/templates/server-db-job.yaml +0 -121
  36. zenml/zen_server/deploy/helm/templates/server-db-pvc.yaml +0 -25
  37. zenml/zen_server/deploy/helm/templates/server-deployment.yaml +0 -132
  38. zenml/zen_server/deploy/helm/templates/server-ingress.yaml +0 -59
  39. zenml/zen_server/deploy/helm/templates/server-secret.yaml +0 -60
  40. zenml/zen_server/deploy/helm/templates/server-service.yaml +0 -15
  41. zenml/zen_server/deploy/helm/templates/serviceaccount.yaml +0 -27
  42. zenml/zen_server/deploy/helm/templates/tests/test-connection.yaml +0 -15
  43. zenml/zen_server/deploy/helm/values.yaml +0 -1008
  44. {zenml_nightly-0.73.0.dev20250204.dist-info → zenml_nightly-0.73.0.dev20250206.dist-info}/LICENSE +0 -0
  45. {zenml_nightly-0.73.0.dev20250204.dist-info → zenml_nightly-0.73.0.dev20250206.dist-info}/WHEEL +0 -0
  46. {zenml_nightly-0.73.0.dev20250204.dist-info → zenml_nightly-0.73.0.dev20250206.dist-info}/entry_points.txt +0 -0
@@ -1,121 +0,0 @@
1
- {{- if .Values.zenml.database.url }}
2
- apiVersion: batch/v1
3
- kind: Job
4
- metadata:
5
- name: {{ include "zenml.fullname" . }}-db-migration
6
- labels:
7
- {{- include "zenml.labels" . | nindent 4 }}
8
- annotations:
9
- "helm.sh/hook": pre-install,pre-upgrade
10
- "helm.sh/hook-weight": "-1"
11
- "helm.sh/hook-delete-policy": before-hook-creation{{ if not .Values.zenml.debug }},hook-succeeded{{ end }}
12
- spec:
13
- backoffLimit: 0
14
- template:
15
- metadata:
16
- annotations:
17
- checksum/secret: {{ include (print $.Template.BasePath "/server-secret.yaml") . | sha256sum }}
18
- {{- with .Values.podAnnotations }}
19
- {{- toYaml . | nindent 8 }}
20
- {{- end }}
21
- labels:
22
- {{- include "zenml.selectorLabels" . | nindent 8 }}
23
- spec:
24
- {{- with .Values.imagePullSecrets }}
25
- imagePullSecrets:
26
- {{- toYaml . | nindent 8 }}
27
- {{- end }}
28
- {{- if .Values.serviceAccount.create }}
29
- serviceAccountName: {{ include "zenml.serviceAccountName" . }}-db-migration
30
- {{- else }}
31
- serviceAccountName: {{ include "zenml.serviceAccountName" . }}
32
- {{- end }}
33
- securityContext:
34
- {{- toYaml .Values.podSecurityContext | nindent 8 }}
35
- volumes:
36
- - name: zenml-config
37
- emptyDir: {}
38
- {{- if eq .Values.zenml.database.backupStrategy "dump-file" }}
39
- # define a volume that will hold a backup of the database
40
- - name: db-backup
41
- # if a storage PVC is configured, then use it
42
- {{- if .Values.zenml.database.backupPVStorageSize }}
43
- persistentVolumeClaim:
44
- claimName: {{ include "zenml.fullname" . }}-db-backup
45
- {{- else }}
46
- # otherwise, use an emptyDir
47
- emptyDir: {}
48
- {{- end }}
49
- {{- end }}
50
- restartPolicy: Never
51
- containers:
52
- - name: {{ .Chart.Name }}-db-migration
53
- securityContext:
54
- {{- toYaml .Values.securityContext | nindent 12 }}
55
- image: "{{ .Values.zenml.image.repository }}:{{ .Values.zenml.image.tag | default .Chart.Version }}"
56
- imagePullPolicy: {{ .Values.zenml.image.pullPolicy }}
57
- args: ["migrate-database"]
58
- command: ['zenml']
59
- volumeMounts:
60
- - name: zenml-config
61
- mountPath: /zenml/.zenconfig
62
- {{- if eq .Values.zenml.database.backupStrategy "dump-file" }}
63
- - name: db-backup
64
- mountPath: /backups
65
- {{- end }}
66
- env:
67
- - name: ZENML_SERVER
68
- value: "True"
69
- {{- if .Values.zenml.debug }}
70
- - name: ZENML_LOGGING_VERBOSITY
71
- value: "DEBUG"
72
- {{- end }}
73
- {{- if .Values.zenml.analyticsOptIn }}
74
- - name: ZENML_ANALYTICS_OPT_IN
75
- value: "True"
76
- {{- else if not .Values.zenml.analyticsOptIn }}
77
- - name: ZENML_ANALYTICS_OPT_IN
78
- value: "False"
79
- {{- end }}
80
- - name: ZENML_DEFAULT_PROJECT_NAME
81
- value: {{ .Values.zenml.defaultProject | quote }}
82
- {{- range $k, $v := include "zenml.storeEnvVariables" . | fromYaml }}
83
- - name: {{ $k }}
84
- value: {{ $v | quote }}
85
- {{- end }}
86
- {{- range $k, $v := include "zenml.serverEnvVariables" . | fromYaml }}
87
- - name: {{ $k }}
88
- value: {{ $v | quote }}
89
- {{- end }}
90
- {{- range $k, $v := include "zenml.secretsStoreEnvVariables" . | fromYaml }}
91
- - name: {{ $k }}
92
- value: {{ $v | quote }}
93
- {{- end }}
94
- {{- range $k, $v := include "zenml.backupSecretsStoreEnvVariables" . | fromYaml }}
95
- - name: {{ $k }}
96
- value: {{ $v | quote }}
97
- {{- end }}
98
- {{- if .Values.zenml.environment }}
99
- {{- range $key, $value := .Values.zenml.environment }}
100
- - name: {{ $key }}
101
- value: {{ $value | quote }}
102
- {{- end }}
103
- {{- end }}
104
- envFrom:
105
- - secretRef:
106
- name: {{ include "zenml.fullname" . }}-db-migration
107
- resources:
108
- {{- if .Values.resourcesMigrationPod }}
109
- {{- toYaml .Values.resourcesMigrationPod | nindent 12 }}
110
- {{- else }}
111
- {{- toYaml .Values.resources | nindent 12 }}
112
- {{- end }}
113
- {{- with .Values.tolerations }}
114
- tolerations:
115
- {{- toYaml . | nindent 8 }}
116
- {{- end }}
117
- {{- with .Values.nodeSelector }}
118
- nodeSelector:
119
- {{- toYaml . | nindent 8 }}
120
- {{- end }}
121
- {{- end }}
@@ -1,25 +0,0 @@
1
- {{- if and (eq .Values.zenml.database.backupStrategy "dump-file") .Values.zenml.database.backupPVStorageSize }}
2
- {{- $pvc_name := printf "%s-db-backup" (include "zenml.fullname" .) -}}
3
- {{- $pvc := (lookup "v1" "PersistentVolumeClaim" .Release.Namespace $pvc_name) }}
4
- {{- if not $pvc }}
5
- apiVersion: v1
6
- kind: PersistentVolumeClaim
7
- metadata:
8
- name: {{ $pvc_name }}
9
- labels:
10
- {{- include "zenml.labels" . | nindent 4 }}
11
- annotations:
12
- "helm.sh/hook": "pre-install,pre-upgrade"
13
- "helm.sh/hook-weight": "-1"
14
- "helm.sh/hook-delete-policy": before-hook-creation
15
- spec:
16
- accessModes:
17
- - ReadWriteOnce
18
- resources:
19
- requests:
20
- storage: {{ .Values.zenml.database.backupPVStorageSize }}
21
- {{- with .Values.zenml.database.backupPVStorageClass }}
22
- storageClassName: {{ . }}
23
- {{- end }}
24
- {{- end }}
25
- {{- end }}
@@ -1,132 +0,0 @@
1
- apiVersion: apps/v1
2
- kind: Deployment
3
- metadata:
4
- name: {{ include "zenml.fullname" . }}
5
- labels:
6
- {{- include "zenml.labels" . | nindent 4 }}
7
- spec:
8
- {{- if .Values.zenml.database.url }}
9
- {{- if not .Values.autoscaling.enabled }}
10
- replicas: {{ .Values.zenml.replicaCount }}
11
- {{- end }}
12
- {{- else }}
13
- replicas: 1
14
- {{- end }}
15
- selector:
16
- matchLabels:
17
- {{- include "zenml.selectorLabels" . | nindent 6 }}
18
- template:
19
- metadata:
20
- annotations:
21
- checksum/secret: {{ include (print $.Template.BasePath "/server-secret.yaml") . | sha256sum }}
22
- {{- with .Values.podAnnotations }}
23
- {{- toYaml . | nindent 8 }}
24
- {{- end }}
25
- labels:
26
- {{- include "zenml.selectorLabels" . | nindent 8 }}
27
- spec:
28
- {{- with .Values.imagePullSecrets }}
29
- imagePullSecrets:
30
- {{- toYaml . | nindent 8 }}
31
- {{- end }}
32
- serviceAccountName: {{ include "zenml.serviceAccountName" . }}
33
- securityContext:
34
- {{- toYaml .Values.podSecurityContext | nindent 8 }}
35
- volumes:
36
- - name: zenml-config
37
- emptyDir: {}
38
- containers:
39
- - name: {{ .Chart.Name }}
40
- securityContext:
41
- {{- toYaml .Values.securityContext | nindent 12 }}
42
- image: "{{ .Values.zenml.image.repository }}:{{ .Values.zenml.image.tag | default .Chart.Version }}"
43
- imagePullPolicy: {{ .Values.zenml.image.pullPolicy }}
44
- volumeMounts:
45
- - name: zenml-config
46
- mountPath: /zenml/.zenconfig
47
- env:
48
- {{- if .Values.zenml.debug }}
49
- - name: ZENML_LOGGING_VERBOSITY
50
- value: "DEBUG"
51
- {{- end }}
52
- {{- if .Values.zenml.analyticsOptIn }}
53
- - name: ZENML_ANALYTICS_OPT_IN
54
- value: "True"
55
- {{- else if not .Values.zenml.analyticsOptIn }}
56
- - name: ZENML_ANALYTICS_OPT_IN
57
- value: "False"
58
- {{- end }}
59
- - name: ZENML_DEFAULT_PROJECT_NAME
60
- value: {{ .Values.zenml.defaultProject | quote }}
61
- {{- if .Values.zenml.enableImplicitAuthMethods }}
62
- - name: ZENML_ENABLE_IMPLICIT_AUTH_METHODS
63
- value: "True"
64
- {{- end }}
65
- {{- if .Values.zenml.database.url }}
66
- - name: DISABLE_DATABASE_MIGRATION
67
- value: "True"
68
- {{- end }}
69
-
70
- {{- range $k, $v := include "zenml.storeEnvVariables" . | fromYaml }}
71
- - name: {{ $k }}
72
- value: {{ $v | quote }}
73
- {{- end }}
74
- {{- range $k, $v := include "zenml.serverEnvVariables" . | fromYaml }}
75
- - name: {{ $k }}
76
- value: {{ $v | quote }}
77
- {{- end }}
78
- {{- range $k, $v := include "zenml.secretsStoreEnvVariables" . | fromYaml }}
79
- - name: {{ $k }}
80
- value: {{ $v | quote }}
81
- {{- end }}
82
- {{- range $k, $v := include "zenml.backupSecretsStoreEnvVariables" . | fromYaml }}
83
- - name: {{ $k }}
84
- value: {{ $v | quote }}
85
- {{- end }}
86
- {{- if .Values.zenml.environment }}
87
- {{- range $key, $value := .Values.zenml.environment }}
88
- - name: {{ $key }}
89
- value: {{ $value | quote }}
90
- {{- end }}
91
- {{- end }}
92
- envFrom:
93
- - secretRef:
94
- name: {{ include "zenml.fullname" . }}
95
- ports:
96
- - name: http
97
- containerPort: 8080
98
- protocol: TCP
99
- livenessProbe:
100
- httpGet:
101
- path: /health
102
- port: http
103
- readinessProbe:
104
- httpGet:
105
- path: /health
106
- port: http
107
- lifecycle:
108
- preStop:
109
- exec:
110
- # Give the process 15 more seconds before the SIGTERM signal is
111
- # sent. This allows the endpoint removal to reach the ingress
112
- # controller in time and for traffic to be routed away from the
113
- # pod before it is shut down. This eliminates the number of 502
114
- # errors returned to the user.
115
- #
116
- # See https://learnk8s.io/graceful-shutdown for more information.
117
- #
118
- command: ["sleep", "15"]
119
- resources:
120
- {{- toYaml .Values.resources | nindent 12 }}
121
- {{- with .Values.nodeSelector }}
122
- nodeSelector:
123
- {{- toYaml . | nindent 8 }}
124
- {{- end }}
125
- {{- with .Values.affinity }}
126
- affinity:
127
- {{- toYaml . | nindent 8 }}
128
- {{- end }}
129
- {{- with .Values.tolerations }}
130
- tolerations:
131
- {{- toYaml . | nindent 8 }}
132
- {{- end }}
@@ -1,59 +0,0 @@
1
- {{- if .Values.zenml.ingress.enabled -}}
2
- {{- $fullName := include "zenml.fullname" . -}}
3
- {{- $svcPort := .Values.zenml.service.port -}}
4
- {{- if and .Values.zenml.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
5
- {{- if not (hasKey .Values.zenml.ingress.annotations "kubernetes.io/ingress.class") }}
6
- {{- $_ := set .Values.zenml.ingress.annotations "kubernetes.io/ingress.class" .Values.zenml.ingress.className}}
7
- {{- end }}
8
- {{- end }}
9
- {{- if and $.Values.zenml.ingress.tls.enabled (eq .Values.zenml.ingress.className "nginx") }}
10
- {{- $_ := set .Values.zenml.ingress.annotations "nginx.ingress.kubernetes.io/ssl-redirect" "true"}}
11
- {{- end }}
12
-
13
- {{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
14
- apiVersion: networking.k8s.io/v1
15
- {{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
16
- apiVersion: networking.k8s.io/v1beta1
17
- {{- else -}}
18
- apiVersion: extensions/v1beta1
19
- {{- end }}
20
- kind: Ingress
21
- metadata:
22
- name: {{ $fullName }}
23
- labels:
24
- {{- include "zenml.labels" . | nindent 4 }}
25
- {{- with .Values.zenml.ingress.annotations }}
26
- annotations:
27
- {{- toYaml . | nindent 4 }}
28
- {{- end }}
29
- spec:
30
- {{- if and .Values.zenml.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
31
- ingressClassName: {{ .Values.zenml.ingress.className }}
32
- {{- end }}
33
- {{- if .Values.zenml.ingress.tls.enabled }}
34
- tls:
35
- - hosts:
36
- - {{ .Values.zenml.ingress.host | quote }}
37
- secretName: {{ .Values.zenml.ingress.tls.secretName }}
38
- {{- end }}
39
- rules:
40
- - http:
41
- paths:
42
- - path: {{ .Values.zenml.ingress.path }}
43
- {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }}
44
- pathType: Prefix
45
- {{- end }}
46
- backend:
47
- {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
48
- service:
49
- name: {{ $fullName }}
50
- port:
51
- number: {{ $svcPort }}
52
- {{- else }}
53
- serviceName: {{ $fullName }}
54
- servicePort: {{ $svcPort }}
55
- {{- end }}
56
- {{- if .Values.zenml.ingress.host }}
57
- host: {{ .Values.zenml.ingress.host | quote }}
58
- {{- end }}
59
- {{- end }}
@@ -1,60 +0,0 @@
1
- {{- define "secret.content" -}}
2
- {{- $prevServerSecret := (lookup "v1" "Secret" .Release.Namespace (include "zenml.fullname" .)) -}}
3
- data:
4
- {{- if .Values.zenml.jwtSecretKey }}
5
- ZENML_SERVER_JWT_SECRET_KEY: {{ .Values.zenml.jwtSecretKey | b64enc | quote }}
6
- {{- else if .Values.zenml.auth.jwtSecretKey }}
7
- ZENML_SERVER_JWT_SECRET_KEY: {{ .Values.zenml.auth.jwtSecretKey | b64enc | quote }}
8
- {{- else if or .Release.IsInstall (not $prevServerSecret) }}
9
- ZENML_SERVER_JWT_SECRET_KEY: {{ randAlphaNum 32 | b64enc | quote }}
10
- {{- else }}
11
- ZENML_SERVER_JWT_SECRET_KEY: {{ $prevServerSecret.data.ZENML_SERVER_JWT_SECRET_KEY | default (randAlphaNum 32 | b64enc | quote) }}
12
- {{- end }}
13
-
14
- {{- if .Values.zenml.pro.enabled }}
15
- {{- if .Values.zenml.pro.enrollmentKey }}
16
- ZENML_SERVER_PRO_OAUTH2_CLIENT_SECRET: {{ .Values.zenml.pro.enrollmentKey | b64enc | quote }}
17
- {{- else if or .Release.IsInstall (not $prevServerSecret) }}
18
- ZENML_SERVER_PRO_OAUTH2_CLIENT_SECRET: {{ randAlphaNum 64 | b64enc | quote }}
19
- {{- else }}
20
- ZENML_SERVER_PRO_OAUTH2_CLIENT_SECRET: {{ $prevServerSecret.data.ZENML_SERVER_PRO_OAUTH2_CLIENT_SECRET | default (randAlphaNum 64 | b64enc | quote) }}
21
- {{- end }}
22
- {{- end }}
23
-
24
- {{- range $k, $v := include "zenml.storeSecretEnvVariables" . | fromYaml}}
25
- {{ $k }}: {{ $v | b64enc | quote }}
26
- {{- end }}
27
- {{- range $k, $v := include "zenml.secretsStoreSecretEnvVariables" . | fromYaml}}
28
- {{ $k }}: {{ $v | b64enc | quote }}
29
- {{- end }}
30
- {{- range $k, $v := include "zenml.backupSecretsStoreSecretEnvVariables" . | fromYaml }}
31
- {{ $k }}: {{ $v | b64enc | quote }}
32
- {{- end }}
33
- {{- if .Values.zenml.secretEnvironment }}
34
- {{- range $key, $value := .Values.zenml.secretEnvironment }}
35
- {{ $key }}: {{ $value | b64enc | quote }}
36
- {{- end }}
37
- {{- end }}
38
- {{- end -}}
39
- ---
40
- apiVersion: v1
41
- kind: Secret
42
- type: Opaque
43
- metadata:
44
- name: {{ include "zenml.fullname" . }}
45
- labels:
46
- {{- include "zenml.labels" . | nindent 4 }}
47
- {{ include "secret.content" . }}
48
- ---
49
- apiVersion: v1
50
- kind: Secret
51
- type: Opaque
52
- metadata:
53
- name: {{ include "zenml.fullname" . }}-db-migration
54
- labels:
55
- {{- include "zenml.labels" . | nindent 4 }}
56
- annotations:
57
- "helm.sh/hook": "pre-install,pre-upgrade"
58
- "helm.sh/hook-weight": "-3"
59
- "helm.sh/hook-delete-policy": before-hook-creation{{ if not .Values.zenml.debug }},hook-succeeded{{ end }}
60
- {{ include "secret.content" . }}
@@ -1,15 +0,0 @@
1
- apiVersion: v1
2
- kind: Service
3
- metadata:
4
- name: {{ include "zenml.fullname" . }}
5
- labels:
6
- {{- include "zenml.labels" . | nindent 4 }}
7
- spec:
8
- type: {{ .Values.zenml.service.type }}
9
- ports:
10
- - port: {{ .Values.zenml.service.port }}
11
- targetPort: 8080
12
- protocol: TCP
13
- name: http
14
- selector:
15
- {{- include "zenml.selectorLabels" . | nindent 4 }}
@@ -1,27 +0,0 @@
1
- {{- if .Values.serviceAccount.create -}}
2
- ---
3
- apiVersion: v1
4
- kind: ServiceAccount
5
- metadata:
6
- name: {{ include "zenml.serviceAccountName" . }}
7
- labels:
8
- {{- include "zenml.labels" . | nindent 4 }}
9
- {{- with .Values.serviceAccount.annotations }}
10
- annotations:
11
- {{- toYaml . | nindent 4 }}
12
- {{- end }}
13
- ---
14
- apiVersion: v1
15
- kind: ServiceAccount
16
- metadata:
17
- name: {{ include "zenml.serviceAccountName" . }}-db-migration
18
- labels:
19
- {{- include "zenml.labels" . | nindent 4 }}
20
- annotations:
21
- "helm.sh/hook": "pre-install,pre-upgrade"
22
- "helm.sh/hook-weight": "-2" # Set your desired hook weight here
23
- "helm.sh/hook-delete-policy": before-hook-creation{{ if not .Values.zenml.debug }},hook-succeeded{{ end }}
24
- {{- with .Values.serviceAccount.annotations }}
25
- {{- toYaml . | nindent 4 }}
26
- {{- end }}
27
- {{- end }}
@@ -1,15 +0,0 @@
1
- apiVersion: v1
2
- kind: Pod
3
- metadata:
4
- name: "{{ include "zenml.fullname" . }}-test-connection"
5
- labels:
6
- {{- include "zenml.labels" . | nindent 4 }}
7
- annotations:
8
- "helm.sh/hook": test
9
- spec:
10
- containers:
11
- - name: wget
12
- image: busybox
13
- command: ['wget']
14
- args: ['{{ include "zenml.fullname" . }}:{{ .Values.zenml.service.port }}']
15
- restartPolicy: Never