跳到主要内容

使用 TLS 与 Messaging Topology Kubernetes Operator

如果由 Messaging Topology Operator 管理的 RabbitmqClusters 配置为通过 HTTPS 提供 HTTP API 和管理 UI,则 Topology Operator 必须信任证书颁发机构 (CA),该 CA 签署了 RabbitmqClusters 使用的 TLS 证书。

一个或多个受信任的证书必须作为卷挂载到 Topology Operator Pod 的信任存储区,该存储区位于 /etc/ssl/certs/

先决条件

本指南假定您具备以下条件

  1. RabbitMQ Cluster OperatorMessaging Topology Operator 已安装在 Kubernetes 集群上
  2. 已签名的 TLS 证书和私钥,供 RabbitmqCluster 用于提供流量
  3. CA 的 TLS 证书,该 CA 签署了服务器证书和密钥,其路径导出为 $CA_PATH

步骤

  1. 按照 Cluster Operator 示例中的文档示例,创建一个通过 TLS 提供流量的 RabbitmqCluster。
  2. 创建一个 Kubernetes Secret,其中包含签署 RabbitMQ 服务器证书的 CA 的证书。

例如

kubectl -n rabbitmq-system create secret generic rabbitmq-ca --from-file=ca.crt=$CA_PATH
  1. 将此 Secret 挂载到 Messaging Topology Operator Pod 的信任存储区中。通过编辑 Deployment 清单或通过 kubectl 应用补丁来执行此操作
kubectl -n rabbitmq-system patch deployment messaging-topology-operator --patch "spec:
template:
spec:
containers:
- name: manager
volumeMounts:
- mountPath: /etc/ssl/certs/rabbitmq-ca.crt
name: rabbitmq-ca
subPath: ca.crt
volumes:
- name: rabbitmq-ca
secret:
defaultMode: 420
secretName: rabbitmq-ca"

Topology Operator Pod 将被重新创建,现在将信任由新挂载的 CA 签署的证书。Pod 与 RabbitmqCluster 执行的任何通信都将通过 HTTPS 完成。

局限性

  • Messaging Topology Operator 将无法管理未按上述方式挂载其 CA 的 RabbitmqClusters:此类节点将不接受通过 HTTPS 的客户端连接
  • TLS 已停用的 RabbitmqClusters(即 .spec.tls 下未配置任何内容)将始终通过 HTTP 进行管理
© . All rights reserved.