本页内容
扩展 TLS 分析
总结 本主题介绍如何在由 Kubernetes 编排的环境中为瞻博网络®云原生 Contrail 网络 (CN2) 23.2 及更高版本的分析组件启用 TLS 证书。
概述
从 23.2 版开始,可以为 CN2 中的分析组件启用 TLS 证书。TLS 是一种安全协议,用于证书交换、相互身份验证和协商密码,以保护流免遭潜在的篡改和窃听。
证书是用于启动 CN2 的部署的一部分。在 Kubernetes 中,所有证书都会转换为密钥。默认情况下,瞻博网络 ContrailCertificateManager
CRD 中自动生成 Contrail 控制平面和 vRouter 的证书和密钥。
Helm 用于安装 TLS 分析组件。安装组件时,证书管理器会自动创建每个分析组件所需的证书和密钥。创建证书(密钥)后,每个组件都有在其自己的 deployment.yaml
文件中定义密钥名称,该文件在启动 Pod 时提取证书。
在分析组件上启用 TLS
以下部分介绍如何在 CN2 和第三方分析组件上启用 TLS。
先决条件
要使用此功能,必须安装以下内容:
-
Kubernetes 群集
-
CN2 23.2 或更高版本
-
Kubernetes 的 Helm 3.0 或更高版本,需要安装分析组件。有关更多信息,请参阅 Helm 网站。
在 CN2 分析组件上启用 TLS
默认情况下,在 Helm 安装期间,CN2 组件上会自动启用 TLS。使用 Helm 安装分析组件时,证书管理器会创建每个 CN2 组件所需的证书和密钥。然后,该密钥会添加到组件的 deployment.yaml
文件中,如以下示例所示:
-
收集器:收集器是从各种来源收集数据并将其转换为易于分析的格式的组件。收集器可以将转换应用于数据,例如过滤或聚合。
以下是启用 TLS 的收集器示例:
volumeMounts: - name: tls mountPath: /etc/config/tls volumes: - name: tls secret: secretName: collector-tls
-
仪表板:仪表板组件是用于提供 CN2 GUI 的后端服务。
以下是启用 TLS 的仪表板的示例:
volumeMounts: - name: tls mountPath: /etc/config/tls volumes: - name: tls secret: secretName: dashboard-tls
-
门户:门户分析组件能够以仪表板样式可视化方式,对跨单个门户聚合的流量模式进行高级概述。这些数据可用于分析门户流量和应用速率。
以下是启用 TLS 的门户分析示例:
volumeMounts: - name: tls mountPath: /etc/config/tls volumes: - name: tls secret: secretName: portal-tls
-
内省:内省是一种诊断工具,可让您浏览 CN2 组件的内部状态。
以下是启用 TLS 的内省示例:
volumeMounts: - name: tls mountPath: /etc/config/tls volumes: - name: tls secret: secretName: introspect-tls
-
-
多群集代理:多群集用于处理与多个群集和 RBAC 管理相关的请求。
以下是启用 TLS 的多群集代理的示例:
volumeMounts: - name: tls mountPath: /etc/config/tls volumes: - name: tls secret: secretName: multiclusterproxy-tls
-
Contrail 配置导出器:Config 导出器用于获取与部署和虚拟机接口相关的指标。
以下是启用 TLS 的 Contrail 配置导出器的示例:
volumeMounts: - name: tls mountPath: /etc/config/tls volumes: - name: tls secret: secretName: contrailconfigexporter-tls
对第三方分析组件启用 TLS
您还可以针对第三方分析组件启用 TLS。证书管理器会创建证书和密钥,但这些组件需要其他配置来启用 TLS,如以下示例所示:
deployment.yaml
文件中该组件的 TLS 部分。
大使
Ambassador 充当来自外部的所有传入 API 请求(Prometheus、收集器、仪表板、代理)的入口。
以下是启用 TLS 的 Ambassador 的示例:
--- apiVersion: getambassador.io kind: Host metadata: name: wildcard-host spec: hostname: "*" acmeProvider: authority: none tlsSecret: name: tls-cert name: tls-amabassador selector: matchLabels: hostname: wildcard-host
流利
Fluentd 收集在每个 CN2 节点上运行的日志、事件和流。Fluentd 是一个日志记录代理,用于执行日志收集、解析以及分发到 OpenSearch 等其他服务。
以下是支持 TLS 的 Fluentd 示例:
<source> @type forward bind 0.0.0.0 port 24225 <transport tls> ca_path /etc/tls/ca.crt cert_path /etc/tls/tls.crt private_key_path /etc/tls/tls.key </transport>
InfluxDB
InfluxDB 是专为存储时间序列数据而构建的时间序列数据库。InfluxDB 使用 Grafana 作为时间序列数据的可视化工具。启用 TLS 可加密客户端与 InfluxD 服务器之间的通信。
以下是启用 TLS 的 InfluxDB 的示例:
env: - name: INFLUXD_TLS_CERT value: /etc/ssl/tls/tls.crt - name: INFLUXD_TLS_KEY value: /etc/ssl/tls/tls.key volumes: - name: tls secret: secretName: influxdb-tls mountPoints: - name: tls mountPath: /etc/ssl/tls
Kube Prometheus Stack
Kube Prometheus Stack 是 Kubernetes 清单、 Grafana 仪表板和 Prometheus 规则 的集合,可提供易于操作的端到端 Kubernetes 群集监控。
以下是启用 TLS 的 Kube Prometheus Stack 的示例:
web: tlsConfig:Kube keySecret: name: prometheus-tls key: tls.key cert: secret: name: prometheus-tls key: tls.crt
OpenSearch 和 OpenSearch Dashboards
OpenSearch 是 AWS OpenSearch Stack 中的搜索和分析引擎,可为所有类型的数据提供实时搜索和分析。OpenSearch Dashboards 是一种 GUI,可让您直观地查看 OpenSearch 数据并导航 OpenSearch Stack。
以下是启用 TLS 的 OpenStack 的示例:
ssl: transport: pemcert_filepath: tls/tls.crt pemkey_filepath: tls/tls.key pemtrustedcas_filepath: tls/ca.crt enforce_hostname_verification: false
以下是启用 TLS 的 OpenSearch 仪表板的示例:
opensearch_dashboards.yaml
opensearch_security.multitenancy.enabled: true opensearch_security.multitenancy.tenants.preferred: ["Private", "Global"] opensearch_security.readonly_mode.roles: ["kibana_read_only"] opensearch_security.cookie.secure: true server.ssl.enabled: true opensearch.ssl.certificateAuthorities: [ "/usr/share/opensearch-dashboards/tls/ca.crt"] server.ssl.certificate: /usr/share/opensearch-dashboards/tls/tls.crt server.ssl.key: /usr/share/opensearch-dashboards/tls/tls.key