Files
homelab/kubernetes/apps/influxdb/helmrelease.yaml
renovate-bot b87c6c9787
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
chore(deps): update influxdb:2.9.1 docker digest to cdd3dbd
2026-10-12 02:03:28 +00:00

116 lines
4.4 KiB
YAML

apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: influxdata
namespace: influxdb
annotations:
# Prune-disabled so a later seed->apps ownership handoff never deletes it.
kustomize.toolkit.fluxcd.io/prune: disabled
spec:
interval: 24h
url: https://helm.influxdata.com/
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: influxdb
namespace: influxdb
annotations:
# CRITICAL: prune-disabled. This HelmRelease owns InfluxDB's data (its
# StatefulSet + the chart-provisioned influxdb-influxdb2 PVC). Landing this
# annotation on the live object *before* the KS is ever moved/deleted is
# step 1 of a two-step seed->apps handoff: once it's live here, a later
# prune of this KS can't tear the HelmRelease down (which would helm-
# uninstall the running server). Kept afterwards as a standing guard.
kustomize.toolkit.fluxcd.io/prune: disabled
spec:
interval: 30m
chart:
spec:
chart: influxdb2
version: ">=2.1.0"
sourceRef:
kind: HelmRepository
name: influxdata
namespace: influxdb
install:
remediation:
retries: 3
upgrade:
remediation:
retries: 3
# The chart bootstraps a fresh InfluxDB instance: its PVC template
# provisions an empty `influxdb-influxdb2` PVC, the StatefulSet mounts
# it, and influxd's entrypoint runs `influx setup` against the empty
# data dir using DOCKER_INFLUXDB_INIT_* env (sourced from the
# influxdb-bootstrap Secret). The bootstrap-secret token therefore
# becomes the live admin token immediately on first install.
#
# The legacy `suedstr28` bucket data was loaded once, post-bootstrap, by a
# one-shot migration Job (SSH to the legacy host -> `influx backup` -> selective
# `influx restore`, leaving the bootstrap admin token untouched). That Job was
# removed after cutover; only the restored data on the PVC remains.
values:
image:
repository: influxdb
# Was pinned to VM 108's 2.7.4 for the one-time `influx restore`; that
# migration is done. No downgrade below 2.9 without `influxd downgrade`.
tag: "2.9.1@sha256:cdd3dbdea45c2f43513abd06ee9644b6e05d2354a2b93ca829c9f07d716eaaac"
# Single replica — InfluxDB OSS doesn't cluster. RWO Ceph-block + Velero
# backups (pending) is the durability story.
persistence:
enabled: true
storageClass: ceph-block
size: 50Gi
# A minAvailable:1 PDB on a single replica blocks every node drain.
pdb:
create: false
# Bootstrap admin/org/bucket on the fresh PVC. Admin password + token come
# from the influxdb-bootstrap Secret (OpenBao via ESO), deterministic across
# rebuilds so the bootstrap token is the live admin token. `influx setup`
# creates the `suedstr28` bucket below. (The one-time legacy restore into
# that bucket ran via the now-removed seed Job — see the note above.)
adminUser:
organization: renner
bucket: suedstr28
user: admin
retention_policy: "0s"
existingSecret: influxdb-bootstrap
service:
type: ClusterIP
port: 8086
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
# Opening hundreds of shards on startup (large historical dataset)
# routinely OOMs a 2Gi limit; 6Gi gives headroom for shard
# index mmap + ongoing ingest+compaction.
memory: 6Gi
# Default storage-write timeout is 10s; on a cold-cache RWO Ceph-block
# volume under concurrent TSM compaction, large write batches can exceed
# it and return HTTP 500. Bump to 60s.
env:
- name: INFLUXD_STORAGE_WRITE_TIMEOUT
value: "60s"
# 2.9 hashes API tokens on startup by default. Hashed tokens cannot be
# read back, so the token Jobs' `influx auth list` reuse would break,
# and a downgrade below 2.8 would erase every token (HA, Grafana).
# Keep tokens unhashed; enable hashing later as its own change.
- name: INFLUXD_USE_HASHED_TOKENS
value: "false"
# The chart defaults to liveness/readiness with initialDelaySeconds=0,
# so after a crash restart the kubelet kills the pod before shards
# finish opening. Give it 10 minutes to come up cleanly.
livenessProbe:
initialDelaySeconds: 600
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3