5 Docker Swarmへのインストール
マイクロサービス対応トランザクション・マネージャ(MicroTx)は、Docker SwarmまたはKubernetesクラスタにインストールできます。
この項の手順に従って、Docker SwarmにMicroTxをインストールし、サンプル・アプリケーションを実行します。同様の構成を作成すると、サポートされている他の環境にMicroTxをインストールできます。KubernetesクラスタにMicroTxをインストールする場合は、この項をスキップして、「Kubernetesクラスタへのインストール」を参照してください。
ノート:
この項で説明する手順は、テスト環境または開発環境専用です。本番環境でマイクロサービス対応トランザクション・マネージャを設定および使用するには、これらの手順を使用しないでください。- Docker Swarmの設定
- レジストリの作成
 swarmは複数のDockerエンジンで構成されているため、それらすべてにイメージを配布するにはレジストリが必要です。
- Dockerレジストリへのイメージのプッシュ
 ローカル・システムにダウンロードしたインストール・バンドルには、MicroTxのDockerイメージが含まれます。このイメージをDockerに作成したレジストリにプッシュします。
- 暗号化キーとキー・ペアの作成
 このタスクを実行するのは、tcs-docker-swarm.yamlファイルのauthTokenPropagationEnabledプロパティとtransactionTokenEnabledプロパティを有効にする場合のみです。このファイルはinstallation_directory/otmm-<version>/samples/dockerフォルダにあります。
- etcdの詳細を使用したYAMLファイルの更新
 トランザクション・コーディネータのYAMLファイルにetcd資格証明およびetcdエンドポイントを指定する必要があります。MicroTxは、この情報を使用して、サービスのインストール後にetcdへの接続を確立します。
- Oracle Database資格証明のDockerシークレットの作成
 MicroTxでは、トランザクション情報を追跡するための永続ストアとしてOracle Databaseの使用がサポートされます。YAMLファイルにOracle Database資格証明を指定する必要があります。MicroTxは、サービスのインストール後に資格証明を使用してデータベースへの接続を確立します。
- セッション・アフィニティの有効化
 セッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。
- tcs-docker-swarm.yamlファイルの構成
 インストール・バンドルには、アプリケーションのマニフェスト・ファイルであるtcs-docker-swarm.yamlファイルが含まれ、これにはMicroTxのデプロイメント構成の詳細が含まれます。
- アプリケーションのセキュアな接続の構成
- Docker SwarmでのMicroTxへのアクセス
- DockerコンテナでのMicroTxの実行
 さらに、別のDockerコンテナでMicroTxを使用できます。この項の手順に従って、HTTPSポートでMicroTxをローカルに実行します。
5.2 レジストリの作成
swarmは複数のDockerエンジンで構成されているため、それらすべてにイメージを配布するにはレジストリが必要です。
親トピック: Docker Swarmへのインストール
5.3 Dockerレジストリへのイメージのプッシュ
ローカル・システムにダウンロードしたインストール・バンドルには、MicroTxのDockerイメージが含まれます。このイメージをDockerに作成したレジストリにプッシュします。
親トピック: Docker Swarmへのインストール
5.4 暗号化キーとキー・ペアの作成
このタスクを実行するのは、tcs-docker-swarm.yamlファイルのauthTokenPropagationEnabledプロパティとtransactionTokenEnabledプロパティを有効にする場合のみです。このファイルはinstallation_directory/otmm-<version>/samples/dockerフォルダにあります。
                  
tcs-docker-swarm.yamlファイルのauthTokenPropagationEnabledおよびtransactionTokenEnabledプロパティを有効にする必要がない場合は、2つのYAMLファイルで数行をコメント化する必要があります。
                     
tcs-docker-swarm.yamlファイルの次の行をコメント化します。
                     
# secretKeys: '{"secretKeys":[{"secretKeyName":"TMMSECRETKEY", "version":"1"}]}'
# EncryptionSecretKeyVersion: 1
...
# keyPairs: '{"keyPairs":[{"privateKeyName":"TMMPRIKEY", "publicKeyName":"TMMPUBKEY", "version":"1", "privateKeyPasswordName":"TMMPRIKEYPASSWD"}]}'
# transactionTokenKeyPairVersion: 1tmm-stack-compose.yamlファイルの次の行をコメント化します。このファイルはinstallation_directory/otmm-<version>/samples/dockerフォルダにあります。
                     
# secrets:
# TMMSECRETKEY:
# external: true
# TMMPRIKEY:
# external: true
# TMMPUBKEY:
# external: true
# TMMPRIKEYPASSWD:
# external: true
...
#entrypoint: ['/bin/sh', '-c', 'export TMMSECRETKEY=$$(cat /run/secrets/TMMSECRETKEY); export TMMPRIKEY=$$(cat /run/secrets/TMMPRIKEY); export TMMPUBKEY=$$(cat /run/secrets/TMMPUBKEY); export TMMPRIKEYPASSWD=$$(cat /run/secrets/TMMPRIKEYPASSWD); /app/tcs' ]
# secrets:
    # - TMMSECRETKEY
    # - TMMPRIKEY
    # - TMMPUBKEY
    # - TMMPRIKEYPASSWD
暗号化キーおよびトランザクション・トークンを作成する必要がなく、それらのオプションを無効にした場合は、この項をスキップします。
tcs-docker-swarm.yamlファイルのauthorizationのauthTokenPropagationEnabledプロパティを有効化した場合は、暗号化キーを生成し、そのキーをDockerシークレットに追加する必要があります。生成する暗号化キーには、次の属性が必要です。 
                     - 対称アルゴリズム: AES-256
- 暗号モード: GCMモードのAES
- キーの長さ: 32バイト
- 初期化ベクトルの長さ: 96ビット
tcs-docker-swarm.yamlファイルのtransactionTokenのtransactionTokenEnabledをtrueに設定した場合は、トランザクション・トークンのキー・ペアを生成する必要があります。生成するトランザクション・トークンには、次の属性が必要です:
                     
- 非対称アルゴリズム: RSA 3072
- キーの長さ: 3072ビット
- ハッシュ・アルゴリズム: SHA256
パスフレーズがわかる場合は、既存のRSAキーを再利用できます。それ以外の場合は、新しいRSAキーを作成します。
開始する前に、OpenSSLをインストールしたことを確認します。
暗号化トークンおよびトランザクション・トークンの使用方法の詳細は、「認証および認可について」を参照してください。
親トピック: Docker Swarmへのインストール
5.5 etcdの詳細を使用したYAMLファイルの更新
トランザクション・コーディネータのYAMLファイルにetcd資格証明およびetcdエンドポイントを指定する必要があります。MicroTxは、この情報を使用して、サービスのインストール後にetcdへの接続を確立します。
                  
MicroTxのトランザクション・ログを格納するためにetcdを使用しない場合は、このステップをスキップします。
開始する前に、サーバーおよびクライアントのRSA証明書を生成します。生成された証明書の内容を含むJSONファイルを作成します。「etcdのRSA証明書の生成」を参照してください。
親トピック: Docker Swarmへのインストール
5.6 Oracle Database資格証明のDockerシークレットの作成
MicroTxでは、トランザクション情報を追跡するための永続ストアとしてOracle Databaseの使用がサポートされます。YAMLファイルにOracle Database資格証明を指定する必要があります。MicroTxは、サービスのインストール後に資格証明を使用してデータベースへの接続を確立します。
                  
Oracle Databaseを使用してMicroTxのトランザクション詳細を格納しない場合は、このステップをスキップします。
Autonomous Databaseインスタンスを使用している場合は、次のステップを開始する前に、必ずウォレットをダウンロードして接続文字列を書き留めてください。「Autonomous Databaseクライアント資格証明の取得」を参照してください。親トピック: Docker Swarmへのインストール
5.7 セッション・アフィニティの有効化
セッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。
- Istioサービス・メッシュ内にトランザクション参加側サービスをデプロイしたことを確認します。
- 参加側サービスまたはトランザクション・コーディネータのセッション・アフィニティを有効にする必要があるかどうかを指定します。「セッション・アフィニティについて」を参照してください。
親トピック: Docker Swarmへのインストール
5.8 tcs-docker-swarm.yamlファイルの構成
インストール・バンドルには、アプリケーションのマニフェスト・ファイルであるtcs-docker-swarm.yamlファイルが含まれ、これにはMicroTxのデプロイメント構成の詳細が含まれます。
                  
tcs-docker-swarm.yamlファイルのサンプル値を置き換えて、環境の詳細、イメージの詳細および構成の詳細を指定します。指定した詳細は、Docker SwarmでMicroTxをデプロイするために使用されます。
                     
MicroTxの構成の詳細を指定するには:
- トランザクション・コーディネータのプロパティ
 MicroTxを構成するための情報を指定します。
- トランザクション・ストアのプロパティ
 MicroTxは、トランザクション状態の永続性を確保するためにトランザクション・ストアを使用します。
- TLSのプロパティ
 HTTPまたはHTTPSプロトコルを使用してMicroTxを実行します。
- 認可のプロパティ
 MicroTxは、すべてのリクエストでJWTトークンを伝播することで、参加側サービスおよびコーディネータ間の認可をサポートします。authTokenPropagationEnabledフィールドを使用してこの機能を制御します。アイデンティティ・プロバイダが期限切れアクセス・トークンをコーディネータで自動リフレッシュするように構成します。
- 認証のプロパティ
 認証に使用されるJSON Webトークン(JWT)のissuerパラメータおよびjwksUriパラメータの値を入力します。これらのフィールドの情報を確認するには、検出URLを使用します。
- 暗号化キーのプロパティencryption下に、MicroTxがアクセス・トークンおよびリフレッシュ・トークンの暗号化に使用する暗号化キーを指定します。これらのプロパティの値を指定する必要があるのは、tmmConfiguration.authorizationのauthTokenPropagationEnabledプロパティを有効化した場合です。
- トランザクション・トークンのプロパティtransactionTokenに、トランザクション・トークンに使用するキー・ペアを指定します。
親トピック: Docker Swarmへのインストール
5.8.1 トランザクション・コーディネータのプロパティ
MicroTxを構成するための情報を指定します。
| プロパティ | 説明 | 
|---|---|
| tmmAppName | 作成するMicroTxアプリケーションの名前を入力します。MicroTxをインストールすると、MicroTxアプリケーションが指定した名前で作成されます。後で指定する必要があるため、この名前を書き留めておきます。たとえば、 tmm-appです。 | 
| listenAddr | MicroTxにアクセスするポートを入力します。このポートでインバウンドおよびアウトバウンド・トラフィックを許可するために必要なネットワーク・ルールを作成します。後で指定する必要があるため、この番号を書き留めておきます。たとえば、 0.0.0.0:9000です。この例に示すように、リスナー・アドレスを<IP_address>:<port>の形式で指定します。 | 
| internalAddr | サービスをインストールするDockerリポジトリ内からMicroTxにアクセスするための内部URLを入力します。「Docker SwarmでのMicroTxへのアクセス」を参照してください。 | 
| externalUrl | サービスをインストールするDockerリポジトリの外部からMicroTxにアクセスするための外部URLを入力します。「Docker SwarmでのMicroTxへのアクセス」を参照してください。 | 
| httpClientTimeoutInSecs | MicroTxコーディネータから参加側サービスに送信されるHTTPコールバックAPIリクエストをアクティブにしておく最長期間(秒)を指定します。0から900までの整数を入力してください。デフォルト値は180秒、最大値は900秒です。この値を0に設定すると、MicroTxによって制限が適用されません。コーディネータがHTTPコールバックAPIリクエストを参加側サービスに送信したとき、参加側サービスは指定の期間内に応答する必要があります。指定した期間内に参加側サービスが応答しないと、コーディネータによって送信されたHTTPリクエストはタイムアウトします。 | 
| xaCoordinator.enabled、lraCoordinator.enabledまたはtccCoordinator.enabled | 使用するトランザクション・プロトコルに対して enabled: trueを設定します。MicroTxは、XA、LRA、およびTCCの3つの分散トランザクション・プロトコルをサポートしています。XAトランザクションをLRAトランザクション内にネストする場合は、enabled: trueをxaCoordinatorとlraCoordinatorの両方に対して設定します。 | 
| xaCoordinator.txMaxTimeout | XAトランザクション・プロトコルのみ。トランザクションをアクティブにしておく最長期間(ミリ秒)を指定します。トランザクションのコミットまたはロールバックが指定した期間内に行われないと、トランザクションはロールバックされます。デフォルト値は600000 msです。 | 
| narayanaLraCompatibilityMode.enabled | LRAトランザクション・プロトコルのみ。Narayana LRAコーディネータと連携するように実装され、MicroTxを使用してLRAトランザクションに参加するLRA参加側アプリケーションを使用する場合は、このプロパティを trueに設定します。このモードを有効にすると、MicroTx LRA APIがNarayana LRAコーディネータAPIが返すのと同じレスポンス・データを返すことが保証されます。 | 
| logging.level | 次のいずれかのタイプを入力して、MicroTxのログ・レベルを指定します: 
 | 
| logging.httpTraceEnabled | デバッグ時にMicroTx内のすべてのHTTPリクエストおよびレスポンスをログに記録するには、これを Trueに設定します。これをTrueに設定する場合、logging: level:をdebugに設定する必要もあります。 | 
| logging.devMode | これは、テスト環境でデバッグのために詳細情報を取得する場合のみ、 Trueに設定します。本番環境では、これをFalseに設定する必要があります。 | 
| maxRetryCount | 障害が発生した場合にトランザクション・コーディネータが同じリクエストの送信を再試行する最大回数。たとえば、10です。 | 
| minRetryInterval | 障害が発生した後でトランザクション・コーディネータが同じリクエストの送信を再試行するまでの最小間隔(ミリ秒)。デフォルト値は1000ミリ秒です。 | 
| maxRetryInterval | 障害が発生した後でトランザクション・コーディネータが同じリクエストの送信を再試行するまでの最大再試行間隔(ミリ秒)。たとえば、10000です。 | 
| skipVerifyInsecureTLS | この値を この値を 注意:本番環境では、この値を trueに設定しないでください。 | 
親トピック: tcs-docker-swarm.yamlファイルの構成
5.8.2 トランザクション・ストアのプロパティ
MicroTxは、トランザクション状態の永続性を確保するためにトランザクション・ストアを使用します。
トランザクション情報の格納には、etcdクラスタ、Oracle Databaseまたは内部メモリーを使用できます。トランザクション・コーディネータの複数のレプリカを使用する場合、または本番環境では、etcdクラスタまたはOracleデータベースをトランザクション・ストアとして設定する必要があります。MicroTxを再起動するたびにすべてのトランザクション詳細が失われるため、開発環境にのみ内部メモリーを使用します。内部メモリーを使用する場合、トランザクション・コーディネータのレプリカを複数作成することはできません。
トランザクション・ストアのタイプ
tmmConfiguration.storage下に、MicroTxがトランザクション状態の永続化に使用するトランザクション・ストアのタイプを指定します。トランザクション・ストアのタイプを指定した後、外部トランザクション・ストアに接続するための追加の詳細を指定できます。
                        
| プロパティ | 説明 | 
|---|---|
| type | 次の値のいずれかを入力して、MicroTxがトランザクション情報の追跡に使用する永続データを指定します。 
 | 
トランザクション・ストアとしてのOracle Database
tmmConfiguration.storage.db下に、Oracle Databaseに接続するための詳細を指定します。etcdデータベースに接続している場合、または内部メモリーを使用している場合は、この項をスキップして、これらの値を指定しないでください。
                        
必要なDockerシークレットの作成の詳細は、「Oracle Database資格証明のDockerシークレットの作成」を参照してください。
| プロパティ | 説明 | 
|---|---|
| connectionString | Oracle Databaseのトランザクション・ストアへの接続文字列を入力します。 非自律型Oracle Database (資格証明ウォレットを使用しないデータベース)を使用している場合は、次の形式を使用して接続文字列を入力します: たとえば、 Oracle Database Cloud ServiceとOracle Cloud Infrastructureを一緒に使用している場合は、『Oracle Blockchain Platformの使用』をOracle Database Classic Cloud Service接続文字列の作成を参照してください。 Oracle Autonomous Databaseを使用している場合は、次の例のような接続文字列を入力します:  | 
| netServiceName | Oracle Databaseに接続するための資格証明を含むDockerシークレットの名前を入力します。たとえば、 db-secretです。 | 
トランザクション・ストアとしてのetcdデータベース
tmmConfiguration.storage.etcd下に、etcdデータベースに接続する詳細を指定します。Oracleデータベースに接続している場合、または内部メモリーを使用している場合は、この項をスキップして、これらの値を指定しないでください。
                        
| プロパティ | 説明 | 
|---|---|
| endpoints | Docker SwarmサービスとしてetcdにアクセスするURLを入力します。たとえば、etcdとトランザクション・コーディネータがDocker Swarmの同じネットワークにある場合は、 https://etcd:2379です。ここで、2379はetcdとの通信に使用されるポートです。etcdが別のネットワークに設定されている場合は、etcdのIPアドレスを指定します。 | 
| skipHostNameVerification  | etcdデータベース・サーバーのIPアドレスを確認するには、これを falseに設定します。これをtrueに設定すると、サーバーのホスト名またはIPアドレスは検証されません。このフィールドをtrueに設定できるのは、テスト環境または開発環境の場合のみです。注意:本番環境では、このフィールドを falseに設定する必要があります。 | 
| cacertFilePath | 前に作成した証明書である ca.pemファイルへのパスを入力します。たとえば、/app/etcd/ca.pemです。 | 
| credentialsFilePath | クライアント資格証明、クライアント・キーおよびクライアント証明書の保護に使用したパスワードを含むJSONファイルの場所を入力します。たとえば、 /app/etcd/etcdecred.jsonです。 | 
親トピック: tcs-docker-swarm.yamlファイルの構成
5.8.3 TLSのプロパティ
HTTPまたはHTTPSプロトコルを使用してMicroTxを実行します。
HTTPSを介してMicroTxにセキュアにアクセスするために、自己署名付き証明書を作成し、証明書および秘密キーの場所を書き留めます。SSL証明書の作成の詳細は、『セキュリティ・ガイド』のOpenSSLを使用した自己署名証明書および秘密キーの生成ガイドラインを参照してください。
tcs-docker-swarm.yamlファイルでTLSを有効にする場合は、サンプル・アプリケーションがMicroTxに安全にアクセスできるように、SSL証明書をサンプル・アプリケーションのトラスト・ストアにインポートする必要があります。 
                        
tmmConfiguration.serveTLSに、認可に使用するSSL証明書の詳細を指定します。
                        
| プロパティ | 説明 | 
|---|---|
| enabled | 参加側サービスとMicroTxの間のセキュアな通信を保証するためにTLSを有効にするには、これを trueに設定します。証明書およびキー・ファイルの詳細を、certFileプロパティおよびkeyFileプロパティに指定する必要があります。TLSを有効にすると、HTTPSを介してトランザクション・コーディネータにアクセスできます。このフィールドを 注意:本番環境では、このフィールドを trueに設定する必要があります。 | 
| certFile | ローカル・マシン上のTLS証明書(PEM形式)のパス。 | 
| keyFile | ローカル・マシン上の証明書に関連付けられている秘密キー・ファイル(PEM形式)のパス。 | 
次のコード・スニペットは、tcs-docker-swarm.yamlファイルのserveTLSフィールドのサンプル値を示しています。 
                        
tmmConfiguration:
  serveTLS:
    enabled: true
    certFile: /users/john.doe/self-signed/tcs/certificate.pem
    keyFile: /users/john.doe/self-signed/tcs/key.pem親トピック: tcs-docker-swarm.yamlファイルの構成
5.8.4 認可のプロパティ
MicroTxは、すべてのリクエストでJWTトークンを伝播することで、参加側サービスおよびコーディネータ間の認可をサポートします。authTokenPropagationEnabledフィールドを使用してこの機能を制御します。アイデンティティ・プロバイダが期限切れアクセス・トークンをコーディネータで自動リフレッシュするように構成します。
                     
| プロパティ | 説明 | 
|---|---|
| enabled | これを trueに設定すると、MicroTxが受信JWTトークンのサブジェクトをチェックできるようになります。その後、MicroTxは、サブジェクトまたはユーザーにトランザクションIDをタグ付けします。トランザクションをさらに変更できるのは、タグ付けされたサブジェクトまたはユーザーのみになります。このフィールドをfalseに設定した場合、tmmConfiguration.authorizationの他のプロパティに値を指定する必要はありません。注意:本番環境では、このフィールドを trueに設定する必要があります。 | 
| authTokenPropagationEnabled | 参加側サービスとMicroTxの間のセキュアな通信を確保するためにトークン伝播を有効にするには、これを trueに設定します。トークン伝播を有効にした場合は、tcs-docker-swarm.yamlファイルのencryptionプロパティに暗号化キーの詳細を指定する必要があります。 | 
| IdentityProviderName | 使用するアイデンティティ・プロバイダを指定します。指定できる値は、Oracle IDCSおよびOracle IAMの IDCS、KeycloakのKEYCLOAK、Azure Active DirectoryのAZURE_AD、Microsoft Active DirectoryのMICROSOFT_ADです。 | 
| IdentityProviderUrl | アイデンティティ・プロバイダのURLを指定します。この情報は、リフレッシュ・トークンを使用して新しいアクセス・トークンを作成するために必要です。この情報を指定しないと、期限切れになったアクセス・トークンが自動リフレッシュされません。 | 
| IdentityProviderClientId | アイデンティティ・プロバイダのクライアントIDを指定します。この情報は、リフレッシュ・トークンを使用して新しいアクセス・トークンを作成するために必要です。この情報を指定しないと、期限切れになったアクセス・トークンが自動リフレッシュされません。 | 
親トピック: tcs-docker-swarm.yamlファイルの構成
5.8.5 認証のプロパティ
認証に使用されるJSON Webトークン(JWT)のissuerパラメータおよびjwksUriパラメータの値を入力します。これらのフィールドの情報を確認するには、検出URLを使用します。
                     
認証を有効にすると、トランザクション・コーディネータが、JWTベースの認証を強制し、公開キーに対して認証トークンを検証します。authorizationヘッダーでアクセス・トークンを渡す必要があります。
                        
| プロパティ | 説明 | 
|---|---|
| enabled | JWT認証をバイパスするには、 falseに設定します。こうすると、JWTトークンのないリクエストが許可されます。すべてのリクエストにJWTトークンを含める場合は、trueを入力します。MicroTxは、リクエストで指定されたトークンを検証し、トークンが無効な場合はアクセスを拒否します。enabledをtrueに設定する場合は、JWTのissuerパラメータおよびjwksUriパラメータに値を指定する必要があります。注意:本番環境では、このプロパティを trueに設定する必要があります。 | 
| jwt.issuer | JWTトークン発行元を指定します。 | 
| jwt.jwksUri | アイデンティティ・プロバイダのパブリック・ホスト jwksUriのURL。JWTの署名の検証に使用されます。JSON Web Key Set (JWKS)には、受信JWTトークンの検証に使用される暗号化キーが含まれます。 | 
次のコード・スニペットは、tcs-docker-swarm.yamlファイルのauthenticationフィールドのサンプル値を示しています。この例のサンプル値は、検出URLの実行のサンプル・コマンドで使用された値に基づいています。
                        
authentication:
  enabled: true
  jwt:
    issuer: "https://identity.oraclecloud.com"
    jwksUri: "https://idcs-a83e4de370ea4db8c703a0b742ce74.identity.oraclecloud.com:443/admin/v1/SigningCert/jwk"
親トピック: tcs-docker-swarm.yamlファイルの構成
5.8.6 暗号化キーのプロパティ
encryption下に、MicroTxがアクセス・トークンおよびリフレッシュ・トークンの暗号化に使用する暗号化キーを指定します。これらのプロパティの値を指定する必要があるのは、tmmConfiguration.authorizationのauthTokenPropagationEnabledプロパティを有効化した場合です。
                     
| プロパティ | 説明 | 
|---|---|
| EncryptionSecretKeyVersion | トランザクション・トークンの暗号化に使用するキーのバージョンを指定します。 | 
| secretKeys.secretKeyName | 暗号化キーを含むDockerシークレットを指す環境変数の名前を指定します。暗号化キーのローテーションをサポートするために、複数の暗号化キーとそのバージョンを指定できます。 | 
| secretKeys.version | 使用するDockerシークレットのバージョンを入力します。 | 
新しいDockerシークレットを作成しても、前のシークレットのエントリを直ちに削除しないでください。古いシークレットとtcs-docker-swarm.yamlファイル内の対応するエントリは数日してから削除できます。既存のトランザクションで古いバージョンのキーが使用されている可能性があるためです。数日後、tcs-docker-swarm.yamlファイルを更新し、MicroTxを更新できます。
                        
次のコード・スニペットは、tcs-docker-swarm.yamlファイルのencryptionフィールドのサンプル値を示しています。この例のサンプル値は、暗号化キーとキー・ペアの作成のサンプル・コマンドで使用された値に基づいています。
                        
encryption:
  secretKeys: '{"secretKeys":[{"secretKeyName":"TMMSECRETKEY", "version":"1"}]}'
  #TMMSECRETKEY is the environment variable that points to the Docker secret that contains the encryption key. 
  EncryptionSecretKeyVersion: 1親トピック: tcs-docker-swarm.yamlファイルの構成
5.8.7 トランザクション・トークンのプロパティ
transactionTokenに、トランザクション・トークンに使用するキー・ペアを指定します。
                     
tcs-docker-swarm.yamlでtransactionTokenEnabledをtrueに設定する場合は、次の表に示すプロパティの値を指定する必要があります。
                        
| プロパティ | 説明 | 
|---|---|
| transactionTokenEnabled | MicroTxで署名付きトランザクション・トークン tmm-tx-tokenをリクエスト・ヘッダーに含める場合は、これをtrueに設定します。ユーザーがtmm-tx-tokenトランザクション・トークンを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。MicroTxライブラリは、指定した秘密キーと公開キーのペアに基づいてこのトークンを作成します。キー・ペアの作成の詳細は、暗号化キーおよびキー・ペアの作成を参照してください。 | 
| transactionTokenKeyPairVersion | トランザクション・トークンの署名および検証に使用するキー・ペアのバージョンを入力します。複数のキー・ペアがある場合は、使用するキー・ペアのバージョンを指定する必要があります。 | 
| keyPairs.keyPairs.privateKeyName | 秘密キーのbase64エンコード値を含むDockerシークレットの名前を入力します。 | 
| keyPairs.keyPairs.publicKeyName | 公開キーのbase64エンコード値を含むDockerシークレットの名前を入力します。 | 
| keyPairs.keyPairs.version | 使用する秘密キーと公開キーのペアのバージョンを入力します。 | 
| keyPairs.keyPairs.privateKeyPasswordName | 秘密キーの生成時に指定したパス・フレーズの値を含むDockerシークレットの名前を入力します。 | 
次のコード・スニペットは、transactionTokenフィールドのサンプル値を示しています。
                        
transactionToken:
  transactionTokenEnabled: false
  keyPairs: '{"keyPairs":[{"privateKeyName":"TMMPRIKEY", "publicKeyName":"TMMPUBKEY", "version":"1", "privateKeyPasswordName":"TMMPRIKEYPASSWD"}]}'
     #TMMPRIKEY is the environment variable for the Docker secret that contains the base64-encoded private key
     #TMMPUBKEY is the environment variable for the Docker secret that contains the base64-encoded public key
     #TMMPRIKEYPASSWD is the environment variable for the Docker secret that contains the private key password
  transactionTokenKeyPairVersion: 1親トピック: tcs-docker-swarm.yamlファイルの構成
5.10 Docker SwarmでのMicroTxへのアクセス
MicroTxにアクセスするには、内部URLまたは外部URLを使用します。MicroTxに、サービスをデプロイしたDockerレジストリ内からアクセスするか、Dockerレジストリ外からアクセスするかに応じて、異なるURLを使用します。
TLSを有効にした場合は、HTTPSプロトコルを使用してサービスにアクセスします。TLSを無効にした場合は、HTTPプロトコルを使用してサービスにアクセスします。
MicroTxにアクセスするための内部URL
内部URLを使用して、サービスをデプロイしたDockerレジストリ内からMicroTxにアクセスします。
内部でMicroTxにアクセスするには、次の形式でURLを作成します:
http://internalHostname:listenAddr/api/v1説明
- internalHostname:- tcs-docker-swarm.yamlファイルの- tmmAppNameプロパティに入力した名前。たとえば、- tmm-appです。
- listenAddr:- tcs-docker-swarm.yamlファイルの- listenAddrプロパティに入力したポート番号。たとえば、- 9000です。このポートを介したHTTPSまたはHTTPトラフィックを許可するために必要なネットワーキング・ルールを設定したことを確認します。
前述の例の値に基づくと、MicroTx URLの例はhttp://tmm-app:9000/api/v1またはhttp://localhost:9000/api/v1です。
                     
Dockerレジストリ内のすべての通信では、HTTPプロトコルが使用されます。
MicroTxにアクセスするための外部URL
外部URLを使用して、サービスをデプロイしたDockerレジストリの外部からMicroTxにアクセスします。たとえば、トランザクション・イニシエータ・アプリケーションとMicroTxを異なるDockerレジストリにデプロイする場合です。このようなシナリオでは、トランザクション・イニシエータ・アプリケーションは外部URLを使用してMicroTxにアクセスします。
外部からMicroTxにアクセスするには、次の形式でURLを作成します:
https://externalHostname:listenAddr/api/v1説明
- externalHostname: 作成したDockerレジストリのIPアドレス。たとえば、- 198.51.100.1です。
- listenAddr: MicroTxの- tcs-docker-swarm.yamlの- listenAddrプロパティに入力したポート番号。たとえば、- 5000です。このポートを介したインバウンドおよびアウトバウンドのHTTPSまたはHTTPトラフィックを許可するために必要なネットワーキング・ルールを設定したことを確認します。
前述の例の値に基づくと、MicroTx URLの例はhttps://198.51.100.1:5000/api/v1です。
                     
次のコマンドに示すように、DockerレジストリのIPアドレスをREGISTRY_IPADDRという名前の環境変数に格納します。
                     
export REGISTRY_IPADDR=192.0.2.1これを行わない場合は、必要なときに、コマンドでIPアドレスを明示的に指定する必要があります。
親トピック: Docker Swarmへのインストール
5.11 DockerコンテナでのMicroTxの実行
さらに、別のDockerコンテナでMicroTxを使用できます。この項の手順に従って、HTTPSポートでMicroTxをローカルに実行します。
tcs.yamlファイルを更新していることを確認してください。tcs.yamlファイルは、ローカル・マシンのinstallation_directory/otmm-<version>/otmm/imageにあります。このファイルには、MicroTxのデプロイメント構成の詳細が含まれています。tcs.yamlファイルおよびtcs-docker-swarm.yamlファイルのプロパティは類似しています。構成の詳細は、tcs-docker-swarm.yamlファイルの構成を参照してください。
                  次の章では、環境にサンプル・アプリケーションをインストールして実行する手順について説明します。サンプル・アプリケーションのデプロイを参照してください。
親トピック: Docker Swarmへのインストール