第 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

流程

下面的部分解释了如何在 OpenShift 的 Fuse 中运行和部署 SOAP 到 REST 桥接快速启动。

  1. 启动 OpenShift 服务器。由于我们需要安装 RH SSO 镜像(2 个 Pod)和 3Scale 镜像(15 个 Pod),作为此快速入门的先决条件,我们需要在功能强大的机器上启动 OpenShift 服务器,其选项为 --memory 8GB --cpus 4。我们还需要将安全令牌与过期时间发布,因此还需要添加时区选项。确保 Openshift 集群使用与您的本地机器相同的时区(默认情况下,将使用 UTC 时区)。
  2. 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
    Copy to Clipboard Toggle word wrap

    此快速入门部署在 openshift 命名空间中(这是涉及的模板的默认配置的要求),以及 RH SSO 镜像,因此我们需要将 cluster-admin 角色添加到用户 developer

  3. 创建一个 secret,并将它链接到 serviceaccounts

    $ oc create secret docker-registry camel-bridge --docker-server=registry.redhat.io \
      --docker-username=USERNAME \
      --docker-password=PASSWORD \
      --docker-email=EMAIL_ADDRESS
    $ oc secrets link default camel-bridge --for=pull
    $ oc secrets link builder camel-bridge
    Copy to Clipboard Toggle word wrap
  4. 添加 RH SSO 镜像流,并使用模板 sso74-x509-postgresql-persistent 安装 RH SSO。

    $ for resource in sso74-image-stream.json \
       sso74-https.json \
       sso74-postgresql.json \
       sso74-postgresql-persistent.json \
       sso74-x509-https.json \
       sso74-x509-postgresql-persistent.json
     do
       oc create -f \
       https://raw.githubusercontent.com/jboss-container-images/redhat-sso-7-openshift-image/sso74-dev/templates/${resource}
     done
    
    $ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
    
    $ oc new-app --template=sso74-x509-postgresql-persistent
    Copy to Clipboard Toggle word wrap

    验证 RH SSO 镜像可从 openshift 命名空间获取,然后使用 sso74-x509-postgresql-persistent 安装 RH SSO。此模板可以显著保存 RH SSO 配置,因此配置会在 Openshift 服务器重启后保留。

  5. 在服务器中成功安装了 RH SSO 镜像后,您可以在控制台中看到其输出,如下所示:

    A new persistent RH-SSO service (using PostgreSQL) has been created in your project. The admin username/password for accessing the master realm via the RH-SSO console is tprYtXP1/nEjf7fojv11FmhJ5eaqadoh0SI2gvlls. The username/password for accessing the PostgreSQL database "root" is userqxe/XNYRjL74CrJEWW7HiSYEdH5FMKVSDytx. The HTTPS keystore used for serving secure content, the JGroups keystore used for securing JGroups communications, and server truststore used for securing RH-SSO requests were automatically created via OpenShift's service serving x509 certificate secrets.
    
         * With parameters:
            * Application Name=sso
            * Custom RH-SSO Server Hostname=
            * JGroups Cluster Password=1whGRnsAWu162u0e4P6jNpLn5ysJLWjg # generated
            * Database JNDI Name=java:jboss/datasources/KeycloakDS
            * Database Name=root
            * Datasource Minimum Pool Size=
            * Datasource Maximum Pool Size=
            * Datasource Transaction Isolation=
            * PostgreSQL Maximum number of connections=
            * PostgreSQL Shared Buffers=
            * Database Username=userqxe # generated
            * Database Password=XNYRjL74CrJEWW7HiSYEdH5FMKVSDytx # generated
            * Database Volume Capacity=1Gi
            * ImageStream Namespace=openshift
            * RH-SSO Administrator Username=tprYtXP1 # generated
            * RH-SSO Administrator Password=nEjf7fojv11FmhJ5eaqadoh0SI2gvlls # generated
            * RH-SSO Realm=
            * RH-SSO Service Username=
            * RH-SSO Service Password=
            * PostgreSQL Image Stream Tag=10
            * Container Memory Limit=1Gi
    Copy to Clipboard Toggle word wrap
  6. 注意用于访问 RH SSO 管理控制台的 Username/Password。例如,

     * RH-SSO Administrator Username=tprYtXP1 # generated
     * RH-SSO Administrator Password=nEjf7fojv11FmhJ5eaqadoh0SI2gvlls # generated
    Copy to Clipboard Toggle word wrap
  7. 在 3scale 项目中安装 3scale 模板。

    $ oc new-project 3scale
    $ oc create secret docker-registry threescale-registry-auth --docker-server=registry.redhat.io --docker-server=registry.redhat.io \
      --docker-username=USERNAME \
      --docker-password=PASSWORD \
      --docker-email=EMAIL_ADDRESS
    $ oc secrets link default threescale-registry-auth --for=pull
    $ oc secrets link builder threescale-registry-auth
    $ oc new-app --param WILDCARD_DOMAIN="OPENSHIFT_IP_ADDR.nip.io" -f https://raw.githubusercontent.com/3scale/3scale-amp-openshift-templates/2.8.0.GA/amp/amp-eval-tech-preview.yml
    Copy to Clipboard Toggle word wrap

    在 openshift 上的 3scale 安装将启动 15 个 pod,因此需要为 3scale 创建一个新项目。您还需要一个新的 threescale-registry-auth (使用此名称创建 secret,因为它是在 3scale 模板中写入)secret。您可以从 camel-bridge secret 重复使用 USERNAME/PASSWORD。我们在这里特意使用 amp-eval-tech-preview.yml 模板,因为它没有明确指定硬件资源,因此可以在本地计算机/辅助设备上轻松运行。

  8. 在 Openshift 上成功安装了 3scale 模板后,您可以看到控制台上的输出,如下所示:

    3scale API Management
         ---------
         3scale API Management main system (Evaluation)
    
         Login on https://3scale-admin.192.168.64.33.nip.io as admin/b6t784nt
    
         * With parameters:
            * AMP_RELEASE=2.8
            * APP_LABEL=3scale-api-management
            * TENANT_NAME=3scale
            * RWX_STORAGE_CLASS=null
            * AMP_BACKEND_IMAGE=registry.redhat.io/3scale-amp2/backend-rhel7:3scale2.8
            * AMP_ZYNC_IMAGE=registry.redhat.io/3scale-amp2/zync-rhel7:3scale2.8
            * AMP_APICAST_IMAGE=registry.redhat.io/3scale-amp2/apicast-gateway-rhel8:3scale2.8
            * AMP_SYSTEM_IMAGE=registry.redhat.io/3scale-amp2/system-rhel7:3scale2.8
            * ZYNC_DATABASE_IMAGE=registry.redhat.io/rhscl/postgresql-10-rhel7
            * MEMCACHED_IMAGE=registry.redhat.io/3scale-amp2/memcached-rhel7:3scale2.8
            * IMAGESTREAM_TAG_IMPORT_INSECURE=false
            * SYSTEM_DATABASE_IMAGE=registry.redhat.io/rhscl/mysql-57-rhel7:5.7
            * REDIS_IMAGE=registry.redhat.io/rhscl/redis-32-rhel7:3.2
            * System MySQL User=mysql
            * System MySQL Password=mrscfh4h # generated
            * System MySQL Database Name=system
            * System MySQL Root password.=xbi0ch3i # generated
            * WILDCARD_DOMAIN=192.168.64.33.nip.io
            * SYSTEM_BACKEND_USERNAME=3scale_api_user
            * SYSTEM_BACKEND_PASSWORD=kraji167 # generated
            * SYSTEM_BACKEND_SHARED_SECRET=8af5m6gb # generated
            * SYSTEM_APP_SECRET_KEY_BASE=726e63427173e58cbb68a63bdc60c7315565d6acd037caedeeb0050ecc0e6e41c3c7ec4aba01c17d8d8b7b7e3a28d6166d351a6238608bb84aa5d5b2dc02ae60 # generated
            * ADMIN_PASSWORD=b6t784nt # generated
            * ADMIN_USERNAME=admin
            * ADMIN_EMAIL=
            * ADMIN_ACCESS_TOKEN=k055jof4itblvwwn # generated
            * MASTER_NAME=master
            * MASTER_USER=master
            * MASTER_PASSWORD=buikudum # generated
            * MASTER_ACCESS_TOKEN=xa7wkt16 # generated
            * RECAPTCHA_PUBLIC_KEY=
            * RECAPTCHA_PRIVATE_KEY=
            * SYSTEM_REDIS_URL=redis://system-redis:6379/1
            * SYSTEM_MESSAGE_BUS_REDIS_URL=
            * SYSTEM_REDIS_NAMESPACE=
            * SYSTEM_MESSAGE_BUS_REDIS_NAMESPACE=
            * Zync Database PostgreSQL Connection Password=efyJdRccBbYcWtWl # generated
            * ZYNC_SECRET_KEY_BASE=dcmNGWtrjCReuJlQ # generated
            * ZYNC_AUTHENTICATION_TOKEN=3FKMAije3V3RWQQ8 # generated
            * APICAST_ACCESS_TOKEN=2ql8txu4 # generated
            * APICAST_MANAGEMENT_API=status
            * APICAST_OPENSSL_VERIFY=false
            * APICAST_RESPONSE_CODES=true
            * APICAST_REGISTRY_URL=http://apicast-staging:8090/policies
    Copy to Clipboard Toggle word wrap
  9. 注意 Username/Password,以访问 3scale 管理控制台。

            * ADMIN_PASSWORD=b6t784nt # generated
            * ADMIN_USERNAME=admin
    Copy to Clipboard Toggle word wrap
  10. 配置 RH SSO。

    1. https://sso-openshift.OPENSHIFT_IP_ADDR.nip.io/auth 登录 RH SSO 管理控制台,并在控制台上显示在 RH SSO 安装后显示的用户名/密码。
    2. 点页面左上角的 Add Realm 按钮。
    3. Add Realm 页面中,选择 Import Select file 按钮。
    4. 从目录中选择 ./src/main/resources/keycloak-config/realm-export-new.json,这将导入预先定义的 realm/client/user/role
  11. 配置 3Scale API 网关。

    1. 通过 3Scale 安装后在控制台上显示用户名/密码从 https://3scale-admin.OPENSHIFT_IP_ADDR.nip.io/p/admin/dashboard 登录 3Scale Admin Console。
    2. 在创建新产品时,为 Name系统名称 选择 Define manually and use camel-security-bridge
    3. 在创建新后端时,在 Name系统名称中使用 camel-security-bridge私有基本 URL 应该是 http://spring-boot-camel-soap-rest-bridge-openshift.OPENSHIFT_IP_ADDR.nip.io/
    4. 将新创建的后端添加到新创建的产品。
    5. 添加映射规则 Verb:POST Pattern:/
    6. 在创建应用程序计划时,在 名称和系统 名称中使用 camel-security-bridge
    7. 在创建应用程序时,选择新创建的 camel-security-bridge 应用程序计划。创建应用程序后,记下 API 凭据。使用这些凭据访问 3scale 网关。对于 eample,

          User Key 	bdfb53fe9b426fbf21428fd116035798
      Copy to Clipboard Toggle word wrap
    8. 编辑新创建的 camel-security-bridge 项目,并在 Dashboard 中从 camel-security-bridge 发布它。
    9. 进入 Integration > Settings。选择 As HTTP 标头 作为 Credentials 位置
    10. 从 Dashboard 的 camel-security-bridge 中,进入 Integration > Configuration,并推广 Staging APIcastProduction APIcast
  12. 进入包含提取的 quickstart 应用程序的目录(如 my_openshift/spring-boot-camel-SOAp-rest-bridge)。

    $ cd my_openshift/spring-boot-camel-soap-rest-bridge
    Copy to Clipboard Toggle word wrap
  13. 构建项目并部署到 OpenShift 集群。

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

    我们需要传递两个属性,以便在 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 地址)。

  14. 在浏览器中,导航到 OpenShift 控制台中的 openshift 项目。等待 spring-boot-camel-soap-rest-bridge 启动了 pod。
  15. 在项目的 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
  16. 切换到 Logs 选项卡,以从 Camel 查看日志。
  17. 访问 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 文档。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat