| apiVersion: apps/v1 |
| kind: StatefulSet |
| metadata: |
| name: {{ template "influxdb.fullname" . }} |
| labels: |
| {{- include "influxdb.labels" . | nindent 4 }} |
| spec: |
| replicas: 1 |
| selector: |
| matchLabels: |
| {{- include "influxdb.selectorLabels" . | nindent 6 }} |
| serviceName: "{{ include "influxdb.fullname" . }}" |
| template: |
| metadata: |
| labels: |
| {{- include "influxdb.selectorLabels" . | nindent 8 }} |
| {{- if .Values.podLabels }} |
| {{ toYaml .Values.podLabels | indent 8 }} |
| {{- end }} |
| {{- if .Values.podAnnotations }} |
| annotations: |
| {{ toYaml .Values.podAnnotations | indent 8 }} |
| {{- end }} |
| spec: |
| volumes: |
| - name: data |
| {{- if .Values.persistence.enabled }} |
| {{- if not (empty .Values.persistence.name) }} |
| persistentVolumeClaim: |
| claimName: {{ .Values.persistence.name }} |
| {{- else }} |
| persistentVolumeClaim: |
| claimName: {{ template "influxdb.fullname" . }} |
| {{- end }} |
| {{- else }} |
| emptyDir: {} |
| {{- end }} |
| {{- if .Values.initScripts.enabled }} |
| - name: init |
| configMap: |
| name: {{ include "influxdb.fullname" . }}-init |
| defaultMode: 0744 |
| {{- end }} |
| {{- if .Values.volumes }} |
| {{- toYaml .Values.volumes | nindent 8 }} |
| {{- end }} |
| serviceAccountName: {{ include "influxdb.serviceAccountName" . }} |
| containers: |
| - name: {{ .Chart.Name }} |
| image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" |
| imagePullPolicy: {{ .Values.image.pullPolicy }} |
| ports: |
| - name: {{ .Values.service.portName }} |
| containerPort: 8086 |
| protocol: TCP |
| env: |
| # Automated setup will not run if an existing boltdb file is found at the configured path. |
| # This behavior allows for the InfluxDB container to reboot post-setup without encountering "DB is already set up" errors. |
| - name: DOCKER_INFLUXDB_INIT_MODE |
| value: setup |
| # The username to set for the system's initial super-user (Required). |
| - name: DOCKER_INFLUXDB_INIT_USERNAME |
| value: {{ .Values.adminUser.user }} |
| # The password to set for the system's inital super-user (Required). |
| - name: DOCKER_INFLUXDB_INIT_PASSWORD |
| valueFrom: |
| secretKeyRef: |
| {{- if .Values.adminUser.existingSecret }} |
| name: {{ .Values.adminUser.existingSecret -}} |
| {{ else }} |
| name: {{ template "influxdb.fullname" . }}-auth |
| {{- end }} |
| key: admin-password |
| # The name to set for the system's initial organization (Required). |
| - name: DOCKER_INFLUXDB_INIT_ORG |
| value: {{ .Values.adminUser.organization }} |
| # The name to set for the system's initial bucket (Required). |
| - name: DOCKER_INFLUXDB_INIT_BUCKET |
| value: {{ .Values.adminUser.bucket }} |
| # The duration the system's initial bucket should retain data. If not set, the initial bucket will retain data forever. |
| - name: DOCKER_INFLUXDB_INIT_RETENTION |
| value: {{ .Values.adminUser.retention_policy }} |
| # The authentication token to associate with the system's initial super-user. If not set, a token will be auto-generated by the system. |
| - name: DOCKER_INFLUXDB_INIT_ADMIN_TOKEN |
| valueFrom: |
| secretKeyRef: |
| {{- if .Values.adminUser.existingSecret }} |
| name: {{ .Values.adminUser.existingSecret -}} |
| {{ else }} |
| name: {{ template "influxdb.fullname" . }}-auth |
| {{- end }} |
| key: admin-token |
| # Path to the BoltDB database. |
| - name: INFLUXD_BOLT_PATH |
| value: {{ .Values.persistence.mountPath }}/influxd.bolt |
| # Path to persistent storage engine files where InfluxDB stores all Time-Structure Merge Tree (TSM) data on disk. |
| - name: INFLUXD_ENGINE_PATH |
| value: {{ .Values.persistence.mountPath }} |
| {{- with .Values.env }} |
| # Extra environment variables from .Values.env |
| {{- toYaml . | nindent 12 }} |
| {{- end }} |
| {{- if .Values.securityContext }} |
| securityContext: |
| {{- toYaml .Values.securityContext | nindent 12 }} |
| {{- end }} |
| livenessProbe: |
| httpGet: |
| path: {{ .Values.livenessProbe.path | default "/health" }} |
| port: http |
| scheme: {{ .Values.livenessProbe.scheme | default "HTTP" }} |
| initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds | default 0 }} |
| periodSeconds: {{ .Values.livenessProbe.periodSeconds | default 10 }} |
| timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds | default 1 }} |
| failureThreshold: {{ .Values.livenessProbe.failureThreshold | default 3 }} |
| readinessProbe: |
| httpGet: |
| path: {{ .Values.readinessProbe.path | default "/health" }} |
| port: http |
| scheme: {{ .Values.readinessProbe.scheme | default "HTTP" }} |
| initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds | default 0 }} |
| periodSeconds: {{ .Values.readinessProbe.periodSeconds | default 10 }} |
| timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds | default 1 }} |
| successThreshold: {{ .Values.readinessProbe.successThreshold | default 1 }} |
| failureThreshold: {{ .Values.readinessProbe.failureThreshold | default 3 }} |
| {{- if .Values.startupProbe.enabled }} |
| startupProbe: |
| httpGet: |
| path: {{ .Values.startupProbe.path | default "/health" }} |
| port: http |
| scheme: {{ .Values.startupProbe.scheme | default "HTTP" }} |
| initialDelaySeconds: {{ .Values.startupProbe.initialDelaySeconds | default 30 }} |
| periodSeconds: {{ .Values.startupProbe.periodSeconds | default 5 }} |
| timeoutSeconds: {{ .Values.startupProbe.timeoutSeconds | default 1 }} |
| failureThreshold: {{ .Values.startupProbe.failureThreshold | default 6 }} |
| {{- end }} |
| volumeMounts: |
| - name: data |
| mountPath: {{ .Values.persistence.mountPath }} |
| subPath: {{ .Values.persistence.subPath }} |
| {{- if .Values.initScripts.enabled }} |
| - name: init |
| mountPath: /docker-entrypoint-initdb.d |
| {{- end }} |
| {{- if .Values.mountPoints }} |
| {{- toYaml .Values.mountPoints | nindent 10 }} |
| {{- end }} |
| resources: |
| {{ .Values.resources | toYaml | nindent 12 | trim }} |
| |
| {{- if .Values.securityContext.runAsGroup }} |
| securityContext: |
| fsGroup: {{ .Values.securityContext.runAsGroup }} |
| {{- end }} |
| {{- with .Values.nodeSelector }} |
| nodeSelector: |
| {{ toYaml . | nindent 8 | trim }} |
| {{- end }} |
| |
| {{- with .Values.affinity }} |
| affinity: |
| {{ toYaml . | nindent 8 | trim }} |
| {{- end }} |
| |
| {{- with .Values.tolerations }} |
| tolerations: |
| {{ toYaml . | nindent 8 | trim }} |
| {{- end }} |