Helm Chart

持久化

师成师成· 更新于 2026-09-29· 阅读 10 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

持久化

本页介绍在使用 Helm Chart 部署时如何为 Polaris 配置持久化。有关 Polaris 持久化的总体信息,请参阅 Metastores 页面。

Polaris 支持三种元存储实现:

⚠️ 警告

默认的 in-memory 元存储不适用于生产环境。Pod 重启时数据将会丢失,并且无法运行多个副本。

内存元存储

内存元存储是默认实现,无需任何配置。它适用于快速测试和开发场景:

persistence:
  type: in-memory

📝 注意

使用内存元存储时,必须将 replicaCount: 1 设置为 1,因为 Pod 之间不共享数据。此外,无法启用水平自动扩缩容。

PostgreSQL (JDBC) 元存储

PostgreSQL 元存储将所有 Polaris 元数据存储在 PostgreSQL 数据库中。这是生产部署推荐使用的元存储。

前置条件

  • 一个 PostgreSQL 数据库
  • 从 Kubernetes 集群到该数据库的网络连通性
  • 具有相应权限的数据库凭据

创建 Secret

创建一个包含数据库连接信息的 Kubernetes Secret:

kubectl create secret generic polaris-persistence \
  --namespace polaris \
  --from-literal=username=<db-username> \
  --from-literal=password=<db-password> \
  --from-literal=jdbcUrl=jdbc:postgresql://<db-host>:5432/<db-name>

该密钥必须包含三个键:

  • username:数据库用户名
  • password:数据库密码
  • jdbcUrl:JDBC 连接 URL

配置 Chart

配置 Chart 以使用 PostgreSQL 元数据存储:

persistence:
  type: relational-jdbc
  relationalJdbc:
    secret:
      name: "polaris-persistence"
      username: "username"      # Key in secret containing the username
      password: "password"      # Key in secret containing the password
      jdbcUrl: "jdbcUrl"        # Key in secret containing the JDBC URL

连接池设置

对于生产环境部署,你可能需要通过 advancedConfig 部分来调整连接池设置:

advancedConfig:
  quarkus.datasource.jdbc.min-size: "5"
  quarkus.datasource.jdbc.max-size: "20"
  quarkus.datasource.jdbc.acquisition-timeout: "30S"
  quarkus.datasource.jdbc.idle-removal-interval: "5M"

有关所有可用选项,请参阅 Quarkus 数据源配置参考。

MongoDB (NoSQL) 元存储

📝 注意

MongoDB NoSQL 元存储目前处于 beta 阶段。

MongoDB 元存储将所有 Polaris 元数据保存在 MongoDB 数据库中。

前提条件

  • 一个 MongoDB 数据库
  • 从 Kubernetes 集群到该数据库的网络连通性
  • 一个包含相应凭据的 MongoDB 连接字符串

创建 Secret

创建一个包含 MongoDB 连接字符串的 Kubernetes Secret,例如:

kubectl create secret generic polaris-mongodb \
  --namespace polaris \
  --from-literal=connectionString='mongodb://<username>:<password>@<host>:<port>'

对于 MongoDB Atlas 或副本集,请使用相应的连接字符串格式:

# MongoDB Atlas
kubectl create secret generic polaris-mongodb \
  --namespace polaris \
  --from-literal=connectionString='mongodb+srv://<username>:<password>@<cluster>.mongodb.net/?retryWrites=true&w=majority'

# Replica Set
kubectl create secret generic polaris-mongodb \
  --namespace polaris \
  --from-literal=connectionString='mongodb://<username>:<password>@<host1>:<port1>,<host2>:<port2>,<host3>:<port3>/?replicaSet=<rs-name>&authSource=admin'

配置 Chart

配置 Chart,使其使用以 MongoDb 为后端的 NoSQL 元数据存储:

persistence:
  type: nosql
  nosql:
    backend: MongoDb
    database: polaris
    secret:
      name: "polaris-mongodb"
      connectionString: "connectionString"  # Key in secret containing the connection string

配置选项

设置项默认值说明
persistence.nosql.backendMongoDbNoSQL 后端类型。生产环境使用 MongoDb,测试环境使用 InMemory。
persistence.nosql.databasepolaris要使用的 MongoDB 数据库名称。
persistence.nosql.secret.name""包含连接字符串的 Secret 名称。
persistence.nosql.secret.connectionStringconnectionStringSecret 中保存 MongoDB 连接字符串的键。

高级 MongoDB 配置

如需进行高级 MongoDB 设置,请使用 advancedConfig 部分传入 Quarkus 的 MongoDB 配置属性:

advancedConfig:
  quarkus.mongodb.connect-timeout: "10S"
  quarkus.mongodb.read-timeout: "30S"
  quarkus.mongodb.server-selection-timeout: "30S"
  quarkus.mongodb.write-concern.safe: "true"
  quarkus.mongodb.read-preference: "primaryPreferred"

有关所有可用选项,请参阅 Quarkus MongoDB 配置参考。

生产环境建议

在生产环境中部署 Polaris 时,请考虑以下建议:

  1. 启用 TLS/SSL:确保数据库连接已加密。对于 PostgreSQL,请在 JDBC URL 中添加 ?sslmode=require;对于 MongoDB,请在连接字符串中使用 tls=true。
  2. 使用强凭据:为数据库访问生成强且唯一的密码,并定期轮换。
  3. 配置连接池:根据预期负载和数据库容量调整连接池设置。
  4. 建立监控:监控数据库性能和连接指标,以便及早发现问题。
  5. 规划备份:根据数据保留需求制定合适的备份策略。
  6. 测试故障转移:如果使用高可用数据库架构,请测试故障转移场景,确保应用程序能够妥善处理。

评论

登录后参与评论

正在加载评论…