chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,295 @@
|
||||
{{- if .Values.supervisor.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "trigger-v4.supervisorServiceAccountName" . }}
|
||||
labels:
|
||||
{{- $component := "supervisor" }}
|
||||
{{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
|
||||
{{- with .Values.supervisor.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
---
|
||||
{{- if .Values.supervisor.rbac.create }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ include "trigger-v4.supervisorRoleName" . }}
|
||||
namespace: {{ default .Release.Namespace .Values.supervisor.config.kubernetes.namespace }}
|
||||
labels:
|
||||
{{- $component := "supervisor" }}
|
||||
{{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["pods"]
|
||||
verbs: ["create", "delete", "deletecollection", "get", "list", "watch"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ include "trigger-v4.supervisorRoleName" . }}-binding
|
||||
namespace: {{ default .Release.Namespace .Values.supervisor.config.kubernetes.namespace }}
|
||||
labels:
|
||||
{{- $component := "supervisor" }}
|
||||
{{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ include "trigger-v4.supervisorServiceAccountName" . }}
|
||||
namespace: {{ default .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: {{ include "trigger-v4.supervisorRoleName" . }}
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "trigger-v4.fullname" . }}-supervisor
|
||||
labels:
|
||||
{{- $component := "supervisor" }}
|
||||
{{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxUnavailable: 0
|
||||
maxSurge: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 8 }}
|
||||
{{- with .Values.supervisor.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
serviceAccountName: {{ include "trigger-v4.supervisorServiceAccountName" . }}
|
||||
securityContext:
|
||||
fsGroup: 1000
|
||||
{{- with .Values.supervisor.podSecurityContext }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if not .Values.webapp.bootstrap.enabled }}
|
||||
initContainers:
|
||||
- name: init-shared
|
||||
image: busybox:1.35
|
||||
command: ['sh', '-c', 'mkdir -p /home/node/shared']
|
||||
securityContext:
|
||||
runAsUser: 1000
|
||||
volumeMounts:
|
||||
- name: shared
|
||||
mountPath: /home/node/shared
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: supervisor
|
||||
image: {{ include "trigger-v4.supervisor.image" . }}
|
||||
imagePullPolicy: {{ .Values.supervisor.image.pullPolicy }}
|
||||
ports:
|
||||
- name: workload
|
||||
containerPort: {{ .Values.supervisor.service.ports.workload }}
|
||||
protocol: TCP
|
||||
- name: metrics
|
||||
containerPort: {{ .Values.supervisor.service.ports.metrics }}
|
||||
protocol: TCP
|
||||
{{- if .Values.supervisor.livenessProbe.enabled }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: workload
|
||||
initialDelaySeconds: {{ .Values.supervisor.livenessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.supervisor.livenessProbe.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.supervisor.livenessProbe.timeoutSeconds }}
|
||||
failureThreshold: {{ .Values.supervisor.livenessProbe.failureThreshold }}
|
||||
successThreshold: {{ .Values.supervisor.livenessProbe.successThreshold }}
|
||||
{{- end }}
|
||||
{{- if .Values.supervisor.readinessProbe.enabled }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: workload
|
||||
initialDelaySeconds: {{ .Values.supervisor.readinessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.supervisor.readinessProbe.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.supervisor.readinessProbe.timeoutSeconds }}
|
||||
failureThreshold: {{ .Values.supervisor.readinessProbe.failureThreshold }}
|
||||
successThreshold: {{ .Values.supervisor.readinessProbe.successThreshold }}
|
||||
{{- end }}
|
||||
{{- if .Values.supervisor.startupProbe.enabled }}
|
||||
startupProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: workload
|
||||
initialDelaySeconds: {{ .Values.supervisor.startupProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.supervisor.startupProbe.periodSeconds }}
|
||||
timeoutSeconds: {{ .Values.supervisor.startupProbe.timeoutSeconds }}
|
||||
failureThreshold: {{ .Values.supervisor.startupProbe.failureThreshold }}
|
||||
successThreshold: {{ .Values.supervisor.startupProbe.successThreshold }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.supervisor.resources | nindent 12 }}
|
||||
env:
|
||||
# Core configuration
|
||||
- name: TRIGGER_API_URL
|
||||
value: "http://{{ include "trigger-v4.fullname" . }}-webapp:{{ .Values.webapp.service.port }}"
|
||||
- name: TRIGGER_WORKER_TOKEN
|
||||
{{- if .Values.webapp.bootstrap.enabled }}
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ include "trigger-v4.fullname" . }}-worker-token
|
||||
key: token
|
||||
{{- else if .Values.supervisor.bootstrap.workerToken.secret.name }}
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.supervisor.bootstrap.workerToken.secret.name }}
|
||||
key: {{ .Values.supervisor.bootstrap.workerToken.secret.key }}
|
||||
{{- else }}
|
||||
value: {{ .Values.supervisor.bootstrap.workerToken.value | quote }}
|
||||
{{- end }}
|
||||
{{- if or .Values.secrets.enabled .Values.secrets.existingSecret }}
|
||||
- name: MANAGED_WORKER_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ include "trigger-v4.secretsName" . }}
|
||||
key: MANAGED_WORKER_SECRET
|
||||
{{- end }}
|
||||
# Worker instance configuration
|
||||
- name: TRIGGER_WORKER_INSTANCE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
# Kubernetes configuration
|
||||
- name: KUBERNETES_NAMESPACE
|
||||
value: {{ default .Release.Namespace .Values.supervisor.config.kubernetes.namespace | quote }}
|
||||
- name: KUBERNETES_FORCE_ENABLED
|
||||
value: {{ .Values.supervisor.config.kubernetes.forceEnabled | quote }}
|
||||
- name: KUBERNETES_WORKER_NODETYPE_LABEL
|
||||
value: {{ .Values.supervisor.config.kubernetes.workerNodetypeLabel | quote }}
|
||||
{{- $registryAuthEnabled := false }}
|
||||
{{- if .Values.registry.deploy }}
|
||||
{{- $registryAuthEnabled = .Values.registry.auth.enabled }}
|
||||
{{- else }}
|
||||
{{- $registryAuthEnabled = .Values.registry.external.auth.enabled }}
|
||||
{{- end }}
|
||||
{{- if $registryAuthEnabled }}
|
||||
- name: KUBERNETES_IMAGE_PULL_SECRETS
|
||||
value: "{{ include "trigger-v4.fullname" . }}-registry-secret"
|
||||
{{- end }}
|
||||
- name: KUBERNETES_EPHEMERAL_STORAGE_SIZE_LIMIT
|
||||
value: {{ default "10Gi" .Values.supervisor.config.kubernetes.ephemeralStorageSizeLimit | quote }}
|
||||
- name: KUBERNETES_EPHEMERAL_STORAGE_SIZE_REQUEST
|
||||
value: {{ default "2Gi" .Values.supervisor.config.kubernetes.ephemeralStorageSizeRequest | quote }}
|
||||
# Pod cleaner configuration
|
||||
- name: POD_CLEANER_ENABLED
|
||||
value: {{ .Values.supervisor.config.podCleaner.enabled | quote }}
|
||||
- name: POD_CLEANER_BATCH_SIZE
|
||||
value: {{ .Values.supervisor.config.podCleaner.batchSize | quote }}
|
||||
- name: POD_CLEANER_INTERVAL_MS
|
||||
value: {{ .Values.supervisor.config.podCleaner.intervalMs | quote }}
|
||||
# Failed pod handler
|
||||
- name: FAILED_POD_HANDLER_ENABLED
|
||||
value: {{ .Values.supervisor.config.failedPodHandler.enabled | quote }}
|
||||
- name: FAILED_POD_HANDLER_RECONNECT_INTERVAL_MS
|
||||
value: {{ .Values.supervisor.config.failedPodHandler.reconnectIntervalMs | quote }}
|
||||
# Workload API configuration
|
||||
- name: TRIGGER_WORKLOAD_API_PROTOCOL
|
||||
value: {{ .Values.supervisor.config.workloadApi.protocol | quote }}
|
||||
- name: TRIGGER_WORKLOAD_API_DOMAIN
|
||||
value: "{{ include "trigger-v4.fullname" . }}-supervisor.{{ .Release.Namespace }}.svc.cluster.local"
|
||||
- name: TRIGGER_WORKLOAD_API_PORT_EXTERNAL
|
||||
value: {{ .Values.supervisor.config.workloadApi.portExternal | quote }}
|
||||
- name: TRIGGER_WORKLOAD_API_PORT_INTERNAL
|
||||
value: {{ .Values.supervisor.config.workloadApi.portInternal | quote }}
|
||||
- name: TRIGGER_WORKLOAD_API_HOST_INTERNAL
|
||||
value: {{ .Values.supervisor.config.workloadApi.hostInternal | quote }}
|
||||
- name: TRIGGER_WORKLOAD_API_ENABLED
|
||||
value: {{ .Values.supervisor.config.workloadApi.enabled | quote }}
|
||||
# Dequeue configuration
|
||||
- name: TRIGGER_DEQUEUE_ENABLED
|
||||
value: {{ .Values.supervisor.config.dequeue.enabled | quote }}
|
||||
- name: TRIGGER_DEQUEUE_INTERVAL_MS
|
||||
value: {{ .Values.supervisor.config.dequeue.intervalMs | quote }}
|
||||
- name: TRIGGER_DEQUEUE_MAX_RUN_COUNT
|
||||
value: {{ .Values.supervisor.config.dequeue.maxRunCount | quote }}
|
||||
- name: TRIGGER_DEQUEUE_IDLE_INTERVAL_MS
|
||||
value: {{ .Values.supervisor.config.dequeue.idleIntervalMs | quote }}
|
||||
# Heartbeat configuration
|
||||
- name: RUNNER_HEARTBEAT_INTERVAL_SECONDS
|
||||
value: {{ .Values.supervisor.config.runner.heartbeatIntervalSeconds | quote }}
|
||||
- name: RUNNER_SNAPSHOT_POLL_INTERVAL_SECONDS
|
||||
value: {{ .Values.supervisor.config.runner.snapshotPollIntervalSeconds | quote }}
|
||||
# Metrics configuration
|
||||
- name: METRICS_ENABLED
|
||||
value: {{ .Values.supervisor.config.metrics.enabled | quote }}
|
||||
- name: METRICS_COLLECT_DEFAULTS
|
||||
value: {{ .Values.supervisor.config.metrics.collectDefaults | quote }}
|
||||
- name: METRICS_HOST
|
||||
value: {{ .Values.supervisor.config.metrics.host | quote }}
|
||||
- name: METRICS_PORT
|
||||
value: {{ .Values.supervisor.config.metrics.port | quote }}
|
||||
# Debug
|
||||
- name: DEBUG
|
||||
value: {{ .Values.supervisor.config.debug | quote }}
|
||||
# OTEL
|
||||
- name: OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
value: "http://{{ include "trigger-v4.fullname" . }}-webapp.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.webapp.service.port }}/otel"
|
||||
{{- with .Values.supervisor.extraEnvVars }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if not .Values.webapp.bootstrap.enabled }}
|
||||
volumeMounts:
|
||||
- name: shared
|
||||
mountPath: /home/node/shared
|
||||
{{- end }}
|
||||
{{- with .Values.supervisor.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if not .Values.webapp.bootstrap.enabled }}
|
||||
volumes:
|
||||
- name: shared
|
||||
{{- if .Values.persistence.shared.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ include "trigger-v4.fullname" . }}-shared
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.supervisor.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.supervisor.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.supervisor.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "trigger-v4.fullname" . }}-supervisor
|
||||
labels:
|
||||
{{- $component := "supervisor" }}
|
||||
{{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
|
||||
spec:
|
||||
type: {{ .Values.supervisor.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.supervisor.service.ports.workload }}
|
||||
targetPort: workload
|
||||
protocol: TCP
|
||||
name: workload
|
||||
- port: {{ .Values.supervisor.service.ports.metrics }}
|
||||
targetPort: metrics
|
||||
protocol: TCP
|
||||
name: metrics
|
||||
selector:
|
||||
{{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
|
||||
Reference in New Issue
Block a user