Commit b1b0fd0c authored by Naseem's avatar Naseem Committed by GitHub

[stable/influxdb] labels, serviceaccount and remove clusterIP specificity (#20770)

* update-labels In accordance with https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/\#labels, this PR uses recommended labels and creates the required helpers to keep teplates more DRY. This PR also adds a serviceaccount, a first step in allowing GCP users to use workload identity for storage access. Signed-off-by: 's avatarNaseem <naseem@transit.app> * get rid of specifying clusterIP And add README note Signed-off-by: 's avatarNaseem <naseem@transit.app>
parent 69546be5
apiVersion: v1 apiVersion: v1
name: influxdb name: influxdb
version: 3.2.1 version: 4.0.0
appVersion: 1.7.6 appVersion: 1.7.6
description: Scalable datastore for metrics, events, and real-time analytics. description: Scalable datastore for metrics, events, and real-time analytics.
keywords: keywords:
......
...@@ -129,3 +129,9 @@ The Kubernetes API change to support 1.160 may not be backwards compatible and m ...@@ -129,3 +129,9 @@ The Kubernetes API change to support 1.160 may not be backwards compatible and m
### From < 3.0.0 to >= 3.0.0 ### From < 3.0.0 to >= 3.0.0
Since version 3.0.0 this chart uses a StatefulSet instead of a Deployment. As part of this update the existing persistent volume (and all data) is deleted and a new one is created. Make sure to backup and restore the data manually. Since version 3.0.0 this chart uses a StatefulSet instead of a Deployment. As part of this update the existing persistent volume (and all data) is deleted and a new one is created. Make sure to backup and restore the data manually.
### From < 4.0.0 to >= 4.0.0
Labels are changed to those in accordance with [kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/\#labels). This change also removes the ability to configure clusterIP value as to avoid `Error: UPGRADE FAILED: failed to replace object: Service "my-influxdb" is invalid: spec.clusterIP: Invalid value: "": field is immutable` type errors. For more info on this error and why it should be avoided at all costs, please see [this github issue](https://github.com/helm/helm/issues/6378#issuecomment-582764215).
Due to the significance of the changes. The recommended approach is to uninstall and reinstall the chart (the PVC *should* not be deleted during this process, but it is highly recommended to backup your data before).
...@@ -30,3 +30,34 @@ Create chart name and version as used by the chart label. ...@@ -30,3 +30,34 @@ Create chart name and version as used by the chart label.
{{- define "influxdb.chart" -}} {{- define "influxdb.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}} {{- end -}}
{{/*
Common labels
*/}}
{{- define "influxdb.labels" -}}
helm.sh/chart: {{ include "influxdb.chart" . }}
{{ include "influxdb.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "influxdb.selectorLabels" -}}
app.kubernetes.io/name: {{ include "influxdb.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "influxdb.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "influxdb.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}
...@@ -2,12 +2,10 @@ ...@@ -2,12 +2,10 @@
apiVersion: batch/v1beta1 apiVersion: batch/v1beta1
kind: CronJob kind: CronJob
metadata: metadata:
name: "{{ template "influxdb.fullname" . }}-backup" name: {{ include "influxdb.fullname" . }}-backup
labels: labels:
app: "{{ template "influxdb.fullname" . }}" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}" app.kubernetes.io/component: backup
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
annotations: annotations:
{{- toYaml .Values.backup.annotations | nindent 4 }} {{- toYaml .Values.backup.annotations | nindent 4 }}
spec: spec:
...@@ -30,6 +28,7 @@ spec: ...@@ -30,6 +28,7 @@ spec:
secret: secret:
secretName: {{ .Values.backup.gcs.serviceAccountSecret | quote }} secretName: {{ .Values.backup.gcs.serviceAccountSecret | quote }}
{{- end }} {{- end }}
serviceAccountName: {{ include "influxdb.serviceAccountName" . }}
initContainers: initContainers:
- name: influxdb-backup - name: influxdb-backup
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
......
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: "{{ template "influxdb.fullname" . }}" name: {{ include "influxdb.fullname" . }}
labels: labels:
app: "{{ template "influxdb.fullname" . }}" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
data: data:
influxdb.conf: |+ influxdb.conf: |+
reporting-disabled = {{ .Values.config.reporting_disabled | default false }} reporting-disabled = {{ .Values.config.reporting_disabled | default false }}
......
...@@ -2,12 +2,9 @@ ...@@ -2,12 +2,9 @@
apiVersion: networking.k8s.io/v1beta1 apiVersion: networking.k8s.io/v1beta1
kind: Ingress kind: Ingress
metadata: metadata:
name: "{{ template "influxdb.fullname" . }}" name: {{ include "influxdb.fullname" . }}
labels: labels:
app: "{{ template "influxdb.fullname" . }}" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
annotations: annotations:
{{ toYaml .Values.ingress.annotations | indent 4 }} {{ toYaml .Values.ingress.annotations | indent 4 }}
spec: spec:
......
...@@ -2,12 +2,9 @@ ...@@ -2,12 +2,9 @@
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: "{{ template "influxdb.fullname" . }}-init" name: {{ include "influxdb.fullname" . }}-init
labels: labels:
app: "{{ template "influxdb.fullname" . }}" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
data: data:
{{ toYaml .Values.initScripts.scripts | indent 2 }} {{ toYaml .Values.initScripts.scripts | indent 2 }}
{{- end -}} {{- end -}}
...@@ -2,12 +2,10 @@ ...@@ -2,12 +2,10 @@
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: "{{ template "influxdb.fullname" . }}-meta" name: {{ include "influxdb.fullname" . }}-meta
labels: labels:
app: "{{ template "influxdb.fullname" . }}-meta" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}" app.kubernetes.io/component: meta
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
data: data:
influxdb-meta.conf: |+ influxdb-meta.conf: |+
reporting-disabled = {{ .Values.config.reporting_disabled | default false }} reporting-disabled = {{ .Values.config.reporting_disabled | default false }}
......
...@@ -6,12 +6,10 @@ metadata: ...@@ -6,12 +6,10 @@ metadata:
annotations: annotations:
{{ toYaml .Values.service.annotations | indent 4 }} {{ toYaml .Values.service.annotations | indent 4 }}
{{- end }} {{- end }}
name: "{{ template "influxdb.fullname" . }}-meta" name: {{ include "influxdb.fullname" . }}-meta
labels: labels:
app: "{{ template "influxdb.fullname" . }}-meta" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}" app.kubernets.io/component: meta
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec: spec:
type: ClusterIP type: ClusterIP
clusterIP: None clusterIP: None
...@@ -22,5 +20,6 @@ spec: ...@@ -22,5 +20,6 @@ spec:
port: {{ .Values.config.meta.bind_address }} port: {{ .Values.config.meta.bind_address }}
targetPort: {{ .Values.config.meta.bind_address }} targetPort: {{ .Values.config.meta.bind_address }}
selector: selector:
app: "{{ template "influxdb.fullname" . }}-meta" {{- include "influxdb.selectorLabels" . | nindent 4 }}
app.kubernets.io/component: meta
{{- end }} {{- end }}
...@@ -2,23 +2,22 @@ ...@@ -2,23 +2,22 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: StatefulSet kind: StatefulSet
metadata: metadata:
name: "{{ template "influxdb.fullname" . }}-meta" name: {{ include "influxdb.fullname" . }}-meta
labels: labels:
app: "{{ template "influxdb.fullname" . }}-meta" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}" app.kubernetes.io/component: meta
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec: spec:
replicas: {{ .Values.enterprise.meta.clusterSize }} replicas: {{ .Values.enterprise.meta.clusterSize }}
selector: selector:
matchLabels: matchLabels:
app: "{{ template "influxdb.fullname" . }}-meta" {{- include "influxdb.selectorLabels" . | nindent 6 }}
serviceName: "{{ template "influxdb.fullname" . }}-meta" app.kubernetes.io/component: meta
serviceName: "{{ include "influxdb.fullname" . }}-meta"
template: template:
metadata: metadata:
labels: labels:
app: "{{ template "influxdb.fullname" . }}-meta" {{- include "influxdb.selectorLabels" . | nindent 8 }}
release: "{{ .Release.Name }}" app.kubernetes.io/component: meta
{{- if .Values.podAnnotations }} {{- if .Values.podAnnotations }}
annotations: annotations:
{{ toYaml .Values.podAnnotations | indent 8 }} {{ toYaml .Values.podAnnotations | indent 8 }}
...@@ -31,7 +30,7 @@ spec: ...@@ -31,7 +30,7 @@ spec:
{{- end}} {{- end}}
{{- end }} {{- end }}
containers: containers:
- name: "{{ template "influxdb.fullname" . }}-meta" - name: "{{ include "influxdb.fullname" . }}-meta"
image: "{{ .Values.image.repository }}:{{ .Values.enterprise.meta.image.tag }}" image: "{{ .Values.image.repository }}:{{ .Values.enterprise.meta.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy | quote }} imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
resources: resources:
...@@ -48,7 +47,7 @@ spec: ...@@ -48,7 +47,7 @@ spec:
{{ toYaml .Values.env | indent 10 }} {{ toYaml .Values.env | indent 10 }}
# Values.env's HOSTNAME isn't fundamentally different from $HOSTNAME, but this way we get a distinguished name for InfluxDB at runtime. # Values.env's HOSTNAME isn't fundamentally different from $HOSTNAME, but this way we get a distinguished name for InfluxDB at runtime.
- name: INFLUXDB_HOSTNAME - name: INFLUXDB_HOSTNAME
value: "$(_HOSTNAME).{{ template "influxdb.fullname" . }}-meta" value: "$(_HOSTNAME).{{ include "influxdb.fullname" . }}-meta"
{{- end }} {{- end }}
livenessProbe: livenessProbe:
httpGet: httpGet:
...@@ -71,7 +70,7 @@ spec: ...@@ -71,7 +70,7 @@ spec:
periodSeconds: {{ .Values.startupProbe.periodSeconds | default 5 }} periodSeconds: {{ .Values.startupProbe.periodSeconds | default 5 }}
{{- end }} {{- end }}
volumeMounts: volumeMounts:
- name: {{ template "influxdb.fullname" . }}-meta - name: {{ include "influxdb.fullname" . }}-meta
mountPath: {{ .Values.config.storage_directory }} mountPath: {{ .Values.config.storage_directory }}
- name: config - name: config
mountPath: /etc/influxdb mountPath: /etc/influxdb
...@@ -82,14 +81,14 @@ spec: ...@@ -82,14 +81,14 @@ spec:
volumes: volumes:
- name: config - name: config
configMap: configMap:
name: {{ template "influxdb.fullname" . }}-meta name: {{ include "influxdb.fullname" . }}-meta
{{- if .Values.initScripts.enabled }} {{- if .Values.initScripts.enabled }}
- name: init - name: init
configMap: configMap:
name: {{ template "influxdb.fullname" . }}-init name: {{ include "influxdb.fullname" . }}-init
{{- end }} {{- end }}
{{- if (not .Values.persistence.enabled ) }} {{- if (not .Values.persistence.enabled ) }}
- name: {{ template "influxdb.fullname" . }}-meta - name: {{ include "influxdb.fullname" . }}-meta
emptyDir: {} emptyDir: {}
{{- end }} {{- end }}
{{- if .Values.schedulerName }} {{- if .Values.schedulerName }}
...@@ -110,7 +109,7 @@ spec: ...@@ -110,7 +109,7 @@ spec:
{{- if .Values.persistence.enabled }} {{- if .Values.persistence.enabled }}
volumeClaimTemplates: volumeClaimTemplates:
- metadata: - metadata:
name: {{ template "influxdb.fullname" . }}-meta name: {{ include "influxdb.fullname" . }}-meta
annotations: annotations:
{{- range $key, $value := .Values.persistence.annotations }} {{- range $key, $value := .Values.persistence.annotations }}
{{ $key }}: "{{ $value }}" {{ $key }}: "{{ $value }}"
......
...@@ -2,12 +2,9 @@ ...@@ -2,12 +2,9 @@
apiVersion: batch/v1 apiVersion: batch/v1
kind: Job kind: Job
metadata: metadata:
name: {{ include "caca.fullname" . }}-set-auth
labels: labels:
app: "{{ template "influxdb.fullname" . }}" {{- include "caca.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
name: {{ template "influxdb.fullname" . }}-set-auth
annotations: annotations:
"helm.sh/hook": post-install "helm.sh/hook": post-install
"helm.sh/hook-delete-policy": hook-succeeded "helm.sh/hook-delete-policy": hook-succeeded
......
...@@ -3,12 +3,9 @@ ...@@ -3,12 +3,9 @@
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
name: {{ include "influxdb.fullname" . }}-auth
labels: labels:
app: "{{ template "influxdb.fullname" . }}" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
name: {{ template "influxdb.fullname" . }}-auth
data: data:
{{- if .Values.setDefaultUser.user.password }} {{- if .Values.setDefaultUser.user.password }}
influxdb-password: {{ .Values.setDefaultUser.user.password | b64enc | quote }} influxdb-password: {{ .Values.setDefaultUser.user.password | b64enc | quote }}
......
...@@ -5,28 +5,11 @@ metadata: ...@@ -5,28 +5,11 @@ metadata:
annotations: annotations:
{{ toYaml .Values.service.annotations | indent 4 }} {{ toYaml .Values.service.annotations | indent 4 }}
{{- end }} {{- end }}
name: "{{ template "influxdb.fullname" . }}" name: {{ include "influxdb.fullname" . }}
labels: labels:
app: "{{ template "influxdb.fullname" . }}" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec: spec:
type: {{ .Values.service.type }} type: {{ .Values.service.type }}
{{- if .Values.service.clusterIP }}
clusterIP: {{ .Values.service.clusterIP }}
{{- end }}
{{- if .Values.service.externalIPs }}
externalIPs:
{{ toYaml .Values.service.externalIPs | indent 4 }}
{{- end }}
{{- if .Values.service.loadBalancerIP }}
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
{{- end }}
{{- with .Values.service.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{- toYaml . | nindent 4 }}
{{- end }}
ports: ports:
{{- if .Values.config.http.enabled }} {{- if .Values.config.http.enabled }}
- name: api - name: api
......
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
name: {{ template "influxdb.serviceAccountName" . }}
labels:
{{ include "influxdb.labels" . | indent 4 }}
{{- end -}}
apiVersion: apps/v1 apiVersion: apps/v1
kind: StatefulSet kind: StatefulSet
metadata: metadata:
name: "{{ template "influxdb.fullname" . }}" name: {{ include "influxdb.fullname" . }}
labels: labels:
app: "{{ template "influxdb.fullname" . }}" {{- include "influxdb.labels" . | nindent 4 }}
chart: "{{ template "influxdb.chart" . }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec: spec:
{{- if .Values.enterprise.enabled }} {{- if .Values.enterprise.enabled }}
replicas: {{ .Values.enterprise.clusterSize }} replicas: {{ .Values.enterprise.clusterSize }}
...@@ -15,15 +12,12 @@ spec: ...@@ -15,15 +12,12 @@ spec:
{{- end}} {{- end}}
selector: selector:
matchLabels: matchLabels:
app: {{ template "influxdb.fullname" . }} {{- include "influxdb.selectorLabels" . | nindent 6 }}
release: "{{ .Release.Name }}" serviceName: "{{ include "influxdb.fullname" . }}"
serviceName: "{{ template "influxdb.fullname" . }}"
template: template:
metadata: metadata:
labels: labels:
app: {{ template "influxdb.fullname" . }} {{- include "influxdb.selectorLabels" . | nindent 8 }}
release: "{{ .Release.Name }}"
chart: "{{ template "influxdb.chart" . }}"
{{- if .Values.podAnnotations }} {{- if .Values.podAnnotations }}
annotations: annotations:
{{ toYaml .Values.podAnnotations | indent 8 }} {{ toYaml .Values.podAnnotations | indent 8 }}
...@@ -50,8 +44,9 @@ spec: ...@@ -50,8 +44,9 @@ spec:
- name: {{ . }} - name: {{ . }}
{{- end}} {{- end}}
{{- end }} {{- end }}
serviceAccountName: {{ include "influxdb.serviceAccountName" . }}
containers: containers:
- name: {{ template "influxdb.fullname" . }} - name: {{ include "influxdb.fullname" . }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy | quote }} imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
resources: resources:
...@@ -90,7 +85,7 @@ spec: ...@@ -90,7 +85,7 @@ spec:
{{ toYaml .Values.env | indent 10 }} {{ toYaml .Values.env | indent 10 }}
{{- if .Values.enterprise.enabled }} {{- if .Values.enterprise.enabled }}
- name: INFLUXDB_HOSTNAME # Values.env's HOSTNAME isn't fundamentally different from $HOSTNAME, but this way weg get a distinguished name at runtime. - name: INFLUXDB_HOSTNAME # Values.env's HOSTNAME isn't fundamentally different from $HOSTNAME, but this way weg get a distinguished name at runtime.
value: "$(_HOSTNAME).{{ template "influxdb.fullname" . }}" value: "$(_HOSTNAME).{{ include "influxdb.fullname" . }}"
{{- end }} {{- end }}
{{- end }} {{- end }}
livenessProbe: livenessProbe:
...@@ -114,7 +109,7 @@ spec: ...@@ -114,7 +109,7 @@ spec:
periodSeconds: {{ .Values.startupProbe.periodSeconds | default 5 }} periodSeconds: {{ .Values.startupProbe.periodSeconds | default 5 }}
{{- end }} {{- end }}
volumeMounts: volumeMounts:
- name: {{ template "influxdb.fullname" . }}-data - name: {{ include "influxdb.fullname" . }}-data
mountPath: {{ .Values.config.storage_directory }} mountPath: {{ .Values.config.storage_directory }}
- name: config - name: config
mountPath: /etc/influxdb mountPath: /etc/influxdb
...@@ -125,20 +120,20 @@ spec: ...@@ -125,20 +120,20 @@ spec:
volumes: volumes:
- name: config - name: config
configMap: configMap:
name: {{ template "influxdb.fullname" . }} name: {{ include "influxdb.fullname" . }}
{{- if .Values.initScripts.enabled }} {{- if .Values.initScripts.enabled }}
- name: init - name: init
configMap: configMap:
name: {{ template "influxdb.fullname" . }}-init name: {{ include "influxdb.fullname" . }}-init
{{- end }} {{- end }}
{{- if (not .Values.persistence.enabled ) }} {{- if (not .Values.persistence.enabled ) }}
- name: {{ template "influxdb.fullname" . }}-data - name: {{ include "influxdb.fullname" . }}-data
emptyDir: {} emptyDir: {}
{{- end }} {{- end }}
{{- if .Values.persistence.enabled }} {{- if .Values.persistence.enabled }}
volumeClaimTemplates: volumeClaimTemplates:
- metadata: - metadata:
name: {{ template "influxdb.fullname" . }}-data name: {{ include "influxdb.fullname" . }}-data
annotations: annotations:
{{- range $key, $value := .Values.persistence.annotations }} {{- range $key, $value := .Values.persistence.annotations }}
{{ $key }}: "{{ $value }}" {{ $key }}: "{{ $value }}"
......
...@@ -8,6 +8,12 @@ image: ...@@ -8,6 +8,12 @@ image:
# pullSecrets: # pullSecrets:
# - registry-secret # - registry-secret
serviceAccount:
create: true
name:
annotations: {}
## Customize livenessProbe and readinessProbe ## Customize livenessProbe and readinessProbe
## ref: https://docs.influxdata.com/influxdb/v1.7/tools/api/#ping-http-endpoint ## ref: https://docs.influxdata.com/influxdb/v1.7/tools/api/#ping-http-endpoint
## ##
...@@ -31,14 +37,6 @@ service: ...@@ -31,14 +37,6 @@ service:
## Add annotations to service ## Add annotations to service
# annotations: {} # annotations: {}
type: ClusterIP type: ClusterIP
## Add IP Cluster
# clusterIP: ""
## Add external IPs that route to one or more cluster nodes
# externalIPs: []
## Specify LoadBalancer IP (only allow on some cloud provider)
# loadBalancerIP: ""
## Allow source IPs to access on service (if empty, any access allow)
# loadBalancerSourceRanges: []
## Persist data to a persistent volume ## Persist data to a persistent volume
## ##
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment