在您的InfluxDB集群中设置TLS
在您的InfluxDB集群中设置TLS以确保传入和传出的数据都经过加密并安全。我们建议使用TLS来加密以下通信
- 集群的入口
- 与您的对象存储的连接
- 与您的目录(兼容PostgreSQL)数据库的连接
如果使用自签名证书,请提供自定义证书授权(CA)包。
设置入口TLS
Kubernetes支持许多不同的入口控制器,其中一些提供创建和管理TLS证书的简单机制。如果您使用的是InfluxDB定义的入口和Nginx入口控制器,将有效的TLS证书作为秘密添加到集群中。提供TLS证书文件和密钥文件的路径
kubectl create secret tls ingress-tls \
--namespace influxdb \
--cert TLS_CERT_PATH \
--key TLS_KEY_PATH
替换以下内容
TLS_CERT_PATH
:本地计算机上证书文件的路径。TLS_KEY_PATH
:本地计算机上证书密钥文件的路径。
在配置入口步骤中将TLS证书秘密提供给InfluxDB配置。
配置入口
更新您的 AppInstance
资源,使其引用包含您的 TLS 证书和私钥的秘密。以下示例使用名称 ingress-tls
。
- 如果直接修改
AppInstance
资源,请在spec.package.spec.ingress.tlsSecretName
属性中引用 TLS 秘密。 - 如果您使用 InfluxDB 集群 Helm 图表,请在您的
values.yaml
中引用 TLS 秘密,位置为ingress.tlsSecretName
。
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 集群 Helm 图表::
在您的values.yaml
中objectStore.s3.allowHttp
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
package:
spec:
objectStore:
s3:
# ...
allowHttp: 'false'
objectStore:
s3:
# ...
allowHttp: 'false'
在目录数据库上要求TLS
请参阅您的 PostgreSQL 兼容数据库服务提供商的文档,了解安装 TLS 证书和确保安全连接的信息。
如果您目前使用不安全的连接到您的目录数据库,请更新您的目录数据源名称(DSN),以 移除 sslmode=disable
查询参数
postgres://username:passw0rd@mydomain:5432/influxdb?sslmode=disable
提供自定义证书授权包
InfluxDB 尝试与其依赖的服务建立 TLS 连接——特别是 目录 和 对象存储。InfluxDB 验证所有连接的证书。
如果您自己托管依赖服务,并且您使用私有或不太知名的证书颁发机构为它们颁发证书,InfluxDB 将不会识别颁发者,也无法验证证书。 要允许 InfluxDB 验证来自您的自定义 CA 的证书,请配置 AppInstance
资源使用包含您的自定义证书颁发机构链的 PEM 证书捆绑包。
使用
kubectl
创建一个包含您的 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
配置映射。- 如果直接修改
AppInstance
资源:
将配置映射添加到.spec.package.spec.egress
属性。 - 如果您使用 InfluxDB 集群 Helm 图表::
将useCustomEgress
设置为true
并更新egress
属性以引用配置映射。
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 集群 Helm 图表),将配置更改应用到您的集群
kubectl apply \
--filename myinfluxdb.yml \
--namespace influxdb
helm upgrade \
influxdata/influxdb3-clustered \
-f ./values.yml \
--namespace influxdb
这个页面有帮助吗?
感谢您的反馈!