feat: Yall have spoken, wildcard certs are now a thing

Signed-off-by: Devin Buhl <devin@buhl.casa>
This commit is contained in:
Devin Buhl committed 2023-01-12 08:55:55 -05:00
1 parent 07c7dd2ae6
commit d764022847
17 files changed
+121 -33

No files matched your search

-6
View File
@@ -401,12 +401,6 @@ To access services from the outside world port forwarded `80` and `443` in your
Now if nothing is working, that is expected. This is DNS after all! Now if nothing is working, that is expected. This is DNS after all!
### 🔐 SSL
By default in this template Kubernetes ingresses are set to use the [Let's Encrypt Staging Environment](https://letsencrypt.org/docs/staging-environment/). This will hopefully reduce issues from ACME on requesting certificates until you are ready to use this in "Production".
Once you have confirmed there are no issues requesting your certificates replace `letsencrypt-staging` with `letsencrypt-production` in your ingress annotations for `cert-manager.io/cluster-issuer`
### 🤖 Renovatebot ### 🤖 Renovatebot
[Renovatebot](https://www.mend.io/free-developer-tools/renovate/) will scan your repository and offer PRs when it finds dependencies out of date. Common dependencies it will discover and update are Flux, Ansible Galaxy Roles, Terraform Providers, Kubernetes Helm Charts, Kubernetes Container Images, Pre-commit hooks updates, and more! [Renovatebot](https://www.mend.io/free-developer-tools/renovate/) will scan your repository and offer PRs when it finds dependencies out of date. Common dependencies it will discover and update are Flux, Ansible Galaxy Roles, Terraform Providers, Kubernetes Helm Charts, Kubernetes Container Images, Pre-commit hooks updates, and more!
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: jetstack name: jetstack
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
installCRDs: true installCRDs: true
extraArgs: extraArgs:
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: bjw-s name: bjw-s
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
controller: controller:
strategy: RollingUpdate strategy: RollingUpdate
@@ -52,7 +56,6 @@ spec:
enabled: true enabled: true
ingressClassName: nginx ingressClassName: nginx
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-staging
external-dns.alpha.kubernetes.io/target: "ipv4.${SECRET_DOMAIN}" external-dns.alpha.kubernetes.io/target: "ipv4.${SECRET_DOMAIN}"
external-dns.home.arpa/enabled: "true" external-dns.home.arpa/enabled: "true"
hajimari.io/icon: video-input-antenna hajimari.io/icon: video-input-antenna
@@ -64,7 +67,6 @@ spec:
tls: tls:
- hosts: - hosts:
- *host - *host
secretName: echo-server-tls
resources: resources:
requests: requests:
cpu: 5m cpu: 5m
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: hajimari name: hajimari
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
hajimari: hajimari:
title: Apps title: Apps
@@ -41,7 +45,6 @@ spec:
enabled: true enabled: true
ingressClassName: nginx ingressClassName: nginx
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-staging
nginx.ingress.kubernetes.io/whitelist-source-range: | nginx.ingress.kubernetes.io/whitelist-source-range: |
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
hajimari.io/enable: "false" hajimari.io/enable: "false"
@@ -53,7 +56,6 @@ spec:
tls: tls:
- hosts: - hosts:
- *host - *host
secretName: hajimari-tls
podAnnotations: podAnnotations:
configmap.reloader.stakater.com/reload: hajimari-settings configmap.reloader.stakater.com/reload: hajimari-settings
persistence: persistence:
@@ -5,7 +5,6 @@ metadata:
name: flux-webhook name: flux-webhook
namespace: flux-system namespace: flux-system
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-staging
external-dns.alpha.kubernetes.io/target: "ipv4.${SECRET_DOMAIN}" external-dns.alpha.kubernetes.io/target: "ipv4.${SECRET_DOMAIN}"
external-dns.home.arpa/enabled: "true" external-dns.home.arpa/enabled: "true"
hajimari.io/enable: "false" hajimari.io/enable: "false"
@@ -25,4 +24,3 @@ spec:
tls: tls:
- hosts: - hosts:
- *host - *host
secretName: flux-webhook-tls
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: weave-gitops name: weave-gitops
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
adminUser: adminUser:
create: true create: true
@@ -29,7 +33,6 @@ spec:
enabled: true enabled: true
className: nginx className: nginx
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-staging
nginx.ingress.kubernetes.io/whitelist-source-range: | nginx.ingress.kubernetes.io/whitelist-source-range: |
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
hajimari.io/icon: sawtooth-wave hajimari.io/icon: sawtooth-wave
@@ -41,7 +44,6 @@ spec:
tls: tls:
- hosts: - hosts:
- *host - *host
secretName: weave-gitops-tls
networkPolicy: networkPolicy:
create: false create: false
metrics: metrics:
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: metrics-server name: metrics-server
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
args: args:
- --kubelet-insecure-tls - --kubelet-insecure-tls
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: stakater name: stakater
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
fullnameOverride: reloader fullnameOverride: reloader
reloader: reloader:
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: kubernetes-dashboard name: kubernetes-dashboard
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
env: env:
TZ: "${TIMEZONE}" TZ: "${TIMEZONE}"
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: bjw-s name: bjw-s
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
controller: controller:
type: cronjob type: cronjob
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: external-dns name: external-dns
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
interval: 2m interval: 2m
# logLevel: debug # logLevel: debug
@@ -43,8 +47,7 @@ spec:
sources: ["ingress"] sources: ["ingress"]
txtPrefix: k8s. txtPrefix: k8s.
txtOwnerId: default txtOwnerId: default
domainFilters: domainFilters: ["${SECRET_DOMAIN}"]
- "${SECRET_DOMAIN}"
serviceMonitor: serviceMonitor:
enabled: true enabled: true
podAnnotations: podAnnotations:
@@ -14,17 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: ingress-nginx name: ingress-nginx
namespace: flux-system namespace: flux-system
interval: 15m maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
dependsOn: uninstall:
- name: cert-manager keepHistory: false
namespace: cert-manager
values: values:
controller: controller:
extraEnvs: extraEnvs:
@@ -32,8 +32,7 @@ spec:
value: "${TIMEZONE}" value: "${TIMEZONE}"
service: service:
annotations: annotations:
metallb.universe.tf/loadBalancerIPs: |- metallb.universe.tf/loadBalancerIPs: "${METALLB_INGRESS_ADDR}"
${METALLB_INGRESS_ADDR}
externalTrafficPolicy: Local externalTrafficPolicy: Local
publishService: publishService:
enabled: true enabled: true
@@ -43,8 +42,7 @@ spec:
client-header-timeout: 120 client-header-timeout: 120
client-body-buffer-size: "100M" client-body-buffer-size: "100M"
client-body-timeout: 120 client-body-timeout: 120
custom-http-errors: |- custom-http-errors: 400,401,403,404,500,502,503,504
401,403,404,500,501,502,503
enable-brotli: "true" enable-brotli: "true"
forwarded-for-header: "CF-Connecting-IP" forwarded-for-header: "CF-Connecting-IP"
hsts-max-age: "31449600" hsts-max-age: "31449600"
@@ -53,10 +51,21 @@ spec:
proxy-body-size: "100M" proxy-body-size: "100M"
ssl-protocols: "TLSv1.3 TLSv1.2" ssl-protocols: "TLSv1.3 TLSv1.2"
use-forwarded-headers: "true" use-forwarded-headers: "true"
log-format-escape-json: "true"
log-format-upstream: >-
{"time": "$time_iso8601", "remote_addr": "$proxy_protocol_addr",
"x_forwarded_for": "$proxy_add_x_forwarded_for", "request_id": "$req_id",
"remote_user": "$remote_user", "bytes_sent": $bytes_sent, "request_time": $request_time,
"status": $status, "vhost": "$host", "request_proto": "$server_protocol",
"path": "$uri", "request_query": "$args", "request_length": $request_length,
"duration": $request_time,"method": "$request_method", "http_referrer": "$http_referer",
"http_user_agent": "$http_user_agent"}
metrics: metrics:
enabled: false enabled: false
extraArgs:
default-ssl-certificate: "networking/${SECRET_DOMAIN/./-}-production-tls"
podAnnotations: podAnnotations:
configmap.reloader.stakater.com/reload: "cloudflare-networks" configmap.reloader.stakater.com/reload: cloudflare-networks
resources: resources:
requests: requests:
cpu: 10m cpu: 10m
@@ -0,0 +1,30 @@
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: "${SECRET_DOMAIN/./-}-production"
namespace: networking
spec:
secretName: "${SECRET_DOMAIN/./-}-production-tls"
issuerRef:
name: letsencrypt-production
kind: ClusterIssuer
commonName: "${SECRET_DOMAIN}"
dnsNames:
- "${SECRET_DOMAIN}"
- "*.${SECRET_DOMAIN}"
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: "${SECRET_DOMAIN/./-}-staging"
namespace: networking
spec:
secretName: "${SECRET_DOMAIN/./-}-staging-tls"
issuerRef:
name: letsencrypt-staging
kind: ClusterIssuer
commonName: "${SECRET_DOMAIN}"
dnsNames:
- "${SECRET_DOMAIN}"
- "*.${SECRET_DOMAIN}"
@@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./certificates.yaml
@@ -1,6 +1,26 @@
--- ---
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization kind: Kustomization
metadata:
name: cluster-apps-ingress-nginx-certificates
namespace: flux-system
labels:
substitution.flux.home.arpa/enabled: "true"
spec:
dependsOn:
- name: cluster-apps-cert-manager-issuers
path: ./kubernetes/apps/networking/ingress-nginx/certificates
prune: true
sourceRef:
kind: GitRepository
name: home-kubernetes
wait: true
interval: 30m
retryInterval: 1m
timeout: 3m
---
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata: metadata:
name: cluster-apps-ingress-nginx name: cluster-apps-ingress-nginx
namespace: flux-system namespace: flux-system
@@ -8,9 +28,7 @@ metadata:
substitution.flux.home.arpa/enabled: "true" substitution.flux.home.arpa/enabled: "true"
spec: spec:
dependsOn: dependsOn:
- name: cluster-apps-cert-manager - name: cluster-apps-ingress-nginx-certificates
- name: cluster-apps-cert-manager-issuers
- name: cluster-apps-metallb
- name: cluster-apps-metallb-config - name: cluster-apps-metallb-config
path: ./kubernetes/apps/networking/ingress-nginx/app path: ./kubernetes/apps/networking/ingress-nginx/app
prune: true prune: true
@@ -14,16 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: k8s-gateway name: k8s-gateway
namespace: flux-system namespace: flux-system
interval: 15m maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 5 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 5 retries: 3
dependsOn: uninstall:
- name: metallb keepHistory: false
values: values:
fullnameOverride: k8s-gateway fullnameOverride: k8s-gateway
domain: "${SECRET_DOMAIN}" domain: "${SECRET_DOMAIN}"
@@ -14,13 +14,17 @@ spec:
kind: HelmRepository kind: HelmRepository
name: metallb name: metallb
namespace: flux-system namespace: flux-system
maxHistory: 3
install: install:
createNamespace: true createNamespace: true
remediation: remediation:
retries: 3 retries: 3
upgrade: upgrade:
cleanupOnFail: true
remediation: remediation:
retries: 3 retries: 3
uninstall:
keepHistory: false
values: values:
crds: crds:
enabled: true enabled: true