4 Kubernetesクラスタへのインストール
マイクロサービス対応トランザクション・マネージャ(MicroTx)は、DockerまたはKubernetesクラスタにインストールできます。
KubernetesクラスタにMicroTxをインストールする場合は、この項をスキップして、「Docker Swarmへのインストール」を参照してください。
Kubernetesでは、MicroTxをサービス・メッシュ内にインストールすることもサービスなしでインストールすることもできます。インストール・バンドルにはHelmチャートが用意されています。この項では、Istioサービス・メッシュを使用してKubernetesクラスタにMicroTxをインストールする手順を示します。同様の構成を作成すると、サポートされている他の環境にMicroTxをインストールできます。Kubernetesクラスタで別のサービス・メッシュを使用する場合は、独自のHelmチャートを作成します。
次の図は、MicroTxが、他のマイクロサービスとともにKubernetesクラスタのIstioサービス・メッシュ内にインストールされたデプロイメント例を示しています。
Istioは、サービス間通信を処理するために個別のインフラストラクチャ・レイヤーを提供するサービス・メッシュです。ネットワーク通信がサービスそのものから取り出されて、プロキシによって処理されます。Istioではサイドカー設計が使用されています。つまり、通信プロキシは各サービス・コンテナ外部の独自のコンテナ内で実行されます。Envoyは、マイクロサービス・コンテナ内にサイドカーとしてデプロイされるプロキシです。サービス・メッシュ内のすべての通信は、Envoyプロキシを介して行われます。
開始する前に、前提条件を満たしていることを確認します。準備を参照してください。
MicroTxをインストールするには、次の手順を実行します:
- Kubernetesクラスタの作成
Kubernetesクラスタを作成するか、既存のクラスタを使用します。このクラスタにMicroTxをインストールします。 - 環境の準備
MicroTxをインストールする前に、必要なソフトウェアをローカル・マシンにインストールし、ローカル・マシンに環境を構成する必要があります。 - DockerレジストリにアクセスするためのKubernetesシークレットの作成
Helmを使用してアプリケーションをインストールする場合は、Kubernetesシークレットを使用して、リモート・リポジトリからイメージをプルするための認証詳細を指定します。 - リモートDockerリポジトリへのイメージのプッシュ
ローカル・システムにダウンロードしたインストール・バンドルには、MicroTxのDockerイメージが含まれます。 - 認証および認可
認証によって、権限のある個人のみがシステムおよびデータにアクセスできるようになります。認可によって、システム権限およびデータへのアクセス制御が提供されます。これは認証に基づいて、個人が適切なアクセス権を取得することを保証します。 - Oracle Database資格証明のKubernetesシークレットの作成
MicroTxでは、トランザクション情報を追跡するための永続ストアとしてOracle Databaseの使用がサポートされます。 - etcdのKubernetesシークレットの作成
values.yaml
ファイルにetcd資格証明およびetcdエンドポイントを指定する必要があります。MicroTxは、この情報を使用して、サービスのインストール後にetcdへの接続を確立します。 - セッション・アフィニティの有効化
セッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。 - values.yamlファイルの構成
インストール・バンドルには、アプリケーションのマニフェスト・ファイルであるvalues.yaml
ファイルが含まれ、これにはMicroTxのデプロイメント構成の詳細が含まれます。 - MicroTxのインストール
Helmを使用して、MicroTxをKubernetesクラスタにインストールします。 - Istioイングレス・ゲートウェイのIPアドレスの確認
トランザクションを開始する前に、Istioイングレス・ゲートウェイの外部IPアドレスを書き留める必要があります。 - MicroTxへのアクセス
MicroTxにアクセスするには、アクセスに使用するポート番号、ホスト名およびプロトコルを指定します。HTTPプロトコルはテスト環境または開発環境でのみ使用することをお薦めします。本番環境では、HTTPSプロトコルを使用する必要があります。
4.1 Kubernetesクラスタの作成
Kubernetesクラスタを作成するか、既存のものを使用します。このクラスタにMicroTxをインストールします。
開始する前に、次の方法で環境を計画する必要があります:
- MicroTxをホストするために単一ノードと複数ノードのどちらのKubernetesクラスタが必要かを決定します。開発環境では1つ以上の単一ノード・クラスタを作成し、本番環境では1つ以上の3ノード・クラスタを作成することをお薦めします。
- 環境内の様々なコンポーネントを識別します。マイクロサービスがKubernetesクラスタで実行されている場合は、同じクラスタまたは別のクラスタにMicroTxをインストールできます。マイクロサービスが複数のKubernetesクラスタに分散されている場合、またはKubernetesクラスタに含まれないOracle DatabaseやTuxedoなどのコンポーネントとMicroTxが通信できるようにする場合は、MicroTxをホストするKubernetesクラスタを作成します。
親トピック: Kubernetesクラスタへのインストール
4.2 環境の準備
MicroTxをインストールする前に、必要なソフトウェアをローカル・マシンにインストールし、ローカル・マシンに環境を構成する必要があります。
次の手順を実行して、必要なソフトウェアをインストールし、ローカル・マシンに環境を構成します:
親トピック: Kubernetesクラスタへのインストール
4.3 DockerレジストリにアクセスするためのKubernetesシークレットの作成
Helmを使用してアプリケーションをインストールする場合は、Kubernetesシークレットを使用して、リモート・リポジトリからイメージをプルするための認証詳細を指定します。
指定したすべてのログイン詳細がKubernetesシークレットに含まれるのは、資格証明を含むdocker login
コマンドを使用してリモートDockerレジストリに手動でログインした場合です。
既存の資格証明に基づいてシークレットを作成することもできます。https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentialsを参照してください。
親トピック: Kubernetesクラスタへのインストール
4.4 リモートDockerリポジトリへのイメージのプッシュ
ローカル・システムにダウンロードしたインストール・バンドルには、MicroTxのDockerイメージが含まれます。
これらのイメージをローカル・リポジトリにロードしてから、イメージをリモートDockerリポジトリにプッシュします。Kubernetesは、これらのイメージをリモート・リポジトリからプルして、MicroTxをインストールします。
Oracle Cloud Infrastructure Registryを使用している場合は、Oracle Cloud Infrastructure Registryへのイメージのプッシュを参照してください。他のKubernetesプラットフォームを使用している場合は、この項で説明する手順を使用します。
- コンテナ・イメージのアップロード先のリモート・プライベート・リポジトリを指定します。新しいリモートDockerリポジトリを作成することも、既存のリモートDockerリポジトリを使用することもできます。アクセスを制限するにはプライベート・リポジトリを使用します。リモートDockerリポジトリを使用する際、リモートDockerリポジトリにイメージをプッシュする必要があるのは1回のみですが、作成したKubernetesクラスタにイメージを複数回プルできます。
- リモートDockerリポジトリにアクセスするためのKubernetesシークレットを作成します。DockerレジストリにアクセスするためのKubernetesシークレットの作成を参照してください。
リモートDockerリポジトリのDockerイメージのタグを書き留めます。リモートDockerリポジトリからイメージをプルする際に、このタグを入力する必要があります。
親トピック: Kubernetesクラスタへのインストール
4.5 認証および認可
認証によって、権限のある個人のみがシステムおよびデータにアクセスできるようになります。認可によって、システム権限およびデータへのアクセス制御が提供されます。これは認証に基づいて、個人が適切なアクセス権を取得することを保証します。
- 暗号化キーのKubernetesシークレットの生成
非同期コールをサポートするために、MicroTxによって、認可トークンおよびリフレッシュ・トークンが格納されます。トークンを格納するには、トークンを暗号化する必要があります。トークンを直接格納することはできないためです。トークンを暗号化するには、暗号化キーを作成します。 - トランザクション・トークンのキー・ペアの作成
アプリケーションは、各MicroTxトランザクションに固有のMicroTx署名付きトランザクション・トークンを含めることをサポートしています。
親トピック: Kubernetesクラスタへのインストール
4.5.1 暗号化キーのKubernetesシークレットの生成
非同期コールをサポートするために、MicroTxは認可トークンとリフレッシュ・トークンを格納します。トークンを格納するには、トークンを暗号化する必要があります。トークンを直接格納することはできないためです。トークンを暗号化するには、暗号化キーを作成します。
authorization
のauthTokenPropagationEnabled
プロパティを有効化した場合は、暗号化キーを生成し、そのキーをDockerシークレットに追加する必要があります。生成する暗号化キーには、次の属性が必要です。
- 対称アルゴリズム: AES-256
- 暗号モード: GCMモードのAES
- キーの長さ: 32バイト
- 初期化ベクトルの長さ: 96ビット
MicroTxは、アクセス・トークンおよびリフレッシュ・トークンを暗号化し、後で参加側サービスへのコール時に使用します。MicroTxは、トランザクションごとに初期化ベクトルの新しい値を生成します。各トランザクション・レコードには、キー・バージョンや初期化ベクトル値などの暗号化されたメタデータ情報が含まれます。
親トピック: 認証および認可
4.5.2 トランザクション・トークンのキー・ペアの作成
アプリケーションは、各MicroTxトランザクションに固有のMicroTx署名付きトランザクション・トークンを含めることをサポートしています。
transactionTokenEnabled
をtrueに設定すると、MicroTxは、署名付きトランザクション・トークンであるtmm-tx-token
という新しいトークンを作成します。トランザクション・イニシエータがリクエストを開始すると、MicroTxはtmm-tx-token
を使用して応答します。参加側サービスからMicroTxへのコールを保護するために、MicroTxライブラリはリクエスト・ヘッダーでtmm-tx-token
を渡します。ユーザーがtmm-tx-token
トランザクション・トークンを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。MicroTxライブラリは、指定した秘密キーと公開キーのペアに基づいてこのトークンを作成します。
- 非対称アルゴリズム: RSA 3072
- キーの長さ: 3072ビット
- ハッシュ・アルゴリズム: SHA256
開始する前に、OpenSSLをインストールしたことを確認します。
親トピック: 認証および認可
4.6 Oracle Database資格証明のKubernetesシークレットの作成
MicroTxでは、トランザクション情報を追跡するための永続ストアとしてOracle Databaseの使用がサポートされます。
values.yaml
ファイルにOracle Database資格証明を指定する必要があります。MicroTxは、サービスのインストール後に資格証明を使用してデータベースへの接続を確立します。
values.yaml
を、Oracle Database資格証明および接続文字列を格納するために作成したKubernetesシークレットの名前で更新します。また、Autonomous Databaseインスタンスを使用している場合は、構成マップの名前を指定します。
親トピック: Kubernetesクラスタへのインストール
4.7 etcdのKubernetesシークレットの作成
values.yaml
ファイルにetcd資格証明およびetcdエンドポイントを指定する必要があります。MicroTxは、この情報を使用して、サービスのインストール後にetcdへの接続を確立します。
開始する前に、etcdのRSA証明書を生成し、生成された証明書の内容を含むJSONファイルを作成します。「etcdのRSA証明書の生成」を参照してください。
同じKubernetesクラスタ内にetcdおよびMicroTxをデプロイする予定の場合は、TLSを使用してetcdを構成することはオプションです。etcdがTLSで構成されている場合は、トランザクション・コーディネータのvalues.yaml
ファイルに証明書の詳細を指定する必要があります。
values.yaml
ファイルに指定する必要があります。次のコード・スニペットでは、このトピックのコマンドで使用した値に基づいてサンプル値を指定しています。storage:
type: etcd
etcd:
endpoints: "https://198.51.100.1:4002"
skipHostNameVerification: "false"
credentialSecret:
secretName: "etcd-cert-secret"
secretFileName: "etcdecred.json"
cacertConfigMap:
configMapName: "etcd-ca-cert-map"
configMapFileName: "ca.pem"
endpoints
フィールドに正しいIPアドレスを指定しない場合、MicroTxのインストール時にホスト検証が失敗します。開発環境でホスト検証をバイパスするには、MicroTxのvalues.yaml
ファイルでskipHostNameVerification
をtrue
に設定します。
注意:
本番環境では、skipHostNameVerification
フィールドをfalse
に設定する必要があります。
親トピック: Kubernetesクラスタへのインストール
4.8 セッション・アフィニティの有効化
セッション・アフィニティを有効にすると、一意のトランザクションまたはセッションに対するすべてのリクエストは、最初のリクエストを処理した参加側サービスの同じエンドポイントまたはレプリカにルーティングされます。
- Istioサービス・メッシュ内にトランザクション参加側サービスをデプロイしたことを確認します。
- 参加側サービスまたはトランザクション・コーディネータのセッション・アフィニティを有効にする必要があるかどうかを指定します。「セッション・アフィニティについて」を参照してください。
親トピック: Kubernetesクラスタへのインストール
4.9 values.yamlファイルの構成
インストール・バンドルには、アプリケーションのマニフェスト・ファイルであるvalues.yaml
ファイルが含まれ、これにはMicroTxのデプロイメント構成の詳細が含まれます。
values.yaml
ファイルのサンプル値を置き換えて、MicroTxをデプロイするための環境の詳細、イメージの詳細および構成の詳細を指定します。
MicroTxをKubernetesクラスタにデプロイするときに、HelmはリモートDockerレジストリからMicroTxイメージをプルします。values.yaml
ファイルに、プルするイメージと、イメージのプル時に使用する資格証明を指定します。
MicroTxの構成の詳細を指定するには:
- 環境の詳細
values.yaml
ファイルで、MicroTxをインストールする環境の詳細に関する情報を指定します。 - イメージのプロパティ
tmmImage
下に、MicroTx Dockerイメージに関する情報を指定します。これらのプロパティの値の指定は必須です。 - トランザクション・コーディネータのプロパティ
tmmConfiguration
下に、MicroTxを構成するための情報を指定します。 - トランザクション・ストアのプロパティ
MicroTxは、トランザクション状態の永続性を確保するためにデータ・ストアを使用します。 - 認可のプロパティ
MicroTxは、すべてのリクエストでJWTトークンを伝播することで、参加側サービスおよびコーディネータ間の認可をサポートします。authTokenPropagationEnabled
フィールドを使用してこの機能を制御します。アイデンティティ・プロバイダが期限切れアクセス・トークンをコーディネータで自動リフレッシュするように構成します。 - 認証のプロパティ
authentication
下に、認証に使用されるJSON Web Token (JWT)のissuer
およびjwksUri
パラメータの値を入力します。これらのフィールドの情報を確認するには、検出URLを使用します。 - 暗号化キーのプロパティ
encryption
下に、MicroTxがアクセス・トークンおよびリフレッシュ・トークンの暗号化に使用する暗号化キーを指定します。これらのプロパティの値を指定する必要があるのは、
のtmmConfiguration.authorization
authTokenPropagationEnabled
プロパティを有効化した場合です。 - トランザクション・トークンのプロパティ
transactionToken
に、トランザクション・トークンに使用するキー・ペアを指定します。
親トピック: Kubernetesクラスタへのインストール
4.9.1 環境の詳細
values.yaml
ファイルで、MicroTxをインストールする環境の詳細に関する情報を指定します。
プロパティ | 説明 |
---|---|
istioSystemNameSpace |
Istioをインストールしたネームスペース。デフォルトのネームスペースはistio-system です。別のネームスペースにIstioをインストールした場合は、次のコマンドを実行して、クラスタ内のすべてのネームスペースを確認します。
|
istioIngressGateway |
作成したIstioイングレス・ゲートウェイの名前を入力します。たとえば、ingressgateway です。Istioイングレス・ゲートウェイの名前を確認するには、次のコマンドを実行して、レスポンスのistio ラベルの値を書き留めます。
|
applicationNameSpace |
MicroTxをデプロイするネームスペースを指定します。たとえば、otmm です。
|
tmmReplicaCount |
MicroTxポッドのレプリカは1つのみ作成できるため、1と入力します。 |
親トピック: values.yamlファイルの構成
4.9.2 イメージのプロパティ
tmmImage
下に、MicroTx Dockerイメージに関する情報を指定します。これらのプロパティの値の指定は必須です。
プロパティ | 説明 |
---|---|
image |
リモート・リポジトリにプッシュしたMicroTxイメージのタグを入力します。たとえば、oracle-tmm:RELEASE です。
|
imagePullPolicy |
インストール中に確実にイメージがプルされるように、Always を入力します。
|
imagePullSecret |
作成したKubernetesシークレットの名前を指定します。このシークレットは、リモート・リポジトリからDockerイメージをプルするために使用されます。たとえば、regcred です。
|
tmmImage:
image: oracle-tmm:RELEASE
imagePullPolicy: Always
imagePullSecret: regcred
親トピック: values.yamlファイルの構成
4.9.3 トランザクション・コーディネータのプロパティ
tmmConfiguration
下に、MicroTxを構成するための情報を指定します。
プロパティ | 説明 |
---|---|
tmmAppName |
作成するMicroTxアプリケーションの名前を入力します。MicroTxをインストールすると、Helmによって、指定した名前のMicroTxアプリケーションが作成されます。後で指定する必要があるため、この名前を書き留めておきます。たとえば、tmm-app です。
|
tmmid |
インストールするMicroTxの各インスタンスを一意に識別する値を入力します。この一意識別子は5文字で指定する必要があり、使用できるのは英数字(a-z、A-Zおよび0-9)のみです。たとえば、TMM01 です。
このIDを使用して、複数のインストールがある場合にMicroTxを識別します。すべてのレプリカが同じIDを持つため、このIDを使用して、MicroTxインストールの単一インスタンスのレプリカを区別することはできません。MicroTxをインストールした後は、この値を変更できません。 |
port |
このサービスをインストールするKubernetesクラスタ内のMicroTxに内部的にアクセスするポートを入力します。このポートでインバウンドおよびアウトバウンド・トラフィックを許可するために必要なネットワーク・ルールを作成します。後で指定する必要があるため、この番号を書き留めておきます。たとえば、9000 です。
|
tmmExternalURL |
サービスをデプロイしたKubernetesクラスタの外部からMicroTxにアクセスするための外部URLを入力します。「MicroTxへのアクセス」を参照してください。 |
httpClientTimeoutInSecs |
MicroTxコーディネータから参加側サービスに送信されるHTTPコールバックAPIリクエストをアクティブにしておく最長期間(秒)を指定します。0から900までの整数を入力してください。デフォルト値は180秒、最大値は900秒です。この値を0に設定すると、MicroTxによって制限が適用されません。コーディネータがHTTPコールバックAPIリクエストを参加側サービスに送信したとき、参加側サービスは指定の期間内に応答する必要があります。指定した期間内に参加側サービスが応答しないと、コーディネータによって送信されたHTTPリクエストはタイムアウトします。 |
xaCoordinator 、lraCoordinator またはtccCoordinator |
使用するトランザクション・プロトコルに対してenabled: "true" を設定します。MicroTxは、XA、LRA、およびTCCの3つの分散トランザクション・プロトコルをサポートしています。XAトランザクションをLRAトランザクション内にネストする場合は、enabled: "true" をxaCoordinator とlraCoordinator の両方に対して設定します。
|
txMaxTimeout |
XAトランザクション・プロトコルのみ。トランザクションをアクティブにしておく最長期間(ミリ秒)を指定します。トランザクションのコミットまたはロールバックが指定した期間内に行われないと、トランザクションはロールバックされます。デフォルト値は600000 msです。 |
narayanaLraCompatibilityMode |
LRAトランザクション・プロトコルのみ。enabled をtrue に設定するのは、Narayana LRAコーディネータと連携するように実装され、MicroTxを使用してLRAトランザクションに参加するLRA参加側アプリケーションを使用する場合のみです。このモードを有効にすると、MicroTx LRA APIがNarayana LRAコーディネータAPIが返すのと同じレスポンス・データを返すことが保証されます。
|
logging.level |
次のいずれかのタイプを入力して、MicroTxのログ・レベルを指定します:
|
logging.httpTraceEnabled |
デバッグ時にMicroTx内のすべてのHTTPリクエストおよびレスポンスをログに記録するには、これをTrue に設定します。これをTrue に設定する場合、logging: level: をdebug に設定する必要もあります。
|
maxRetryCount |
障害が発生した場合にトランザクション・コーディネータが同じリクエストの送信を再試行する最大回数。たとえば、10です。 |
minRetryInterval |
障害が発生した後でトランザクション・コーディネータが同じリクエストの送信を再試行するまでの最小間隔(ミリ秒)。デフォルト値は1000ミリ秒です。 |
maxRetryInterval |
障害が発生した後でトランザクション・コーディネータが同じリクエストの送信を再試行するまでの最大再試行間隔(ミリ秒)。たとえば、10000です。 |
skipVerifyInsecureTLS |
この値を この値を 注意: 本番環境では、この値をtrue に設定しないでください。
|
親トピック: values.yamlファイルの構成
4.9.4 トランザクション・ストアのプロパティ
MicroTxは、トランザクション状態の永続性を確保するためにデータ・ストアを使用します。
トランザクション情報の格納には、etcdクラスタ、Oracle Databaseまたは内部メモリーを使用できます。トランザクション・コーディネータの複数のレプリカを使用する場合、または本番環境では、etcdクラスタまたはOracleデータベースをデータ・ストアとして設定する必要があります。MicroTxを再起動するたびにすべてのトランザクション詳細が失われるため、開発環境にのみ内部メモリーを使用します。内部メモリーを使用する場合、トランザクション・コーディネータのレプリカを複数作成することはできません。
トランザクション・ストアのタイプ
tmmConfiguration.storage
下に、MicroTxがトランザクション状態の永続化に使用するトランザクション・ストアのタイプを指定します。トランザクション・ストアのタイプを指定した後、外部データ・ストアに接続するための追加の詳細を指定できます。
プロパティ | 説明 |
---|---|
type |
次の値のいずれかを入力して、MicroTxがトランザクション情報の追跡に使用する永続データを指定します。
|
completedTransactionTTL |
完了トランザクション・レコードのトランザクション・データ・ストアでの存続時間(TTL)(秒単位)。指定できる値の範囲は60から1200秒です。指定した時間が終了すると、完了トランザクション・エントリはデータ・ストアから削除されます。 |
トランザクション・ストアとしてのOracle Database
tmmConfiguration.storage.db
下に、Oracle Databaseに接続するための詳細を指定します。etcdデータベースに接続している場合、または内部メモリーを使用している場合は、この項をスキップして、これらの値を指定しないでください。
プロパティ | 説明 |
---|---|
connectionString |
Oracle Databaseのデータ・ストアへの接続文字列を入力します。
|
credentialSecretName |
Oracle Databaseに接続するための資格証明を含むKubernetesシークレットの名前を入力します。たとえば、db-secret です。「Oracle Database資格証明のKubernetesシークレットの作成」を参照してください。
|
walletConfigMap.configMapName |
Autonomous Databaseインスタンスのウォレット用に作成した構成マップの名前を入力します。たとえば、db-wallet-configmap です。Autonomous Databaseインスタンスを使用している場合のみ、このフィールドに値を指定する必要があります。「Autonomous Databaseクライアント資格証明の取得」を参照してください。
|
トランザクション・ストアとしてのetcdデータベース
tmmConfiguration.storage.etcd
下に、etcdデータベースに接続する詳細を指定します。Oracleデータベースに接続している場合、または内部メモリーを使用している場合は、この項をスキップして、これらの値を指定しないでください。
プロパティ | 説明 |
---|---|
endpoints |
etcdデータベース・サーバーの外部IPアドレスを入力します。MicroTxをインストールするKubernetesクラスタにetcdクラスタをインストールした場合は、Kubernetesサービス名およびetcdクラスタ(ノード)のポートを値として指定します。それ以外の場合は、198.51.100.1:4002,198.51.100.2:4002,198.51.100.3:4002 のように、etcdクラスタ・ノードのホスト名またはIPアドレスとポートのカンマ区切りリストを入力します。
|
skipHostNameVerification |
etcdデータベース・サーバーのIPアドレスを確認するには、これをfalse に設定します。これをtrue に設定すると、サーバーのホスト名またはIPアドレスは検証されません。このフィールドをtrue に設定できるのは、テスト環境または開発環境の場合のみです。
注意: 本番環境では、このフィールドをfalse に設定する必要があります。
|
credentialSecret.secretName |
コンテナ内のKubernetesシークレットへのパスを入力します。シークレットには、クライアント資格証明、クライアント・キーおよびクライアント証明書の保護に使用したパスワードが含まれます。たとえば、/etc/otmm/etcd-cert-secret です。
|
credentialSecret.secretFileName |
クライアント資格証明、クライアント・キーおよびクライアント証明書の保護に使用したパスワードを含むJSONファイルの場所を入力します。たとえば、/etc/otmm/etcdecred.json です。
|
cacertConfigMap.configMapName |
認証局の初期化中に作成した構成マップ・ファイルの名前を入力します。たとえば、etcd-ca-cert-map です。
|
cacertConfigMap.configMapFileName |
認証局の初期化中に作成したPEMファイルの名前を入力します。たとえば、ca.pem です。
|
親トピック: values.yamlファイルの構成
4.9.5 認可のプロパティ
MicroTxは、すべてのリクエストでJWTトークンを伝播することで、参加側サービスおよびコーディネータ間の認可をサポートします。authTokenPropagationEnabled
フィールドを使用してこの機能を制御します。アイデンティティ・プロバイダが期限切れアクセス・トークンをコーディネータで自動リフレッシュするように構成します。
tmmConfiguration.authorization
に、認可に使用するアイデンティティ・プロバイダの詳細を指定します。
プロパティ | 説明 |
---|---|
enabled |
これをtrue に設定すると、MicroTxが受信JWTトークンのサブジェクトをチェックできるようになります。その後、MicroTxは、サブジェクトまたはユーザーにトランザクションIDをタグ付けします。トランザクションをさらに変更できるのは、タグ付けされたサブジェクトまたはユーザーのみになります。このフィールドをfalse に設定した場合、tmmConfiguration.authorization の他のプロパティに値を指定する必要はありません。
注意: 本番環境では、このフィールドをtrue に設定する必要があります。
|
authTokenPropagationEnabled |
参加側サービスとMicroTxの間のセキュアな通信を確保するためにトークン伝播を有効にするには、これをtrue に設定します。トークン伝播を有効にした場合は、values.yaml ファイルのencryption プロパティに暗号化キーの詳細を指定する必要があります。
|
identityProviderName |
使用するアイデンティティ・プロバイダを指定します。指定できる値は、Oracle IDCSおよびOracle IAMのIDCS 、KeycloakのKEYCLOAK 、Azure Active DirectoryのAZURE_AD 、Microsoft Active DirectoryのMICROSOFT_AD です。
|
identityProviderUrl |
アイデンティティ・プロバイダのURLを指定します。この情報は、リフレッシュ・トークンを使用して新しいアクセス・トークンを作成するために必要です。この情報を指定しないと、期限切れになったアクセス・トークンが自動リフレッシュされません。 |
identityProviderClientId |
アイデンティティ・プロバイダのクライアントIDを指定します。この情報は、リフレッシュ・トークンを使用して新しいアクセス・トークンを作成するために必要です。この情報を指定しないと、期限切れになったアクセス・トークンが自動リフレッシュされません。 |
親トピック: values.yamlファイルの構成
4.9.6 認証のプロパティ
authentication
に、認証に使用されるJSON Webトークン(JWT)のissuer
パラメータおよびjwksUri
パラメータの値を入力します。これらのフィールドの情報を確認するには、検出URLを使用します。
プロパティ | 説明 |
---|---|
requestsWithNoJWT |
JWT認証をバイパスするには、ALLOW を入力します。こうすると、JWTトークンのないリクエストが許可されます。すべてのリクエストにJWTトークンを含める場合は、DENY を入力します。MicroTxは、リクエストで指定されたトークンを検証し、トークンが無効な場合はアクセスを拒否します。
注意: 本番環境では、このフィールドをDENY に設定する必要があります。
|
jwt.issuer |
JWTトークン発行元を指定します。 |
jwt.jwksUri |
アイデンティティ・プロバイダのパブリック・ホストjwksUri のURL。JWTの署名の検証に使用されます。JSON Web Key Set (JWKS)には、受信JWTトークンの検証に使用される暗号化キーが含まれます。
|
次のコード・スニペットは、values.yaml
ファイルのauthentication
フィールドのサンプル値を示しています。この例のサンプル値は、検出URLの実行のサンプル・コマンドで使用された値に基づいています。
authentication:
requestsWithNoJWT: DENY
jwt:
issuer: "https://identity.oraclecloud.com"
jwksUri: "https://idcs-a83e4de370ea4db8c703a0b742ce74.identity.oraclecloud.com:443/admin/v1/SigningCert/jwk"
親トピック: values.yamlファイルの構成
4.9.7 暗号化キーのプロパティ
encryption
下に、MicroTxがアクセス・トークンおよびリフレッシュ・トークンの暗号化に使用する暗号化キーを指定します。これらのプロパティの値を指定する必要があるのは、
のtmmConfiguration.authorization
authTokenPropagationEnabled
プロパティを有効化した場合です。
プロパティ | 説明 |
---|---|
encryptionSecretKeyVersion |
トランザクション・トークンの暗号化に使用するキーのバージョンを指定します。 |
encryptionSecretKeys.SecretKeyName |
値として暗号化キーを含むKubernetesシークレットの名前およびバージョンを指定します。暗号化キーのローテーションをサポートするために、複数の暗号化キーとそのバージョンを指定できます。 |
encryptionSecretKeys.version |
使用するKubernetesシークレットのバージョンを入力します。 |
新しいKubernetesシークレット・キーを作成しても、前のシークレット・キーのエントリを直ちに削除しないでください。古いキーとvalues.yaml
ファイル内の対応するエントリは数日してから削除できます。既存のトランザクションで古いバージョンのキーが使用されている可能性があるためです。数日後、values.yaml
ファイルを更新し、MicroTxを更新できます。
次のコード・スニペットは、values.yaml
ファイルのencryption
フィールドのサンプル値を示しています。この例のサンプル値は、暗号化キーのKubernetesシークレットの生成のサンプル・コマンドで使用された値に基づいています。
encryption:
encryptionSecretKeyVersion: "1"
encryptionSecretKeys:
- secretKeyName: "encryption-secret-key0"
version: "0"
- secretKeyName: " encryption-secret-key1"
version: "1"
親トピック: values.yamlファイルの構成
4.9.8 トランザクション・トークンのプロパティ
transactionToken
に、トランザクション・トークンに使用するキー・ペアを指定します。
transactionTokenEnabled
をtrue
に設定する場合は、次の表に示す値の指定が必須です。
プロパティ | 説明 |
---|---|
transactionTokenEnabled |
MicroTxで署名付きトランザクション・トークンtmm-tx-token をリクエスト・ヘッダーに含める場合は、これをtrue に設定します。ユーザーがtmm-tx-token トランザクション・トークンを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。MicroTxライブラリは、指定した秘密キーと公開キーのペアに基づいてこのトークンを作成します。キー・ペアの作成の詳細は、トランザクション・トークンのキー・ペアの作成を参照してください。
|
transactionTokenKeyPairVersion |
トランザクション・トークンの署名および検証に使用するキー・ペアのバージョンを入力します。複数のキー・ペアがある場合は、使用するキー・ペアのバージョンを指定する必要があります。 |
transactionTokenKeyPairs.keyPairs.privateKeyName |
秘密キーのbase64エンコード値を含むKubernetesシークレットの名前を入力します。 |
transactionTokenKeyPairs.keyPairs.publicKeyName |
公開キーのbase64エンコード値を含むKubernetesシークレットの名前を入力します。 |
transactionTokenKeyPairs.keyPairs.privateKeyPasswordName |
秘密キーの生成時に指定したパスフレーズの値を含むKubernetesシークレットの名前を入力します。 |
transactionTokenKeyPairs.keyPairs.version |
使用する秘密キーと公開キーのペアのバージョンを入力します。 |
次のコード・スニペットは、transactionToken
フィールドのサンプル値を示しています。
transactionToken:
transactionTokenEnabled: "true"
transactionTokenKeyPairVersion: "1"
transactionTokenKeyPairs:
keyPairs:
- privateKeyName: "TMMPRIVKEY1"
publicKeyName: "TMMPUBKEY1"
privateKeyPasswordName: "TMMPRIVKEYPASSWD1"
version: "1"
- privateKeyName: "TMMPRIVKEY2"
publicKeyName: "TMMPUBKEY2"
privateKeyPasswordName: "TMMPRIVKEYPASSWD2"
version: "2"
親トピック: values.yamlファイルの構成
4.10 MicroTxのインストール
Helmを使用して、MicroTxをKubernetesクラスタにインストールします。
インストールが完了したら、MicroTxにアクセスできます。
次の章では、環境にサンプル・アプリケーションをインストールして実行する手順について説明します。サンプル・アプリケーションのデプロイを参照してください。
親トピック: Kubernetesクラスタへのインストール
4.11 Istioイングレス・ゲートウェイのIPアドレスの確認
トランザクションを開始する前に、Istioイングレス・ゲートウェイの外部IPアドレスを書き留める必要があります。
親トピック: Kubernetesクラスタへのインストール
4.12 MicroTxへのアクセス
MicroTxにアクセスするには、アクセスに使用するポート番号、ホスト名およびプロトコルを指定します。HTTPプロトコルはテスト環境または開発環境でのみ使用することをお薦めします。本番環境では、HTTPSプロトコルを使用する必要があります。
MicroTxにアクセスするには、内部URLまたは外部URLを使用します。MicroTxに、サービスをデプロイしたKubernetesクラスタ内からアクセスするか、別のKubernetesクラスタからアクセスするかに応じて、異なるURLを使用します。
MicroTxにアクセスするための内部URL
内部URLを使用して、サービスをデプロイしたKubernetesクラスタ内からMicroTxにアクセスします。たとえば、トランザクション・イニシエータ・アプリケーションとMicroTxを同じKubernetesクラスタにデプロイした場合です。
MicroTxにアクセスするには、次の形式でURLを作成します:
http://internalHostname:internalPort/api/v1
説明
internalHostname
: MicroTxのvalues.yaml
のtmmAppName
プロパティに入力した名前。たとえば、tmm-app
です。internalPort
: MicroTxのvalues.yaml
のport
プロパティに入力したポート番号。たとえば、9090
です。このポートでのHTTPSトラフィックを許可するために必要なネットワーキング・ルールを設定したことを確認します。
前述の例の値に基づくと、MicroTx URLの例はhttps://tmm-app:9000/api/v1
です。
コンテナ内のすべての通信はHTTPプロトコルを使用します。通信が経由するEnvoyプロキシでmTLSが使用されるためです。
MicroTxにアクセスするための外部URL
外部URLを使用して、サービスをデプロイしたKubernetesクラスタの外部からMicroTxにアクセスします。たとえば、異なるKubernetesクラスタにトランザクション・イニシエータ・アプリケーションおよびMicroTxをデプロイする場合です。このようなシナリオでは、トランザクション・イニシエータ・アプリケーションは外部URLを使用してMicroTxにアクセスします。
外部からMicroTxにアクセスするには、次の形式でURLを作成します:
https://externalHostname:externalPort/api/v1
説明
externalHostname
: Istioイングレス・ゲートウェイのロード・バランサのIPアドレス。Istioイングレス・ゲートウェイのIPアドレスの確認を参照してください。たとえば、192.0.2.1
です。externalPort
: Istioイングレス・ゲートウェイのロード・バランサのポート番号。このポートでインバウンドおよびアウトバウンド・トラフィックを許可するために必要なネットワーク・ルールを作成する必要があります。たとえば、443
です。
前述の例の値に基づくと、MicroTx URLの例はhttps://192.0.2.1:443/api/v1
です。
親トピック: Kubernetesクラスタへのインストール