文档

在您的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 证书,则可能需要使用它。

使用 cert-manager 和 Let’s Encrypt 管理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.yamlobjectStore.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 证书捆绑包

  1. 使用 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
    

    捆绑多个证书

    您可以将多个证书添加到同一捆绑包中。当您需要包含中间证书或显式包含叶证书时,这种方法很有帮助。

    按照以下顺序将证书包含在捆绑包中

    1. 叶证书
    2. 叶证书所需的中间证书
    3. 根证书
  2. 更新您的 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
    

将更改应用于您的集群

使用 kubectlhelm(如果使用 InfluxDB 集群 Helm 图表),将配置更改应用到您的集群

kubectl apply \
  --filename myinfluxdb.yml \
  --namespace influxdb
helm upgrade \
  influxdata/influxdb3-clustered \
  -f ./values.yml \
  --namespace influxdb

这个页面有帮助吗?

感谢您的反馈!


Flux 的未来

Flux 正进入维护模式。您可以在不更改代码的情况下继续像现在一样使用它。

了解更多信息

InfluxDB v3 增强功能和 InfluxDB 集群现已上市

新功能包括更快的查询性能和管理工具,推进了 InfluxDB v3 产品线。InfluxDB 集群现已上市。

InfluxDB v3 性能和功能

InfluxDB v3 产品线在查询性能方面取得了重大改进,并提供了新的管理工具。这些改进包括一个操作仪表板来监控您的 InfluxDB 集群的健康状况,InfluxDB Cloud Dedicated 中的单点登录 (SSO) 支持,以及用于令牌和数据库的新管理 API。

了解新的 v3 增强功能


InfluxDB 集群上市

InfluxDB 集群现已上市,并为您在自管理堆栈中提供了 InfluxDB v3 的功能。

与我们谈谈 InfluxDB 集群