Instalarea unui certificat SSL ACME în Kubernetes este acum un proces standardizat și flexibil datorită instrumentelor mature precum cert-manager și suportului larg din partea CA-urilor comerciale. Indiferent dacă rulați sarcini de lucru de producție în spatele NGINX Ingress, Traefik sau un alt gateway, puteți automatiza HTTPS securizat cu control deplin.

Acest ghid vă va arăta cum să instalați un certificat SSL ACME în Kubernetes utilizând cert-manager. Vom acoperi instalarea, configurarea unui emitent cu External Account Binding (EAB) și emiterea de certificate pentru a vă proteja serviciile de intrare.
De ce veți avea nevoie
Înainte de a vă scufunda, asigurați-vă că:
- Aveți un cluster Kubernetes funcțional (recomandat v1.23+)
kubectleste configurat și funcționează- Aveți acces la controlerul dvs. de intrare (de exemplu, NGINX, Traefik)
- Domeniul dvs. indică IP-ul public al controlerului dvs. de intrare
- Aveți acreditări EAB de la AC compatibilă cu ACME:
- ACME Directory URL (de exemplu, https://acme.example.com/v2/DV)
- Identificator cheie EAB (KID)
- Cheie EAB HMAC
Notă: https://acme.example.com/v2/DV este utilizat pe parcursul acestui ghid ca URL pentru directorul ACME. Înlocuiți-l cu punctul final real de la autoritatea dvs. de certificare.
Pasul 1 – Instalarea cert-manager
cert-manager este cel mai utilizat client ACME nativ Kubernetes. Acesta rulează ca un controler care gestionează emiterea și reînnoirea certificatelor.
Instalați prin Helm (preferabil pentru producție):
kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.14.4 \
--set installCRDs=true
Așteptați câteva secunde și confirmați că toate podurile sunt în funcțiune:
kubectl get pods -n cert-manager
Ar trebui să vedeți trei poduri: cert-manager, cert-manager-webhook și cert-manager-cainjector.
Pasul 2 – Crearea unui secret Kubernetes pentru acreditările EAB
Creați un secret Kubernetes pentru a vă stoca cheia EAB în siguranță:
kubectl create secret generic acme-eab-secret \
--namespace cert-manager \
--from-literal=eab-kid="YOUR_EAB_KID" \
--from-literal=eab-hmac-key="YOUR_EAB_HMAC_KEY"
Înlocuiți cu acreditările dvs. reale. Evitați copy-paste whitespace.
Pasul 3 – Definirea unui ClusterIssuer sau Issuer
Acum, creați o resursă ClusterIssuer (pentru toate spațiile de nume) sau Issuer (un singur spațiu de nume) care conectează cert-manager la ACME CA utilizând acreditările EAB.
Iată un exemplu de ClusterIssuer YAML:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: acme-issuer
spec:
acme:
server: https://your.acme-server.com/v2/DV
email: [email protected]
privateKeySecretRef:
name: acme-private-key
externalAccountBinding:
keyID: YOUR_EAB_KID
keySecretRef:
name: acme-eab-secret
key: eab-hmac-key
solvers:
- http01:
ingress:
class: nginx
Aplicați-l:
kubectl apply -f clusterissuer.yaml
Înlocuiți ingress.class: nginx cu traefik, nginx-internal sau oricare ar fi clasa dumneavoastră de ingress. Puteți găsi acest lucru în documentația controlerului ingress.
Pasul 4 – Crearea unei resurse de certificat
Odată ce ClusterIssuer-ul este gata, creați o resursă de certificat care să indice cert-manager-ului ce domeniu trebuie securizat. Iată un exemplu:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-ssl-cert
namespace: default
spec:
secretName: my-ssl-cert-tls
issuerRef:
name: acme-issuer
kind: ClusterIssuer
commonName: yourdomain.com
dnsNames:
- yourdomain.com
- www.yourdomain.com
Aplicați-l:
kubectl apply -f certificate.yaml
cert-manager va utiliza emitentul, va rezolva provocarea prin ingress și va stoca certificatul emis ca secret TLS Kubernetes.
Pasul 5 – Faceți referire la certificat în Ingress
Actualizați regula de intrare pentru a utiliza certificatul generat:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
cert-manager.io/cluster-issuer: acme-issuer
spec:
tls:
- hosts:
- yourdomain.com
- www.yourdomain.com
secretName: my-ssl-cert-tls
rules:
- host: yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: your-service
port:
number: 80
Aplicați-l:
kubectl apply -f ingress.yaml
Odată ce cert-manager detectează adnotarea, va începe să rezolve provocarea ACME și vă va elibera certificatul.
Pasul 6 – Verificarea certificatului și reînnoirea automată
Pentru a verifica dacă totul a funcționat:
kubectl descrie certificatul meu-ssl-cert
Căutați Certificatul emis cu succes.
Pentru a verifica configurația de reînnoire, executați:
kubectl get certificaterequests
cert-manager gestionează automat reînnoirea cu ~30 de zile înainte de expirare. Puteți simula o reînnoire astfel:
kubectl cert-manager renew my-ssl-cert
Întrebări frecvente
Configurarea ACME SSL în Kubernetes poate părea un pic abstractă, mai ales atunci când jonglați cu controlorii de intrare, Secretele și înregistrările DNS. Mai jos, răspundem la câteva întrebări frecvente cu care se confruntă dezvoltatorii atunci când instalează certificate ACME într-un mediu Kubernetes, indiferent dacă utilizați cert-manager sau o configurare alternativă.
Pot folosi DNS-01 în loc de HTTP-01?
Da, cert-manager acceptă validarea DNS cu furnizori precum Cloudflare, AWS și Google Cloud DNS. Utilizați-l dacă nu expuneți portul 80.
Este cert-manager pregătit pentru producție?
Absolut. Acesta alimentează SSL pentru clustere Kubernetes mari în întreprinderi și cloud-uri publice.
Pot utiliza un certificat wildcard cu ACME în Kubernetes?
Da, dar certificatele wildcard necesită validarea DNS-01, care implică actualizarea înregistrărilor DNS în loc de utilizarea provocărilor HTTP. Confirmați că furnizorul dvs. DNS acceptă automatizarea (prin API) și configurați soluția dns01 în mod corespunzător în configurația cert-manager.
Concluzie
Acum știți cum să instalați un certificat SSL ACME în Kubernetes utilizând cert-manager și o autoritate de certificare compatibilă cu ACME. Această configurare este complet automatizată și scalabilă pentru mediile Kubernetes moderne. Obțineți HTTPS securizat, reînnoire automată și integrare perfectă cu Ingress, toate fără a vă părăsi clusterul.
Economisește 10% la certificatele SSL în momentul plasării comenzii!
Eliberare rapidă, criptare puternică, încredere în browser de 99,99%, suport dedicat și garanție de returnare a banilor în 25 de zile. Codul cuponului: SAVE10

