将 Spring Cloud Data Flow 2.6.0 部署到 Openshift

Deploy Spring Cloud Data Flow 2.6.0 to Openshift

我正在尝试将 SCDF 2.6.0 部署到 Openshift。 我可以验证数据库架构是否已成功更新,但似乎 Tomcat 无法启动并出现以下错误,我不知道发生了什么。

Caused by: java.lang.IllegalArgumentException: standardService.connector.startFailed
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
Caused by: java.net.SocketException: Permission denied

重现步骤

使用MariaDB,然后按以下顺序导入*.yaml

  1. 服务器-roles.yaml
  2. 服务器-rolebinding.yaml
  3. 服务-account.yaml
  4. server-config.yaml(确保在此处更改数据库连接)
  5. 服务器-svc.yaml
  6. 服务器-deployment.yaml

我在我的仓库中上传了所有的 yml 和完整的日志文件: https://github.com/gry77/app-issue-repo/tree/master/Openshift-SCDF-issue/k8s-config

OpenShift 默认不允许您 运行 容器作为特权,因此您需要使用 SecurityContextConstraint 特别允许。这里有一份关于如何在 OpenShift 上将 SCDF 设置为 运行 的很好的文档:https://donovanmuller.blog/spring-cloud-dataflow-server-openshift/docs/1.1.0.RELEASE/reference/htmlsingle/#_creating_and_configuring_service_accounts

基本上,您需要将 anyuid SCC 添加到 ServiceAccount 运行宁 Pods:

oc adm policy add-scc-to-user anyuid system:serviceaccount:scdf:scdf

显然,在我将服务器端口从 80 更改为其他端口后,此错误消失了。

所以只需将环境中的 server.port 更改为其他 80