v1.0.0 release: Initial release

This commit is contained in:
Waylon S. Walker 2025-02-04 15:19:12 -06:00
commit 9ec5e3d112
11 changed files with 1184 additions and 0 deletions

71
Readme.md Normal file
View file

@ -0,0 +1,71 @@
# k8s-pages Helm Chart
This repository contains a Helm chart for deploying an NGINX reverse proxy configured with dynamic site definitions, configurable caching headers for Cloudflare (using `stale-while-revalidate`), and more. The chart is designed to be deployed either via the Helm CLI or using Argo CD for GitOps-style continuous delivery.
## Features
- **Dynamic Site Configuration:** Define multiple sites with individual hosts, backend URLs, and host headers.
- **Configurable Caching:** Set the `Cache-Control` header to control browser/CDN caching with `max-age` and `stale-while-revalidate` directives.
- **NGINX Reverse Proxy:** Leverages a ConfigMap to generate the NGINX configuration, a Deployment to run NGINX, and a Service/Ingress for routing.
- **GitOps Ready:** Easily deploy via Argo CD by pointing to this GitHub repository.
## Prerequisites
- **Kubernetes Cluster:** Ensure you have a running Kubernetes cluster.
- **Helm 3:** [Install Helm 3](https://helm.sh/docs/intro/install/).
- **Argo CD (optional):** If you prefer a GitOps approach, install [Argo CD](https://argo-cd.readthedocs.io/en/stable/getting_started/).
## Configuration
The default configuration is defined in `helm-chart/values.yaml`. Here you can set:
``` yaml
# The namespace where all resources will be created.
namespace: k8s-pages
# Number of replicas for the deployment.
replicaCount: 1
# List of sites to configure.
bucket: "k8s-pages"
sites:
- name: pages
host: example.com
# URL to which the proxy_pass should direct traffic. (Include protocol and path)
minioURL: "minio.minio.svc.cluster.local:9000"
# The host header to set when proxying.
minioHost: "minio.example.com"
# Error Page
errorPage: "/404.html"
maxAge: 31536000
staleWhileRevalidate: 86400
```
## Deploying with Argo CD
``` yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: k8s-pages
namespace: argocd # Namespace where Argo CD is installed
spec:
project: default
source:
repoURL: 'https://github.com/waylonwalker/k8s-pages.git'
targetRevision: HEAD
path: helm-chart
helm:
valueFiles:
- values.yaml
# Optional: Override values with parameters
# parameters:
# - name: replicaCount
# value: "2"
destination:
server: 'https://kubernetes.default.svc'
namespace: mypages # Target namespace for deployment
syncPolicy:
automated:
prune: true
selfHeal: true
```