第 5 章 管理工作流持久性


您可以配置 SonataFlow 实例,以在关系数据库中使用持久性和存储工作流上下文。

按照设计,Kubernetes pod 是无状态的。这个行为可能会对在 pod 重启后维护应用程序状态的工作负载造成挑战。对于 OpenShift Serverless Logic,pod 默认重启时工作流上下文会丢失。

为确保在这样的场景中进行工作流恢复,您必须配置工作流运行时持久性。使用 SonataFlowPlatform 自定义资源(CR)或 SonataFlow CR 来提供此配置。配置的范围因您使用的资源而异。

5.1. 使用 SonataFlowPlatform CR 配置持久性

SonataFlowPlatform 自定义资源(CR)在命名空间级别启用持久性配置。此方法会自动将持久性设置应用到命名空间中部署的所有工作流。它简化了资源配置,特别是当命名空间中的多个工作流属于同一应用程序时。虽然默认应用此配置,但命名空间中的单个工作流可以使用 SonataFlow CR 覆盖它。

OpenShift Serverless Logic Operator 还使用此配置来为支持服务设置持久性。

注意

持久性配置仅在工作流部署时应用。对 SonataFlowPlatform CR 的更改不会影响已部署的工作流。

流程

  1. 定义 SonataFlowPlatform CR。
  2. SonataFlowPlatform CR spec 的 persistence 字段中指定持久性设置。

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlowPlatform
    metadata:
      name: sonataflow-platform-example
      namespace: example-namespace
    spec:
      persistence:
        postgresql:
          serviceRef:
            name: postgres-example 
    1
    
            namespace: postgres-example-namespace 
    2
    
            databaseName: example-database 
    3
    
            port: 1234 
    4
    
          secretRef:
            name: postgres-secrets-example 
    5
    
            userKey: POSTGRESQL_USER 
    6
    
            passwordKey: POSTGRESQL_PASSWORD 
    7
    Copy to Clipboard Toggle word wrap
    1
    Kubernetes Service 连接到 PostgreSQL 数据库的名称。
    2
    可选: PostgreSQL Service 的命名空间。默认为 SonataFlowPlatform 的命名空间。
    3
    用于存储工作流数据的 PostgreSQL 数据库名称。
    4
    可选:连接到 PostgreSQL 服务的端口号。默认值为 5432
    5
    包含数据库凭证的 Kubernetes Secret 名称。
    6
    包含数据库用户名的 Secret 对象中的密钥。
    7
    包含数据库密码的 Secret 对象中的键。
  3. 查看工作流生成的环境变量。

    以下示例显示了使用较早 SonataFlowPlatform 配置部署的名为 example-workflow 的工作流生成的环境变量。这些配置与持久性相关,并由 OpenShift Serverless Logic Operator 管理。应用这些设置后,您无法修改这些设置。

注意

当您使用 SonataFlowPlatform 持久性时,每个工作流都配置为使用与工作流名称相等的 PostgreSQL 模式名称。

env:
  - name: QUARKUS_DATASOURCE_USERNAME
    valueFrom:
      secretKeyRef:
        name: postgres-secrets-example
        key: POSTGRESQL_USER
  - name: QUARKUS_DATASOURCE_PASSWORD
    valueFrom:
      secretKeyRef:
        name: postgres-secrets-example
        key: POSTGRESQL_PASSWORD
  - name: QUARKUS_DATASOURCE_DB_KIND
    value: postgresql
  - name: QUARKUS_DATASOURCE_JDBC_URL
    value: >-
      jdbc:postgresql://postgres-example.postgres-example-namespace:1234/example-database?currentSchema=example-workflow
  - name: KOGITO_PERSISTENCE_TYPE
    value: jdbc
Copy to Clipboard Toggle word wrap

当此持久性配置就位时,OpenShift Serverless Logic Operator 会使用 previewgitops 配置集配置在此命名空间中部署的每个工作流,通过将相关的 JDBC 连接参数注入环境变量来与 PostgreSQL 数据库进行连接。

注意

PostgreSQL 目前是唯一受支持的用于持久性的数据库。

对于使用 preview 配置集进行 SonataFlow CR 部署,OpenShift Serverless Logic 构建系统自动包含启用持久性所需的特定 Quarkus 扩展。这样可确保与持久性机制兼容,简化了工作流部署过程。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat