Kubernetes: cert-manager med FairSSL ACME
cert-manager är den inbyggda ACME-klienten för Kubernetes. Den körs som en controller i klustret, skapar TLS Secrets automatiskt och håller certifikaten förnyade via ARI. Med FairSSL som ACME-utfärdare använder vi External Account Binding (EAB) och Auto DNS, så att solvern inte behöver DNS API-nycklar.
Uppsättning
Guiden förutsätter att du redan har cert-manager installerat i klustret (Helm chart eller statiskt manifest). Om inte, följ cert-manager-installationen först. Använd v1.18 eller senare för ARI-stöd.
Steg 1: Skapa EAB-secret
Hämta EAB KID och HMAC-nyckeln från ACME-fliken i din FairSSL-kontrollpanel och skapa en Kubernetes
Secret i cert-manager-namespacet.
kubectl create secret generic fairssl-eab-secret \
--namespace cert-manager \
--from-literal=secret=DIN_EAB_HMAC Steg 2: Skapa ClusterIssuer
ClusterIssuer är tillgänglig från alla namespaces. Spara som fairssl-issuer.yaml och apply.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: fairssl-acme-issuer
spec:
acme:
email: acme-client@fairssl.dk
server: https://fairssl.dk/acme
privateKeySecretRef:
name: fairssl-acme-account-key
externalAccountBinding:
keyID: DIN_EAB_KID
keySecretRef:
name: fairssl-eab-secret
key: secret
solvers:
- http01:
ingress:
ingressClassName: nginx kubectl apply -f fairssl-issuer.yaml Steg 3: Konfigurera FairSSL Auto DNS
Se till att varje domän du beställer certifikat för har en CNAME-post för
_acme-challenge.<domän> till FairSSLs DNS-server i Auto DNS-menyn. Engångsuppsättning
per domän. Även om vi använder HTTP-01-solvern i Kubernetes ser Auto DNS till att förnyelsen fungerar
utan manuellt ingripande om Ingress-sökvägen tillfälligt skulle vara oåtkomlig.
Steg 4: Beställ ett certifikat
Skapa ett Certificate-objekt som refererar till ClusterIssuer. cert-manager skapar automatiskt en TLS Secret
med namnet i secretName, som dina Deployments och Ingresses kan använda.
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: www-exempel-se
namespace: default
spec:
secretName: www-exempel-se-tls
issuerRef:
name: fairssl-acme-issuer
kind: ClusterIssuer
commonName: www.exempel.se
dnsNames:
- www.exempel.se
- exempel.se Steg 5: Verifiera och felsök
kubectl describe clusterissuer fairssl-acme-issuer
kubectl get certificate www-exempel-se -n default
kubectl describe certificate www-exempel-se -n default
kubectl get challenges -A
När status visar Ready: True innehåller www-exempel-se-tls ditt certifikat och
privata nyckel och är redo att monteras av din Deployment eller refereras av en Ingress. Du kan
verifiera det publika certifikatet med FairSSLs SSL-skanner.
Vanliga frågor
Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.
ClusterIssuer (som vårt exempel) i stället för en namespace-bunden Issuer. ClusterIssuer är tillgänglig från alla namespaces i klustret.cert-manager). ClusterIssuer-objektet refererar secreten via keySecretRef.name. Om cert-manager inte hittar den, låt en cert-manager-admin verifiera placeringen med kubectl get secret -n cert-manager.kubectl describe certificate <namn> och kubectl get challenges -A. De vanligaste problemen är att ingress-controllern inte ruttar /.well-known/acme-challenge/ till cert-manager-solvern, eller att Auto DNS inte är korrekt konfigurerat för domänen.Redo att automatisera certifikat i Kubernetes?
Skapa ett gratis konto och utfärda ditt första certifikat på under 10 minuter.