Skip to content

feat: official Helm chart (OCI, SQLite HA, GitOps) - #783

Open
zhouzhuojie wants to merge 7 commits into
mainfrom
zz/helm
Open

zhouzhuojie wants to merge 7 commits into
mainfrom
zz/helm

Conversation

@zhouzhuojie

@zhouzhuojie zhouzhuojie commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

Description

Official in-repo Helm chart at helm/, published to GHCR as an OCI artifact.

helm install flagr oci://ghcr.io/openflagr/flagr/charts/flagr --version 1.0.0 \
  --namespace flagr --create-namespace

From a checkout: helm install flagr ./helm. Helm cannot install from a GitHub directory URL.

Deployment strategy (see self-host):

Strategy How Scale
Docker demo docker run 1 SQLite writer
Compose MySQL + Flagr 1 Flagr + DB
Helm / SQLite default helm install 1 writer
Helm / SQLite HA evalReplicas.replicaCount 1 writer + N json_http readers (svc/flagr-eval)
Helm / GitOps gitops.enabled + gitops.flagsURL N identical json_http pods (GitHub raw URL)
Helm / MySQL or Postgres replicaCount + env N pods, one DB
VM / systemd binary or image same store rules

evalReplicas and gitops are mutually exclusive. Everything else is env / envFrom. No bundled database, no Ingress/HPA in the chart.

CI

  • make helm-lint + make helm-unittest (25 template tests)
  • .github/workflows/helm.yml install job (Kind): SQLite, SQLite HA, GitOps (in-cluster flags URL), each with helm test
  • .github/workflows/cd_helm.ymlhelm push to oci://ghcr.io/openflagr/flagr/charts/flagr on helm/Chart.yaml changes to main, GitHub Release, and workflow_dispatch

After merge (one-time): make the GHCR package public (Package settings → Change visibility). Anonymous helm install oci://… 401s until that click. Steps in docs/CONTRIBUTING.md.

Prototype credit: @ericbsantana (flagr-helm-chart); this is a rewrite, not a copy.

Closes #781

Motivation and Context

Self-host docs said “No in-repo Helm chart.” #781 asked for an official chart. This PR answers Q1 (yes, in this repo), Q2 (path is helm/), Q3 (OCI publish in this PR).

How Has This Been Tested?

  • make helm-lint
  • make helm-unittest — 25 tests
  • Kind CI installs SQLite, SQLite HA (evalReplicas), and GitOps

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Add a minimal Deployment + ClusterIP chart at helm/, configured via env
and flagr_env.md. helm-unittest covers env invariants, overrides, probes,
and volumes; CI runs lint, unittest, and Kind helm test.

Closes #781
@mergify

mergify Bot commented Sep 16, 2026

Copy link
Copy Markdown

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

v1.1.2 plugin.yaml has platformHooks, which Helm 3.17 rejects.
Push helm/ to oci://ghcr.io/openflagr/flagr/charts/flagr on Chart.yaml
changes to main, GitHub Release, and workflow_dispatch. Chart version
1.0.0. Nested under the flagr repo so GITHUB_TOKEN can publish without
colliding with the Docker image.
Keep a single SQLite writer (replicaCount=1). evalReplicas.replicaCount
adds eval-only pods that poll the primary export so there are no extra
writers. MySQL/Postgres still scale replicaCount against one DB.
gitops.enabled points every primary replica at one flags URL (raw GitHub
or a Secret DSN). Same image, no SQLite writer; scale replicaCount.
Mutually exclusive with evalReplicas (SQLite HA only).
@zhouzhuojie zhouzhuojie changed the title feat: official in-repo Helm chart (helm/) feat: official Helm chart (OCI, SQLite HA, GitOps) Sep 16, 2026
Document SQLite HA, GitOps, and SQL scaling across the site. Rename the
Helm CI cluster job from kind to install. Point GitOps docs at helm values.
Organize Docker, Compose, Helm (SQLite / HA / GitOps / SQL), and VM
under one self-host section. Kind install job runs sqlite, evalReplicas,
and gitops (in-cluster flags URL) each with helm test.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: add an official in-repository Helm chart

2 participants