第 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 的更改不会影响已部署的工作流。
流程
-
定义
SonataFlowPlatform
CR。 在
SonataFlowPlatform
CR spec 的persistence
字段中指定持久性设置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看工作流生成的环境变量。
以下示例显示了使用较早
SonataFlowPlatform
配置部署的名为example-workflow
的工作流生成的环境变量。这些配置与持久性相关,并由 OpenShift Serverless Logic Operator 管理。应用这些设置后,您无法修改这些设置。
当您使用 SonataFlowPlatform
持久性时,每个工作流都配置为使用与工作流名称相等的 PostgreSQL 模式名称。
当此持久性配置就位时,OpenShift Serverless Logic Operator 会使用 preview
或 gitops
配置集配置在此命名空间中部署的每个工作流,通过将相关的 JDBC 连接参数注入环境变量来与 PostgreSQL 数据库进行连接。
PostgreSQL 目前是唯一受支持的用于持久性的数据库。
对于使用 preview
配置集进行 SonataFlow
CR 部署,OpenShift Serverless Logic 构建系统自动包含启用持久性所需的特定 Quarkus 扩展。这样可确保与持久性机制兼容,简化了工作流部署过程。