bg-tutorials

Cum să instalați un certificat SSL ACME în Kubernetes

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.

Instalarea ACME SSL pe Kubernetes

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+)
  • kubectl este 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

A detailed image of a dragon in flight

Autor cu experiență, specializat în certificate SSL. Transformă subiectele complexe despre securitatea cibernetică în conținut clar și captivant. Contribuie la îmbunătățirea securității digite prin narațiuni cu impact.