stable/influxdb/README.md
This chart has been deprecated and moved to its new home:
InfluxDB is an open source time series database built by the folks over at InfluxData with no external dependencies. It's useful for recording metrics, events, and performing analytics.
$ helm install stable/influxdb --name foo --namespace bar
This chart bootstraps an InfluxDB statefulset and service on a Kubernetes cluster using the Helm Package manager.
To install the chart with the release name my-release:
$ helm install --name my-release stable/influxdb
The command deploys InfluxDB on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.
Tip: List all releases using
helm list
To uninstall/delete the my-release deployment:
$ helm delete my-release --purge
The command removes all the Kubernetes components associated with the chart and deletes the release.
The default configuration values for this chart are listed in values.yaml.
| Parameter | Description | Default |
|---|---|---|
| image.repository | Image repository url | influxdb |
| image.tag | Image tag | 1.7.6-alpine |
| image.pullPolicy | Image pull policy | IfNotPresent |
| image.pullSecrets | It will store the repository's credentials to pull image | nil |
| serviceAccount.create | It will create service account | true |
| serviceAccount.name | Service account name | "" |
| serviceAccount.annotations | Service account annotations | {} |
| livenessProbe | Health check for pod | {} |
| readinessProbe | Health check for pod | {} |
| startupProbe | Health check for pod | {} |
| service.type | Kubernetes service type | ClusterIP |
| persistence.enabled | Boolean to enable and disable persistance | true |
| persistence.storageClass | If set to "-", storageClassName: "", which disables dynamic provisioning. If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. (gp2 on AWS, standard on GKE, AWS & OpenStack | |
| persistence.annotations | Annotations for volumeClaimTemplates | nil |
| persistence.accessMode | Access mode for the volume | ReadWriteOnce |
| persistence.size | Storage size | 8Gi |
| podAnnotations | Annotations for pod | {} |
| ingress.enabled | Boolean flag to enable or disable ingress | false |
| ingress.tls | Boolean to enable or disable tls for ingress. If enabled provide a secret in ingress.secretName containing TLS private key and certificate. | false |
| ingress.secretName | Kubernetes secret containing TLS private key and certificate. It is only required if ingress.tls is enabled. | nil |
| ingress.hostname | Hostname for the ingress | influxdb.foobar.com |
| annotations | ingress annotations | nil |
| schedulerName | Use an alternate scheduler, e.g. "stork". | nil |
| nodeSelector | Node labels for pod assignment | {} |
| affinity | Affinity for pod assignment | { |
| tolerations | Tolerations for pod assignment | [] |
| env | environment variables for influxdb container | {} |
| config.reporting_disabled | Details | false |
| config.rpc | RPC address for backup and storage | {} |
| config.meta | Details | {} |
| config.data | Details | {} |
| config.coordinator | Details | {} |
| config.retention | Details | {} |
| config.shard_precreation | Details | {} |
| config.monitor | Details | {} |
| config.http | Details | {} |
| config.logging | Details | {} |
| config.subscriber | Details | {} |
| config.graphite | Details | {} |
| config.collectd | Details | {} |
| config.opentsdb | Details | {} |
| config.udp | Details | {} |
| config.continous_queries | Details | {} |
| config.tls | Details | {} |
| initScripts.enabled | Boolean flag to enable and disable initscripts. If the container finds any files with the extensions .sh or .iql inside of the /docker-entrypoint-initdb.d folder, it will execute them. The order they are executed in is determined by the shell. This is usually alphabetical order. | false |
| initScripts.scripts | Init scripts | {} |
| backup.enabled | Boolean flag to enable and disable backups. Currently, it backups the data on azure and gcs. | false |
| backup.schedule | Cron time | 0 0 * * *. It means create a backup everyday at 00:00. |
| backup.annotations | Annotations for backup | {} |
The full image documentation contains more information about running InfluxDB in docker.
Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,
$ helm install --name my-release \
--set persistence.enabled=true,persistence.size=200Gi \
stable/influxdb
The above command enables persistence and changes the size of the requested data volume to 200GB.
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
$ helm install --name my-release -f values.yaml stable/influxdb
Tip: You can use the default values.yaml
InfluxDB Enterprise is a hardened version of the open source core InfluxDB that includes additional closed source features designed for production workloads, featuring high availability and horizontal scaling. InfluxDB Enterprise features require a InfluxDB Enterprise license.
To enable InfluxDB Enterprise, set the following keys and values in a values file provided to Helm.
| Key | Description | Recommended value |
|---|---|---|
livenessProbe.initalDelaySeconds | Used to allow enough time to join meta nodes to a cluster | 3600 |
image.tag | Set to a data image. See https://hub.docker.com/_/influxdb for details | data |
service.ClusterIP | Use a headless service for StatefulSets | "None" |
env.name[_HOSTNAME] | Used to provide a unique name.service for InfluxDB. See values.yaml for an example | valueFrom.fieldRef.fieldPath: metadata.name |
enterprise.enabled | Create StatefulSets for use with influx-data and influx-meta images | true |
enterprise.licensekey | License for InfluxDB Enterprise | |
enterprise.clusterSize | Replicas for influx StatefulSet | Dependent on license |
enterprise.meta.image.tag | Set to an meta image. See https://hub.docker.com/_/influxdb for details | meta |
enterprise.meta.clusterSize | Replicas for influxdb-meta StatefulSet. | 3 |
enterprise.meta.resources | Resources requests and limits for meta influxdb-meta pods | See values.yaml |
Meta and data pods need to be joined together using the command influxd-ctl found on meta pods.
It is recommended you run influxd-ctl on one and only one meta pod, and to join meta pods together before data pods.
For each meta pod, run influxd-ctl. With default settings it should look something like this:
kubectl exec influxdb-meta-0 influxd-ctl add-meta influxdb-meta-0.influxdb-meta:8091
From the same meta pod, for each data pod, run influxd-ctl. With default settings it should look something like this:
kubectl exec influxdb-meta-0 influxd-ctl add-data influxdb-0.influxdb:8088
When using influxd-ctl be sure to use the appropriate DNS name for your pods, following the naming scheme of pod.service.
In the above examples, the pod names were influxdb-meta-0 and influxdb-0 respectively, and the service name was influxdb
The InfluxDB image stores data in the /var/lib/influxdb directory in the container.
If persistence is enabled, a Persistent Volume associated with Statefulset will be provisioned. The volume is created using dynamic volume provisioning. In case of a disruption e.g. a node drain, kubernetes ensures that the same volume will be reatached to the Pod, preventing any data loss. Althought, when persistence is not enabled, InfluxDB data will be stored in an empty directory thus, in a Pod restart, data will be lost.
In values.yaml change .Values.config.http.auth_enabled to true.
Influxdb requires also a user to be set in order for authentication to be enforced. See more details here.
To handle this setup on startup, a job can be enabled in values.yaml by setting .Values.setDefaultUser.enabled to true.
Make sure to uncomment or configure the job settings after enabling it. If a password is not set, a random password will be generated.
Alternatively, if .Values.setDefaultUser.user.existingSecret is set the user and password are obtained from an existing Secret, the expected keys are influxdb-user and influxdb-password. Use this variable if you need to check in the values.yaml in a repository to avoid exposing your secrets.
Values .Values.config.bind_address and .Values.exposeRpc no longer exist. They have been replaced with .Values.config.rpc.bind_address and .Values.config.rpc.enabled respectively. Please adjust your values file accordingly.
The Kubernetes API change to support 1.160 may not be backwards compatible and may require the chart to be uninstalled in order to upgrade. See this issue for some background.
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.
Labels are changed to those in accordance with kubernetes recommended 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.
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).