管理憑證

選取說明文件版本:

本頁面說明如何使用自訂憑證簽發機構,管理 Kubernetes 型 AlloyDB Omni 資料庫叢集上的傳輸層安全標準 (TLS) 憑證。

根據預設,AlloyDB Omni Kubernetes 運算子會使用 cert-manager 為每個資料庫叢集佈建一組 TLS 憑證。除了資料庫伺服器憑證,運算子也會為控制層元件建立憑證,確保內部連線安全無虞。根據預設,每個憑證都會由作業人員管理的核發者簽署。

從 AlloyDB Omni 運算子 1.6.0 版開始,如果您希望所有憑證 (包括控制平面元件的憑證) 都鏈回您信任的根 CA,可以設定運算子使用您選擇的簽發者。這樣一來,您就能將所有憑證鏈結至自己的公用金鑰基礎架構 (PKI),包括用於控制平面功能的憑證,而不必公開每個內部實體的實作詳細資料。

事前準備

如要設定憑證簽發者,您必須先建立與要簽署憑證的 CA 相關聯的 ClusterIssuerIssuer 類型 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:必須是 IssuerClusterIssuer

  • CONTROL_PLANE_ISSUER_NAME:為內部元件佈建控制平面憑證的 cert-manager 簽發者名稱。

  • CONTROL_PLANE_ISSUER_KIND:必須是 IssuerClusterIssuer

操作人員證照

設定運算子憑證的 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:必須是 IssuerClusterIssuer

使用 Operator Lifecycle Manager 進行設定

如果您使用 Operator Lifecycle Manager (OLM) 安裝 AlloyDB Omni 運算子,可以修改 Subscription 資源的 spec.config.env 欄位,設定運算子 Deployment 的 CERT_MANAGER_ISSUER_NAMECERT_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:必須是 IssuerClusterIssuer

PgBouncer 憑證

如要支援自訂簽發者,PgBouncer 控制器可以檢查 DBCluster spec.primarySpec.tls.dataPlaneCertIssuer 欄位,並使用該欄位佈建 PgBouncer 憑證。這可確保 PgBouncer 使用的憑證與資料庫來自同一個 CA。

驗證

如要確認運算子 Deployment 運作正常,且已設定 CERT_MANAGER_ISSUER_NAMECERT_MANAGER_ISSUER_KIND 環境變數,請執行下列指令:

kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml

如要確認使用的簽發者正確無誤,請檢查 Certificate 物件,如下所示:

kubectl get certificate -n NAMESPACE

檢查每個憑證輸出內容中的 issuerRef 欄位,確認是否與您的自訂簽發者相符。