Add Let's Encrypt RFC2136/TSIG ClusterIssuers (#327)

Publicly-trusted wildcard certs via Let's Encrypt DNS-01, solved over RFC2136/TSIG against our own BIND. A one-time CNAME self-delegates `_acme-challenge.unkin.net` into the `acme.unkin.net` zone served by bind-external; cert-manager writes the challenge TXT there. No GCP/clouddns and no Vault secret involved. The existing `vault-issuer` (internal PKI) is untouched.

- Add ClusterIssuers `letsencrypt` (prod) and `letsencrypt-staging`, both using a dns01 rfc2136 solver: nameserver `198.18.199.53:53`, key `certmanager`, HMACSHA256, `tsigSecretSecretRef` -> reflected Secret `certmanager-tsig` key `secret`.
- Whitelist `cert-manager.io ClusterIssuer` in the platform AppProject.

Depends on #329 (bind-external: the acme.unkin.net zone, the certmanager TSIG key reflected into cert-manager, and the 198.18.199.53 nameserver) and on the one-time Google Cloud DNS delegation + NAT of the public IP :53 to 198.18.199.53. Earlier clouddns/Vault commits on this branch are reverted.

---------

Co-authored-by: Ben Vincent <neotheo@gmail.com>
Reviewed-on: #327
Co-authored-by: Ben Vincent <ben@unkin.net>
Co-committed-by: Ben Vincent <ben@unkin.net>
This commit was merged in pull request #327.
This commit is contained in:
2026-08-02 17:47:39 +10:00
committed by BenVincent
parent 8d70149467
commit c0c75d1bbb
4 changed files with 44 additions and 0 deletions
@@ -0,0 +1,20 @@
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
spec:
acme:
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: admin@unkin.net
privateKeySecretRef:
name: letsencrypt-staging-account-key
solvers:
- dns01:
rfc2136:
nameserver: "198.18.199.53:53"
tsigKeyName: certmanager
tsigAlgorithm: HMACSHA256
tsigSecretSecretRef:
name: certmanager-tsig
key: secret
@@ -0,0 +1,20 @@
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: admin@unkin.net
privateKeySecretRef:
name: letsencrypt-account-key
solvers:
- dns01:
rfc2136:
nameserver: "198.18.199.53:53"
tsigKeyName: certmanager
tsigAlgorithm: HMACSHA256
tsigSecretSecretRef:
name: certmanager-tsig
key: secret
@@ -8,3 +8,5 @@ resources:
- clusterrole.yaml
- clusterrolebinding.yaml
- vmservicescrape.yaml
- clusterissuer_letsencrypt.yaml
- clusterissuer_letsencrypt-staging.yaml
+2
View File
@@ -84,6 +84,8 @@ spec:
kind: Certificate
- group: 'cert-manager.io'
kind: Issuer
- group: 'cert-manager.io'
kind: ClusterIssuer
- group: 'gateway.networking.k8s.io'
kind: GatewayClass
- group: 'networking.k8s.io'