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)

流程

  1. 创建工作流配置 YAML 文件。

    workflow-dev.yaml 文件示例

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlow
    metadata:
      name: greeting 
    1
    
      annotations:
        sonataflow.org/description: Greeting example on k8s!
        sonataflow.org/version: 0.0.1
        sonataflow.org/profile: dev 
    2
    
    spec:
      flow:
        start: ChooseOnLanguage
        functions:
          - name: greetFunction
            type: custom
            operation: sysout
        states:
          - name: ChooseOnLanguage
            type: switch
            dataConditions:
              - condition: "${ .language == \"English\" }"
                transition: GreetInEnglish
              - condition: "${ .language == \"Spanish\" }"
                transition: GreetInSpanish
            defaultCondition: GreetInEnglish
          - name: GreetInEnglish
            type: inject
            data:
              greeting: "Hello from JSON Workflow, "
            transition: GreetPerson
          - name: GreetInSpanish
            type: inject
            data:
              greeting: "Saludos desde JSON Workflow, "
            transition: GreetPerson
          - name: GreetPerson
            type: operation
            actions:
              - name: greetAction
                functionRef:
                  refName: greetFunction
                  arguments:
                    message:  ".greeting + .name"
            end: true
    Copy to Clipboard Toggle word wrap

    1
    是一个 <workflow_name>。
    2
    表示您必须使用 Dev 配置集部署工作流。
  2. 要部署应用程序,请输入以下命令应用 YAML 文件:

    $ oc apply -f <filename> -n <your_namespace>
    Copy to Clipboard Toggle word wrap
  3. 输入以下命令验证部署并检查部署工作流的状态:

    $ oc get workflow -n <your_namespace> -w
    Copy to Clipboard Toggle word wrap

    确定列出了您的工作流,其状态为 RunningCompleted

  4. 输入以下命令直接在集群中编辑工作流:

    $ oc edit sonataflow <workflow_name> -n <your_namespace>
    Copy to Clipboard Toggle word wrap
  5. 编辑后,保存更改。OpenShift Serverless Logic Operator 会检测更改并相应地更新工作流。

验证

  1. 要确保正确应用更改,请输入以下命令验证工作流的状态和日志:

    1. 运行以下命令,查看工作流的状态:

      $ oc get sonataflows -n <your_namespace>
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令来查看工作流日志:

      $ oc logs <workflow_pod_name> -n <your_namespace>
      Copy to Clipboard Toggle word wrap

后续步骤

  1. 完成测试后,运行以下命令来删除资源以避免不必要的用法:

    $ oc delete sonataflow <workflow_name> -n <your_namespace>
    Copy to Clipboard Toggle word wrap

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)

流程

  1. 运行以下命令,列出命名空间中的 SonataFlowPlatform 资源:

    $ oc get sonataflowplatform -n <your_namespace> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <your_namespace > 替换为命名空间的名称。
  2. 运行以下命令,使用新构建器镜像修补 SonataFlowPlatform 资源:

    $ 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 Toggle word wrap

验证

  1. 运行以下命令,验证 SonataFlowPlatform CR 是否已正确修补:

    $ oc describe sonataflowplatform <name> -n <your_namespace> 
    1
    Copy to Clipboard Toggle word wrap
    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 示例

apiVersion: v1
data:
  DEFAULT_WORKFLOW_EXTENSION: .sw.json
  Dockerfile: |
    FROM registry.redhat.io/openshift-serverless-1/logic-swf-builder-rhel8:1.33.0 AS builder

    # Variables that can be overridden by the builder
    # To add a Quarkus extension to your application
    ARG QUARKUS_EXTENSIONS
    # Args to pass to the Quarkus CLI add extension command
    ARG QUARKUS_ADD_EXTENSION_ARGS
    # Additional java/mvn arguments to pass to the builder
    ARG MAVEN_ARGS_APPEND

    # Copy from build context to skeleton resources project
    COPY --chown=1001 . ./resources

    RUN /home/kogito/launch/build-app.sh ./resources

    #=============================
    # Runtime Run
    #=============================
    FROM registry.access.redhat.com/ubi9/openjdk-17:latest

    ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'

    # We make four distinct layers so if there are application changes, the library layers can be re-used
    COPY --from=builder --chown=185 /home/kogito/serverless-workflow-project/target/quarkus-app/lib/ /deployments/lib/
    COPY --from=builder --chown=185 /home/kogito/serverless-workflow-project/target/quarkus-app/*.jar /deployments/
    COPY --from=builder --chown=185 /home/kogito/serverless-workflow-project/target/quarkus-app/app/ /deployments/app/
    COPY --from=builder --chown=185 /home/kogito/serverless-workflow-project/target/quarkus-app/quarkus/ /deployments/quarkus/

    EXPOSE 8080
    USER 185
    ENV AB_JOLOKIA_OFF=""
    ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
    ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
kind: ConfigMap
metadata:
  name: sonataflow-operator-builder-config
  namespace: sonataflow-operator-system
Copy to Clipboard Toggle word wrap

1.2.2.1.3. 更改资源要求

您可以通过在工作流命名空间中创建或编辑 SonataFlowPlatform 资源来指定内部构建器 pod 的资源要求。

SonataFlowPlatform 资源示例

apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
  name: sonataflow-platform
spec:
  build:
    template:
      resources:
        requests:
          memory: "64Mi"
          cpu: "250m"
        limits:
          memory: "128Mi"
          cpu: "500m"
Copy to Clipboard Toggle word wrap

注意

每个命名空间只允许一个 SonataFlowPlatform 资源。获取并编辑 OpenShift Serverless Logic Operator 为您创建的资源,而不是尝试创建另一个资源。

您可以微调特定工作流的资源要求。每个工作流实例都有一个 SonataFlowBuild 实例,其名称与工作流相同。您可以编辑 SonataFlowBuild 自定义资源(CR)并指定参数,如下所示:

SonataFlowBuild CR 示例

apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowBuild
metadata:
  name: my-workflow
spec:
  resources:
    requests:
      memory: "64Mi"
      cpu: "250m"
    limits:
      memory: "128Mi"
      cpu: "500m"
Copy to Clipboard Toggle word wrap

这些参数仅适用于新的构建实例。

1.2.2.1.4. 将参数传递给内部构建器

您可以通过将构建参数传递给 SonataFlowBuild 实例,或者在 SonataFlowPlatform 资源中设置默认构建参数来自定义构建流程。

先决条件

  • 在集群中安装了 OpenShift Serverless Logic Operator。
  • 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 已安装 OpenShift CLI (oc)

流程

  1. 运行以下命令,检查现有的 SonataFlowBuild 实例:

    $ oc get sonataflowbuild <name> -n <namespace> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <name > 替换为 SonataFlowBuild 实例的名称,将 &lt ;namespace& gt; 替换为您的命名空间。
  2. 运行以下命令,在 SonataFlowBuild 实例中添加构建参数:

    $ oc edit sonataflowbuild <name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  3. SonataFlowBuild 实例的 .spec.buildArgs 字段中添加所需的构建参数:

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlowBuild
    metadata:
      name: <name>  
    1
    
    spec:
      buildArgs:
        - name: <argument_1>
          value: <value_1>
        - name: <argument_2>
          value: <value_2>
    Copy to Clipboard Toggle word wrap
    1
    现有 SonataFlowBuild 实例的名称。
  4. 保存文件并退出。

    将启动一个带有更新的配置的新构建。

  5. 运行以下命令,在 SonataFlowPlatform 资源中设置默认构建参数:

    $ oc edit sonataflowplatform <name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  6. SonataFlowPlatform 资源的 .spec.buildArgs 字段中添加所需的构建参数:

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlowPlatform
    metadata:
      name: <name> 
    1
    
    spec:
      build:
        template:
          buildArgs:
            - name: <argument_1>
              value: <value_1>
            - name: <argument_2>
              value: <value_2>
    Copy to Clipboard Toggle word wrap
    1
    现有 SonataFlowPlatform 资源的名称。
  7. 保存文件并退出。
1.2.2.1.5. 在内部构建器中设置环境变量

您可以将环境变量设置为 SonataFlowBuild 内部构建器 pod。这些变量仅对构建上下文有效,且不会在最终构建的工作流镜像上设置。

先决条件

  • 在集群中安装了 OpenShift Serverless Logic Operator。
  • 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 已安装 OpenShift CLI (oc)

流程

  1. 运行以下命令,检查现有的 SonataFlowBuild 实例:

    $ oc get sonataflowbuild <name> -n <namespace>
    Copy to Clipboard Toggle word wrap

    <name > 替换为 SonataFlowBuild 实例的名称,将 &lt ;namespace& gt; 替换为您的命名空间。

  2. 运行以下命令来编辑 SonataFlowBuild 实例:

    $ oc edit sonataflowbuild <name> -n <namespace>
    Copy to Clipboard Toggle word wrap

    SonataFlowBuild 实例示例

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlowBuild
    metadata:
      name: <name>
    spec:
      envs:
        - name: <env_variable_1>
          value: <value_1>
        - name: <env_variable_2>
          value: <value_2>
    Copy to Clipboard Toggle word wrap

  3. 保存文件并退出。

    一个新的带有更新后的配置会启动。

    或者,您可以在 SonataFlowPlatform 中设置 enviroments,以便每个新构建实例都会将其用作模板。

    SonataFlowPlatform 实例示例

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlowPlatform
    metadata:
      name: <name>
    spec:
      build:
        template:
          envs:
            - name: <env_variable_1>
              value: <value_1>
            - name: <env_variable_2>
              value: <value_2>
    Copy to Clipboard Toggle word wrap

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)

流程

  1. 运行以下命令来编辑 logic-operator-rhel8-builder-config 配置映射:

    $ oc edit cm/logic-operator-rhel8-builder-config -n openshift-serverless-logic
    Copy to Clipboard Toggle word wrap
  2. 修改 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 one
    Copy to Clipboard Toggle word wrap

  3. 保存更改。

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)

流程

  1. 创建类似以下示例的工作流 YAML 文件:

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlow
    metadata:
      name: greeting
      annotations:
        sonataflow.org/description: Greeting example on k8s!
        sonataflow.org/version: 0.0.1
    spec:
      flow:
        start: ChooseOnLanguage
        functions:
          - name: greetFunction
            type: custom
            operation: sysout
        states:
          - name: ChooseOnLanguage
            type: switch
            dataConditions:
              - condition: "${ .language == \"English\" }"
                transition: GreetInEnglish
              - condition: "${ .language == \"Spanish\" }"
                transition: GreetInSpanish
            defaultCondition: GreetInEnglish
          - name: GreetInEnglish
            type: inject
            data:
              greeting: "Hello from JSON Workflow, "
            transition: GreetPerson
          - name: GreetInSpanish
            type: inject
            data:
              greeting: "Saludos desde JSON Workflow, "
            transition: GreetPerson
          - name: GreetPerson
            type: operation
            actions:
              - name: greetAction
                functionRef:
                  refName: greetFunction
                  arguments:
                    message:  ".greeting+.name"
            end: true
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,将 SonataFlow 工作流定义应用到 OpenShift Container Platform 命名空间:

    $ oc apply -f <workflow-name>.yaml -n <your_namespace>
    Copy to Clipboard Toggle word wrap

    greetings-workflow.yaml 文件的命令示例:

    $ oc apply -f greetings-workflow.yaml -n workflows
    Copy to Clipboard Toggle word wrap

  3. 运行以下命令列出所有构建配置:

    $ oc get buildconfigs -n workflows
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,获取构建过程的日志:

    $ oc logs buildconfig/<workflow-name> -n <your_namespace>
    Copy to Clipboard Toggle word wrap

    greetings-workflow.yaml 文件的命令示例:

    $ oc logs buildconfig/greeting -n workflows
    Copy to Clipboard Toggle word wrap

验证

  1. 要验证部署,请运行以下命令列出所有 pod:

    $ oc get pods -n <your_namespace>
    Copy to Clipboard Toggle word wrap

    确保与工作流对应的 pod 正在运行。

  2. 运行以下命令,检查正在运行的 pod 及其日志:

    $ oc logs pod/<pod-name> -n workflows
    Copy to Clipboard Toggle word wrap

1.2.2.3. 验证工作流部署

您可以通过从工作流 pod 执行测试 HTTP 调用来验证 OpenShift Serverless Logic 工作流是否正在运行。

先决条件

  • 在集群中安装了 OpenShift Serverless Logic Operator。
  • 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 已安装 OpenShift CLI (oc)

流程

  1. 创建类似以下示例的工作流 YAML 文件:

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlow
    metadata:
      name: greeting
      annotations:
        sonataflow.org/description: Greeting example on k8s!
        sonataflow.org/version: 0.0.1
    spec:
      flow:
        start: ChooseOnLanguage
        functions:
          - name: greetFunction
            type: custom
            operation: sysout
        states:
          - name: ChooseOnLanguage
            type: switch
            dataConditions:
              - condition: "${ .language == \"English\" }"
                transition: GreetInEnglish
              - condition: "${ .language == \"Spanish\" }"
                transition: GreetInSpanish
            defaultCondition: GreetInEnglish
          - name: GreetInEnglish
            type: inject
            data:
              greeting: "Hello from JSON Workflow, "
            transition: GreetPerson
          - name: GreetInSpanish
            type: inject
            data:
              greeting: "Saludos desde JSON Workflow, "
            transition: GreetPerson
          - name: GreetPerson
            type: operation
            actions:
              - name: greetAction
                functionRef:
                  refName: greetFunction
                  arguments:
                    message:  ".greeting+.name"
            end: true
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,为工作流服务创建路由:

    $ oc expose svc/<workflow-service-name> -n workflows
    Copy to Clipboard Toggle word wrap

    此命令创建用于访问工作流服务的公共 URL。

  3. 运行以下命令,为公共 URL 设置环境变量:

    $ WORKFLOW_SVC=$(oc get route/<workflow-service-name> -n <namespace> --template='{{.spec.host}}')
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,向工作流发出 HTTP 调用,以将 POST 请求发送到服务:

    $ curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{<"your": "json_payload">}' http://$WORKFLOW_SVC/<endpoint>
    Copy to Clipboard Toggle word wrap

    输出示例

    {
      "id": "b5fbfaa3-b125-4e6c-9311-fe5a3577efdd",
      "workflowdata": {
        "name": "John",
        "language": "English",
        "greeting": "Hello from JSON Workflow, "
      }
    }
    Copy to Clipboard Toggle word wrap

    此输出显示工作流正在运行时的预期响应示例。

1.2.2.4. 重启构建

要重启构建,您可以在 SonataFlowBuild 实例中添加或编辑 sonataflow.org/restartBuild: true 注解。如果您的工作流或初始构建版本存在问题,则需要重启构建。

先决条件

  • 在集群中安装了 OpenShift Serverless Logic Operator。
  • 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 已安装 OpenShift CLI (oc)

流程

  1. 运行以下命令,检查 SonataFlowBuild 实例是否存在:

    $ oc get sonataflowbuild <name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来编辑 SonataFlowBuild 实例:

    $ oc edit sonataflowbuild/<name> -n <namespace>
    Copy to Clipboard Toggle word wrap

    <name > 替换为 SonataFlowBuild 实例的名称,将 < namespace> 替换为部署了工作流的命名空间。

  3. 添加 sonataflow.org/restartBuild: true 注解来重新启动构建。

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlowBuild
    metadata:
      name: <name>
      annotations:
        sonataflow.org/restartBuild: true
    Copy to Clipboard Toggle word wrap

    此操作会触发 OpenShift Serverless Logic Operator 来启动工作流的新构建。

  4. 要监控构建过程,请运行以下命令来检查构建日志:

    $ oc logs buildconfig/<name> -n <namespace>
    Copy to Clipboard Toggle word wrap

    <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)

流程

  1. 在 SonataFlow CR 中指定容器镜像:

    带有设置 GitOps 配置集的 SonataFlow CR 示例

    apiVersion: sonataflow.org/v1alpha08
    kind: SonataFlow
    metadata:
      annotations:
        sonataflow.org/profile: gitops
      name: workflow_name
    spec:
      flow: 
    1
    
    #...
      podTemplate:
        container:
          image: your-registry/workflow_name:tag
    #...
    Copy to Clipboard Toggle word wrap

    1
    定义必须与构建过程中使用的工作流定义匹配。当使用 GitOps 配置集部署工作流时,Operator 会将此定义与嵌入在容器镜像中的工作流文件进行比较。如果定义和文件不匹配,部署会失败。
  2. 应用 CR 来部署工作流:

    $ oc apply -f <filename>
    Copy to Clipboard Toggle word wrap

1.2.4. 编辑工作流

当 OpenShift Serverless Logic Operator 部署工作流服务时,它会创建两个配置映射来存储运行时属性:

  • 用户属性:在 ConfigMap 中定义,以带有后缀 的 SonataFlow 对象命名。例如,如果您的工作流名称是 greeting,则 ConfigMap 名称为 greeting-props
  • 受管属性:在 ConfigMap 中定义,以带有 suffix -managed-propsSonataFlow 对象命名。例如,如果您的工作流名称是 greeting,则 ConfigMap 名称为 greeting-managed-props
注意

受管属性始终覆盖具有相同密钥名称的任何 user 属性,用户无法编辑。在下一个协调周期中,Operator 都会覆盖任何更改。

先决条件

  • 已在集群中安装了 OpenShift Serverless Logic Operator。
  • 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 已安装 OpenShift CLI (oc)

流程

  1. 运行以下命令打开并编辑 ConfigMap

    $ oc edit cm <workflow_name>-props -n <namespace>
    Copy to Clipboard Toggle word wrap

    <workflow_name > 替换为工作流的名称,将 &lt;namespace> 替换为部署工作流的命名空间。

  2. application.properties 部分中添加属性。

    存储在 ConfigMap 中的工作流属性示例:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      labels:
        app: greeting
      name: greeting-props
      namespace: default
    data:
      application.properties: |
        my.properties.key = any-value
    Copy to Clipboard Toggle word wrap

    确保正确格式化属性,以防止 Operator 将配置替换为默认配置。

  3. 进行必要的更改后,保存文件并退出编辑器。

1.2.5. 测试工作流

要验证 OpenShift Serverless Logic 工作流是否在正确运行,您可以从相关 pod 执行测试 HTTP 调用。

先决条件

  • 已在集群中安装了 OpenShift Serverless Logic Operator。
  • 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 已安装 OpenShift CLI (oc)

流程

  1. 运行以下命令,为命名空间中的指定服务创建路由:

    $ oc expose svc <service_name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,获取新公开的服务的 URL:

    $ WORKFLOW_SVC=$(oc get route/<service_name> --template='{{.spec.host}}')
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,执行测试 HTTP 调用并发送 POST 请求:

    $ curl -X POST -H 'Content-Type:application/json' -H 'Accept:application/json' -d '<request_body>' http://$WORKFLOW_SVC/<endpoint>
    Copy to Clipboard Toggle word wrap
  4. 验证响应,以确保工作流按预期工作。

1.2.6. 工作流故障排除

OpenShift Serverless Logic Operator 使用健康检查探测部署其 pod,以确保工作流以健康状态运行。如果更改导致这些健康检查失败,pod 将停止响应。

先决条件

  • 已在集群中安装了 OpenShift Serverless Logic Operator。
  • 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 已安装 OpenShift CLI (oc)

流程

  1. 运行以下命令检查工作流状态:

    $ oc get workflow <name> -o jsonpath={.status.conditions} | jq .
    Copy to Clipboard Toggle word wrap
  2. 要从工作流的部署中获取和分析日志,请运行以下命令:

    $ oc logs deployment/<workflow_name> -f
    Copy to Clipboard Toggle word wrap

1.2.7. 删除工作流

您可以使用 oc delete 命令删除当前目录中的 OpenShift Serverless Logic 工作流。

先决条件

  • 已在集群中安装了 OpenShift Serverless Logic Operator。
  • 您可以使用适当的角色和权限访问 OpenShift Serverless Logic 项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
  • 已安装 OpenShift CLI (oc)

流程

  1. 验证您具有定义您要删除的工作流的正确文件。例如,workflow.yaml
  2. 运行 oc delete 命令从指定的命名空间中删除工作流:

    $ oc delete -f <your_file> -n <your_namespace>
    Copy to Clipboard Toggle word wrap

    <your_file > 替换为工作流文件的名称,将 &lt ;your_namespace& gt; 替换为您的命名空间。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat