71 lines
2.4 KiB
Markdown
71 lines
2.4 KiB
Markdown
|
|
# 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
|
|
```
|