1.2. 部署选项和部署工作流
您可以使用三个部署配置集之一在集群中部署 Serverless Logic 工作流:
- Dev
- 预览
- GitOps
每个配置集定义 Operator 如何构建和管理工作流部署,包括镜像生命周期、实时更新和协调行为。
1.2.1. 使用 Dev 配置集部署工作流 复制链接链接已复制到粘贴板!
您可以使用 Dev 配置集在 OpenShift Container Platform 上部署本地工作流。您可以使用此部署在集群中直接试验和修改工作流,查看几乎立即的更改。Dev 配置集专为开发和测试目的而设计。由于它在不重启容器的情况下自动重新载入工作流,因此非常适合初始开发阶段以及测试实时环境中的工作流更改。
先决条件
- 已在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
创建工作流配置 YAML 文件。
workflow-dev.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要部署应用程序,请输入以下命令应用 YAML 文件:
oc apply -f <filename> -n <your_namespace>
$ oc apply -f <filename> -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令验证部署并检查部署工作流的状态:
oc get workflow -n <your_namespace> -w
$ oc get workflow -n <your_namespace> -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确定列出了您的工作流,其状态为
Running或Completed。输入以下命令直接在集群中编辑工作流:
oc edit sonataflow <workflow_name> -n <your_namespace>
$ oc edit sonataflow <workflow_name> -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 编辑后,保存更改。OpenShift Serverless Logic Operator 会检测更改并相应地更新工作流。
验证
要确保正确应用更改,请输入以下命令验证工作流的状态和日志:
运行以下命令,查看工作流的状态:
oc get sonataflows -n <your_namespace>
$ oc get sonataflows -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来查看工作流日志:
oc logs <workflow_pod_name> -n <your_namespace>
$ oc logs <workflow_pod_name> -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
完成测试后,运行以下命令来删除资源以避免不必要的用法:
oc delete sonataflow <workflow_name> -n <your_namespace>
$ oc delete sonataflow <workflow_name> -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2. 使用 Preview 配置集部署工作流 复制链接链接已复制到粘贴板!
您可以使用 Preview 配置集在 OpenShift Container Platform 上部署本地工作流。这可让您在集群中直接验证和测试类似生产环境中的工作流。在将工作流移至生产环境之前,预览配置集是最终测试和验证的理想选择,以及快速迭代而无需直接管理构建管道。它还确保工作流在类似于生产的设置中平稳运行。
先决条件
- 在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
要在 Preview 配置集中部署工作流,OpenShift Serverless Logic Operator 使用 OpenShift Container Platform 上的构建系统,这会自动创建用于部署工作流的镜像。
以下小节解释了如何使用带有 SonataFlow 自定义资源的 OpenShift Serverless Logic Operator 在集群中构建和部署您的工作流。
1.2.2.1. 在 Preview 配置集中配置工作流 复制链接链接已复制到粘贴板!
1.2.2.1.1. 配置工作流基础构建器镜像 复制链接链接已复制到粘贴板!
如果您的场景需要严格策略用于镜像使用,如安全或强化约束,请替换 OpenShift Serverless Logic Operator 用来构建最终工作流容器镜像的默认镜像。
默认情况下,OpenShift Serverless Logic Operator 使用官方 Red Hat Registry 中分发的镜像来构建工作流。如果您的场景需要严格的策略用于镜像,如 security 或 hardening 约束,您可以替换默认镜像。
要更改此镜像,您可以编辑部署工作流的命名空间中 SonataFlowPlatform 自定义资源(CR)。
先决条件
- 在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
运行以下命令,列出命名空间中的
SonataFlowPlatform资源:oc get sonataflowplatform -n <your_namespace>
$ oc get sonataflowplatform -n <your_namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<your_namespace> 替换为命名空间的名称。
运行以下命令,使用新构建器镜像修补
SonataFlowPlatform资源:oc patch sonataflowplatform <name> --patch 'spec:\n build:\n config:\n baseImage: <your_new_image_full_name_with_tag>' -n <your_namespace>
$ oc patch sonataflowplatform <name> --patch 'spec:\n build:\n config:\n baseImage: <your_new_image_full_name_with_tag>' -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证
SonataFlowPlatformCR 是否已正确修补:oc describe sonataflowplatform <name> -n <your_namespace>
$ oc describe sonataflowplatform <name> -n <your_namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<name> 替换为SonataFlowPlatform资源的名称,将 <your_namespace> 替换为命名空间的名称。
确保
spec.build.config下的baseImage字段反映了新镜像。
1.2.2.1.2. 自定义基础构建器 Dockerfile 复制链接链接已复制到粘贴板!
OpenShift Serverless Logic Operator 使用 openshift-serverless-logicOpenShift Serverless Logic Operator 安装命名空间中的 logic-operator-rhel8-builder-config 配置映射自定义资源(CR)来配置和运行工作流构建过程。您可以更改此配置映射中的 Dockerfile 条目,以根据您的需要调整 Dockerfile。
修改 Dockerfile 可能会破坏构建过程。
这个示例仅供参考。实际版本可能稍有不同。不要在您的安装中使用这个示例。
logic-operator-rhel8-builder-config 配置映射 CR 示例
1.2.2.1.3. 更改资源要求 复制链接链接已复制到粘贴板!
您可以通过在工作流命名空间中创建或编辑 SonataFlowPlatform 资源来指定内部构建器 pod 的资源要求。
SonataFlowPlatform 资源示例
每个命名空间只允许一个 SonataFlowPlatform 资源。获取并编辑 OpenShift Serverless Logic Operator 为您创建的资源,而不是尝试创建另一个资源。
您可以微调特定工作流的资源要求。每个工作流实例都有一个 SonataFlowBuild 实例,其名称与工作流相同。您可以编辑 SonataFlowBuild 自定义资源(CR)并指定参数,如下所示:
SonataFlowBuild CR 示例
这些参数仅适用于新的构建实例。
1.2.2.1.4. 将参数传递给内部构建器 复制链接链接已复制到粘贴板!
您可以通过将构建参数传递给 SonataFlowBuild 实例,或者在 SonataFlowPlatform 资源中设置默认构建参数来自定义构建流程。
先决条件
- 在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
运行以下命令,检查现有的
SonataFlowBuild实例:oc get sonataflowbuild <name> -n <namespace>
$ oc get sonataflowbuild <name> -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<name> 替换为SonataFlowBuild实例的名称,将 <namespace> 替换为您的命名空间。
运行以下命令,在
SonataFlowBuild实例中添加构建参数:oc edit sonataflowbuild <name> -n <namespace>
$ oc edit sonataflowbuild <name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
SonataFlowBuild实例的.spec.buildArgs字段中添加所需的构建参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 现有
SonataFlowBuild实例的名称。
保存文件并退出。
将启动一个带有更新的配置的新构建。
运行以下命令,在
SonataFlowPlatform资源中设置默认构建参数:oc edit sonataflowplatform <name> -n <namespace>
$ oc edit sonataflowplatform <name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
SonataFlowPlatform资源的.spec.buildArgs字段中添加所需的构建参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 现有
SonataFlowPlatform资源的名称。
- 保存文件并退出。
1.2.2.1.5. 在内部构建器中设置环境变量 复制链接链接已复制到粘贴板!
您可以将环境变量设置为 SonataFlowBuild 内部构建器 pod。这些变量仅对构建上下文有效,且不会在最终构建的工作流镜像上设置。
先决条件
- 在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
运行以下命令,检查现有的
SonataFlowBuild实例:oc get sonataflowbuild <name> -n <namespace>
$ oc get sonataflowbuild <name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<name> 替换为SonataFlowBuild实例的名称,将 <namespace> 替换为您的命名空间。运行以下命令来编辑
SonataFlowBuild实例:oc edit sonataflowbuild <name> -n <namespace>
$ oc edit sonataflowbuild <name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow SonataFlowBuild实例示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存文件并退出。
一个新的带有更新后的配置会启动。
或者,您可以在
SonataFlowPlatform中设置 enviroments,以便每个新构建实例都会将其用作模板。SonataFlowPlatform实例示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2.1.6. 更改基本构建器镜像 复制链接链接已复制到粘贴板!
您可以通过编辑 logic-operator-rhel8-builder-config 配置映射来修改 OpenShift Serverless Logic Operator 使用的默认构建器镜像。
先决条件
- 在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
运行以下命令来编辑
logic-operator-rhel8-builder-config配置映射:oc edit cm/logic-operator-rhel8-builder-config -n openshift-serverless-logic
$ oc edit cm/logic-operator-rhel8-builder-config -n openshift-serverless-logicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 修改 dockerfile 条目。
在编辑器中,找到 Dockerfile 条目并将第一行更改为所需的镜像。
Example
data: Dockerfile: | FROM registry.redhat.io/openshift-serverless-1/logic-swf-builder-rhel8:1.33.0 # Change the image to the desired onedata: Dockerfile: | FROM registry.redhat.io/openshift-serverless-1/logic-swf-builder-rhel8:1.33.0 # Change the image to the desired oneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改。
1.2.2.2. 构建和部署您的工作流 复制链接链接已复制到粘贴板!
您可以在 OpenShift Container Platform 和 OpenShift Serverless Logic Operator 上创建 SonataFlow 自定义资源(CR)并部署工作流。
先决条件
- 在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
创建类似以下示例的工作流 YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
SonataFlow工作流定义应用到 OpenShift Container Platform 命名空间:oc apply -f <workflow-name>.yaml -n <your_namespace>
$ oc apply -f <workflow-name>.yaml -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow greetings-workflow.yaml文件的命令示例:oc apply -f greetings-workflow.yaml -n workflows
$ oc apply -f greetings-workflow.yaml -n workflowsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令列出所有构建配置:
oc get buildconfigs -n workflows
$ oc get buildconfigs -n workflowsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取构建过程的日志:
oc logs buildconfig/<workflow-name> -n <your_namespace>
$ oc logs buildconfig/<workflow-name> -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow greetings-workflow.yaml文件的命令示例:oc logs buildconfig/greeting -n workflows
$ oc logs buildconfig/greeting -n workflowsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证部署,请运行以下命令列出所有 pod:
oc get pods -n <your_namespace>
$ oc get pods -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保与工作流对应的 pod 正在运行。
运行以下命令,检查正在运行的 pod 及其日志:
oc logs pod/<pod-name> -n workflows
$ oc logs pod/<pod-name> -n workflowsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2.3. 验证工作流部署 复制链接链接已复制到粘贴板!
您可以通过从工作流 pod 执行测试 HTTP 调用来验证 OpenShift Serverless Logic 工作流是否正在运行。
先决条件
- 在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
创建类似以下示例的工作流
YAML文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为工作流服务创建路由:
oc expose svc/<workflow-service-name> -n workflows
$ oc expose svc/<workflow-service-name> -n workflowsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令创建用于访问工作流服务的公共 URL。
运行以下命令,为公共 URL 设置环境变量:
WORKFLOW_SVC=$(oc get route/<workflow-service-name> -n <namespace> --template='{{.spec.host}}')$ WORKFLOW_SVC=$(oc get route/<workflow-service-name> -n <namespace> --template='{{.spec.host}}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,向工作流发出 HTTP 调用,以将 POST 请求发送到服务:
curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{<"your": "json_payload">}' http://$WORKFLOW_SVC/<endpoint>$ curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{<"your": "json_payload">}' http://$WORKFLOW_SVC/<endpoint>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此输出显示工作流正在运行时的预期响应示例。
1.2.2.4. 重启构建 复制链接链接已复制到粘贴板!
要重启构建,您可以在 SonataFlowBuild 实例中添加或编辑 sonataflow.org/restartBuild: true 注解。如果您的工作流或初始构建版本存在问题,则需要重启构建。
先决条件
- 在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
运行以下命令,检查
SonataFlowBuild实例是否存在:oc get sonataflowbuild <name> -n <namespace>
$ oc get sonataflowbuild <name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来编辑
SonataFlowBuild实例:oc edit sonataflowbuild/<name> -n <namespace>
$ oc edit sonataflowbuild/<name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<name> 替换为SonataFlowBuild实例的名称,将<namespace> 替换为部署了工作流的命名空间。添加
sonataflow.org/restartBuild: true注解来重新启动构建。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此操作会触发 OpenShift Serverless Logic Operator 来启动工作流的新构建。
要监控构建过程,请运行以下命令来检查构建日志:
oc logs buildconfig/<name> -n <namespace>
$ oc logs buildconfig/<name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<name> 替换为SonataFlowBuild实例的名称,将<namespace> 替换为部署了工作流的命名空间。
1.2.3. 使用 GitOps 配置集部署工作流 复制链接链接已复制到粘贴板!
仅将 GitOps 配置集用于生产环境部署。对于开发、快速迭代或测试,请使用 Dev 或 Preview 配置集。
您可以使用 GitOps 配置集在 OpenShift Container Platform 上部署本地工作流。GitOps 配置集通过允许您在外部创建和管理镜像来完全控制工作流容器镜像,通常是通过 ArgoCD 或 Tekton 等 CI/CD 管道。当在 SonataFlow 自定义资源(CR)中定义容器镜像时,Operator 会自动假设正在使用 GitOps 配置集,且不会尝试以任何方式构建或修改镜像。
先决条件
- 已在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
在 SonataFlow CR 中指定容器镜像:
带有设置 GitOps 配置集的 SonataFlow CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
流定义必须与构建过程中使用的工作流定义匹配。当使用 GitOps 配置集部署工作流时,Operator 会将此定义与嵌入在容器镜像中的工作流文件进行比较。如果定义和文件不匹配,部署会失败。
应用 CR 来部署工作流:
oc apply -f <filename>
$ oc apply -f <filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.4. 编辑工作流 复制链接链接已复制到粘贴板!
当 OpenShift Serverless Logic Operator 部署工作流服务时,它会创建两个配置映射来存储运行时属性:
-
用户属性:在
ConfigMap中定义,以带有后缀 的SonataFlow对象命名。例如,如果您的工作流名称是greeting,则ConfigMap名称为greeting-props。 -
受管属性:在
ConfigMap中定义,以带有 suffix-managed-props的SonataFlow对象命名。例如,如果您的工作流名称是greeting,则ConfigMap名称为greeting-managed-props。
受管属性始终覆盖具有相同密钥名称的任何 user 属性,用户无法编辑。在下一个协调周期中,Operator 都会覆盖任何更改。
先决条件
- 已在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
运行以下命令打开并编辑
ConfigMap:oc edit cm <workflow_name>-props -n <namespace>
$ oc edit cm <workflow_name>-props -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<workflow_name> 替换为工作流的名称,将<namespace> 替换为部署工作流的命名空间。在
application.properties部分中添加属性。存储在
ConfigMap中的工作流属性示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保正确格式化属性,以防止 Operator 将配置替换为默认配置。
- 进行必要的更改后,保存文件并退出编辑器。
1.2.5. 测试工作流 复制链接链接已复制到粘贴板!
要验证 OpenShift Serverless Logic 工作流是否在正确运行,您可以从相关 pod 执行测试 HTTP 调用。
先决条件
- 已在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
运行以下命令,为命名空间中的指定服务创建路由:
oc expose svc <service_name> -n <namespace>
$ oc expose svc <service_name> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取新公开的服务的 URL:
WORKFLOW_SVC=$(oc get route/<service_name> --template='{{.spec.host}}')$ WORKFLOW_SVC=$(oc get route/<service_name> --template='{{.spec.host}}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,执行测试 HTTP 调用并发送
POST请求:curl -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' -d '<request_body>' http://$WORKFLOW_SVC/<endpoint>
$ curl -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' -d '<request_body>' http://$WORKFLOW_SVC/<endpoint>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证响应,以确保工作流按预期工作。
1.2.6. 工作流故障排除 复制链接链接已复制到粘贴板!
OpenShift Serverless Logic Operator 使用健康检查探测部署其 pod,以确保工作流以健康状态运行。如果更改导致这些健康检查失败,pod 将停止响应。
先决条件
- 已在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
运行以下命令检查工作流状态:
oc get workflow <name> -o jsonpath={.status.conditions} | jq .$ oc get workflow <name> -o jsonpath={.status.conditions} | jq .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要从工作流的部署中获取和分析日志,请运行以下命令:
oc logs deployment/<workflow_name> -f
$ oc logs deployment/<workflow_name> -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.7. 删除工作流 复制链接链接已复制到粘贴板!
您可以使用 oc delete 命令删除当前目录中的 OpenShift Serverless Logic 工作流。
先决条件
- 已在集群中安装了 OpenShift Serverless Logic Operator。
- 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
-
已安装 OpenShift CLI
(oc)。
流程
-
验证您具有定义您要删除的工作流的正确文件。例如,
workflow.yaml。 运行
oc delete命令从指定的命名空间中删除工作流:oc delete -f <your_file> -n <your_namespace>
$ oc delete -f <your_file> -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<your_file> 替换为工作流文件的名称,将 <your_namespace> 替换为您的命名空间。