協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Kubernetes 憑證保護工作負載
Kubernetes Certificates API 會自動佈建 X.509 CertificateSigningRequest
(CSR) 資源來請求受指示的簽署者簽署憑證。您的請求在簽署之前獲得核准或拒絕。Kubernetes 支援具有明確定義行為的內建簽署者和自訂簽署者。透過這種方式,客戶可以預測其 CSR 會發生什麼情況。如需憑證簽署的相關資訊,請參閱 Certificate Signing Requests
其中一個內建簽署者是 kubernetes.io/legacy-unknown
。CSR 資源的 v1beta1
API 接受此傳統未知的簽署者。不過,CSR 的穩定 v1
API 不允許 signerName
設定為 kubernetes.io/legacy-unknown
。
如果您想使用 Amazon EKS CA 在叢集上產生憑證,則必須使用自訂簽署者。若要使用 CSR v1
API 版本並產生新憑證,您必須遷移任何現有清單檔案和 API 用戶端。使用現有 v1beta1
API 建立的現有憑證有效且可正常運作,直到憑證過期為止。這包含下列項目:
-
信任分佈:無。Kubernetes 叢集中沒有此簽署者的標準信任或分佈。
-
允許的主體:任何
-
允許的 x509 延伸項目:接受 subjectAltName 和金鑰使用方式延伸項目,並放棄其他延伸項目
-
允許的金鑰使用方式:不得包括 [「金鑰加密」、「數位簽章」、「伺服器身分驗證」] 以外的用法
注意
不支援用戶端憑證簽署。
-
到期/憑證生命週期:1 年 (預設和最長)
-
允許/不允許 CA 位元:不允許
使用 signerName 產生 CSR 的範例
以下步驟將展示如何使用 signerName: beta.eks.amazonaws.com/app-serving
為 DNS 名稱 myserver.default.svc
產生服務憑證。將此作為您自己環境的指南。
-
執行
openssl genrsa -out myserver.key 2048
命令以產生 RSA 私有金鑰。openssl genrsa -out myserver.key 2048
-
執行下列命令來產生憑證請求。
openssl req -new -key myserver.key -out myserver.csr -subj "/CN=myserver.default.svc"
-
產生 CSR 請求的
base64
值,並將其存放於變數中以供稍後步驟中使用。base_64=$(cat myserver.csr | base64 -w 0 | tr -d " ")
-
執行下列命令以建立名為
mycsr.yaml
的檔案。在下列範例中,beta.eks.amazonaws.com/app-serving
是signerName
。cat >mycsr.yaml <<EOF apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: myserver spec: request: $base_64 signerName: beta.eks.amazonaws.com/app-serving usages: - digital signature - key encipherment - server auth EOF
-
提交 CSR。
kubectl apply -f mycsr.yaml
-
核准服務憑證。
kubectl certificate approve myserver
-
驗證憑證已核發。
kubectl get csr myserver
範例輸出如下。
NAME AGE SIGNERNAME REQUESTOR CONDITION myserver 3m20s beta.eks.amazonaws.com/app-serving kubernetes-admin Approved,Issued
-
匯出已核發的憑證。
kubectl get csr myserver -o jsonpath='{.status.certificate}'| base64 -d > myserver.crt