116 lines
4.4 KiB
YAML
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
|