{{- include "nplus.init" $ -}} apiVersion: apps/v1 kind: StatefulSet metadata: name: {{ .component.fullName }} {{- if .this.utils.includeNamespace }} namespace: {{ .Release.Namespace }} {{- end }} labels: {{- include "nplus.instanceLabels" . | nindent 4 }} annotations: {{- include "nplus.argoWave" . | nindent 4 }} {{- include "nplus.annotations" . | nindent 4 }} {{- include "nplus.securityAnnotations" . | nindent 4 }} spec: serviceName: {{ .component.fullName }} selector: matchLabels: {{- include "nplus.selectorLabels" . | nindent 6 }} replicas: {{ .Values.replicaCount }} podManagementPolicy: OrderedReady updateStrategy: type: {{ .Values.updateStrategy | default "OnDelete" }} minReadySeconds: 5 template: metadata: labels: {{- include "nplus.templateLabels" . | nindent 8 }} annotations: {{- include "nplus.templateAnnotations" . | nindent 8 }} {{- include "nplus.securityAnnotations" . | nindent 8 }} spec: {{- include "nplus.imagePullSecrets" . | nindent 6 }} {{- include "nplus.podSecurityContext" . | nindent 6 }} {{- include "nplus.securityIllumioReadinessGates" . | nindent 6 }} {{- include "nplus.terminationGracePeriodSeconds" . | nindent 6 }} initContainers: {{- include "nplus.waitFor" . | nindent 6 }} {{- include "nplus.copyConfig" . | nindent 6 }} containers: - name: pipeliner image: {{ include "nplus.image" (dict "global" .Values.global "image" .Values.image) }} imagePullPolicy: {{ include "nplus.imagePullPolicy" .Values.image }} {{- include "nplus.containerSecurityContext" . | nindent 8 }} env: {{- include "nplus.environment" . | nindent 8 }} {{- if .this.utils.maintenance }} {{- include "nplus.idle" . | nindent 8 }} {{- else }} startupProbe: exec: command: - "java" - "-jar" - "/opt/ceyoniq/nscale-pipeliner/javalibs/PipelinerCheck.jar" - "localhost" - "4173" initialDelaySeconds: 10 failureThreshold: 12 periodSeconds: 10 readinessProbe: exec: command: - "java" - "-jar" - "/opt/ceyoniq/nscale-pipeliner/javalibs/PipelinerCheck.jar" - "localhost" - "4173" periodSeconds: 30 timeoutSeconds: 3 # -- Ceyoniq does currently not define an *official* livenessProbe, so we use # one that quickly checks the main socket on Layer 4. livenessProbe: tcpSocket: port: tcp # initialDelaySeconds: 20 periodSeconds: 10 {{- end }} ports: - containerPort: {{ required "Pipeliner tcp port must be set" ((.this.meta).ports).tcp }} name: tcp {{- include "nplus.resources" . | nindent 8 }} volumeMounts: {{- include "nplus.defaultMounts" . | nindent 8 }} {{- if .Values.dav }} - name: {{ .Release.Namespace }}-nplus-webdav-container image: {{ include "nplus.image" (dict "global" .Values.global "image" .Values.dav.image) }} imagePullPolicy: {{ include "nplus.imagePullPolicy" .Values.dav.image }} {{- include "nplus.containerSecurityContext" . | nindent 8 }} {{- include "nplus.sidecarResources" . | nindent 8 }} command: [ "/nplus/davserver" ] volumeMounts: - name: data mountPath: "/webdav" subPath: {{ .component.storagePath | quote }} env: # -- DAV Connection Credentials {{- include "nplus.envCredentials" (list "DAV_USER" ($.this.dav).account "DAV_PASSWORD" ($.this.dav).password ($.this.dav).secret ) | nindent 10 }} - name: DAV_ROOT value: "/{{ .component.name }}" ports: {{- if not (.this.security).zeroTrust }} - containerPort: 8080 name: http {{- end }} readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 15 periodSeconds: 10 {{- end }} volumes: {{- include "nplus.defaultVolumes" . | nindent 6 }}