在 InfluxDB 集群中设置 TLS
在 InfluxDB 集群中设置 TLS,以确保传入和传出的数据均已加密且安全。我们建议使用 TLS 加密以下通信:
- 到您集群的 Ingress
- 与您的对象存储的连接
- 与您的 Catalog(PostgreSQL 兼容)数据库的连接
如果使用自签名证书,请提供自定义证书颁发机构 (CA) 捆绑包。
设置 Ingress TLS
Kubernetes 支持许多不同的 Ingress 控制器,其中一些控制器提供了用于创建和管理 TLS 证书的简单机制。如果使用 InfluxDB 定义的 Ingress 和 Nginx Ingress Controller,请将有效的 TLS 证书作为 Secret 添加到集群。提供 TLS 证书文件和密钥文件的路径
kubectl create secret tls ingress-tls \
--namespace influxdb \
--cert TLS_CERT_PATH \
--key TLS_KEY_PATH
替换以下内容
TLS_CERT_PATH
:本地计算机上证书文件的路径。TLS_KEY_PATH
:本地计算机上证书密钥文件的路径。
在配置 Ingress 步骤中,将 TLS 证书 Secret 提供给 InfluxDB 配置。
配置 Ingress
更新您的 AppInstance
资源以引用 包含您的 TLS 证书和密钥的 Secret。以下示例使用名称 ingress-tls
。
- 如果直接修改
AppInstance
资源,请在spec.package.spec.ingress.tlsSecretName
属性中引用 TLS Secret。 - 如果使用 InfluxDB Clustered Helm chart,请在
values.yaml
中的ingress.tlsSecretName
属性中引用 TLS Secret。
tlsSecretName
字段是可选的。如果您已经有 DNS 名称的 TLS 证书,则可能需要使用它。
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
package:
spec:
# ...
ingress:
hosts:
- cluster-host.com
tlsSecretName: ingress-tls
ingress:
hosts:
- cluster-host.com
tlsSecretName: ingress-tls
在对象存储上要求 HTTPS
某些对象存储提供商在访问对象存储时允许不安全连接。请参阅您的对象存储提供商的文档,了解有关安装 TLS 证书和确保所有连接安全的信息。
如果使用 AWS S3 或 S3 兼容 对象存储,请在您的 AppInstance
资源中将以下属性设置为 false
,以禁止与您的对象存储建立不安全连接
- 如果直接修改
AppIsntance
资源:spec.package.spec.objectStore.s3.allowHttp
- 如果使用 InfluxDB Clustered Helm chart:
objectStore.s3.allowHttp
在您的values.yaml
中
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
package:
spec:
objectStore:
s3:
# ...
allowHttp: 'false'
objectStore:
s3:
# ...
allowHttp: 'false'
在您的 Catalog 数据库上要求 TLS
请参阅您的 PostgreSQL 兼容数据库提供商的文档,了解有关安装 TLS 证书和确保安全连接的信息。
如果当前使用与您的 Catalog 数据库的不安全连接,请更新您的 Catalog 数据源名称 (DSN) 以删除 sslmode=disable
查询参数
postgres://username:passw0rd@mydomain:5432/influxdb?sslmode=disable
提供自定义证书颁发机构捆绑包
InfluxDB 尝试与其依赖的服务(特别是 Catalog 和 对象存储)建立 TLS 连接。InfluxDB 验证所有连接的证书。
如果您自己托管依赖服务,并且您使用私有或不太知名的证书颁发机构来为其颁发证书,则 InfluxDB 将无法识别颁发者,也无法验证证书。 要允许 InfluxDB 验证来自您的自定义 CA 的证书,请配置 AppInstance
资源以使用包含您的自定义证书颁发机构链的 PEM 证书捆绑包。
使用
kubectl
创建一个 ConfigMap,其中包含您的 PEM 格式的证书捆绑包文件。您的证书颁发机构管理员应为您提供 PEM 格式的捆绑包文件。此 PEM 捆绑包文件为 InfluxDB 依赖的外部服务建立信任链。它不是 InfluxDB 用于托管其自己的 TLS 端点的证书。
在该示例中,将
/path/to/private_ca.pem
替换为您的 PEM 格式证书捆绑包文件的路径kubectl --namespace influxdb create configmap custom-ca --from-file=certs.pem=/path/to/private_ca.pem
捆绑多个证书
您可以将多个证书附加到同一捆绑包中。当您需要包含中间证书或显式包含叶证书时,此方法很有帮助。
按以下顺序在捆绑包中包含证书
- 叶证书
- 叶证书所需的中间证书
- 根证书
更新您的
AppInstance
资源以引用custom-ca
ConfigMap。- 如果直接修改
AppInstance
资源:
将 ConfigMap 添加到.spec.package.spec.egress
属性。 - 如果使用 InfluxDB Clustered Helm chart:
将useCustomEgress
设置为true
并更新egress
属性以引用 ConfigMap。
apiVersion: kubecfg.dev/v1alpha1 kind: AppInstance # ... spec: package: spec: egress: customCertificates: valueFrom: configMapKeyRef: key: ca.pem name: custom-ca
useCustomEgress: true egress: customCertificates: valueFrom: configMapKeyRef: key: ca.pem name: custom-ca
- 如果直接修改
将更改应用到您的集群
使用 kubectl
或 helm
(如果使用 InfluxDB Clustered Helm chart),将配置更改应用到您的集群
kubectl apply \
--filename myinfluxdb.yml \
--namespace influxdb
helm upgrade \
influxdata/influxdb3-clustered \
-f ./values.yml \
--namespace influxdb
此页面是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB Clustered 和此文档的反馈和错误报告。要查找支持,请使用以下资源
拥有年度或支持合同的客户可以联系 InfluxData 支持。