5 Minikubeでのクイック・スタート

この項の手順に従って、Minikubeを構成し、マイクロサービス対応トランザクション・マネージャ(MicroTx)をインストールしてから、サンプル・アプリケーションを実行します。

注意:

この項で説明する手順は、テスト環境または開発環境専用です。本番環境では、これらの手順を使用してMicroTxを設定および使用しないでください。

runme.shスクリプトは、マイクロサービスを非セキュア・モードで実行します。

ノート:

runme.shスクリプトはテスト環境または開発環境でのみ実行するため、認証の詳細情報を指定する必要はありません。

runme.shスクリプトは、MicroTxをインストールし、Dockerイメージを構築してから、サンプル・アプリケーションをインストールします。runme.shスクリプト・ファイルを使用してこれらのステップを自動化せずに、サンプル・アプリケーションを実行することもできます。『Transaction Manager for Microservices開発者ガイド』「サンプル・アプリケーションのデプロイ」を参照してください。

5.1 必要なソフトウェアの設定

開始する前に、ローカル・システムで次のソフトウェアを使用できるようにします。

  1. Dockerバージョン20.10.xをインストールします。https://docs.docker.com/engine/install/を参照してください。
  2. Dockerをインストールしたら、Minikubeをインストールします。https://minikube.sigs.k8s.io/docs/start/を参照してください。
  3. 次のコマンドを実行してIstioをダウンロードします。
    curl -sL https://istio.io/downloadIstioctl | sh -

    runme.shスクリプトを実行すると、Istioがインストールされます。

  4. istioctlクライアント・ツールをローカル・システムのPATH環境変数に追加します。次の例ではサンプル値を示しています。ご自身の環境に基づいてパスを指定します。
    export PATH=$HOME/.istioctl/bin:$PATH
  5. 次の必要なソフトウェアをインストールします。
  6. Kubernetesクラスタと連携するために、Kubernetesコマンドライン・インタフェース(Kubectl) 1.21.x以降のバージョンをインストールして構成します。https://kubernetes.io/docs/tasks/tools/を参照してください。
    Kubectlを使用して、デプロイメントを作成および管理します。Kubectlは、Kubernetes APIを使用してクラスタとやり取りします。
  7. Helm 3.xの最新バージョンをローカル・マシンにインストールします。詳細は、https://helm.sh/docs/intro/install/を参照してください。
    Helmを使用すると、1つのコマンドを実行してアプリケーションとリソースをKubernetesクラスタにインストールできるため、デプロイメントが容易になります。Helmは、Kubernetes APIサーバーとやり取りして、Kubernetesリソースのインストール、アップグレード、問合せおよび削除を行います。
  8. Java Development Kit (JDK)がローカル・システムにインストールされていることを確認し、Bashシェルで次のコマンドを実行して、次の環境変数を設定します。
    export JAVA_HOME=jdk-install-dir
    export PATH=$JAVA_HOME/bin:$PATH

5.2 XAサンプル・アプリケーションの実行

XAサンプル・アプリケーションを実行して、ある部門から別の部門に送金し、MicroTxを使用してXAトランザクションを調整する方法を理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。

このサンプル・アプリケーションでは、XAトランザクションに参加し、MicroTxを使用してトランザクションを調整するマイクロサービスを開発する方法が示されます。振込アプリケーションを実行すると、これがXAトランザクションを作成し、ある部門から資金を引き出して別の部門に預け入れます。XAトランザクションでは、引出しと預入れなどのすべてのアクションが成功するか、1つ以上のアクションが失敗した場合にすべてがロールバックされます。サンプルXAアプリケーションの詳細は、『Transaction Manager for Microservices開発者ガイド』サンプルXAアプリケーションを参照してください。

開始する前に、次のタスクを完了してください。
  • 前提条件を満たし、必要なソフトウェアを設定します。前提条件を参照してください。
  • XAアプリケーションを実行するために2つのトランザクション参加側サービスのリソース・マネージャを設定します。Oracle Databaseをリソース・マネージャとして設定します。XA準拠リソース・マネージャの設定を参照してください。
  • 資格証明や接続文字列など、データベースへの接続に必要な詳細情報を書き留めます。

runme.shスクリプト・ファイルを使用してサンプルXAアプリケーションを実行するには:

  1. bashシェルで次のコマンドを入力して、runme.shスクリプト・ファイルを実行します。
    cd installation_directory/otmm-<version>
    sh runme.sh
  2. 2を入力して、Minikube環境でサンプル・アプリケーションを実行します。
    このスクリプトは、Minikubeの設定、Istioサービス・メッシュの構成、MicroTxのDockerイメージのロード、MicroTxのインストールを行います。インストールが完了すると、スクリプトによってトランザクション・コーディネータが実行され、トランザクション・コーディネータのURLが提供されます。
  3. 1を入力して、テスト環境でサンプル・アプリケーションおよびMicroTxを非セキュア・モードで実行します。

    場合によっては、スクリプトがサンプル・アプリケーションのイメージをロードしてからインストールするまで、数秒待機する必要があります。

    KUBECONFIG環境変数に設定する必要があるフル・パスがスクリプトによって表示されたら、次のステップを実行できます。

  4. スクリプトによって返されたコマンドをコピーし、そのコマンドを新しいターミナルで実行します。KUBECONFIGを設定して、Minikubeでコマンドを実行するようにKubectlを構成します。

    スクリプトによって実際のコマンドが表示されます。これをコピーして、そのまま新しいターミナルで実行できます。次に、サンプル・コマンドを示します。スクリプトによって返される実際のコマンドは、$HOME変数の値によって異なります。

    export KUBECONFIG=$HOME/.kube/minikube
  5. 新しいターミナルで次のコマンドを実行して、MinikubeとIstioイングレス・ゲートウェイ間のトンネルを開始します。
    $ minikube tunnel

    プロンプトが表示されたら、パスワードを入力してローカル・システムにアクセスし、任意のキーを押してスクリプトの実行を続行します。

  6. 1を入力して、XAトランザクション・プロトコルを使用するサンプル・アプリケーションを実行します。
  7. 部門1アプリケーションがリソース・マネージャに接続するための詳細情報を指定します。
    1. リソース・マネージャとしてOracle Autonomous Databaseを使用する場合は、以前にダウンロードしてローカル・マシンに抽出したOracle Autonomous Databaseウォレットのパスを入力します。たとえば、installation_directory/otmm-RELEASE/samples/xa/java/department-helidon/Database_Walletです。

      別のOracle Databaseを使用している場合は、ウォレットの詳細を指定する必要がないため、[Enter]を押します。

    2. Oracle Databaseのデータ・ストアへの接続文字列を入力します。
      • 非自律型Oracle Database (資格証明ウォレットを使用しないデータベース)を使用している場合は、次の形式を使用して接続文字列を入力します:
        jdbc:oracle:thin:@<publicIP>:<portNumber>/<database unique name>.<host domain name>
        たとえば:
        jdbc:oracle:thin:@123.213.85.123:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.com
      • Oracle Database Cloud ServiceとOracle Cloud Infrastructureの組合せを使用する場合は、『Oracle Blockchain Platformの使用』Oracle Database Classic Cloud Service接続文字列の作成を参照してください。
      • Oracle Autonomous Transaction Processingを使用している場合は、次の形式を使用して接続文字列を入力します:
        jdbc:oracle:thin:@tcps://<host>:<port>/<service_name>?wallet_location=<wallet_dir>

        ホスト、ポート、サービス名など、必要な詳細は、ウォレットを抽出したフォルダにあるtnsnames.oraファイルで確認できます。

        たとえば:

        jdbc:oracle:thin:@tcps://adb.us-phoenix-1.oraclecloud.com:7777/unique_connection_string_low.adb.oraclecloud.com?wallet_location=Database_Wallet
    3. Oracle Databaseにアクセスするためのユーザー名(SYSなど)を入力します。
    4. Oracle Databaseユーザーのパスワードを入力します。
    スクリプトによって、部門1アプリケーションのインストールと実行が行われます。
  8. 部門2アプリケーションがリソース・マネージャに接続するための詳細情報を指定します。
    1. リソース・マネージャとしてOracle Autonomous Databaseを使用する場合は、以前にダウンロードしてローカル・マシンに抽出したOracle Autonomous Databaseウォレットのパスを入力します。たとえば、installation_directory/otmm-RELEASE/samples/xa/java/department-helidon/Database_Walletです。

      別のOracle Databaseを使用している場合は、ウォレットの詳細を指定する必要がないため、[Enter]を押します。

    2. Oracle Databaseのデータ・ストアへの接続文字列を入力します。
      • 非自律型Oracle Database (資格証明ウォレットを使用しないデータベース)を使用している場合は、次の形式を使用して接続文字列を入力します:
        jdbc:oracle:thin:@<publicIP>:<portNumber>/<database unique name>.<host domain name>
        たとえば:
        jdbc:oracle:thin:@123.213.85.123:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.com
      • Oracle Database Cloud ServiceとOracle Cloud Infrastructureの組合せを使用する場合は、『Oracle Blockchain Platformの使用』Oracle Database Classic Cloud Service接続文字列の作成を参照してください。
      • Oracle Autonomous Transaction Processingを使用している場合は、次の形式を使用して接続文字列を入力します:
        jdbc:oracle:thin:@tcps://<host>:<port>/<service_name>?wallet_location=<wallet_dir>

        ホスト、ポート、サービス名など、必要な詳細は、ウォレットを抽出したフォルダにあるtnsnames.oraファイルで確認できます。

        たとえば:

        jdbc:oracle:thin:@tcps://adb.us-phoenix-1.oraclecloud.com:7777/unique_connection_string_low.adb.oraclecloud.com?wallet_location=Database_Wallet
    3. Oracle Databaseにアクセスするためのユーザー名(SYSなど)を入力します。
    4. Oracle Databaseユーザーのパスワードを入力します。
    スクリプトによって、部門2アプリケーションのインストールと実行が行われます。
  9. 1を入力して、振込アプリケーションを実行し、XAトランザクションを作成して、部門1から部門2に送金します。
  10. 送金元の口座の番号を入力します。サンプル表には、account1からaccount5までの口座番号が含まれています。
    口座残高が表示されます。
  11. 送金先の口座の名前を入力します。サンプル表には、account1からaccount5までの口座番号が含まれています。
    口座残高が表示されます。
  12. 送金する金額を入力します。たとえば、100とします。
    トランザクション後の両方の口座の残高が画面に表示されます。以前の口座残高と現在の口座残高を比較して、送金が行われたことを確認できます。
  13. 任意のキーを押して終了します。
  14. 1を入力して、サンプル・アプリケーションのすべてのマイクロサービスの実行を停止し、サンプル・アプリケーションをアンインストールします。
  15. 1を入力して、MicroTxをアンインストールします。既存のインストールを使用して他のサンプル・アプリケーションを実行する場合は、2を入力します。
  16. 1を入力して、Istioをアンインストールします。既存のインストールを使用して他のサンプル・アプリケーションを実行する場合は、2を入力します。
次のステップ
  • Kialiダッシュボードを使用して、MicroTxでサンプル・マイクロサービス間のリクエストのフローがどのように処理されるかを確認します。
  • Jaegerを使用して分散トレースを実行し、トランザクション全体をトレースします。「Jaegerを使用した分散トレースの実行」を参照してください。
  • 別のサンプル・アプリケーションを実行します。
  • サンプル・アプリケーションのソース・ファイルを確認します。
  • ログ・ファイルを表示して、トランザクションの詳細を確認します。
  • MicroTxを使用して独自のアプリケーションを作成して実行します。

5.3 LRAサンプル・アプリケーションの実行

LRAサンプル・アプリケーションを実行して、旅行を予約し、MicroTxを使用してトランザクションを調整する方法について理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。

このサンプル・アプリケーションでは、LRAトランザクションに参加し、MicroTxを使用してトランザクションを調整するマイクロサービスを開発する方法が示されます。このアプリケーションを実行すると、ホテル客室と航空券が予約され、仮予約が行われます。予約を確定する承認を与えた場合のみ、ホテル客室と航空券の予約が確定されます。仮予約を取り消すと、押さえていたホテル客室と航空券が解放され、予約が取り消されます。デフォルトでは、フライト・サービスで確定できるのは2件の予約のみです。エラー・シナリオをテストできるように、フライト・サービス・サンプル・アプリケーションは、2件の予約の確定後に追加の予約リクエストが行われると拒否します。これは、旅行のホテル仮予約の取消(補正)につながり、その旅行は予約されなくなります。サンプルLRAアプリケーションの詳細は、『Transaction Manager for Microservices開発者ガイド』サンプルLRAアプリケーションを参照してください。

runme.shスクリプト・ファイルを使用してサンプルLRAアプリケーションを実行するには:

  1. bashシェルで次のコマンドを入力して、runme.shスクリプト・ファイルを実行します。
    cd installation_directory/otmm-<version>
    sh runme.sh
  2. 2を入力して、Minikube環境でサンプル・アプリケーションを実行します。
    このスクリプトは、Minikubeの設定、Istioサービス・メッシュの構成、MicroTxのDockerイメージのロード、MicroTxのインストールを行います。インストールが完了すると、スクリプトによってトランザクション・コーディネータが実行され、トランザクション・コーディネータのURLが提供されます。
  3. 1を入力して、テスト環境でサンプル・アプリケーションおよびMicroTxを非セキュア・モードで実行します。

    場合によっては、スクリプトがサンプル・アプリケーションのイメージをロードしてからインストールするまで、数秒待機する必要があります。

    KUBECONFIG環境変数に設定する必要があるフル・パスがスクリプトによって表示されたら、次のステップを実行できます。

  4. スクリプトによって返されたコマンドをコピーし、そのコマンドを新しいターミナルで実行します。KUBECONFIGを設定して、Minikubeでコマンドを実行するようにKubectlを構成します。

    スクリプトによって実際のコマンドが表示されます。これをコピーして、そのまま新しいターミナルで実行できます。次に、サンプル・コマンドを示します。スクリプトによって返される実際のコマンドは、$HOME変数の値によって異なります。

    export KUBECONFIG=$HOME/.kube/minikube
  5. 新しいターミナルで次のコマンドを実行して、MinikubeとIstioイングレス・ゲートウェイ間のトンネルを開始します。
    $ minikube tunnel

    プロンプトが表示されたら、パスワードを入力してローカル・システムにアクセスし、任意のキーを押してスクリプトの実行を続行します。

  6. 2を入力して、LRAトランザクション・プロトコルを使用するサンプル・アプリケーションを実行します。

    このスクリプトによって、サンプル・アプリケーションがインストールされます。

  7. 1を入力して、LRAサンプルアプリケーションを実行することを確認してから、[Enter]を押します。
    このサンプル・アプリケーションは、ホテル客室航空券を暫定的に予約し、仮予約の詳細を表示します。問題が発生すると、仮予約は行われず、Failed Trip Bookingというステータスが表示されます。
  8. 仮予約を確定するか取り消します。正常に処理された仮予約を確定するために1を入力するか、仮予約を取り消すために2を入力してから、[Enter]を入力します。
    1を入力すると、予約が確定され、確定済の予約に関する情報が表示されます。
  9. 任意のキーを押して終了します。
  10. 1を入力して、サンプル・アプリケーションのすべてのマイクロサービスの実行を停止し、サンプル・アプリケーションをアンインストールします。
  11. 1を入力して、MicroTxをアンインストールします。既存のインストールを使用して他のサンプル・アプリケーションを実行する場合は、2を入力します。
  12. 1を入力して、Istioをアンインストールします。既存のインストールを使用して他のサンプル・アプリケーションを実行する場合は、2を入力します。
次のステップ
  • Kialiダッシュボードを使用して、MicroTxでサンプル・マイクロサービス間のリクエストのフローがどのように処理されるかを確認します。
  • Jaegerを使用して分散トレースを実行し、トランザクション全体をトレースします。「Jaegerを使用した分散トレースの実行」を参照してください。
  • 別のサンプル・アプリケーションを実行します。
  • サンプル・アプリケーションのソース・ファイルを確認します。
  • ログ・ファイルを表示して、トランザクションの詳細を確認します。
  • MicroTxを使用して独自のアプリケーションを作成して実行します。

5.4 TCCサンプル・アプリケーションの実行

TCCサンプル・アプリケーションを実行して、旅行を予約し、MicroTxを使用してトランザクションを調整する方法について理解します。MicroTxライブラリ・ファイルは、サンプル・アプリケーション・コードとすでに統合されています。

サンプルTCCアプリケーションによって実装されるシナリオでは、旅行代理店マイクロサービスが旅行を予約し、航空券予約サービスが航空券を予約し、ホテル予約マイクロサービスがホテルを予約します。旅行代理店サービスは、航空券とホテル両方の予約サービスにアクセスします。顧客が航空券とホテルを予約すると、顧客が支払を完了して予約を確定するまで、その予約が押さえられています。エラーが発生すると、予約されたリソースが取り消され、リソースはインベントリに戻されます。サンプルTCCアプリケーションの詳細は、『Transaction Manager for Microservices開発者ガイド』サンプルTCCアプリケーションを参照してください。

runme.shスクリプト・ファイルを使用してサンプルTCCアプリケーションを実行するには:

  1. bashシェルで次のコマンドを入力して、runme.shスクリプト・ファイルを実行します。
    cd installation_directory/otmm-<version>
    sh runme.sh
  2. 2を入力して、Minikube環境でサンプル・アプリケーションを実行します。
    このスクリプトは、Minikubeの設定、Istioサービス・メッシュの構成、MicroTxのDockerイメージのロード、MicroTxのインストールを行います。インストールが完了すると、スクリプトによってトランザクション・コーディネータが実行され、トランザクション・コーディネータのURLが提供されます。
  3. 1を入力して、テスト環境でサンプル・アプリケーションおよびMicroTxを非セキュア・モードで実行します。

    場合によっては、スクリプトがサンプル・アプリケーションのイメージをロードしてからインストールするまで、数秒待機する必要があります。

    KUBECONFIG環境変数に設定する必要があるフル・パスがスクリプトによって表示されたら、次のステップを実行できます。

  4. スクリプトによって返されたコマンドをコピーし、そのコマンドを新しいターミナルで実行します。KUBECONFIGを設定して、Minikubeでコマンドを実行するようにKubectlを構成します。

    スクリプトによって実際のコマンドが表示されます。これをコピーして、そのまま新しいターミナルで実行できます。次に、サンプル・コマンドを示します。スクリプトによって返される実際のコマンドは、$HOME変数の値によって異なります。

    export KUBECONFIG=$HOME/.kube/minikube
  5. 新しいターミナルで次のコマンドを実行して、MinikubeとIstioイングレス・ゲートウェイ間のトンネルを開始します。
    $ minikube tunnel

    プロンプトが表示されたら、パスワードを入力してローカル・システムにアクセスし、任意のキーを押してスクリプトの実行を続行します。

  6. 3を入力して、TCCトランザクション・プロトコルを使用するサンプル・アプリケーションを実行します。
  7. Javaアプリケーションを実行するために1を入力するか、Node.jsアプリケーションを実行するために2を入力します。
    このスクリプトによって、航空券予約、ホテル予約、旅行代理店という3つのサンプル・マイクロサービスのインストールと実行が行われます。
  8. TCCサンプルアプリケーションの実行を確認するためにyを入力してから、[Enter]を押します。
    サンプル・アプリケーションによって、ホテルの部屋と航空券が予約され、予約の詳細が表示されます。
  9. 予約を確定するか取り消します。予約を確定するにはy、予約を取り消すにはnを入力してから、[Enter]を押します。

    yを入力すると、予約が確定され、確定した予約の詳細が表示されます。

    nを入力すると、旅行代理店マイクロサービスによって予約されていたリソースが取り消され、リソースが在庫に戻されます。

  10. 任意のキーを押して終了します。
  11. 1を入力して、サンプル・アプリケーションのすべてのマイクロサービスの実行を停止し、サンプル・アプリケーションをアンインストールします。
  12. 1を入力して、MicroTxをアンインストールします。既存のインストールを使用して他のサンプル・アプリケーションを実行する場合は、2を入力します。
  13. 1を入力して、Istioをアンインストールします。既存のインストールを使用して他のサンプル・アプリケーションを実行する場合は、2を入力します。
次のステップ
  • Kialiダッシュボードを使用して、MicroTxでサンプル・マイクロサービス間のリクエストのフローがどのように処理されるかを確認します。
  • Jaegerを使用して分散トレースを実行し、トランザクション全体をトレースします。「Jaegerを使用した分散トレースの実行」を参照してください。
  • 別のサンプル・アプリケーションを実行します。
  • サンプル・アプリケーションのソース・ファイルを確認します。
  • ログ・ファイルを表示して、トランザクションの詳細を確認します。
  • MicroTxを使用して独自のアプリケーションを作成して実行します。