6 OKEでのクイック・スタート
この項の手順に従って、マイクロサービス対応トランザクション・マネージャ(MicroTx)をOracle Container Engine for Kubernetes (OKE)にインストールし、サンプル・アプリケーションを実行します。
スクリプトは、MicroTxをデプロイしたKubernetesクラスタの単一ノードにサンプル・アプリケーションをデプロイします。
テスト環境で、MicroTxをホストするノードをKubernetesクラスタに1つ以上作成します。MicroTxは、Kubernetesの1.21.x以上のバージョンをサポートしています。
runme.sh
スクリプトは、MicroTxをインストールし、Dockerイメージを構築してから、サンプル・アプリケーションをインストールします。runme.sh
スクリプト・ファイルを使用してこれらのステップを自動化せずに、サンプル・アプリケーションを実行することもできます。『Transaction Manager for Microservices開発者ガイド』の「サンプル・アプリケーションのデプロイ」を参照してください。
- 必要なソフトウェアの設定
OKEでのサンプル・アプリケーションの実行を開始する前に、次のタスクを完了する必要があります。 - XAサンプル・アプリケーションの実行
XAサンプル・アプリケーションを実行して、ある部門から別の部門に送金し、MicroTxを使用してXAトランザクションを調整する方法を理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。 - LRAサンプル・アプリケーションの実行
LRAサンプル・アプリケーションを実行して、旅行を予約し、MicroTxを使用してトランザクションを調整する方法について理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。 - TCCサンプル・アプリケーションの実行
TCCサンプル・アプリケーションを実行して、旅行を予約し、MicroTxを使用してトランザクションを調整する方法について理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。
6.1 必要なソフトウェアの設定
OKEでのサンプル・アプリケーションの実行を開始する前に、次のタスクを完了する必要があります。
- 次のコマンドを実行してIstioをダウンロードします。
curl -sL https://istio.io/downloadIstioctl | sh -
runme.sh
スクリプトを実行すると、Istioがインストールされます。 - istioctlクライアント・ツールをローカル・システムの
PATH
環境変数に追加します。次の例ではサンプル値を示しています。ご自身の環境に基づいてパスを指定します。export PATH=$HOME/.istioctl/bin:$PATH
- 次の必要なソフトウェアをインストールします。
- npmバージョン7.x以降。https://nodejs.org/en/download/を参照してください。
- Mavenバージョン3.6以降。https://maven.apache.org/download.cgiを参照してください。
- Java JDKバージョン11以降。https://www.oracle.com/java/technologies/downloads/を参照してください。
- cURL。https://curl.se/download.htmlを参照してください。
- jq。https://stedolan.github.io/jq/download/を参照してください。
- OpenSSL。https://www.openssl.org/を参照してください。
- Kubernetesクラスタと連携するために、Kubernetesコマンドライン・インタフェース(Kubectl) 1.21.x以降のバージョンをインストールして構成します。https://kubernetes.io/docs/tasks/tools/を参照してください。
Kubectl
を使用して、デプロイメントを作成および管理します。Kubectl
は、Kubernetes APIを使用してクラスタとやり取りします。 - Helm 3.xの最新バージョンをローカル・マシンにインストールします。https://helm.sh/docs/intro/install/を参照してください。
- Oracle Cloud Infrastructure (OCI) CLIをインストールします。OCI CLIがKubernetesクラスタに接続するように構成されていることを確認します。https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htmを参照してください。
- OKEを使用してKubernetesクラスタを作成します。
- Oracle OCI Cloudコンソールにログインします。https://www.oracle.com/in/cloud/sign-in.htmlを参照してください。
- OKE環境にKubernetesクラスタを作成します。Oracle Cloud Infrastructureドキュメントのクラスタを作成するためのクイック作成ワークフローを参照してください。
- 作成したKubernetesクラスタへのローカル・アクセスを設定して、ローカル・マシンからOKEクラスタ環境にアクセスできるようにします。Oracle Cloud Infrastructureドキュメントのクラスタへのローカル・アクセスの設定を参照してください。
- アクセス・トークンを作成します。Oracle IAMおよびOracle IDCSを使用してアクセス・トークンを作成するには、Oracleアイデンティティ・プロバイダの使用およびアクセス・トークンの作成を参照してください。KeycloakまたはMicrosoft ADをアイデンティティ・プロバイダとして使用する場合は、アイデンティティ・プロバイダの設定およびアクセス・トークンの作成の詳細について製品ドキュメントを参照してください。
- サンプルXAアプリケーションを実行するために2つのトランザクション参加側サービスのリソース・マネージャを設定します。Oracle Databaseをリソース・マネージャとして設定します。XA準拠リソース・マネージャの設定を参照してください。
- Java Development Kit (JDK)がローカル・システムにインストールされていることを確認し、Bashシェルで次のコマンドを実行して、次の環境変数を設定します。
export JAVA_HOME=jdk-install-dir export PATH=$JAVA_HOME/bin:$PATH
JDKには、証明書を作成および管理するためのユーティリティであるkeytoolが含まれています。
runme.sh
スクリプトは、keytoolユーティリティを実行して証明書を生成し、TLSでMicroTxにアクセスできるようにします。 - Bashシェルでコマンドを実行するためのsudo権限を持っていることを確認します。
- Oracleアイデンティティ・プロバイダの使用
Oracle Identity Cloud Service (IDCS)またはOracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。 - アクセス・トークンの作成
このトピックでは、Oracle IDCSまたはOracle IAMをアイデンティティ・プロバイダとして使用する際のアクセス・トークンの作成に関する詳細を説明します。
親トピック: OKEでのクイック・スタート
6.1.1 Oracleアイデンティティ・プロバイダの使用
Oracle Identity Cloud Service (IDCS)またはOracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。
KeycloakまたはMicrosoft ADをアイデンティティ・プロバイダとして使用する場合は、アイデンティティ・プロバイダの設定およびアクセス・トークンの作成の詳細について製品ドキュメントを参照してください。
Oracle Cloud Infrastructureでは、以前はOracle IDCSがアイデンティティ・プロバイダとして使用されていました。現在、Oracle Cloud Infrastructureでは、アイデンティティ・プロバイダとしてOracle IAMが使用されます。
- アイデンティティ・プロバイダとしてのOracle IAMの使用
Oracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。 - アイデンティティ・プロバイダとしてのOracle IDCSの使用
Oracle IDCSをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。
親トピック: 必要なソフトウェアの設定
6.1.1.1 アイデンティティ・プロバイダとしてのOracle IAMの使用
Oracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。
親トピック: Oracleアイデンティティ・プロバイダの使用
6.1.1.2 アイデンティティ・プロバイダとしてのOracle IDCSの使用
Oracle IDCSをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。
親トピック: Oracleアイデンティティ・プロバイダの使用
6.1.2 アクセス・トークンの作成
このトピックでは、Oracle IDCSまたはOracle IAMをアイデンティティ・プロバイダとして使用する際のアクセス・トークンの作成に関する詳細を説明します。
KeycloakまたはMicrosoft ADをアイデンティティ・プロバイダとして使用する場合は、アイデンティティ・プロバイダの設定およびアクセス・トークンの作成の詳細について製品ドキュメントを参照してください。
サービスに対するAPIコールは、有効な認証トークンが必要です。アクセス・トークンを作成します。これは、サービスに対する後続のAPIコールで指定できます。アクセス・トークンの他に、サービスに対する後続のAPIコールでリフレッシュ・トークンを指定することもできます。MicroTxは、リフレッシュ・トークンを使用して期限切れのアクセス・トークンをリフレッシュします。
OAuth 2.0トークンを取得した後、サービスに対する後続のAPIコールを作成するときに、authorization
およびrefresh-token
ヘッダーのトークンを使用します。
親トピック: 必要なソフトウェアの設定
6.2 XAサンプル・アプリケーションの実行
XAサンプル・アプリケーションを実行して、ある部門から別の部門に送金し、MicroTxを使用してXAトランザクションを調整する方法を理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。
このサンプル・アプリケーションでは、XAトランザクションに参加し、MicroTxを使用してトランザクションを調整するマイクロサービスを開発する方法が示されます。振込アプリケーションを実行すると、これがXAトランザクションを作成し、ある部門から資金を引き出して別の部門に預け入れます。XAトランザクションでは、引出しと預入れなどのすべてのアクションが成功するか、1つ以上のアクションが失敗した場合にすべてがロールバックされます。サンプルXAアプリケーションの詳細は、『Transaction Manager for Microservices開発者ガイド』のサンプルXAアプリケーションを参照してください。
- スクリプトによってサンプル・アプリケーションのDockerイメージをプッシュするOracle Cloud Infrastructure Registryの名前。
- 資格証明や接続文字列など、データベースへの接続に必要な詳細情報。
- 前提条件を満たし、必要なソフトウェアを設定します。前提条件を参照してください。
runme.sh
スクリプト・ファイルを使用してサンプルXAアプリケーションを実行するには:
- Kialiダッシュボードを使用して、MicroTxでサンプル・マイクロサービス間のリクエストのフローがどのように処理されるかを確認します。
- Jaegerを使用して分散トレースを実行し、トランザクション全体をトレースします。「Jaegerを使用した分散トレースの実行」を参照してください。
- 別のサンプル・アプリケーションを実行します。
- サンプル・アプリケーションのソース・ファイルを確認します。
- ログ・ファイルを表示して、トランザクションの詳細を確認します。
- MicroTxを使用して独自のアプリケーションを作成して実行します。
親トピック: OKEでのクイック・スタート
6.3 LRAサンプル・アプリケーションの実行
LRAサンプル・アプリケーションを実行して、旅行を予約し、MicroTxを使用してトランザクションを調整する方法について理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。
このサンプル・アプリケーションでは、LRAトランザクションに参加し、MicroTxを使用してトランザクションを調整するマイクロサービスを開発する方法が示されます。このアプリケーションを実行すると、ホテル客室と航空券が予約され、仮予約が行われます。予約を確定する承認を与えた場合のみ、ホテル客室と航空券の予約が確定されます。仮予約を取り消すと、押さえていたホテル客室と航空券が解放され、予約が取り消されます。デフォルトでは、フライト・サービスで確定できるのは2件の予約のみです。エラー・シナリオをテストできるように、フライト・サービス・サンプル・アプリケーションは、2件の予約の確定後に追加の予約リクエストが行われると拒否します。これは、旅行のホテル仮予約の取消(補正)につながり、その旅行は予約されなくなります。サンプルLRAアプリケーションの詳細は、『Transaction Manager for Microservices開発者ガイド』のサンプルLRAアプリケーションを参照してください。
runme.sh
スクリプト・ファイルを使用してサンプルLRAアプリケーションを実行するには:
- Kialiダッシュボードを使用して、MicroTxでサンプル・マイクロサービス間のリクエストのフローがどのように処理されるかを確認します。
- Jaegerを使用して分散トレースを実行し、トランザクション全体をトレースします。「Jaegerを使用した分散トレースの実行」を参照してください。
- 別のサンプル・アプリケーションを実行します。
- サンプル・アプリケーションのソース・ファイルを確認します。
- ログ・ファイルを表示して、トランザクションの詳細を確認します。
- MicroTxを使用して独自のアプリケーションを作成して実行します。
親トピック: OKEでのクイック・スタート
6.4 TCCサンプル・アプリケーションの実行
TCCサンプル・アプリケーションを実行して、旅行を予約し、MicroTxを使用してトランザクションを調整する方法について理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。
サンプルTCCアプリケーションによって実装されるシナリオでは、旅行代理店マイクロサービスが旅行を予約し、航空券予約サービスが航空券を予約し、ホテル予約マイクロサービスがホテルを予約します。旅行代理店サービスは、航空券とホテル両方の予約サービスにアクセスします。顧客が航空券とホテルを予約すると、顧客が支払を完了して予約を確定するまで、その予約が押さえられています。エラーが発生すると、予約されたリソースが取り消され、リソースはインベントリに戻されます。サンプルTCCアプリケーションの詳細は、『Transaction Manager for Microservices開発者ガイド』のサンプルTCCアプリケーションを参照してください。
runme.sh
スクリプト・ファイルを使用してサンプルTCCアプリケーションを実行するには:
- Kialiダッシュボードを使用して、MicroTxでサンプル・マイクロサービス間のリクエストのフローがどのように処理されるかを確認します。
- Jaegerを使用して分散トレースを実行し、トランザクション全体をトレースします。「Jaegerを使用した分散トレースの実行」を参照してください。
- 別のサンプル・アプリケーションを実行します。
- サンプル・アプリケーションのソース・ファイルを確認します。
- ログ・ファイルを表示して、トランザクションの詳細を確認します。
- MicroTxを使用して独自のアプリケーションを作成して実行します。
親トピック: OKEでのクイック・スタート