如果您想使用自己的文件,或者未使用 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 证书,请按照以下高级步骤操作:
如果您未完成这些高级步骤,AlloyDB Omni 会在安装前自动配置自己的自签名 SSL 证书。
数据库集群
如需为数据库集群配置 SSL 证书,请按以下步骤操作:
创建一个 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 | base64BASE64_SERVER_KEY:私有服务器密钥的 base64 编码字符串。BASE64_ROOT_CERTIFICATE:自签名根证书的 base64 编码字符串。
在
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 证书,请按以下步骤操作:
创建一个 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 | base64BASE64_SERVER_KEY:服务器密钥的 base64 编码字符串。BASE64_ROOT_CERTIFICATE:自签名根证书的 base64 编码字符串。根证书必须与对数据库集群叶证书进行签名的根证书一致。叶证书必须包含公用名 (CN)alloydbpgbouncer。
在
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。