第 8 章 在 OpenShift 的 Fuse 上运行 SOAP 到 REST 网桥快速入门
此快速入门演示了如何使用 Camel 的 REST DSL 发布后端 SOAP API。简单 camel 路由可将 REST 调用桥接到旧的 SOAP 服务。对于受 RH SSO 支持的 REST 端点和 SOAP 端点,安全性均涉及 REST 端点和 SOAP 端点。通过 OAuth 和 OpenID Connect 保护的前端 REST API,客户端将使用 Resource Owner Password Credentials OAuth2 模式从 RH SSO 中获取 JWT 访问令牌,并使用此令牌访问 REST 端点。
Prerequsites
- 已安装并配置了 OCP 4.1 或更高版本。
- 已安装 RH SSO 7.4 或更高版本。
- 已安装 3Scale 2.8 或更高版本。
-
您已将身份验证配置为
registry.redhat.io
。如需更多信息,请参阅配置 Red Hat Container Registry 身份验证。
流程
下面的部分解释了如何在 OpenShift 的 Fuse 中运行和部署 SOAP 到 REST 桥接快速启动。
- 启动 OpenShift 服务器。由于我们需要安装 RH SSO 镜像(2 个 Pod)和 3Scale 镜像(15 个 Pod),作为此快速入门的先决条件,我们需要在功能强大的机器上启动 OpenShift 服务器,其选项为 --memory 8GB --cpus 4。我们还需要将安全令牌与过期时间发布,因此还需要添加时区选项。确保 Openshift 集群使用与您的本地机器相同的时区(默认情况下,将使用 UTC 时区)。
将
cluster-admin
角色添加到用户developer
。oc login -u system:admin oc adm policy add-cluster-role-to-user cluster-admin developer oc login -u developer oc project openshift
$ oc login -u system:admin $ oc adm policy add-cluster-role-to-user cluster-admin developer $ oc login -u developer $ oc project openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此快速入门部署在
openshift
命名空间中(这是涉及的模板的默认配置的要求),以及 RH SSO 镜像,因此我们需要将cluster-admin
角色添加到用户developer
。创建一个 secret,并将它链接到
serviceaccounts
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 RH SSO 镜像流,并使用模板
sso74-x509-postgresql-persistent
安装 RH SSO。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 RH SSO 镜像可从
openshift
命名空间获取,然后使用sso74-x509-postgresql-persistent
安装 RH SSO。此模板可以显著保存 RH SSO 配置,因此配置会在 Openshift 服务器重启后保留。在服务器中成功安装了 RH SSO 镜像后,您可以在控制台中看到其输出,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意用于访问 RH SSO 管理控制台的 Username/Password。例如,
* RH-SSO Administrator Username=tprYtXP1 # generated * RH-SSO Administrator Password=nEjf7fojv11FmhJ5eaqadoh0SI2gvlls # generated
* RH-SSO Administrator Username=tprYtXP1 # generated * RH-SSO Administrator Password=nEjf7fojv11FmhJ5eaqadoh0SI2gvlls # generated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 3scale 项目中安装 3scale 模板。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 openshift 上的 3scale 安装将启动 15 个 pod,因此需要为 3scale 创建一个新项目。您还需要一个新的
threescale-registry-auth
(使用此名称创建 secret,因为它是在 3scale 模板中写入)secret。您可以从 camel-bridge secret 重复使用 USERNAME/PASSWORD。我们在这里特意使用amp-eval-tech-preview.yml
模板,因为它没有明确指定硬件资源,因此可以在本地计算机/辅助设备上轻松运行。在 Openshift 上成功安装了 3scale 模板后,您可以看到控制台上的输出,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意 Username/Password,以访问 3scale 管理控制台。
* ADMIN_PASSWORD=b6t784nt # generated * ADMIN_USERNAME=admin
* ADMIN_PASSWORD=b6t784nt # generated * ADMIN_USERNAME=admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 RH SSO。
-
从
https://sso-openshift.OPENSHIFT_IP_ADDR.nip.io/auth
登录 RH SSO 管理控制台,并在控制台上显示在 RH SSO 安装后显示的用户名/密码。 - 点页面左上角的 Add Realm 按钮。
- 在 Add Realm 页面中,选择 Import Select file 按钮。
-
从目录中选择
./src/main/resources/keycloak-config/realm-export-new.json
,这将导入预先定义的realm/client/user/role
。
-
从
配置 3Scale API 网关。
-
通过 3Scale 安装后在控制台上显示用户名/密码从
https://3scale-admin.OPENSHIFT_IP_ADDR.nip.io/p/admin/dashboard
登录 3Scale Admin Console。 -
在创建新产品时,为 Name 和 系统名称 选择 Define manually and use
camel-security-bridge
。 -
在创建新后端时,在 Name 和 系统名称中使用
camel-security-bridge
,私有基本 URL 应该是http://spring-boot-camel-soap-rest-bridge-openshift.OPENSHIFT_IP_ADDR.nip.io/
。 - 将新创建的后端添加到新创建的产品。
-
添加映射规则
Verb:POST Pattern:/
。 -
在创建应用程序计划时,在 名称和系统 名称中使用
camel-security-bridge
。 在创建应用程序时,选择新创建的
camel-security-bridge
应用程序计划。创建应用程序后,记下 API 凭据。使用这些凭据访问 3scale 网关。对于 eample,User Key bdfb53fe9b426fbf21428fd116035798
User Key bdfb53fe9b426fbf21428fd116035798
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
编辑新创建的
camel-security-bridge
项目,并在 Dashboard 中从camel-security-bridge
发布它。 - 进入 Integration > Settings。选择 As HTTP 标头 作为 Credentials 位置。
-
从 Dashboard 的
camel-security-bridge
中,进入 Integration > Configuration,并推广 Staging APIcast 和 Production APIcast。
-
通过 3Scale 安装后在控制台上显示用户名/密码从
进入包含提取的 quickstart 应用程序的目录(如 my_openshift/spring-boot-camel-SOAp-rest-bridge)。
cd my_openshift/spring-boot-camel-soap-rest-bridge
$ cd my_openshift/spring-boot-camel-soap-rest-bridge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 构建项目并部署到 OpenShift 集群。
mvn clean oc:deploy -Popenshift -DJAVA_OPTIONS="-Dsso.server=https://sso-openshift.OPENSHIFT_IP_ADDR.nip.io -Dweather.service.host=${your local ip}"
$ mvn clean oc:deploy -Popenshift -DJAVA_OPTIONS="-Dsso.server=https://sso-openshift.OPENSHIFT_IP_ADDR.nip.io -Dweather.service.host=${your local ip}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 我们需要传递两个属性,以便在 openshift 上
camel-soap-rest-bridge
镜像。个是 openshift 上的 RH SSO 服务器地址,这是 https://sso-openshift.OPENSHIFT_IP_ADDR.nip.io。另一个是后端的 soap 服务器。在此快速入门中,我们在本地机器上运行 backend soap 服务器,因此将您的机器的本地 IP 地址作为 -Dweather.service.host 传递。(该地址必须是 localhost 或 127.0.0.1 以外的 IP 地址)。-
在浏览器中,导航到 OpenShift 控制台中的
openshift
项目。等待spring-boot-camel-soap-rest-bridge
启动了 pod。 -
在项目的 Overview 页面中,导航到
spring-boot-camel-soap-rest-bridge
应用程序的详情页面部署: https://OPENSHIFT_IP_ADDR:8443/console/project/openshift/browse/pods/spring-boot-camel-soap-rest-bridge-NUMBER_OF_DEPLOYMENT?tab=details。 - 切换到 Logs 选项卡,以从 Camel 查看日志。
- 访问 OpenApi API。
本例使用 context-path camelcxf/openapi,使用 openapi 提供 API 文档。您可以从浏览器中通过 http://spring-boot-camel-soap-rest-bridge-openshift.OPENSHIFT_IP_ADDR.nip.io/camelcxf/openapi/openapi.jsonn 访问 API 文档。