根據預設,AlloyDB Omni Kubernetes 運算子會使用 cert-manager 為每個資料庫叢集佈建一組 TLS 憑證。除了資料庫伺服器憑證,運算子也會為控制層元件建立憑證,確保內部連線安全無虞。根據預設,每個憑證都會由作業人員管理的核發者簽署。
從 AlloyDB Omni 運算子 1.6.0 版開始,如果您希望所有憑證 (包括控制平面元件的憑證) 都鏈回您信任的根 CA,可以設定運算子使用您選擇的簽發者。這樣一來,您就能將所有憑證鏈結至自己的公用金鑰基礎架構 (PKI),包括用於控制平面功能的憑證,而不必公開每個內部實體的實作詳細資料。
事前準備
如要設定憑證簽發者,您必須先建立與要簽署憑證的 CA 相關聯的 ClusterIssuer 或 Issuer 類型 cert-manager 簽發者。AlloyDB Omni 運算子會在建立憑證時參照這個簽發者。
設定自訂簽發者
您可以為資料庫叢集、AlloyDB Omni 運算子和 PgBouncer 設定自訂憑證簽發機構。
資料庫叢集憑證
如要使用這項功能,相關資料庫叢集資訊清單中的 controlPlaneAgentsVersion 必須為 1.6.0 以上版本。
有兩個資料庫叢集規格欄位可設定憑證簽發機構:
spec.primarySpec.dataPlaneCertIssuer:參照提供資料平面憑證的 cert-manager 簽發者。資料庫用戶端可信任簽發者 CA,以便在 TLS 連線期間驗證資料庫。spec.primarySpec.controlPlaneAgentsCertIssuer:參照提供控制平面憑證的 cert-manager 簽發者。這些憑證用於內部連線。
spec:
primarySpec:
tls:
dataPlaneCertIssuer:
name: DATA_PLANE_ISSUER_NAME
kind: DATA_PLANE_ISSUER_KIND
controlPlaneAgentsCertIssuer:
name: CONTROL_PLANE_ISSUER_NAME
kind: CONTROL_PLANE_ISSUER_KIND
更改下列內容:
DATA_PLANE_ISSUER_NAME:提供資料平面憑證的 cert-manager 簽發者名稱,例如資料庫伺服器。DATA_PLANE_ISSUER_KIND:必須是Issuer或ClusterIssuer。CONTROL_PLANE_ISSUER_NAME:為內部元件佈建控制平面憑證的 cert-manager 簽發者名稱。CONTROL_PLANE_ISSUER_KIND:必須是Issuer或ClusterIssuer。
操作人員證照
設定運算子憑證的 cert-manager 簽發者的步驟,取決於安裝 AlloyDB Omni 的方法。
使用 Helm 進行設定
如果是首次安裝 AlloyDB Omni 運算子 1.6.0 以上版本,請使用 Helm 安裝並設定適當的值。前提是您遵循安裝指示。
helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
--create-namespace \
--namespace alloydb-omni-system \
--set operatorCertIssuer.certManagerIssuerName="OPERATOR_CERT_ISSUER_NAME" \
--set operatorCertIssuer.certManagerIssuerKind="OPERATOR_CERT_ISSUER_KIND" \
--atomic \
--timeout 5m
如果您已安裝運算子,且需要設定憑證簽發者,請使用 helm upgrade 設定適當的值:
helm upgrade alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
--create-namespace \
--namespace alloydb-omni-system \
--set operatorCertIssuer.certManagerIssuerName="OPERATOR_CERT_ISSUER_NAME" \
--set operatorCertIssuer.certManagerIssuerKind="OPERATOR_CERT_ISSUER_KIND" \
--atomic \
--timeout 5m
更改下列內容:
OPERATOR_CERT_ISSUER_NAME:提供用於內部連線的運算子憑證的 cert-manager 簽發者名稱。OPERATOR_CERT_ISSUER_KIND:必須是Issuer或ClusterIssuer。
使用 Operator Lifecycle Manager 進行設定
如果您使用 Operator Lifecycle Manager (OLM) 安裝 AlloyDB Omni 運算子,可以修改 Subscription 資源的 spec.config.env 欄位,設定運算子 Deployment 的 CERT_MANAGER_ISSUER_NAME 和 CERT_MANAGER_ISSUER_KIND 環境變數。
spec:
config:
env:
- name: CERT_MANAGER_ISSUER_NAME
value: OPERATOR_CERT_ISSUER_NAME
- name: CERT_MANAGER_ISSUER_KIND
value: OPERATOR_CERT_ISSUER_KIND
更改下列內容:
OPERATOR_CERT_ISSUER_NAME:提供用於內部連線的運算子憑證的 cert-manager 簽發者名稱。OPERATOR_CERT_ISSUER_KIND:必須是Issuer或ClusterIssuer。
PgBouncer 憑證
如要支援自訂簽發者,PgBouncer 控制器可以檢查 DBCluster spec.primarySpec.tls.dataPlaneCertIssuer 欄位,並使用該欄位佈建 PgBouncer 憑證。這可確保 PgBouncer 使用的憑證與資料庫來自同一個 CA。
驗證
如要確認運算子 Deployment 運作正常,且已設定 CERT_MANAGER_ISSUER_NAME 和 CERT_MANAGER_ISSUER_KIND 環境變數,請執行下列指令:
kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml
如要確認使用的簽發者正確無誤,請檢查 Certificate 物件,如下所示:
kubectl get certificate -n NAMESPACE
檢查每個憑證輸出內容中的 issuerRef 欄位,確認是否與您的自訂簽發者相符。