配置 TLS 证书

选择文档版本:

如需创建 AlloyDB Omni 集群,您必须先配置传输层安全协议 (TLS) 通信。

如果您想使用自己的文件,或者未使用 Ansible,则只需配置 TLS 证书和密钥文件。Ansible 可以在安装阶段生成自签名证书。

如需详细了解 AlloyDB Omni 如何使用 TLS,请参阅 TLS 概览。

准备工作

在配置 TLS 证书之前,请满足以下要求:

  • 如需为 TLS 通信提供您自己的私有根密钥、根证书和已签名的服务器证书,请立即生成它们。如果您不想提供这些证书,Ansible 可以在安装期间为您生成自签名证书。

  • 为 AlloyDB Omni 数据库集群 (DBCLUSTER_NAME) 选择名称,例如 my-db-cluster。

为控制路径配置 SSL 证书

为 AlloyDB Omni 的控制路径配置 SSL 证书会在其组件之间建立零信任架构 (ZTA)。

如需了解详情,请参阅 TLS 概览。

如需为控制路径配置 SSL 证书,请按照以下某个选项的说明进行操作,具体取决于您的环境:

Ansible

Ansible 使用 playbook 自动管理和部署所需的 SSL 证书和密钥文件。

配置 Ansible playbook 后,它们会在 您创建集群时在安装阶段运行。playbook 会将提供的证书和密钥文件复制到每个 AlloyDB Omni 节点。

如果您配置基于 Ansible 的 SSL 配置,并且未提供证书和密钥文件,Ansible 会生成自己的自签名证书。

如需配置基于 Ansible 的 SSL 配置,请使用以下格式创建 Ansible playbook (inventory.yaml):

alloydbomni:
  vars:
    cluster_manager:
      name: DBCLUSTER_NAME
      ssl:
        enable: true
        key_file: "SERVER_CERTIFICATE_PATH"
        cert_file: "SERVER_KEY_PATH"
        ca_file: "ROOT_CERTIFICATE_PATH"
    etcd:
      setup: true
      ssl:
        enable: true
        key_file: "SERVER_CERTIFICATE_PATH"
        cert_file: "SERVER_KEY_PATH"
        ca_file: "ROOT_CERTIFICATE_PATH"

执行以下变量替换操作:

  • DBCLUSTER_NAME:AlloyDB Omni 数据库集群的名称,例如 my-db-cluster。
  • SERVER_CERTIFICATE_PATH:已签名的服务器证书的路径,例如 server.crt。
  • SERVER_KEY_PATH:私有服务器密钥的路径,例如 server.key。
  • ROOT_CERTIFICATE_PATH:自签名根证书的路径,例如 root.crt。

AlloyDB Omni 编排器 CLI

如需使用 AlloyDB Omni 编排器 CLI,您必须手动管理以下证书和密钥文件,并将其部署到每个数据库集群节点上具有固定文件名和固定位置的位置:

  • 已签名的服务器证书
  • 私有服务器密钥
  • 根证书

已签名的服务器证书和根证书必须在主题备用名称 (SAN) 中定义所有虚拟 IP、节点 IP 和主机名。

集群节点 目标路径 来源路径
控制 /etc/alloydbomni/orchestrator/ssl/DBCLUSTER_NAME/cluster-manager-tls.crt SERVER_CERTIFICATE_PATH
控制 /etc/alloydbomni/orchestrator/ssl/DBCLUSTER_NAME/cluster-manager-tls.key SERVER_KEY_PATH
控制 /etc/alloydbomni/orchestrator/ssl/DBCLUSTER_NAME/cluster-manager-ca.crt ROOT_CERTIFICATE_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/server-tls.crt SERVER_CERTIFICATE_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/server-tls.key SERVER_KEY_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/server-ca.crt ROOT_CERTIFICATE_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/etcd-tls.crt SERVER_CERTIFICATE_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/etcd-tls.key SERVER_KEY_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/etcd-ca.crt ROOT_CERTIFICATE_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/node-manager-tls.crt SERVER_CERTIFICATE_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/node-manager-tls.key SERVER_KEY_PATH
集群管理器 /etc/alloydbomni/cluster_manager/ssl/node-manager-ca.crt ROOT_CERTIFICATE_PATH
节点管理器 /etc/alloydbomni/node_manager/ssl/server-tls.crt SERVER_CERTIFICATE_PATH
节点管理器 /etc/alloydbomni/node_manager/ssl/server-tls.key SERVER_KEY_PATH
节点管理器 /etc/alloydbomni/node_manager/ssl/server-ca.crt ROOT_CERTIFICATE_PATH
etcd 管理器 /var/lib/etcd/ssl/etcd.crt SERVER_CERTIFICATE_PATH
etcd 管理器 /var/lib/etcd/ssl/etcd.key SERVER_KEY_PATH
etcd 管理器 /var/lib/etcd/ssl/rootca.crt ROOT_CERTIFICATE_PATH

执行以下变量替换操作:

  • DBCLUSTER_NAME:AlloyDB Omni 数据库集群的名称,例如 my-db-cluster。
  • SERVER_CERTIFICATE_PATH:已签名的服务器证书的路径,例如 server.crt。
  • SERVER_KEY_PATH:私有服务器密钥的路径,例如 server.key。
  • ROOT_CERTIFICATE_PATH:自签名根证书的路径,例如 root.crt。

为数据路径配置 SSL 证书

为 AlloyDB Omni 的数据路径配置 SSL 证书需要以下证书和密钥文件:

  • 已签名的服务器证书。
  • 私有服务器密钥。
  • 根证书,用于提供双向 TLS (mTLS) 支持。

已签名的服务器证书和根证书必须在主题备用名称 (SAN) 中定义所有虚拟 IP、节点 IP 和主机名。

如需查看数据路径上的组件列表,请参阅 TLS 概览。

如需为数据路径配置 SSL 证书,请按照以下高级步骤操作:

  1. 为数据库集群配置 SSL 证书。
  2. 为 PgBouncer 配置 SSL 证书。

如果您未完成这些高级步骤,AlloyDB Omni 会在安装前自动配置自己的自签名 SSL 证书。

数据库集群

如需为数据库集群配置 SSL 证书,请按以下步骤操作:

  1. 创建一个 YAML Secret 文件,其中包含为 数据路径配置 SSL 证书中所述的 base64 编码的证书和 密钥文件。

    Secret:
      metadata:
        name: DBCLUSTER_SECRET_NAME
      spec:
        type: Opaque
        data:
          tls.crt: BASE64_SERVER_CERTIFICATE
          tls.key: BASE64_SERVER_KEY
          ca.crt:  BASE64_ROOT_CERTIFICATE
    

    执行以下变量替换操作:

    • DBCLUSTER_SECRET_NAME:数据库集群 Secret 文件的名称,例如 my-db-cluster-secret。
    • BASE64_SERVER_CERTIFICATE:已签名的服务器证书的 base64 编码字符串,例如,您可以通过运行以下命令获取此编码字符串:

      cat SERVER_CERTIFICATE_PATH | base64
    • BASE64_SERVER_KEY:私有服务器密钥的 base64 编码字符串。

    • BASE64_ROOT_CERTIFICATE:自签名根证书的 base64 编码字符串。

  2. 在 DBCluster 规范中添加对新创建的 Secret 的引用。

    DBCluster:
      metadata:
        name: DBCLUSTER_NAME
      spec:
        databaseVersion: 18.1.0
        mode: ""
        primarySpec:
          port: PG_PORT
          adminUser:
            passwordRef:
              name: db-pw-DBCLUSTER_NAME
        tls:
          certSecret:
            name: "DBCLUSTER_SECRET_NAME"
    

    执行以下变量替换操作:

    • DBCLUSTER_NAME:AlloyDB Omni 数据库集群的名称,例如 my-db-cluster。
    • PG_PORT:托管 PostgreSQL 的端口号,例如 5432。
    • DBCLUSTER_SECRET_NAME:数据库集群 Secret 资源的名称,例如 my-db-cluster-secret。

PgBouncer

如需为 PgBouncer 配置 SSL 证书,请按以下步骤操作:

  1. 创建一个 YAML Secret 文件,其中包含为 数据路径配置 SSL 证书中所述的 base64 编码的证书和 密钥文件。

    Secret:
      metadata:
        name: PGBOUNCER_SECRET_NAME
      spec:
        type: Opaque
        data:
          tls.crt: BASE64_SERVER_CERTIFICATE
          tls.key: BASE64_SERVER_KEY
          ca.crt:  BASE64_ROOT_CERTIFICATE
    

    执行以下变量替换操作:

    • PGBOUNCER_SECRET_NAME:PgBouncer Secret 文件的名称,例如 db-tls-secret。
    • BASE64_SERVER_CERTIFICATE:已签名的服务器证书的 base64 编码字符串,例如,您可以通过运行以下命令获取此编码字符串:

      cat SERVER_CERTIFICATE_PATH | base64
    • BASE64_SERVER_KEY:服务器密钥的 base64 编码字符串。

    • BASE64_ROOT_CERTIFICATE:自签名根证书的 base64 编码字符串。根证书必须与对数据库集群叶证书进行签名的根证书一致。叶证书必须包含公用名 (CN) alloydbpgbouncer。

  2. 在 PgBouncer 规范中添加对您创建的 Secret 的引用。

    PgBouncer:
      metadata:
        name: PGBOUNCER_NAME
      spec:
        dbClusterRef: DBCLUSTER_NAME
        serverTLS:
          certSecret:
            name: "PGBOUNCER_SECRET_NAME"
    

    执行以下变量替换操作:

    • PGBOUNCER_NAME:此 PgBouncer 规范文件的名称。例如 my-pgbouncer-spec。
    • DBCLUSTER_NAME:AlloyDB Omni 数据库集群的名称,例如 my-db-cluster。
    • PGBOUNCER_SECRET_NAME:新创建的 PgBouncer Secret 资源的名称,例如 db-tls-secret。

后续步骤