使用 values.yaml
安裝 Cert-Manager
Cert-Manager 是一個用於管理 TLS/SSL 證書的 Kubernetes 控制平臺。它可以幫助我們自動獲得和更新憑證,免去手動管理憑證的麻煩。
values.yaml
檔案首先,我們需要在相同的目錄下建立一個名為 values.yaml
的檔案。內容如下:
ingressShim:
defaultIssuerName: letsencrypt-prod
defaultIssuerKind: ClusterIssuer
這個檔案會設定 Cert-Manager 的環境變數。
然後,我們需要安裝 Cert-Manager 的 Helm Repository:
helm repo add jetstack https://charts.jetstack.io
這個命令會新增 Cert-Manager 的 Helm Repository。
接下來,我們可以使用以下命令安裝 Cert-Manager:
helm install cert-manager jetstack/cert-manager -f values.yaml --set installCRDs=true
這個命令會載入 Cert-Manager 的 Helm Chart,並安裝它到您的 Kubernetes 集群中。
重新啟動 Pod 以便取得更新的配置:
kubectl rollout restart deployment cert-manager
接著,使用以下命令檢查 Cert-Manager 的狀態:
kubectl get deploy cert-manager -o yaml
Cluster Issuer 是一個用於發行憑證的 Kubernetes 物件。它可以幫助我們自動發行憑證,免去手動管理憑證的麻煩。
cluster-issuer.yaml
檔案首先,我們需要在相同的目錄下建立一個名為 cluster-issuer.yaml
的檔案。內容如下:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: xxx@example.com
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- selector:
dnsZones:
- "example.com"
dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token-secret
key: api-token
這個檔案會設定 Cluster Issuer 的環境變數。
然後,我們可以使用以下命令申請 Cluster Issuer:
kubectl apply -f cluster-issuer.yaml
這個命令會創建一個名為 letsencrypt-production
的 Cluster Issuer。
接著,我們可以使用以下命令檢查 Cluster Issuer 是否已經成功建立:
kubectl get clusterissuers -o yaml
這個命令會顯示所有 Cluster Issuer 的清單,包括我們剛剛創建的 letsencrypt-production
。
注意:
your_email_address
成您的實際電子郵箱地址。您現在已經成功安裝了 Cert-Manager!下一步將是啟動和檢查 External-DNS 並更新 Cloudflare 上的 DNS 記錄。