Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

51 Commits

Folders and files

Repository files navigation

Helm Charts Repository

A collection of Helm charts for deploying applications in Kubernetes.

Adding this repository

helm repo add ah-helm https://ilyario.github.io/ah-helm-charts
helm repo update

The Helm repo index (index.yaml) and packaged charts (packages/*.tgz) are served from this repository via GitHub Pages.

Available Charts

Chart Description Links
citadel-monolith Deploy monolithic applications in Kubernetes with Infisical secrets, autoscaling, jobs, Gateway API/Ingress, ServiceMonitor, PrometheusRule and a Grafana SRE dashboard README
static-proxy NGINX-based reverse proxy to external and internal resources, configured via values.yaml README

static-proxy example

helm install my-static-proxy ah-helm/static-proxy
helm upgrade my-static-proxy ah-helm/static-proxy

citadel-monolith example

helm install my-citadel ah-helm/citadel

See the citadel-monolith README for the full configuration reference (multiple applications per release, Infisical, jobs, cronjobs, monitoring).

Releases and packages

Chart sources live in charts/; what users install comes from the published repo index. The flow is automated by GitHub Actions:

  • On push to main touching charts/**, the update-repo.yaml workflow packages every chart (helm package → packages/*.tgz), regenerates index.yaml (helm repo index --merge) and commits both back to main, where GitHub Pages serves them. Committed packages/*.tgz are a mirror of published versions; --merge keeps older chart versions installable.
  • On push of a SemVer git tag (v1.2.3 or 1.2.3) the docker-build.yml workflow builds the tools image and tags it X.Y.Z / X.Y / sha-* / latest in ghcr.io (docker/metadata-action type=semver works only on tag pushes).
  • On pull requests the lint-test.yml workflow runs helm lint, ct lint (chart-testing), kube-linter and the template smoke tests for changed charts.

Typical release flow:

# 1. Bump chart version(s) in charts/*/Chart.yaml, merge to main
#    -> update-repo.yaml packages and publishes the charts automatically
# 2. Tag a Docker image release and push the tag
git tag -a 1.5.1 -m "Release 1.5.1" && git push origin 1.5.1

Chart versions (SemVer in Chart.yaml) and Docker image tags (git tags) are independent release lines.

Repository structure

ah-helm-charts/
├── charts/                  # Chart sources (one directory per chart)
│   ├── citadel-monolith/
│   └── static-proxy/
├── scripts/                 # Chart render smoke tests (bash/python)
├── docs/assets/             # Chart icons and other repository assets
├── packages/                # Committed chart *.tgz packages (regenerated by update-repo.yaml CI)
├── index.yaml               # Helm repo index (regenerated by update-repo.yaml CI)
├── .github/workflows/       # CI: lint-test.yml (PRs), update-repo.yaml (push to main), docker-build.yml (push/tags)
└── README.md

Note: packages/*.tgz and index.yaml are generated artifacts — CI commits them to main (GitHub Pages serves this branch); you normally don't edit them by hand.

Development

Adding a new chart

  1. Create a new directory in charts/ with your chart
  2. Add kubeVersion, keywords and artifacthub annotations to Chart.yaml (see existing charts); add the chart icon SVG under docs/assets/
  3. Document values with comments in values.yaml and generate the values tables with helm-docs (a README.md.gotmpl in the chart dir renders README.md; CI checks for drift via .github/scripts/helm-docs-check.sh)
  4. Open a PR — the lint-test.yml workflow must pass
  5. Merge to main — update-repo.yaml packages and publishes the chart; tag a Docker image release when needed (see Releases)

Local checks (same as PR CI)

helm lint charts/citadel-monolith charts/static-proxy
./scripts/helm-template-test.sh
python3 scripts/test_citadel_update_strategy.py
python3 scripts/test_citadel_sre_dashboard.py
bash charts/citadel-monolith/tests/run-dns-label-test.sh

# Optional, matching CI:
# ct lint --config .github/ct.yaml --check-version-increment=false   (chart-testing)
helm-docs  # regenerate chart README tables

kube-linter in CI starts from rendered manifests (see .github/workflows/lint-test.yml); locally you can reproduce it the same way with helm template into a directory and kube-linter lint <dir> --config .github/kube-linter.yaml.

License

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages