Cert Manager在k8s中的使用
學習參考鏈接
https://www.bilibili.com/video/BV1qa411V7xs/?spm_id_from=333.337.search-card.all.click&vd_source=0372d3f32c3f19a6a2676a7529d6698a
https://tech.aufomm.com/how-to-use-cert-manager-on-kubernetes/
https://cert-manager.io/docs/installation/helm/
Cert Manager在k8s中的使用
helm repo add jetstack https://charts.jetstack.io
helm repo update
2. 從該頒發者請求證書
步驟一:定義一個證書頒發者(Issuer)
自簽名頒發者示例
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-issuer
namespace: default
spec:
selfSigned: {}
kubectl apply -f selfsigned-issuer.yaml
Let's Encrypt 頒發者示例
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-issuer
spec:
acme:
# Let's Encrypt 的服務器地址
server: https://acme-v02.api.letsencrypt.org/directory
email: your-email@example.com # 替換為你的郵箱,用于證書到期提醒
privateKeySecretRef:
name: letsencrypt-key
solvers:
- http01:
ingress:
class: nginx # 替換為你的 Ingress Controller 類型(如 nginx、traefik)
kubectl apply -f letsencrypt-issuer.yaml
CA 頒發者示例
申請到合法的CA證書,通過證書創建 secret
kubectl create secret tls -n cert-manager ca-key-pair --cert=ca.cert.pem --key=ca.key.pem
再使用這個 secret 來創建issuer, 這里創建一個cluster issuer, 因為想給全局使用
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: ca-issuer
spec:
ca:
secretName: ca-key-pair
步驟二:從該頒發者請求證書
直接生成證書
#my-certificate.yaml
apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: my-certificate namespace: default spec: secretName: my-certificate-secret issuerRef: name: letsencrypt-issuer kind: Issuer commonName: my-domain.com dnsNames: - my-domain.com - www.my-domain.com
kubectl apply -f my-certificate.yaml
證書將被存到對應的secret資源 my-certifaicate-secret 中
b. 在 ingress 中使用此證書
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress annotations: kubernetes.io/ingress.class: nginx spec: tls: - hosts: - my-domain.com secretName: my-certifaicate-secret rules: - host: your - domain.com http: paths: - path: / pathType: Prefix backend: service: name: your-service port: number: 80

浙公網安備 33010602011771號