A helm chart for publishing a static (=no server-side components) web site
  • Makefile 55.2%
  • Smarty 44.8%
Find a file
2026-01-04 19:45:15 +00:00
templates Tidyup 2026-01-04 17:13:59 +00:00
.bumpversion.cfg Bump version: 0.1.0 → 0.1.1 2026-01-04 18:52:52 +00:00
.gitignore git: ignore my personal values.yaml 2026-01-04 17:14:39 +00:00
.helmignore First cut 2026-01-04 16:20:41 +00:00
Chart.yaml Bump version: 0.1.0 → 0.1.1 2026-01-04 18:52:52 +00:00
default.conf First cut 2026-01-04 16:20:41 +00:00
Makefile Tidyup 2026-01-04 17:13:59 +00:00
README.md Prettier dox 2026-01-04 19:45:15 +00:00
values.yaml Tidyup 2026-01-04 17:13:59 +00:00

Static Website

If you want to:

  • Publish a web site
  • The site is merely static HTML/CSS (i.e. no server-side components)
  • You want to (occasionally) upload updates to the site

Then this chart might be for you.

This chart implements:

  • A web server to serve your site
  • A Kubernetes Ingress resource to make your site available to the outside world
  • A PersistentVolumeClaim to store your site files
  • A deployment with scp/rsync installed and SSH key-based access.

The idea: Once deployed, you can concentrate on geting the HTML/CSS "right"; you can use rsync to create/update the site contents.

Values

The documentation for the values this chart expects is in values.yaml - to get something basic working you only need to supply a few values - e.g.:

---
ingress:
  dnsNames:
    - www.example.com

rsync:
  service:
    type: LoadBalancer
    annotations:
      external-dns.alpha.kubernetes.io/hostname: sync.www.example.com

  authorizedKeys: |
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOOCqHJInsGdv9dAsVqGMhs4qGjGTyS826AHS8bh9dak yourname@example.com

The exact values you need will probably be different :-)

Prerequisites

You must have a working Ingress Controller - the usual ingress-nginx will work nicely, and others will probably work too.

If you have external-dns installed, it can set up a DNS name for the rsync service according to the external-dns.alpha.kubernetes.io/hostname annotation.

It helps if you have Cert-Manager installed with a working ClusterIssuer - this will allow the ingress annotation kubernetes.io/tls-acme: "true" to handle the SSL certificate automatically. Without this, you need some other method of obtaining an SSL certificate.