第8章 Fuse on OpenShift 上での Spring Boot 2 用 SOAP to REST ブリッジクイックスタートの実行
このクイックスタートは、Camel の REST DSL を使用してバックエンド SOAP API を公開する方法を示しています。簡単な camel ルートは REST 呼び出しをレガシー SOAP サービスにブリッジできます。RH SSO がサポートする REST エンドポイントと SOAP エンドポイントの両方に対してセキュリティーが関与します。OAuth および OpenID Connect によって保護されるフロントエンド REST API ならびにクライアントは、リソースオーナーパスワードクレデンシャル OAuth2 モードを使用して RH SSO から JWT アクセストークンを取得し、このトークンを使用して REST エンドポイントにアクセスします。
前提条件
- OCP 4.1 以降のバージョンをインストールし、設定している。
- RH SSO 7.4 以降のバージョンをインストールしている。
- 3Scale 2.8 以降のバージョンをインストールしている。
-
registry.redhat.io
への認証が設定されている。詳細は、Configuring Red Hat Container Registry authentication を参照してください。
手順
以下のセクションでは、Fuse on OpenShift で SOAP to REST ブリッジクイックスタートを実行し、デプロイする方法を説明します。
- OpenShift サーバーを起動します。このクイックスタートの前提条件として RH SSO イメージ (2 Pod) および 3Scale イメージ (15 Pod) をインストールする必要があるため、--memory 8GB --cpus 4 オプションを使用して、強力なマシンで OpenShift サーバーを起動する必要があります。有効期限のあるセキュリティートークンを発行する必要もあるため、タイムゾーンオプションも追加する必要があります。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 このクイックスタートは RH SSO イメージと同様に
openshift
namespace にデプロイされ (これは関係するテンプレートのデフォルト設定の要件です)、cluster-admin
ロールをユーザーdeveloper
に追加する必要があります。シークレットを作成し、これを
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
namespace からアクセスできることを確認し、テンプレート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 用に専用の新規プロジェクトを作成する必要があります。また、3scale の新たな
threescale-registry-auth
(3scale テンプレートで記述されているようにこの名前を使用してシークレットを作成します) シークレットも作成する必要があります。camel-bridge シークレットからの USERNAME/PASSWORD を再利用できます。ここでは意図的にamp-eval-tech-preview.yml
テンプレートを使用します。これは、ハードウェアリソースを明示的に指定していないため、ローカルマシン/ラップトップで簡単に実行できるためです。3scale テンプレートが Openshift に正常にインストールされたら、コンソールに以下のような出力が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 3scale 管理コンソールにアクセスできる Username/Password をメモします。
* 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 を設定します。
-
RH SSO をインストールした後にコンソールに表示されるユーザー名/パスワードを使用して
https://sso-openshift.OPENSHIFT_IP_ADDR.nip.io/auth
から RH SSO 管理コンソールにログインします。 - ページの左上隅にある Add Realm ボタンをクリックします。
- Add Realm ページで Import Select file ボタンを選択します。
-
ディレクトリーから
./src/main/resources/keycloak-config/realm-export-new.json
を選択します。これは、事前定義されたこのサンプルに必要なrealm/client/user/role
をインポートします。
-
RH SSO をインストールした後にコンソールに表示されるユーザー名/パスワードを使用して
3Scale API ゲートウェイを設定します。
-
3Scale をインストールした後にコンソールに表示されるユーザー名/パスワードを使用して
https://3scale-admin.OPENSHIFT_IP_ADDR.nip.io/p/admin/dashboard
から 3Scale 管理コンソールにログインします。 -
新規製品の作成時に、Define manually を選択し、Name と System name の両方に
camel-security-bridge
を使用します。 -
新規バックエンドを作成する場合は、Name と System name の両方に
camel-security-bridge
を使用し、プライベートベース URL はhttp://spring-boot-camel-soap-rest-bridge-openshift.OPENSHIFT_IP_ADDR.nip.io/
にする必要があります。 - 新規作成したバックエンドを新たに作成したプロダクトに追加します。
-
マッピングルール
Verb:POST Pattern:/
を追加します。 -
アプリケーションプランを作成する場合には、Name と System name の両方に
camel-security-bridge
を使用します。 アプリケーションの作成時に、新しい作成した
camel-security-bridge
アプリケーションプランを選択します。アプリケーションを作成したら、API クレデンシャルをメモします。これらのクレデンシャルを使用して 3scale ゲートウェイにアクセスします。以下に例を示します。User Key bdfb53fe9b426fbf21428fd116035798
User Key bdfb53fe9b426fbf21428fd116035798
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
新たに作成した
camel-security-bridge
プロジェクトを編集し、Dashboard のcamel-security-bridge
から公開します。 - Integration > Settings の順に移動します。Credentials location として HTTP Headers を選択します。
-
Dashboard の
camel-security-bridge
から Integration > Configuration の順に移動し、Staging APIcast と Production APIcast の両方を昇格します。
-
3Scale をインストールした後にコンソールに表示されるユーザー名/パスワードを使用して
デプロイメントしたクイックスタートアプリケーションが含まれるディレクトリーに移動します (例: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
イメージに 2 つの属性を渡す必要があります。1 つは Openshift の RH SSO サーバーアドレスで、これは https://sso-openshift.OPENSHIFT_IP_ADDR.nip.io です。もう 1 つは、バックエンド soap サーバーです。このクイックスタートでは、ローカルマシンでバックエンド soap サーバーを実行するので、マシンのローカル IP アドレスを -Dweather.service.host として渡します(ローカルホストまたは 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 ドキュメントを提供します。Web ブラウザーから API ドキュメント (http://spring-boot-camel-soap-rest-bridge-openshift.OPENSHIFT_IP_ADDR.nip.io/camelcxf/openapi/openapi.jsonn) にアクセスできます。