7.4. 在集群中部署工作流
您可以在集群中部署工作流,因为镜像被推送到镜像 registry 和部署清单。
先决条件
已安装以下版本的 OpenShift Container Platform 集群:
- Red Hat Developer Hub (RHDH) 1.7
- Orchestrator plugins 1.7.1
-
OpenShift Serverless
v1.36 OpenShift Serverless Logic
v1.36有关如何安装这些组件的说明,请参阅 OpenShift Container Platform 上的 Orchestrator 插件组件。
-
您必须在包含
SonataflowPlatform自定义资源(CR)的命名空间中应用工作流清单,用于管理 支持服务。
流程
使用指定目标命名空间的
kubectl create命令来应用 Kubernetes 清单,如下例所示:kubectl create -n <your_namespace> -f ./01_basic/manifests/.部署后,监控工作流 pod 的状态,如下例所示:
kubectl get pods -n <your_namespace> -l app=basicpod 最初可能会出现
Error状态,因为 Secret 或 ConfigMap 中缺少或不完整的配置。检查 Pod 日志,如下例所示:
oc logs -n <your_namespace> basic-f7c6ff455-vwl56以下代码是输出示例:
SRCFG00040: The config property quarkus.openapi-generator.notifications.auth.BearerToken.bearer-token is defined as the empty String ("") which the following Converter considered to be null: io.smallrye.config.Converters$BuiltInConverter java.lang.RuntimeException: Failed to start quarkus ... Caused by: io.quarkus.runtime.configuration.ConfigurationException: Failed to read configuration properties错误表示缺少属性:
quarkus.openapi-generator.notifications.auth.BearerToken.bearer-token。在这种情况下,日志显示
ConfigurationException: Failed to read configuration properties错误或指示缺失的值,检索 ConfigMap,如下例所示:oc get -n <your_namespace> configmaps basic-props -o yaml以下代码是示例输出示例:
apiVersion: v1 data: application.properties: | # Backstage notifications service quarkus.rest-client.notifications.url=${BACKSTAGE_NOTIFICATIONS_URL} quarkus.openapi-generator.notifications.auth.BearerToken.bearer-token=${NOTIFICATIONS_BEARER_TOKEN} ...使用通过 Secret 提供的值解析占位符。
您必须编辑对应的 Secret,并提供适当的 base64 编码值来解析
application.properties中的占位符,如下例所示:kubectl edit secrets -n <your_namespace> basic-secrets-
重启工作流 Pod 以便在 OpenShift Serverless Logic
v1.36中生效。
验证
通过再次检查 Pod 来验证部署状态,如下例所示:
oc get pods -n <your_namespace> -l app=basic成功部署的工作流 Pod 的预期状态如下:
NAME READY STATUS RESTARTS AGE basic-f7c6ff455-grkxd 1/1 Running 0 47s-
Pod 处于
Running状态后,工作流现在会出现在 Red Hat Developer Hub 中的 Orchestrator 插件中。
后续步骤
- 检查提供的构建脚本,以提取实际步骤并在您首选的 CI/CD 工具中实施它们,如 GitHub Actions、GitLab CI、Jenkins 和 Tekton。