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開発者ガイド』「サンプル・アプリケーションのデプロイ」を参照してください。

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

OKEでのサンプル・アプリケーションの実行を開始する前に、次のタスクを完了する必要があります。

  1. 次のコマンドを実行してIstioをダウンロードします。
    curl -sL https://istio.io/downloadIstioctl | sh -

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

  2. istioctlクライアント・ツールをローカル・システムのPATH環境変数に追加します。次の例ではサンプル値を示しています。ご自身の環境に基づいてパスを指定します。
    export PATH=$HOME/.istioctl/bin:$PATH
  3. 次の必要なソフトウェアをインストールします。
  4. Kubernetesクラスタと連携するために、Kubernetesコマンドライン・インタフェース(Kubectl) 1.21.x以降のバージョンをインストールして構成します。https://kubernetes.io/docs/tasks/tools/を参照してください。

    Kubectlを使用して、デプロイメントを作成および管理します。Kubectlは、Kubernetes APIを使用してクラスタとやり取りします。

  5. Helm 3.xの最新バージョンをローカル・マシンにインストールします。https://helm.sh/docs/intro/install/を参照してください。
  6. Oracle Cloud Infrastructure (OCI) CLIをインストールします。OCI CLIがKubernetesクラスタに接続するように構成されていることを確認します。https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htmを参照してください。
  7. OKEを使用してKubernetesクラスタを作成します。
    1. Oracle OCI Cloudコンソールにログインします。https://www.oracle.com/in/cloud/sign-in.htmlを参照してください。
    2. OKE環境にKubernetesクラスタを作成します。Oracle Cloud Infrastructureドキュメントクラスタを作成するためのクイック作成ワークフローを参照してください。
    3. 作成したKubernetesクラスタへのローカル・アクセスを設定して、ローカル・マシンからOKEクラスタ環境にアクセスできるようにします。Oracle Cloud Infrastructureドキュメントクラスタへのローカル・アクセスの設定を参照してください。
  8. アクセス・トークンを作成します。Oracle IAMおよびOracle IDCSを使用してアクセス・トークンを作成するには、Oracleアイデンティティ・プロバイダの使用およびアクセス・トークンの作成を参照してください。KeycloakまたはMicrosoft ADをアイデンティティ・プロバイダとして使用する場合は、アイデンティティ・プロバイダの設定およびアクセス・トークンの作成の詳細について製品ドキュメントを参照してください。
  9. サンプルXAアプリケーションを実行するために2つのトランザクション参加側サービスのリソース・マネージャを設定します。Oracle Databaseをリソース・マネージャとして設定します。XA準拠リソース・マネージャの設定を参照してください。
  10. Java Development Kit (JDK)がローカル・システムにインストールされていることを確認し、Bashシェルで次のコマンドを実行して、次の環境変数を設定します。
    export JAVA_HOME=jdk-install-dir
    export PATH=$JAVA_HOME/bin:$PATH

    JDKには、証明書を作成および管理するためのユーティリティであるkeytoolが含まれています。runme.shスクリプトは、keytoolユーティリティを実行して証明書を生成し、TLSでMicroTxにアクセスできるようにします。

  11. Bashシェルでコマンドを実行するためのsudo権限を持っていることを確認します。

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 Cloud InfrastructureテナンシでOracle IDCSとOracle IAMのどちらが使用されているかを識別するには:
  1. Oracle Cloud Infrastructureコンソールにログインします。
  2. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。
    • 「アイデンティティ」「ユーザーおよびグループ」が表示されている場合、テナンシはOracle IAMに移行されていません。テナンシではOracle IDCSが使用されています。
    • 「アイデンティティ」「ドメイン」が表示されている場合、テナンシはOracle IAMに移行されています。
テナンシでOracle IDCSとOracle IAMのどちらが使用されているかに基づいて、関連情報を使用し、機密アプリケーションを作成してアクティブ化できます。
6.1.1.1 アイデンティティ・プロバイダとしてのOracle IAMの使用

Oracle IAMをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。

  1. Oracle Cloud Infrastructureコンソールで、アプリケーションを機密アプリケーションとして追加します。Oracle Cloud Infrastructureドキュメント機密アプリケーションの追加を参照してください。
    「OAuthの構成」ペインで選択されているオプション

    機密アプリケーションを追加する際に、次のタスクを実行します:

    1. 「OAuthの構成」ペインの「リソース・サーバー構成」で、「後にスキップ」をクリックします。
    2. 「OAuthの構成」ペインで、「このアプリケーションをクライアントとして今すぐ構成します」をクリックし、次のオプションを選択します:
      • リソース所有者
      • クライアント資格証明
      • JWTアサーション
      • リフレッシュ・トークン
      • 認可コード
      • HTTPSのURLを許可: オプション。HTTPSなしのリダイレクトURLを追加する場合のみ、このオプションを選択します。このオプションを選択しない場合、HTTPS URLのみがサポートされます。
      • リダイレクトURLの追加: 認証後にユーザーがリダイレクトされるアプリケーションURLを入力します。
    3. Web層のポリシー構成はスキップします。
    アプリケーションが作成されます。
  2. 「アクティブ化」をクリックして、アプリケーションをアクティブ化します。
  3. 「一般情報」「クライアントID」および「クライアント・シークレット」の値を書き留めます。
  4. 「ユーザー」をクリックし、アプリケーションにユーザーを割り当てます。Oracle Cloud Infrastructureドキュメントカスタム・アプリケーションへのユーザーの割当てを参照してください。
  5. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ドメイン」をクリックします。作業するアイデンティティ・ドメインを選択します。
    アイデンティティ・ドメインの「ドメイン情報」タブが表示されます。
  6. このタブから、「ドメインURL」をコピーします。たとえば、https://idcs-a83e4de370ea4db1b8c703a0b742ce74.identity.oraclecloud.comです。検出URLを実行する際にこの情報が必要になります。
  7. 署名証明書のクライアント・アクセスを有効にします。デフォルトでは、アクセスはサインイン・ユーザーのみに制限されています。Docker、KubernetesおよびIstioでこの証明書にアクセスするには、クライアント・アクセスを有効にする必要があります。
    1. 作業するアイデンティティ・ドメインを選択し、「設定」「ドメイン設定」の順にクリックします。
    2. 「署名証明書へのアクセス」のスイッチをオンにして、クライアントがIAMにログインせずにテナントの署名証明書にアクセスできるようにします。
    3. 「保存」をクリックしてデフォルト設定を保存します。
    4. ログインせずに証明書にアクセスできるかどうかを確認するには、新しいブラウザ・ウィンドウで次のリンクを入力します。
      https://<yourtenant>.identity.oraclecloud.com/admin/v1/SigningCert/jwk

      ここで、<yourtenant>はOracle Cloud Infrastructureテナンシの詳細です。

      Oracle Cloud Infrastructureにログインせずにリンクを開くことができるはずです。

6.1.1.2 アイデンティティ・プロバイダとしてのOracle IDCSの使用

Oracle IDCSをアイデンティティ・プロバイダとして使用し、アプリケーションへのアクセスを管理できます。

  1. Oracle Cloud Infrastructureコンソールで、アプリケーションを機密アプリケーションとして追加します。『Oracle Identity Cloud Serviceの管理』機密アプリケーションの追加を参照してください。

    機密アプリケーションを追加する際に、次のタスクを実行します:

    1. 機密アプリケーションの追加ウィザードの「クライアント」ページで、「今すぐこのアプリケーションをクライアントとして構成します」をクリックします。
    2. 「認可」セクションで、次のオプションを選択します:
      • リソース所有者
      • クライアント資格証明
      • JWTアサーション
      • リフレッシュ・トークン
      • 認可コード
      • リダイレクトURL: 認証後にユーザーがリダイレクトされるアプリケーションURLを入力します。
    3. 次のステップをスキップします。デフォルトの選択肢を使用して、「終了」をクリックします。アプリケーションが非アクティブ状態で追加されます。
    4. 「アプリケーションが追加されました」ダイアログ・ボックスに表示される「クライアントID」および「クライアント・シークレット」を書き留めます。この情報は後で指定する必要があります。
    5. 「閉じる」をクリックします。

      新しいアプリケーションの詳細ページが表示されます。

    6. ページ上部のアプリケーション名の右にある「アクティブ化」をクリックして、アプリケーションをアクティブ化します。
    7. 「アプリケーションをアクティブ化しますか。」ダイアログ・ボックスで、「アプリケーションのアクティブ化」をクリックします。
  2. 「ユーザー」をクリックし、アプリケーションにユーザーを割り当てます。『Oracle Identity Cloud Serviceの管理』ユーザー・アカウントへのアプリケーションの割当てを参照してください。
  3. 署名証明書のクライアント・アクセスを有効にします。デフォルトでは、アクセスはサインイン・ユーザーのみに制限されています。クライアントがOracle Identity Cloud Serviceにログインせずにテナント署名証明書およびSAMLメタデータにアクセスできるようにするには、次のステップを実行します。
    1. Identity Cloud Serviceコンソールでナビゲーション・ドロワーを開き、「設定」「デフォルト設定」の順に選択します。
    2. 「署名証明書へのアクセス」オプションをオンにします。
    3. 「保存」をクリックしてデフォルト設定を保存します。

6.1.2 アクセス・トークンの作成

このトピックでは、Oracle IDCSまたはOracle IAMをアイデンティティ・プロバイダとして使用する際のアクセス・トークンの作成に関する詳細を説明します。

KeycloakまたはMicrosoft ADをアイデンティティ・プロバイダとして使用する場合は、アイデンティティ・プロバイダの設定およびアクセス・トークンの作成の詳細について製品ドキュメントを参照してください。

サービスに対するAPIコールは、有効な認証トークンが必要です。アクセス・トークンを作成します。これは、サービスに対する後続のAPIコールで指定できます。アクセス・トークンの他に、サービスに対する後続のAPIコールでリフレッシュ・トークンを指定することもできます。MicroTxは、リフレッシュ・トークンを使用して期限切れのアクセス・トークンをリフレッシュします。

開始する前に、アイデンティティ・プロバイダを設定したことと、クライアントID、クライアント・シークレットおよびドメインURLの値を書き留めたことを確認します。
  1. ターミナルを起動し、次のコマンドを入力します。
    echo -n "clientid:clientsecret" | base64 -w 0 

    ここで、clientid:clientsecretを環境の値で置き換えます。-w 0は、改行を削除するためにLinuxの場合にコマンドに追加されます。

    クライアントIDおよびクライアント・シークレットのbase64エンコードされた値が返されます。この値は後で指定する必要があるため書き留めておきます。

    環境に応じて、任意のbase64クライアントを使用してclientid:clientsecretをエンコードできます。

  2. 返された値をコピーします。この値は認証トークンを作成するたびに指定する必要があります。
  3. 次のcURLコマンドの例に示すように、base64エンコードされた値を使用して認証トークンを取得します。アクセス・トークンのみを生成するか、リフレッシュ・トークンも生成するかに応じて、次のいずれかのコマンドを実行します。
    • 次のコマンドによってアクセス・トークンが作成されます。

      コマンド構文

      curl -i 
      -H "Authorization:Basic {base64 encoded value of clientid:clientsecret}"
      -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
      --request POST https://domain-url/oauth2/v1/token
      -d "grant_type=password&username=username&password&scope=urn:opc:idm:__myscopes__"
      

      curl -i 
      -H "Authorization:Basic ZWY1N2E1OWUyZjY..."
      -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
      --request POST https://idcs-a83e4de370ea4db1b8c703a0b742ce74.identity.oraclecloud.com/oauth2/v1/token
      -d "grant_type=password&username=acme@example.com&password&scope=urn:opc:idm:__myscopes__"
    • 次のコマンドによってアクセス・トークンとリフレッシュ・トークンが作成されます。

      コマンド構文

      curl -i 
      -H "Authorization:Basic {base64 encoded value of clientid:clientsecret}"
      -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
      --request POST https://domain-url/oauth2/v1/token
      -d "grant_type=password&scope=urn:opc:idm:__myscopes__+offline_access&username=username&password=password"

      curl -i 
      -H "Authorization:Basic ZWY1N2E1OWUyZjY..."
      -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
      --request POST https://idcs-a83e4de370ea4db1b8c703a0b742ce74.identity.oraclecloud.com/oauth2/v1/token
      -d "grant_type=password&scope=urn:opc:idm:__myscopes__+offline_access&username=acme@example.com&password=password"
  4. 次の例に示すように、レスポンスのaccess_token値をコピーします。

    出力例

    {
      "access_token":"eyJ4Lm...",
      "expires_in": 300,
      "refresh_expires_in": 1800,
      "refresh_token": "ey5Gkr...",
      "token_type": "Bearer",
      "not-before-policy": 0,
      "session_state": "c966d...",
      "scope": "profile email"
    }
    

    レスポンスの例は、読みやすくするために省略記号(...)を使用して一部を省いています。

    実際のトークンのみ(引用符に囲まれたaccess_token値とrefresh_token値)をコピーするようにしてください。

  5. 次のLinuxホストの例に示すように、認証トークンおよびリフレッシュ・トークンを環境変数に格納します。
    export TOKEN="eyJ4Lm..."
    export REFRESH_TOKEN="ey5Gkr..."
  6. 次のLinuxホストの例に示すように、認証cookieを環境変数に格納します。
    export OTMM_COOKIE="eyJh...x_THw"

    値の例は、読みやすくするために省略記号(...)を使用して一部を省いています。

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アプリケーションを実行するには:

  1. bashシェルで次のコマンドを入力して、runme.shスクリプト・ファイルを実行します。
    cd installation_directory/otmm-<version>
    sh runme.sh
  2. 3を入力して、OKE環境でサンプル・アプリケーションを実行します。

    スクリプトによって、Istioのインストールと構成が行われ、Istioイングレス・ゲートウェイにアクセスするためのURLが出力されます。

  3. KialiやJaegerなど監視のためのコンソールをデプロイして、MicroTxでの分散トランザクションを追跡およびトレースできます。これらのコンソールがすでにIstioサービス・メッシュにデプロイされている場合、スクリプトでこのステップはスキップされます。
    1. 1を入力して、コンソールをデプロイします。
    2. 1を入力して、Kialiのデプロイを確認します。

      KialiはPrometheusなどの前提条件とともにデプロイされ、Kialiダッシュボードがデフォルトのブラウザに表示されます。

    3. 1を入力して、Jaegerのデプロイを確認します。

      Jaegerがデプロイされ、デフォルトのブラウザにJaegerダッシュボードが表示されます。

      KialiおよびJaegerのダッシュボードがデフォルトのブラウザに表示されるのは、グラフィカル・ユーザー・インタフェースを備えたシステム上でrunme.shスクリプト・ファイルを実行している場合のみです。リモート・システム上でrunme.shスクリプトを実行しており、コンソールまたはターミナルを介して接続している場合は、ご使用のシステムでダッシュボードを表示できるようにポート転送を設定する必要があります。

  4. 次の情報を入力して、スクリプトで自己署名証明書を作成できるようにします。TLSを使用してMicroTxにアクセスするためのセキュアな接続を作成するには、証明書が必要です。
    1. sudo権限でBashシェルにアクセスするためのパスワードを入力します。
    2. Javaキーストアにアクセスするためのパスワードを入力します。
      スクリプトがキーストアにアクセスして、自己署名証明書を生成します。
    3. 1を入力して、証明書を信頼していることを確認します。
    4. Javaキーストアにアクセスするためのパスワードを再度入力します。
      スクリプトがキーストアに証明書を追加します。
  5. Oracle Cloud Infrastructure Registryの名前を<region-key>.ocir.ioの形式で指定します。

    たとえば、iad.ocir.ioです。リージョン・キーの詳細は、Oracle Cloud Infrastructureドキュメントリージョンおよび可用性ドメインを参照してください。

  6. サンプル・アプリケーションのDockerイメージをプッシュするリポジトリの名前を<region-key>.ocir.io/<repository_name>の形式で指定します。

    たとえば、iad.ocir.io/otmmrepoです。runme.shスクリプトが、イメージを構築し、指定されたリポジトリにプッシュします。また、指定した値の前にイメージ名をタグとして付けます。

  7. レジストリにアクセスするためのユーザー名を入力します。
  8. レジストリにアクセスするためのパスワードを入力します。

    このスクリプトは、MicroTxのDockerイメージをロードしてから、MicroTxをインストールします。

  9. 1を入力して、XAトランザクション・プロトコルを使用するサンプル・アプリケーションを実行します。
  10. 部門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アプリケーションのインストールと実行が行われます。
  11. 部門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アプリケーションのインストールと実行が行われます。
  12. 1を入力して、振込アプリケーションを実行し、XAトランザクションを作成して、部門1から部門2に送金します。
  13. 送金元の口座の番号を入力します。サンプル表には、account1からaccount5までの口座番号が含まれています。
    口座残高が表示されます。
  14. 送金先の口座の名前を入力します。サンプル表には、account1からaccount5までの口座番号が含まれています。
    口座残高が表示されます。
  15. 送金する金額を入力します。たとえば、100とします。
    トランザクション後の両方の口座の残高が画面に表示されます。以前の口座残高と現在の口座残高を比較して、送金が行われたことを確認できます。
  16. 任意のキーを押して終了します。
  17. 1を入力して、サンプル・アプリケーションのすべてのマイクロサービスの実行を停止し、サンプル・アプリケーションをアンインストールします。
  18. 1を入力して、MicroTxをアンインストールします。既存のインストールを使用して他のサンプル・アプリケーションを実行する場合は、2を入力します。
  19. 1を入力して、Istioをアンインストールします。既存のインストールを使用して他のサンプル・アプリケーションを実行する場合は、2を入力します。
次のステップ
  • Kialiダッシュボードを使用して、MicroTxでサンプル・マイクロサービス間のリクエストのフローがどのように処理されるかを確認します。
  • Jaegerを使用して分散トレースを実行し、トランザクション全体をトレースします。「Jaegerを使用した分散トレースの実行」を参照してください。
  • 別のサンプル・アプリケーションを実行します。
  • サンプル・アプリケーションのソース・ファイルを確認します。
  • ログ・ファイルを表示して、トランザクションの詳細を確認します。
  • MicroTxを使用して独自のアプリケーションを作成して実行します。

6.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. 3を入力して、OKE環境でサンプル・アプリケーションを実行します。

    スクリプトによって、Istioのインストールと構成が行われ、Istioイングレス・ゲートウェイにアクセスするためのURLが出力されます。

  3. KialiやJaegerなど監視のためのコンソールをデプロイして、MicroTxでの分散トランザクションを追跡およびトレースできます。これらのコンソールがすでにIstioサービス・メッシュにデプロイされている場合、スクリプトでこのステップはスキップされます。
    1. 1を入力して、コンソールをデプロイします。
    2. 1を入力して、Kialiのデプロイを確認します。

      KialiはPrometheusなどの前提条件とともにデプロイされ、Kialiダッシュボードがデフォルトのブラウザに表示されます。

    3. 1を入力して、Jaegerのデプロイを確認します。

      Jaegerがデプロイされ、デフォルトのブラウザにJaegerダッシュボードが表示されます。

      KialiおよびJaegerのダッシュボードがデフォルトのブラウザに表示されるのは、グラフィカル・ユーザー・インタフェースを備えたシステム上でrunme.shスクリプト・ファイルを実行している場合のみです。リモート・システム上でrunme.shスクリプトを実行しており、コンソールまたはターミナルを介して接続している場合は、ご使用のシステムでダッシュボードを表示できるようにポート転送を設定する必要があります。

  4. 次の情報を入力して、スクリプトで自己署名証明書を作成できるようにします。TLSを使用してMicroTxにアクセスするためのセキュアな接続を作成するには、証明書が必要です。
    1. sudo権限でBashシェルにアクセスするためのパスワードを入力します。
    2. Javaキーストアにアクセスするためのパスワードを入力します。
      スクリプトがキーストアにアクセスして、自己署名証明書を生成します。
    3. 1を入力して、証明書を信頼していることを確認します。
    4. Javaキーストアにアクセスするためのパスワードを再度入力します。
      スクリプトがキーストアに証明書を追加します。
  5. Oracle Cloud Infrastructure Registryの名前を<region-key>.ocir.ioの形式で指定します。

    たとえば、iad.ocir.ioです。リージョン・キーの詳細は、Oracle Cloud Infrastructureドキュメントリージョンおよび可用性ドメインを参照してください。

  6. サンプル・アプリケーションのDockerイメージをプッシュするリポジトリの名前を<region-key>.ocir.io/<repository_name>の形式で指定します。

    たとえば、iad.ocir.io/otmmrepoです。runme.shスクリプトが、イメージを構築し、指定されたリポジトリにプッシュします。また、指定した値の前にイメージ名をタグとして付けます。

  7. レジストリにアクセスするためのユーザー名を入力します。
  8. レジストリにアクセスするためのパスワードを入力します。

    このスクリプトは、MicroTxのDockerイメージをロードしてから、MicroTxをインストールします。

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

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

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

6.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. 3を入力して、OKE環境でサンプル・アプリケーションを実行します。

    スクリプトによって、Istioのインストールと構成が行われ、Istioイングレス・ゲートウェイにアクセスするためのURLが出力されます。

  3. KialiやJaegerなど監視のためのコンソールをデプロイして、MicroTxでの分散トランザクションを追跡およびトレースできます。これらのコンソールがすでにIstioサービス・メッシュにデプロイされている場合、スクリプトでこのステップはスキップされます。
    1. 1を入力して、コンソールをデプロイします。
    2. 1を入力して、Kialiのデプロイを確認します。

      KialiはPrometheusなどの前提条件とともにデプロイされ、Kialiダッシュボードがデフォルトのブラウザに表示されます。

    3. 1を入力して、Jaegerのデプロイを確認します。

      Jaegerがデプロイされ、デフォルトのブラウザにJaegerダッシュボードが表示されます。

      KialiおよびJaegerのダッシュボードがデフォルトのブラウザに表示されるのは、グラフィカル・ユーザー・インタフェースを備えたシステム上でrunme.shスクリプト・ファイルを実行している場合のみです。リモート・システム上でrunme.shスクリプトを実行しており、コンソールまたはターミナルを介して接続している場合は、ご使用のシステムでダッシュボードを表示できるようにポート転送を設定する必要があります。

  4. 次の情報を入力して、スクリプトで自己署名証明書を作成できるようにします。TLSを使用してMicroTxにアクセスするためのセキュアな接続を作成するには、証明書が必要です。
    1. sudo権限でBashシェルにアクセスするためのパスワードを入力します。
    2. Javaキーストアにアクセスするためのパスワードを入力します。
      スクリプトがキーストアにアクセスして、自己署名証明書を生成します。
    3. 1を入力して、証明書を信頼していることを確認します。
    4. Javaキーストアにアクセスするためのパスワードを再度入力します。
      スクリプトがキーストアに証明書を追加します。
  5. Oracle Cloud Infrastructure Registryの名前を<region-key>.ocir.ioの形式で指定します。

    たとえば、iad.ocir.ioです。リージョン・キーの詳細は、Oracle Cloud Infrastructureドキュメントリージョンおよび可用性ドメインを参照してください。

  6. サンプル・アプリケーションのDockerイメージをプッシュするリポジトリの名前を<region-key>.ocir.io/<repository_name>の形式で指定します。

    たとえば、iad.ocir.io/otmmrepoです。runme.shスクリプトが、イメージを構築し、指定されたリポジトリにプッシュします。また、指定した値の前にイメージ名をタグとして付けます。

  7. レジストリにアクセスするためのユーザー名を入力します。
  8. レジストリにアクセスするためのパスワードを入力します。

    このスクリプトは、MicroTxのDockerイメージをロードしてから、MicroTxをインストールします。

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

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

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

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