第1章 アドオンの概要
Red Hat Advanced Cluster Management for Kubernetes アドオンは、パフォーマンスの一部の領域を改善し、アプリケーションを強化する機能を追加できます。以下のセクションでは、Red Hat Advanced Cluster Management で使用できるアドオンの概要を説明します。
1.1. Submariner マルチクラスターネットワーキングおよびサービスディスカバリー リンクのコピーリンクがクリップボードにコピーされました!
Submariner は、Red Hat Advanced Cluster Management for Kubernetes で使用できるオープンソースツールであり、オンプレミスまたはクラウドのいずれかの環境で、2 つ以上のマネージドクラスター間で直接ネットワークおよびサービスディスカバリーを提供します。Submariner は Multi-Cluster Services API (Kubernetes Enhancements Proposal #1645) と互換性があります。Submariner の詳細は、Submariner のサイト を参照してください。
どのプロバイダーが 自動コンソールデプロイメント をサポートするか、手動デプロイメント を必要とするかなど、インフラストラクチャープロバイダーのサポートレベルの詳細は、Red Hat Advanced Cluster Management サポートマトリックス を必ず参照してください。
Submariner の使用方法の詳細は、次のトピックを参照してください。
1.1.1. 非接続クラスターへの Submariner のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
非接続クラスターに Submariner をデプロイすると、クラスターに対する外部からの攻撃のリスクが軽減されるため、セキュリティー上の問題を解決できます。Red Hat Advanced Cluster Management for Kubernetes を使用して Submariner を非接続クラスターにデプロイするには、非接続ネットワーク環境へのインストール で説明されている手順を最初に完了する必要があります。
1.1.1.1. 非接続クラスターで Submariner を設定する リンクのコピーリンクがクリップボードにコピーされました!
非接続ネットワーク環境へのインストール で説明されている手順に従った後、非接続クラスターでのデプロイメントをサポートするために、インストール中に Submariner を設定する必要があります。以下のトピックを参照してください。
1.1.1.1.1. ローカルレジストリーでのイメージのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
非接続クラスターに Submariner をデプロイする前に、Submariner Operator bundle
イメージをローカルレジストリーにミラーリングしてください。
注: Red Hat Advanced Cluster Management 2.7.2 以前を使用している場合は、nettest-rhel8
イメージもミラーリングする必要があります。
1.1.1.1.2. catalogSource 名のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、submariner-addon
は redhat-operators
という名前の catalogSource
を検索します。別の名前の catalogSource
を使用する場合は、マネージドクラスターに関連付けられた SubmarinerConfig
の SubmarinerConfig.Spec.subscriptionConfig.Source
パラメーターの値を、catalogSource
のカスタム名で更新する必要があります。
1.1.1.1.3. SubmarinerConfig で airGappedDeployment を有効にする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes コンソールからマネージドクラスターに submariner-addon
をインストールする場合、Disconnected cluster オプションを選択して、Submariner が外部サーバーに対して API クエリーを作成しないようにすることができます。
API を使用して Submariner をインストールする場合は、マネージドクラスターに関連付けられた SubmarinerConfig
で airGappedDeployment
パラメーターを true
に設定する必要があります。
1.1.2. Submariner の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes は、Submariner をハブクラスターのアドオンとして提供します。Submariner の詳細は、Submariner オープンソースプロジェクトのドキュメント を参照してください。
1.1.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Submariner を使用する前に、以下の前提条件があることを確認します。
-
cluster-admin
のパーミッションを使用してハブクラスターにアクセスするための認証情報。 - ゲートウェイノード間で IP 接続を設定している。2 つのクラスターを接続する場合に、最低でも 1 つのクラスターには、ゲートウェイノード専用のパブリックまたはプライベート IP アドレスを使用してゲートウェイノードにアクセスできる必要があります。詳細は、Submariner NAT Traversal を参照してください。
- OVN Kubernetes を使用している場合には、クラスターは Red Hat OpenShift Container Platform バージョン 4.11 以降を使用する必要があります。
- Red Hat OpenShift Container Platform クラスターが OpenShift SDN CNI を使用する場合、各マネージドクラスター内のすべてのノードにわたるファイアウォール設定は、双方向で 4800/UDP を許可する必要があります。
- マネージドクラスター間のトンネルを確立するために、ファイアウォール設定では、ゲートウェイノードで 4500/UDP および 4490/UDP を許可する必要があります。
ゲートウェイノードが間に NAT を介さずにプライベート IP 経由で直接到達できる場合は、ファイアウォール設定でゲートウェイノード上で ESP プロトコルが許可されていることを確認してください。
注記: これは、クラスターが Amazon Web Services、Google Cloud Platform、Microsoft Azure、または Red Hat OpenStack 環境にデプロイされている場合は自動的に設定されますが、他の環境のクラスターおよびプライベートクラウドを保護するファイアウォールについては手動で設定する必要があります。
managedcluster
名は、RFC 1123 で定義されている DNS ラベル標準に従い、次の要件を満たす必要があります。- 63 文字以内
- 小文字の英数字またはハイフン (-) のみが含まれる。
- 英数字で始まる。
- 英数字で終わる。
1.1.2.2. Submariner ポートテーブル リンクのコピーリンクがクリップボードにコピーされました!
次の表を参照して、有効にする必要がある Submariner ポートを確認してください。
名前 | デフォルト値 | カスタマイズ可能 | 任意または必須 |
---|---|---|---|
IPsec NATT | 4500/UDP | はい | 必須 |
VXLAN | 4800/UDP | いいえ | 必須 |
NAT 検出ポート | 4490/UDP | いいえ | 必須 |
前提条件の詳細は、Submariner アップストリームの前提条件のドキュメント を参照してください。
1.1.2.3. Globalnet リンクのコピーリンクがクリップボードにコピーされました!
Globalnet は、CIDR が重複しているクラスター間の接続をサポートする Submariner アドオンに含まれている機能です。Globalnet はクラスターセット全体の設定であり、最初のマネージドクラスターがクラスターセットに追加されたときに選択できます。Globalnet が有効になっている場合、各マネージドクラスターには、仮想グローバルプライベートネットワークからグローバル CIDR が割り当てられます。グローバル CIDR は、クラスター間通信をサポートするのに使用されます。
Submariner を実行しているクラスターで CIDR が重複している可能性がある場合は、Globalnet を有効にすることを検討してください。コンソールを使用する場合、ClusterAdmin
は、クラスターセット内のクラスターに対して Submariner アドオンを有効にするときに、Globalnet を有効にする オプションを選択することにより、クラスターセットに対して Globalnet を有効にすることができます。Globalnet を有効にした後は、Submariner を削除せずに無効にすることはできません。
Red Hat Advanced Cluster Management API を使用する場合、ClusterAdmin
は、<ManagedClusterSet>-broker
namespace に submariner-broker
オブジェクトを作成することで Globalnet を有効にできます。
ClusterAdmin
ロールには、ブローカーの namespace にこのオブジェクトを作成するのに必要な権限があります。クラスターセットのプロキシー管理者として機能するのに作成されることがある ManagedClusterSetAdmin
ロールには、必要な権限がありません。必要な権限を提供する場合は、ClusterAdmin
が access-to-brokers-submariner-crd
のロール権限を ManagedClusterSetAdmin
ユーザーに関連付ける必要があります。
submariner-broker
オブジェクトを作成するには、次の手順を実行します。
次のコマンドを実行して
<broker-namespace>
を取得します。oc get ManagedClusterSet <cluster-set-name> -o jsonpath="{.metadata.annotations['cluster\.open-cluster-management\.io/submariner-broker-ns']}"
oc get ManagedClusterSet <cluster-set-name> -o jsonpath="{.metadata.annotations['cluster\.open-cluster-management\.io/submariner-broker-ns']}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow submariner-broker
という名前の YAML ファイルを作成して、Globalnet 設定を指定するsubmariner-broker
オブジェクトを作成します。次の行のようなコンテンツを YAML ファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow broker-namespace
を、ブローカーの namespace に置き換えます。Globalnet を有効にするには、
true-or-false
をtrue
に置き換えます。注:
メタデータ
名
パラメーターはsubmariner-broker
である必要があります。次のコマンドを入力して、ファイルを YAML ファイルに適用します。
oc apply -f submariner-broker.yaml
oc apply -f submariner-broker.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Globalnet の詳細は、Submariner のドキュメントの Globalnet コントローラー を参照してください。
1.1.3. subctl コマンドユーティリティーのインストール リンクのコピーリンクがクリップボードにコピーされました!
subctl
ユーティリティーは、コンテナーイメージで提供されます。subctl
ユーティリティーをローカルにインストールするには、次の手順を実行します。
次のコマンドを実行し、プロンプトが表示されたら認証情報を入力して、レジストリーにログインします。
oc registry login --registry registry.redhat.io
oc registry login --registry registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
subctl
コンテナー をダウンロードし、subctl
バイナリーの圧縮バージョンを/tmp
に展開します。oc image extract registry.redhat.io/rhacm2/subctl-rhel8:v0.14 --path="/dist/subctl-v0.14*-linux-amd64.tar.xz":/tmp/ --confirm
oc image extract registry.redhat.io/rhacm2/subctl-rhel8:v0.14 --path="/dist/subctl-v0.14*-linux-amd64.tar.xz":/tmp/ --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
subctl
ユーティリティーを展開します。tar -C /tmp/ -xf /tmp/subctl-v0.14*-linux-amd64.tar.xz
tar -C /tmp/ -xf /tmp/subctl-v0.14*-linux-amd64.tar.xz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
subctl
ユーティリティーをインストールします。install -m744 /tmp/subctl-v0.14*/subctl-v0.14*-linux-amd64 /$HOME/.local/bin/subctl
install -m744 /tmp/subctl-v0.14*/subctl-v0.14*-linux-amd64 /$HOME/.local/bin/subctl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.3.1. subctl コマンドの使用 リンクのコピーリンクがクリップボードにコピーされました!
パスにユーティリティーを追加した後に使用可能なコマンドの簡単な説明は、次の表を参照してください。
指定されたサービスの | |
指定されたサービスの | |
Submariner リソースに関する情報を提供します。 | |
Submariner がクラスターのペア全体で設定されている場合は、接続性、サービスディスカバリー、およびその他のサブマリーナー機能を検証します。 | |
Submariner で、または単一のクラスター内で有効になっているクラスターのペア全体のスループットおよびレイテンシーをベンチマークします。 | |
チェックを実行して、Submariner デプロイメントが正しく機能しない原因となる問題を特定します。 | |
クラスターから情報を収集して、Submariner デプロイメントのトラブルシューティングに役立てます。 | |
|
subctl
ユーティリティーとそのコマンドの詳細は、Submariner ドキュメントのsubctl
を参照してください。
1.1.4. コンソールを使用した Submariner のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes に Submariner をデプロイする前に、ホスト環境でクラスターを準備する必要があります。SubmarinerConfig
API または Red Hat Advanced Cluster Management for Kubernetes コンソールを使用して、以下のプロバイダーで Red Hat OpenShift Container Platform クラスターを自動的に準備できます。
- Amazon Web Services
- Google Cloud Platform
- Red Hat OpenStack Platform
- Microsoft Azure
- VMware vSphere
注: VMware vSphere では、NSX 以外のデプロイメントのみがサポートされています。
他のプロバイダーに Submariner をデプロイするには、Submariner の手動デプロイ を参照してください。
Red Hat Advanced Cluster Management for Kubernetes コンソールで Submariner をデプロイするには、以下の手順を実行します。
必要なアクセス権限: クラスターの管理者
- コンソールで、Infrastructure > Clusters を選択します。
- Clusters ページで、Cluster sets タブを選択します。Submariner で有効にするクラスターは、同じクラスターセットにある必要があります。
- Submariner をデプロイするクラスターがすでに同じクラスターセットにある場合は、手順 5 に進みます。
Submariner をデプロイするクラスターが同じクラスターセットにない場合は、以下の手順に従ってクラスターセットを作成します。
- Create cluster set を選択します。
- クラスターセットに名前を付け、Create を選択します。
- Manage resource assignments を選択して、クラスターセットに割り当てます。
- Submariner で接続するマネージドクラスターを選択して、クラスターセットに追加します。
- Review を選択して、選択したクラスターを表示し、確認します。
- Save を選択してクラスターセットを保存し、作成されるクラスターセットページを表示します。
- クラスターセットページで、Submariner add-on タブを選択します。
- Install Submariner add-ons を選択します。
- Submariner をデプロイするクラスターを選択します。
次の表のフィールドを参照し、Install Submariner アドオン エディターに必要な情報を入力します。
Expand フィールド 注記 AWS Access Key ID
AWS クラスターをインポートする場合にのみ表示されます。
AWS Secret Access Key
AWS クラスターをインポートする場合にのみ表示されます。
Base domain resource group name
Azure クラスターをインポートする場合にのみ表示されます。
Client ID
Azure クラスターをインポートする場合にのみ表示されます。
クライアントシークレット
Azure クラスターをインポートする場合にのみ表示されます。
サブスクリプション ID
Azure クラスターをインポートする場合にのみ表示されます。
テナント ID
Azure クラスターをインポートする場合にのみ表示されます。
Google Cloud Platform service account JSON key
Google Cloud Platform クラスターをインポートする場合にのみ表示されます。
インスタンスタイプ
マネージドクラスターで作成されるゲートウェイノードのインスタンスタイプ。
IPsec NAT-T port
IPsec NAT トラバーサルポートのデフォルト値はポート
4500
です。マネージドクラスター環境が VMware vSphere の場合は、ファイアウォールでこのポートが開いていることを確認してください。ゲートウェイ数
マネージドクラスターにデプロイされるゲートウェイノードの数。AWS、GCP、Azure、および OpenStack クラスターの場合、専用のゲートウェイノードがデプロイされます。VWware クラスターの場合、既存のワーカーノードはゲートウェイノードとしてタグ付けされます。デフォルト値は
1
です。値が 1 を超える場合、Submariner ゲートウェイの High Availability (HA) は自動的に有効になります。ケーブルドライバー
クラスター間トンネルを維持する Submariner ゲートウェイケーブルエンジンのコンポーネントです。デフォルト値は
Libreswan IPsec
です。Disconnected cluster
有効にすると、パブリック IP 解決のために外部サーバーにアクセスしないように Submariner に指示します。
Globalnet CIDR
クラスターセットで Globalnet 設定が選択されている場合にのみ表示されます。マネージドクラスターに使用される Globalnet CIDR。空白のままにすると、クラスターセットプールから CIDR が割り当てられます。
- エディターの末尾で Next を選択して、次のクラスターのエディターに移動し、選択した残りのクラスターごとに、エディターを完了します。
- 各マネージドクラスターの設定を確認します。
Install をクリックして、選択したマネージドクラスターに Submariner をデプロイします。
インストールと設定が完了するまで数分かかる場合があります。Submariner add-on タブのリストで Submariner ステータスを確認できます。
-
Connection status
は、マネージドクラスターで確立される Submariner 接続の数を示します。 -
Agent status
は、Submariner がマネージドクラスターに正常にデプロイされるかどうかを示します。コンソールでは、インストールと設定が完了するまでDegraded
のステータスをレポートする場合があります。 -
Gateway nodes labeled
はマネージドクラスター上のゲートウェイノードの数を示します。
-
Submariner が選択したクラスターにデプロイされました。
1.1.5. サブマリーナを手動でデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes に Submariner をデプロイする前に、接続用にホスト環境でクラスターを準備する必要があります。コンソールを使用して Submariner をサポートされているクラスターに自動的にデプロイする方法は、コンソールを使用して Submariner をデプロイする を参照してください。
Submariner の自動デプロイメントをサポートしていないプロバイダーでクラスターがホスティングされている場合は、次のセクションを参照してインフラストラクチャーを手動で準備してください。プロバイダーごとに固有の準備手順があるため、正しいプロバイダーを選択してください。
1.1.5.1. Submariner 向けのベアメタルの準備 リンクのコピーリンクがクリップボードにコピーされました!
Submariner をデプロイするためのベアメタルクラスターを準備するには、次の手順を実行します。
- ファイアウォールが、ゲートウェイノードの 4500/UDP ポートおよび 4490/UDP ポートで外部クライアントの受信/送信トラフィックを許可していることを確認します。また、クラスターが OpenShiftSDN CNI を使用してデプロイされている場合は、ローカルクラスターノード内のインバウンド/アウトバウンド UDP/4800 トラフィックを許可します。
次の例のような YAML コンテンツをカスタマイズして適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-namespace
をマネージドクラスターの名前に置き換えます。以下の例のように、SubmarinerConfig
の名前はsubmariner
である必要があります。この設定では、ワーカーノードの 1 つをベアメタルクラスターの Submariner ゲートウェイとしてラベル付けします。
デフォルトでは、Submariner は IP セキュリティー (IPsec) を使用して、ゲートウェイノード上のクラスター間でセキュアなトンネルを確立します。デフォルトの IPsec NATT ポートを使用するか、設定した別のポートを指定できます。IPsec NATT ポートを指定せずに、この手順を実行すると、接続に 4500/UDP が使用されます。
- Submariner によって設定されたゲートウェイノードを特定し、ファイアウォール設定を有効にして、外部トラフィック用の IPsec NATT (UDP/4500) および NatDiscovery (UDP/4490) ポートを許可します。
カスタマイズオプションについては、Submariner デプロイメントのカスタマイズ を参照してください。
1.1.5.2. コンソールを使用した Submariner 用の Microsoft Azure Red Hat OpenShift の準備 (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
Microsoft Azure Red Hat OpenShift サービスは、さまざまなツールとリソースを組み合わせて、コンテナーベースのアプリケーションを構築するプロセスを簡素化します。コンソールを使用して Submariner をデプロイするために Azure Red Hat OpenShift クラスターを準備するには、次の手順を実行します。
- Python wheel と CLI 拡張機能 をダウンロードします。
Azure CLI から、次のコマンドを実行して拡張機能をインストールします。
az extension add --upgrade -s <path-to-extension>
az extension add --upgrade -s <path-to-extension>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow .whl
拡張ファイルをダウンロードした場所へのパスにpath-to-extension
を置き換えます。次のコマンドを実行して、CLI 拡張機能が使用されていることを確認します。
az extension list
az extension list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 拡張機能が使用されている場合、出力は次の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Azure CLI から、次のコマンドを実行してプレビュー機能を登録します。
az feature registration create --namespace Microsoft.RedHatOpenShift --name AdminKubeconfig
az feature registration create --namespace Microsoft.RedHatOpenShift --name AdminKubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、管理者
kubeconfig
を取得します。az aro get-admin-kubeconfig -g <resource group> -n <cluster resource name>
az aro get-admin-kubeconfig -g <resource group> -n <cluster resource name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
az aro
コマンドは、kubeconfig
をローカルディレクトリーに保存し、kubeconfig
という名前を使用します。これを使用するには、環境変数KUBECONFIG
をファイルのパスと一致するように設定します。以下の例を参照してください。export KUBECONFIG=<path-to-kubeconfig> oc get nodes
export KUBECONFIG=<path-to-kubeconfig> oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat Advanced Cluster Management コンソールから Infrastructure > Clusters > Import cluster を選択して、Azure Red Hat OpenShift クラスターをクラスターリストにインポートします。
Kubeconfig
Import mode を選択し、Kubeconfig ウィンドウでkubeconfig
ファイルの内容を入力します。コンソールの指示に従ってインポートを完了します。Infrastructure > Clusters に移動して、Azure Red Hat OpenShift クラスターが正常にインポートされたことを確認できます。
- Infrastructure > Clusters > Cluster sets に移動し、追加するクラスターセットの名前を選択します。次に、Submariner add-ons タブをクリックします。
- Install Submariner add-ons ボタンをクリックし、Azure Red Hat OpenShift クラスターを Target clusters として設定します。コンソールの指示に従ってインストールを完了します。
-
Infrastructure > Clusters > Cluster sets > Submariner add-ons に移動して、Azure Red Hat OpenShift クラスターの 接続状態 が
Healthy
であることを確認します。
1.1.5.2.1. API を使用した Submariner 用の Microsoft Azure Red Hat OpenShift の準備 (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
API を使用して Submariner をデプロイするために Azure Red Hat OpenShift クラスターを準備するには、次の例のような YAML コンテンツをカスタマイズして適用します。
managed-cluster-namespace
をマネージドクラスターの名前に置き換えます。
以下の例のように、SubmarinerConfig
の名前は submariner
である必要があります。
この設定では、ワーカーノードの 1 つを Azure Red Hat OpenShift クラスターの Submariner ゲートウェイとしてラベル付けします。
デフォルトでは、Submariner は IP セキュリティー (IPsec) を使用して、ゲートウェイノード上のクラスター間でセキュアなトンネルを確立します。デフォルトの IPsec NATT ポートを使用するか、設定した別のポートを指定できます。IPsec NATT ポートを指定せずに、この手順を実行すると、接続にポート 4500/UDP が使用されます。
カスタマイズオプションについては、Submariner デプロイメントのカスタマイズ を参照してください。
1.1.5.3. コンソールを使用して Red Hat OpenShift Service on AWS で Submariner を準備する (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS は、アプリケーションの開発と最新化のための安定した柔軟なプラットフォームを提供します。Submariner をデプロイするために OpenShift Service on AWS クラスターを準備するには、次の手順を実行します。
次のコマンドを実行して、Submariner ゲートウェイを実行する新しいノードを作成します。
rosa create machinepool --cluster=<cluster_name> --name=sm-gw-mp --replicas=<number of Submariner gateway > --labels='submariner.io/gateway=true'
rosa create machinepool --cluster=<cluster_name> --name=sm-gw-mp --replicas=<number of Submariner gateway > --labels='submariner.io/gateway=true'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OpenShift Service on AWS にログインします。
rosa login oc login <rosa-cluster-url>:6443 --username cluster-admin --password <password>
rosa login oc login <rosa-cluster-url>:6443 --username cluster-admin --password <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OpenShift Service on AWS クラスターの
kubeconfig
を作成します。oc config view --flatten=true > rosa_kube/kubeconfig
oc config view --flatten=true > rosa_kube/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat Advanced Cluster Management コンソールから Infrastructure > Clusters > Import cluster を選択して、OpenShift Service on AWS クラスターをクラスターリストにインポートします。
Kubeconfig
Import mode を選択し、Kubeconfig ウィンドウでkubeconfig
ファイルの内容を入力します。コンソールの指示に従ってインポートを完了します。Infrastructure > Clusters に移動して、OpenShift Service on AWS クラスターが正常にインポートされたことを確認できます。
- Infrastructure > Clusters > Cluster sets に移動し、追加するクラスターセットの名前を選択します。次に、Submariner add-ons タブをクリックします。
- Install Submariner add-ons ボタンをクリックし、OpenShift Service on AWS クラスターを ターゲットクラスター として設定します。コンソールの指示に従ってインストールを完了します。
-
Infrastructure > Clusters > Cluster sets > Submariner add-ons に移動して、OpenShift Service on AWS クラスターの 接続ステータス が
Healthy
であることを確認します。
1.1.5.3.1. API を使用して Red Hat OpenShift Service on AWS で Submariner を準備する (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
API を使用して Submariner をデプロイするために OpenShift Service on AWS クラスターを準備するには、次の手順を実行します。
次のコマンドを実行して、Submariner ゲートウェイを実行する新しいノードを作成します。
rosa create machinepool --cluster=<cluster_name> --name=sm-gw-mp --replicas=<number of Submariner gateway > --labels='submariner.io/gateway=true'
rosa create machinepool --cluster=<cluster_name> --name=sm-gw-mp --replicas=<number of Submariner gateway > --labels='submariner.io/gateway=true'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような YAML コンテンツをカスタマイズして適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-namespace
をマネージドクラスターの名前に置き換えます。以下の例のように、
SubmarinerConfig
の名前はsubmariner
である必要があります。デフォルトでは、Submariner は IP セキュリティー (IPsec) を使用して、ゲートウェイノード上のクラスター間でセキュアなトンネルを確立します。デフォルトの IPsec NATT ポートを使用するか、設定した別のポートを指定できます。IPsec NATT ポートを指定せずに、この手順を実行すると、接続にポート 4500/UDP が使用されます。
カスタマイズオプションは、Submariner デプロイメントのカスタマイズ を参照してください。
1.1.5.4. ManagedClusterAddOn API を使用した Submariner のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
選択したホスティング環境を手動で準備した後、次の手順を完了することで、ManagedClusterAddOn
API を使用して Submariner をデプロイできます。
ManagedClusterSet の作成 ドキュメントに記載されている手順を使用して、ハブクラスターに
ManagedClusterSet
リソースを作成します。ManagedClusterSet
のエントリーが次の内容のようになっていることを確認してください。apiVersion: cluster.open-cluster-management.io/v1beta2 kind: ManagedClusterSet metadata: name: <managed-cluster-set-name>
apiVersion: cluster.open-cluster-management.io/v1beta2 kind: ManagedClusterSet metadata: name: <managed-cluster-set-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-set-name
は、作成するManagedClusterSet
の名前に置き換えます。重要: Kubernetes namespace の最大文字数は 63 文字です。
<managed-cluster-set-name>
に使用できる最大文字数は 56 文字です。<managed-cluster-set-name>
の文字数が 56 文字を超える場合、<managed-cluster-set-name>
は先頭から切り捨てられます。ManagedClusterSet
が作成されたら、submariner-addon
は<managed-cluster-set-name>-broker
と呼ばれる namespace を作成し、その namespace に Submariner ブローカーをデプロイします。次の例のような YAML コンテンツをカスタマイズして適用することにより、
<managed-cluster-set-name>-broker
namespace のハブクラスターにBroker
設定を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-set-name
は、マネージドクラスターの名前に置き換えます。ManagedClusterSet
で Submariner Globalnet を有効にする場合は、globalnetEnabled
の値をtrue
に設定します。次のコマンドを実行して、1 つのマネージドクラスターを
ManagedClusterSet
に追加します。oc label managedclusters <managed-cluster-name> "cluster.open-cluster-management.io/clusterset=<managed-cluster-set-name>" --overwrite
oc label managedclusters <managed-cluster-name> "cluster.open-cluster-management.io/clusterset=<managed-cluster-set-name>" --overwrite
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managedcluster-name
は、ManagedClusterSet
に追加するマネージドクラスターの名前に置き換えます。ManagedClusterSet-name
は、マネージドクラスターを追加するManagedClusterSet
の名前に置き換えます。次の例のような YAML コンテンツをカスタマイズして適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-namespace
は、マネージドクラスターの namespace に置き換えます。注記: 以下の例のように、
SubmarinerConfig
の名前はsubmariner
である必要があります。次の例のような YAML コンテンツをカスタマイズして適用することにより、マネージドクラスターに Submariner をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managedcluster-name
は、Submariner で使用するマネージドクラスターの名前に置き換えます。ManagedClusterAddOn
の仕様のinstallNamespace
フィールドは、Submariner をインストールするマネージドクラスター上の namespace に置き換えます。現在、Submariner-operator
namespace に Submariner をインストールする必要があります。ManagedClusterAddOn
の作成後に、submariner-addon
は Submariner をマネージドクラスターのsubmariner-operator
namespace にデプロイします。このManagedClusterAddOn
のステータスから Submariner のデプロイメントステータスを表示できます。注記:
ManagedClusterAddOn
の名前はsubmariner
である必要があります。- Submariner を有効にするすべてのマネージドクラスターに対して、手順 3、4、および 5 を繰り返します。
マネージドクラスターに Submariner をデプロイしたら、次のコマンドを入力して、Submariner
ManagedClusterAddOn
のステータスを確認して、Submariner のデプロイメントステータスを確認できます。oc -n <managed-cluster-name> get managedclusteraddons submariner -oyaml
oc -n <managed-cluster-name> get managedclusteraddons submariner -oyaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-name
は、マネージドクラスターの名前に置き換えます。Submariner
ManagedClusterAddOn
のステータスの 3 つの条件により、Submariner のデプロイメントステータスが分かります。-
SubmarinerGatewayNodesLabeled
の条件は、マネージドクラスターに Submariner ゲートウェイノードにラベル付けされているかどうかを示します。 -
SubmarinerAgentDegraded
の条件は、Submariner がマネージドクラスターに正常にデプロイされるかどうかを示します。 -
SubmarinerConnectionDegraded
の条件は、Submariner でマネージドクラスターで確立される接続の数を示します。
-
1.1.6. Submariner デプロイメントのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
NATT (Network Address Translation-Traversal) ポート、ゲートウェイノードの数、ゲートウェイノードのインスタンスタイプなど、Submariner デプロイメントの設定の一部をカスタマイズできます。これらのカスタマイズは、すべてのプロバイダーで一貫しています。
1.1.6.1. NATT ポート リンクのコピーリンクがクリップボードにコピーされました!
NATT ポートをカスタマイズする場合は、プロバイダー環境に合わせて次の YAML コンテンツをカスタマイズして適用します。
-
managed-cluster-namespace
は、マネージドクラスターの namespace に置き換えます。 managed-cluster-name
は、マネージドクラスターの名前に置き換えます。-
AWS:
provider
をaws
に置き換えます。<managed-cluster-name>-aws-creds
の値は、AWS の認証情報シークレット名で、この情報はハブクラスターのクラスター namespace にあります。 -
GCP:
provider
をgcp
に置き換えます。<managed-cluster-name>-gcp-creds
の値は、Google Cloud Platform 認証情報シークレット名を指し、ハブクラスターのクラスター namespace で見つけることができます。 -
OpenStack:
provider
をosp
に置き換えます。<managed-cluster-name>-osp-creds
の値は、ハブクラスターのクラスター namespace にある Red Hat OpenStack Platform 認証情報シークレット名です。 -
Azure:
provider
をazure
に置き換えます。<managed-cluster-name>-azure-creds
の値は、ハブクラスターのクラスター namespace で見つけることができる Microsoft Azure 認証情報シークレット名です。
-
AWS:
-
managed-cluster-namespace
は、マネージドクラスターの namespace に置き換えます。 -
managed-cluster-name
は、マネージドクラスターの名前に置き換えます。managed-cluster-name-gcp-creds
の値は、Google Cloud Platform 認証情報シークレット名を指し、ハブクラスターのクラスター namespace で見つけることができます。 -
NATTPort
は、使用する NATT ポートに置き換えます。
注記: 以下の例のように、SubmarinerConfig
の名前は submariner
である必要があります。
1.1.6.2. ゲートウェイノードの数 リンクのコピーリンクがクリップボードにコピーされました!
ゲートウェイノードの数をカスタマイズする場合は、次の例のような YAML コンテンツをカスタマイズして適用します。
-
managed-cluster-namespace
は、マネージドクラスターの namespace に置き換えます。 managed-cluster-name
は、マネージドクラスターの名前に置き換えます。-
AWS:
provider
をaws
に置き換えます。<managed-cluster-name>-aws-creds
の値は、AWS の認証情報シークレット名で、この情報はハブクラスターのクラスター namespace にあります。 -
GCP:
provider
をgcp
に置き換えます。<managed-cluster-name>-gcp-creds
の値は、Google Cloud Platform 認証情報シークレット名を指し、ハブクラスターのクラスター namespace で見つけることができます。 -
OpenStack:
provider
をosp
に置き換えます。<managed-cluster-name>-osp-creds
の値は、ハブクラスターのクラスター namespace にある Red Hat OpenStack Platform 認証情報シークレット名です。 -
Azure:
provider
をazure
に置き換えます。<managed-cluster-name>-azure-creds
の値は、ハブクラスターのクラスター namespace で見つけることができる Microsoft Azure 認証情報シークレット名です。
-
AWS:
-
gateways
は、使用するゲートウェイ数に置き換えます。値が 1 より大きい場合には、Submariner ゲートウェイは高可用性を自動的に有効にします。
注記: 以下の例のように、SubmarinerConfig
の名前は submariner
である必要があります。
1.1.6.3. ゲートウェイノードのインスタンスタイプ リンクのコピーリンクがクリップボードにコピーされました!
ゲートウェイノードのインスタンスタイプをカスタマイズする場合は、次の例のような YAML コンテンツをカスタマイズして適用します。
-
managed-cluster-namespace
は、マネージドクラスターの namespace に置き換えます。 managed-cluster-name
は、マネージドクラスターの名前に置き換えます。-
AWS:
provider
をaws
に置き換えます。<managed-cluster-name>-aws-creds
の値は、AWS の認証情報シークレット名で、この情報はハブクラスターのクラスター namespace にあります。 -
GCP:
provider
をgcp
に置き換えます。<managed-cluster-name>-gcp-creds
の値は、Google Cloud Platform 認証情報シークレット名を指し、ハブクラスターのクラスター namespace で見つけることができます。 -
OpenStack:
provider
をosp
に置き換えます。<managed-cluster-name>-osp-creds
の値は、ハブクラスターのクラスター namespace にある Red Hat OpenStack Platform 認証情報シークレット名です。 -
Azure:
provider
をazure
に置き換えます。<managed-cluster-name>-azure-creds
の値は、ハブクラスターのクラスター namespace で見つけることができる Microsoft Azure 認証情報シークレット名です。
-
AWS:
-
instance-type
は、使用する AWS インスタンスタイプに置き換えます。
注記: 以下の例のように、SubmarinerConfig
の名前は submariner
である必要があります。
1.1.6.4. ケーブルドライバー リンクのコピーリンクがクリップボードにコピーされました!
Submariner Gateway Engine コンポーネントは、他のクラスターへの安全なトンネルを作成します。ケーブルドライバーコンポーネントは、ゲートウェイエンジンコンポーネントのプラグ可能なアーキテクチャーを使用してトンネルを維持します。ケーブルエンジンコンポーネントの cableDriver
設定には、Libreswan または VXLAN 実装を使用できます。以下の例を参照してください。
ベストプラクティス: パブリックネットワークでは VXLAN ケーブルドライバーを使用しないでください。VXLAN ケーブルドライバーは暗号化されていません。プライベートネットワークでの不要な二重暗号化を避けるために、VXLAN のみを使用してください。たとえば、一部のオンプレミス環境では、専用の回線レベルのハードウェアデバイスを使用してトンネルの暗号化を処理する場合があります。
1.1.7. Submariner のサービス検出の管理 リンクのコピーリンクがクリップボードにコピーされました!
Submariner がマネージドクラスターと同じ環境にデプロイされた後、マネージドクラスターセット内のクラスター全体で Pod とサービス間の安全な IP ルーティングのためにルートが設定されます。
1.1.7.1. Submariner のサービス検出の有効化 リンクのコピーリンクがクリップボードにコピーされました!
クラスターからのサービスをマネージドクラスターセット内の他のクラスターに表示および検出可能にするには、ServiceExport
オブジェクトを作成する必要があります。ServiceExport
オブジェクトでサービスをエクスポートすると、<service>.<namespace>.svc.clusterset.local
形式でサービスにアクセスできます。複数のクラスターが同じ名前で、同じ namespace からサービスをエクスポートすると、他のクラスターは、その複数のクラスターを 1 つの論理サービスとして認識します。
この例では、default
の namespace で nginx
サービスを使用しますが、Kubernetes の ClusterIP
サービスまたはヘッドレスサービスを検出できます。
以下のコマンドを入力して、
ManagedClusterSet
のマネージドクラスターにnginx
サービスのインスタンスを適用します。oc -n default create deployment nginx --image=nginxinc/nginx-unprivileged:stable-alpine oc -n default expose deployment nginx --port=8080
oc -n default create deployment nginx --image=nginxinc/nginx-unprivileged:stable-alpine oc -n default expose deployment nginx --port=8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドのような
subctl
ツールを使用してコマンドを入力し、ServiceExport
エントリーを作成して、サービスをエクスポートします。subctl export service --namespace <service-namespace> <service-name>
subctl export service --namespace <service-namespace> <service-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow service-namespace
を、サービスが置かれた namespace の名前に置き換えます。この例では、default
になります。service-name
を、エクスポートするサービスの名前に置き換えます。この例では、nginx
になります。その他の使用可能なフラグの詳細は、Submariner ドキュメントの
export
を参照してください。別のマネージドクラスターから以下のコマンドを実行して、
nginx
サービスにアクセスできることを確認します。oc -n default run --generator=run-pod/v1 tmp-shell --rm -i --tty --image quay.io/submariner/nettest -- /bin/bash curl nginx.default.svc.clusterset.local:8080
oc -n default run --generator=run-pod/v1 tmp-shell --rm -i --tty --image quay.io/submariner/nettest -- /bin/bash curl nginx.default.svc.clusterset.local:8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、nginx
サービス検出が Submariner に対して設定されました。
1.1.7.2. Submariner のサービス検出の無効化 リンクのコピーリンクがクリップボードにコピーされました!
サービスが他のクラスターにエクスポートされないようにするには、nginx
の次の例のようなコマンドを入力します。
subctl unexport service --namespace <service-namespace> <service-name>
subctl unexport service --namespace <service-namespace> <service-name>
service-namespace
を、サービスが置かれた namespace の名前に置き換えます。
service-name
を、エクスポートするサービスの名前に置き換えます。
その他の使用可能なフラグの詳細は、Submariner ドキュメントの unexport
を参照してください。
このサービスは、クラスターによる検出に使用できなくなりました。
1.1.8. Submariner のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes コンソールまたはコマンドラインを使用して、クラスターから Submariner コンポーネントをアンインストールできます。0.12 より前の Submariner バージョンで、すべてのデータプレーンコンポーネントを完全に削除するには、追加の手順が必要です。Submariner のアンインストールはべき等であるため、問題なく手順を繰り返すことができます。
1.1.8.1. コンソールを使用した Submariner のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
コンソールを使用してクラスターから Submariner をアンインストールするには、次の手順を実行します。
- コンソールナビゲーションから、Infrastructure > Clusters を選択し、Cluster sets タブを選択します。
- Submariner コンポーネントを削除するクラスターを含むクラスターセットを選択します。
- Submariner Add-ons タブを選択して、Submariner がデプロイされているクラスターセット内のクラスターを表示します。
- Submariner をアンインストールするクラスターの Actions メニューで、Uninstall Add-on を選択します。
- Submariner をアンインストールするクラスターの アクション メニューで、クラスターセットの削除 を選択します。
Submariner を削除する他のクラスターについても、これらの手順を繰り返します。
ヒント: 複数のクラスターを選択して Actions をクリックすると、同じクラスターセット内の複数のクラスターから Submariner アドオンを削除できます。Uninstall Submariner add-ons を選択します。
削除する Submariner のバージョンがバージョン 0.12 より前の場合は、Submariner を手動でアンインストールする に進みます。Submariner のバージョンが 0.12 以降の場合、Submariner は削除されます。
重要: クラウドプロバイダーによる追加料金を回避するために、すべてのクラウドリソースがクラウドプロバイダーから削除されていることを確認してください。詳細は、Submariner リソースの削除の確認 を参照してください。
1.1.8.2. CLI を使用した Submariner のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して Submariner をアンインストールするには、次の手順を実行します。
次のコマンドを実行して、クラスターの Submariner デプロイメントを削除します。
oc -n <managed-cluster-namespace> delete managedclusteraddon submariner
oc -n <managed-cluster-namespace> delete managedclusteraddon submariner
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-namespace
は、マネージドクラスターの namespace に置き換えます。次のコマンドを実行して、クラスターのクラウドリソースを削除します。
oc -n <managed-cluster-namespace> delete submarinerconfig submariner
oc -n <managed-cluster-namespace> delete submarinerconfig submariner
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-namespace
は、マネージドクラスターの namespace に置き換えます。次のコマンドを実行して、クラスターセットを削除し、ブローカーの詳細を削除します。
oc delete managedclusterset <managedclusterset>
oc delete managedclusterset <managedclusterset>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managedclusterset
をマネージドクラスターセットの名前に置き換えます。
削除する Submariner のバージョンがバージョン 0.12 より前の場合は、Submariner を手動でアンインストールする に進みます。Submariner のバージョンが 0.12 以降の場合、Submariner は削除されます。
重要: クラウドプロバイダーによる追加料金を回避するために、すべてのクラウドリソースがクラウドプロバイダーから削除されていることを確認してください。詳細は、Submariner リソースの削除の確認 を参照してください。
1.1.8.3. Submariner の手動アンインストール リンクのコピーリンクがクリップボードにコピーされました!
バージョン 0.12 より前のバージョンの Submariner をアンインストールする場合は、Submariner ドキュメントの 手動アンインストール セクションの手順 5 ~ 8 を実行してください。
これらの手順を完了すると、Submariner コンポーネントがクラスターから削除されます。
重要: クラウドプロバイダーによる追加料金を回避するために、すべてのクラウドリソースがクラウドプロバイダーから削除されていることを確認してください。詳細は、Submariner リソースの削除の確認 を参照してください。
1.1.8.4. Submariner リソースの削除の確認 リンクのコピーリンクがクリップボードにコピーされました!
Submariner をアンインストールした後、すべての Submariner リソースがクラスターから削除されていることを確認します。それらがクラスターに残っている場合、一部のリソースはインフラストラクチャープロバイダーからの料金を引き続き発生させます。次の手順を実行して、クラスターに追加の Submariner リソースがないことを確認します。
次のコマンドを実行して、クラスターに残っている Submariner リソースをリスト表示します。
oc get cluster <CLUSTER_NAME> grep submariner
oc get cluster <CLUSTER_NAME> grep submariner
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CLUSTER_NAME
をクラスターの名前に置き換えます。次のコマンドを入力して、リストのリソースをすべて削除します。
oc delete resource <RESOURCE_NAME> cluster <CLUSTER_NAME>
oc delete resource <RESOURCE_NAME> cluster <CLUSTER_NAME>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RESOURCE_NAME
を、削除する Submariner リソースの名前に置き換えます。- 検索でリソースが特定されなくなるまで、クラスターごとに手順 1 ~ 2 を繰り返します。
Submariner リソースがクラスターから削除されます。