3.4 Kubernetesクラスタの準備
Kubernetesでは、MicroTxをサービス・メッシュ内にインストールすることもサービスなしでインストールすることもできます。インストール・バンドルにはHelmチャートが用意されています。この項では、Istioサービス・メッシュを使用してKubernetesクラスタにMicroTxをインストールする手順を示します。
同様の構成を作成すると、サポートされている他の環境にMicroTxをインストールできます。Kubernetesクラスタで別のサービス・メッシュを使用する場合は、独自のHelmチャートを作成します。
次の図は、MicroTxが、他のマイクロサービスとともにKubernetesクラスタのIstioサービス・メッシュ内にインストールされたデプロイメント例を示しています。

Istioは、サービス間通信を処理するために個別のインフラストラクチャ・レイヤーを提供するサービス・メッシュです。ネットワーク通信がサービスそのものから取り出されて、プロキシによって処理されます。Istioではサイドカー設計が使用されています。つまり、通信プロキシは各サービス・コンテナ外部の独自のコンテナ内で実行されます。Envoyは、マイクロサービス・コンテナ内にサイドカーとしてデプロイされるプロキシです。サービス・メッシュ内のすべての通信は、Envoyプロキシを介して行われます。
トピック:
- Kubernetesでのデプロイメントの考慮事項
KubernetesにMicroTxをデプロイする際は、次の要因を考慮してください。 - Kubernetesクラスタの作成
Kubernetesクラスタを作成するか、既存のクラスタを使用します。このクラスタにMicroTxをインストールします。 - 必要なソフトウェアのインストールおよび構成
MicroTxをインストールする前に、必要なソフトウェアをローカル・マシンにインストールして構成する必要があります。 - DockerレジストリにアクセスするためのKubernetesシークレットの作成
Helmを使用してアプリケーションをインストールする場合は、Kubernetesシークレットを使用して、リモート・リポジトリからイメージをプルするための認証詳細を指定します。 - Istio用のSSL詳細を含むKubernetesシークレットの作成
HTTPSプロトコルを使用したIstioへのアクセスを有効にするには、SSLキーおよび証明書の詳細を含むKubernetesシークレットを作成する必要があります。MicroTxは、この情報によりHTTPSを使用してIstioにアクセスします。 - 認証および認可
認証によって、権限のある個人のみがシステムおよびデータにアクセスできるようになります。認可によって、システム権限およびデータへのアクセス制御が提供されます。これは認証に基づいて、個人が適切なアクセス権を取得することを保証します。
親トピック: 準備
3.4.1 Kubernetesでのデプロイメントの考慮事項
KubernetesにMicroTxをデプロイする際は、次の要因を考慮してください。
インストール・バンドルにはHelmチャートが用意されています。このドキュメントでは、Istioサービス・メッシュを使用したKubernetesクラスタでのMicroTxのサンプル・デプロイメントの詳細を示します。Kubernetesクラスタで別のサービス・メッシュを使用する場合は、独自のHelmチャートを作成します。
サポートされているKubernetesプラットフォーム
MicroTxは、データ・センターまたはクラウド環境で実行されているKubernetesクラスタにデプロイします。MicroTxは、次のプラットフォームでKubernetes 1.21.xまたは互換性のあるバージョンでテストされています:
- Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)Oracle Cloud InfrastructureドキュメントのKubernetesクラスタの作成を参照してください。
- Minikube
- Oracle Linux Container Native Environment
複数のKubernetesクラスタへのデプロイメント
アプリケーション・マイクロサービスおよびMicroTxは、単一のKubernetesクラスタ内の単一のIstioサービス・メッシュ内にデプロイできます。
アプリケーション・マイクロサービスが複数のKubernetesクラスタに分散される場合、またはMicroTxでOracle DatabaseまたはTuxedoと通信しようとする場合は、MicroTxを別のKubernetesクラスタにデプロイできます。このようなシナリオでは、各KubernetesクラスタがIstioサービス・メッシュを含みます。複数のIstioサービス・メッシュ間の通信を有効にするために、イングレス・ゲートウェイおよびエグレス・ゲートウェイを構成する必要があります。
親トピック: Kubernetesクラスタの準備
3.4.2 Kubernetesクラスタの作成
Kubernetesクラスタを作成するか、既存のものを使用します。このクラスタにMicroTxをインストールします。
開始する前に、次の方法で環境を計画する必要があります:
- MicroTxをホストするために単一ノードと複数ノードのどちらのKubernetesクラスタが必要かを決定します。開発環境では1つ以上の単一ノード・クラスタを作成し、本番環境では1つ以上の3ノード・クラスタを作成することをお薦めします。
- 環境内の様々なコンポーネントを識別します。マイクロサービスがKubernetesクラスタで実行されている場合は、同じクラスタまたは別のクラスタにMicroTxをインストールできます。マイクロサービスが複数のKubernetesクラスタに分散されている場合、またはKubernetesクラスタに含まれないOracle DatabaseやTuxedoなどのコンポーネントとMicroTxが通信できるようにする場合は、MicroTxをホストするKubernetesクラスタを作成します。
親トピック: Kubernetesクラスタの準備
3.4.3 必要なソフトウェアのインストールおよび構成
MicroTxをインストールする前に、必要なソフトウェアをローカル・マシンにインストールして構成する必要があります。
次の手順を実行して、必要なソフトウェアをインストールし、ローカル・マシンに環境を構成します:
親トピック: Kubernetesクラスタの準備
3.4.4 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クラスタの準備
3.4.5 Istio用のSSL詳細を含むKubernetesシークレットの作成
HTTPSプロトコルを使用したIstioへのアクセスを有効にするには、SSLキーおよび証明書の詳細を含むKubernetesシークレットを作成する必要があります。MicroTxは、この情報によりHTTPSを使用してIstioにアクセスします。
values.yaml
ファイルにこの詳細を指定する必要があるため、この名前を書き留めます。
親トピック: Kubernetesクラスタの準備
3.4.6 認証および認可
認証によって、権限のある個人のみがシステムおよびデータにアクセスできるようになります。認可によって、システム権限およびデータへのアクセス制御が提供されます。これは認証に基づいて、個人が適切なアクセス権を取得することを保証します。
- 暗号化キーのKubernetesシークレットの生成
非同期コールをサポートするために、MicroTxによって、認可トークンおよびリフレッシュ・トークンが格納されます。トークンを格納するには、トークンを暗号化する必要があります。トークンを直接格納することはできないためです。トークンを暗号化するには、暗号化キーを作成します。 - トランザクション・トークンのキー・ペアの作成
アプリケーションは、各MicroTxトランザクションに固有のMicroTx署名付きトランザクション・トークンを含めることをサポートしています。
親トピック: Kubernetesクラスタの準備
3.4.6.1 暗号化キーのKubernetesシークレットの生成
非同期コールをサポートするために、MicroTxは認可トークンとリフレッシュ・トークンを格納します。トークンを格納するには、トークンを暗号化する必要があります。トークンを直接格納することはできないためです。トークンを暗号化するには、暗号化キーを作成します。
authorization
のauthTokenPropagationEnabled
プロパティを有効化した場合は、暗号化キーを生成し、そのキーをDockerシークレットに追加する必要があります。生成する暗号化キーには、次の属性が必要です。
- 対称アルゴリズム: AES-256
- 暗号モード: GCMモードのAES
- キーの長さ: 32バイト
- 初期化ベクトルの長さ: 96ビット
MicroTxは、アクセス・トークンおよびリフレッシュ・トークンを暗号化し、後で参加側サービスへのコール時に使用します。MicroTxは、トランザクションごとに初期化ベクトルの新しい値を生成します。各トランザクション・レコードには、キー・バージョンや初期化ベクトル値などの暗号化されたメタデータ情報が含まれます。
親トピック: 認証および認可
3.4.6.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をインストールしたことを確認します。
親トピック: 認証および認可