diff --git a/charts/helm/checkmate/INSTALLATION.md b/charts/helm/checkmate/INSTALLATION.md index 4a2a120b5..c4586cd85 100644 --- a/charts/helm/checkmate/INSTALLATION.md +++ b/charts/helm/checkmate/INSTALLATION.md @@ -26,6 +26,7 @@ Edit `values.yaml` to update: - Old: `persistence.redisSize` → New: `persistence.redis.size` - Add: `persistence.mongo.storageClass` and `persistence.redis.storageClass` (leave empty for default) - Secrets under the `secrets` section (`JWT_SECRET`, email credentials, API keys, etc.) — replace all change_me values +- **For TLS/HTTPS**: Configure ingress TLS settings (see section below) ### 3. Deploy the Helm chart ```bash @@ -41,3 +42,71 @@ kubectl get svc ``` Once all pods are `Running` and `Ready`, you can access Checkmate via the configured ingress hosts. + +## Enabling TLS/HTTPS with cert-manager + +If you have [cert-manager](https://cert-manager.io/) installed in your cluster, you can enable automatic TLS certificate provisioning using Let's Encrypt or other certificate issuers. + +### Prerequisites +- cert-manager installed in your cluster +- A ClusterIssuer or Issuer configured (e.g., `letsencrypt-prod`) + +### Configuration + +Edit `values.yaml` to enable TLS: + +```yaml +client: + ingress: + enabled: true + host: checkmate.example.com + className: nginx + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" + tls: + enabled: true + secretName: checkmate-client-tls + +server: + ingress: + enabled: true + host: checkmate.example.com + className: nginx + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" + tls: + enabled: true + secretName: checkmate-server-tls +``` + +### Alternative: Using --set flags + +You can also enable TLS during installation using Helm's `--set` flags: + +```bash +helm install checkmate ./charts/helm/checkmate \ + --set client.ingress.annotations."cert-manager\.io/cluster-issuer"="letsencrypt-prod" \ + --set client.ingress.tls.enabled=true \ + --set client.ingress.tls.secretName=checkmate-client-tls \ + --set server.ingress.annotations."cert-manager\.io/cluster-issuer"="letsencrypt-prod" \ + --set server.ingress.tls.enabled=true \ + --set server.ingress.tls.secretName=checkmate-server-tls +``` + +### Verification + +After deployment, cert-manager will automatically create the TLS secrets. You can verify the certificate status: + +```bash +# Check certificates +kubectl get certificates + +# Check certificate details +kubectl describe certificate checkmate-client-tls +kubectl describe certificate checkmate-server-tls + +# Verify the secrets were created +kubectl get secrets | grep checkmate-tls +``` + +The ingress will automatically use these secrets to enable HTTPS access to your Checkmate instance. diff --git a/charts/helm/checkmate/templates/client-ingress.yaml b/charts/helm/checkmate/templates/client-ingress.yaml index 89e001e15..5965edfed 100644 --- a/charts/helm/checkmate/templates/client-ingress.yaml +++ b/charts/helm/checkmate/templates/client-ingress.yaml @@ -11,6 +11,12 @@ metadata: {{- end }} spec: ingressClassName: {{ .Values.client.ingress.className }} + {{- if .Values.client.ingress.tls.enabled }} + tls: + - hosts: + - {{ .Values.client.ingress.host }} + secretName: {{ .Values.client.ingress.tls.secretName }} + {{- end }} rules: - host: {{ .Values.client.ingress.host }} http: diff --git a/charts/helm/checkmate/templates/server-ingress.yaml b/charts/helm/checkmate/templates/server-ingress.yaml index 6e2d0d4d6..92201714a 100644 --- a/charts/helm/checkmate/templates/server-ingress.yaml +++ b/charts/helm/checkmate/templates/server-ingress.yaml @@ -18,6 +18,12 @@ metadata: #nginx.ingress.kubernetes.io/cors-allow-credentials: "true"*/}} spec: ingressClassName: {{ .Values.server.ingress.className }} + {{- if .Values.server.ingress.tls.enabled }} + tls: + - hosts: + - {{ .Values.server.ingress.host }} + secretName: {{ .Values.server.ingress.tls.secretName }} + {{- end }} rules: - host: {{ .Values.server.ingress.host }} http: diff --git a/charts/helm/checkmate/values.yaml b/charts/helm/checkmate/values.yaml index a1a1527de..dee532327 100644 --- a/charts/helm/checkmate/values.yaml +++ b/charts/helm/checkmate/values.yaml @@ -7,6 +7,13 @@ client: host: change_me className: nginx annotations: {} + # Example annotations for cert-manager: + # annotations: + # cert-manager.io/cluster-issuer: "letsencrypt-prod" + tls: + enabled: false + secretName: checkmate-client-tls + # The secret will be automatically created by cert-manager when using the cert-manager.io/cluster-issuer annotation server: image: ghcr.io/bluewave-labs/checkmate-backend:v3.2.0 @@ -17,6 +24,13 @@ server: host: change_me className: nginx annotations: {} + # Example annotations for cert-manager: + # annotations: + # cert-manager.io/cluster-issuer: "letsencrypt-prod" + tls: + enabled: false + secretName: checkmate-server-tls + # The secret will be automatically created by cert-manager when using the cert-manager.io/cluster-issuer annotation redis: enabled: false