アドオン
第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 for Kubernetes は、Submariner をハブクラスターのアドオンとして提供します。Submariner の詳細は、Submariner オープンソースプロジェクトのドキュメント を参照してください。
自動化コンソールデプロイメント でサポートされるインフラストラクチャープロバイダーおよび 手動デプロイメント が必要なインフラストラクチャープロバイダーに関する詳細は、Red Hat Advanced Cluster Management のサポートマトリックス を参照してください。
1.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Submariner を使用する前に、以下の前提条件があることを確認します。
-
cluster-adminのパーミッションを使用してハブクラスターにアクセスするための認証情報。 - ゲートウェイノード間で IP 接続を設定している。2 つのクラスターを接続する場合に、最低でも 1 つのクラスターには、ゲートウェイノード専用のパブリックまたはプライベート IP アドレスを使用してゲートウェイノードにアクセスできる必要があります。詳細は、Submariner NAT Traversal を参照してください。
- OVN Kubernetes を使用している場合には、クラスターは Red Hat OpenShift Container Platform バージョン 4.11 以降を使用する必要があります。
- 各マネージドクラスターのすべてのノードにおけるファイアウォール設定は、両方の方向で 4800/UDP が許可されている。
- ゲートウェイノードのファイアウォール設定では、入力 8080/TCP が許可されているため、クラスター内の他のノードがアクセスできます。
- UDP/4500、およびゲートウェイノード上の IPsec トラフィックに使用されるその他のポート用にファイアウォール設定が開いている。
ゲートウェイノードが間に NAT を介さずにプライベート IP 経由で直接到達できる場合は、ファイアウォール設定でゲートウェイノード上で ESP プロトコルが許可されていることを確認してください。
注記: これは、クラスターが AWS または GCP 環境にデプロイされる際に自動的に設定されますが、他の環境のクラスター用に手動で設定し、プライベートクラウドを保護するファイアウォール用に設定する必要があります。
managedcluster名は、RFC1123 で定義されている DNS ラベル標準に従っている。これは、名前が次の基準を満たしている必要があることを意味します。- 最大 63 文字を含む。
- 小文字の英数字またはハイフン (-) のみが含まれる。
- 英数字で始まる。
- 英数字で終わる。
1.1.2. Submariner ポートテーブル リンクのコピーリンクがクリップボードにコピーされました!
次の表を参照して、有効にする必要がある Submariner ポートを確認してください。
| Name | デフォルト値 | カスタマイズ可能 | 任意または必須 |
|---|---|---|---|
| IPsec NATT | 4500/UDP | はい | 必須 |
| VXLAN | 4800/UDP | いいえ | 必須 |
| Submariner メトリクスポート | 8080/TCP | いいえ | 必須 |
| Globalnet メトリクスポート | 8081/TCP | いいえ | Globalnet が有効な場合に必要 |
前提条件の詳細は、Submariner アップストリームの前提条件のドキュメント を参照してください。
1.1.3. subctl コマンドユーティリティー リンクのコピーリンクがクリップボードにコピーされました!
Submariner には、Submariner 環境でのタスクの実行を簡素化する追加コマンドを提供する subctl ユーティリティーが含まれています。
1.1.3.1. subctl コマンドユーティリティーのインストール リンクのコピーリンクがクリップボードにコピーされました!
subctl ユーティリティーは、コンテナーイメージで提供されます。subctl ユーティリティーをローカルにインストールするには、次の手順を実行します。
次のコマンドを実行し、プロンプトが表示されたら認証情報を入力して、レジストリーにログインします。
oc registry login --registry registry.redhat.io
oc registry login --registry registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
subctlコンテナー をダウンロードし、subctlバイナリーの圧縮バージョンを/tmpに展開します。oc image extract registry.redhat.io/rhacm2/subctl-rhel8:v0.13 --path="/dist/subctl-v0.13*-linux-amd64.tar.xz":/tmp/ --confirm
oc image extract registry.redhat.io/rhacm2/subctl-rhel8:v0.13 --path="/dist/subctl-v0.13*-linux-amd64.tar.xz":/tmp/ --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
subctlユーティリティーを展開します。tar -C /tmp/ -xf /tmp/subctl-v0.13*-linux-amd64.tar.xz
tar -C /tmp/ -xf /tmp/subctl-v0.13*-linux-amd64.tar.xzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
subctlユーティリティーをインストールします。install -m744 /tmp/subctl-v0.13*/subctl-v0.13*-linux-amd64 /$HOME/.local/bin/subctl
install -m744 /tmp/subctl-v0.13*/subctl-v0.13*-linux-amd64 /$HOME/.local/bin/subctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.3.2. subctl コマンドの使用 リンクのコピーリンクがクリップボードにコピーされました!
パスにユーティリティーを追加した後に使用可能なコマンドの簡単な説明については、次の表を参照してください。
|
指定されたサービスの | |
|
指定されたサービスの | |
| Submariner リソースに関する情報を提供します。 | |
| Submariner がクラスターのペア全体で設定されている場合は、接続性、サービスディスカバリー、およびその他のサブマリーナー機能を検証します。 | |
| Submariner で、または単一のクラスター内で有効になっているクラスターのペア全体のスループットおよびレイテンシーをベンチマークします。 | |
| チェックを実行して、Submariner デプロイメントが正しく機能しない原因となる問題を特定します。 | |
| クラスターから情報を収集して、Submariner デプロイメントのトラブルシューティングに役立てます。 | |
|
|
subctl ユーティリティーとそのコマンドの詳細は、Submariner ドキュメントのsubctl を参照してください。
1.1.4. 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Globalnet の詳細は、Submariner のドキュメントの Globalnet コントローラー を参照してください。
1.1.5. Submariner のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Submariner は、次のプロバイダーのネットワーククラスターにデプロイできます。
自動デプロイメントプロセス:
- Amazon Web Services
- Google Cloud Platform
- Red Hat OpenStack Platform
- Microsoft Azure
手動デプロイメントプロセス:
- IBM Cloud
- VMware vSphere
- ベアメタル
1.1.5.1. コンソールを使用した Submariner のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes コンソールを使用して、Amazon Web Services、Google Cloud Platform、および VMware vSphere にデプロイされた Red Hat OpenShift Container Platform マネージドクラスターに Submariner をデプロイできます。他のプロバイダーに Submariner をデプロイするには、Submariner の手動デプロイ を参照してください。Red Hat Advanced Cluster Management for Kubernetes コンソールで Submariner をデプロイするには、以下の手順を実行します。
必要なアクセス権限: クラスターの管理者
- コンソールナビゲーションメニューから Infrastructure > Clusters を選択します。
- Clusters ページで、Cluster sets タブを選択します。Submariner で有効にするクラスターは、同じクラスターセットにある必要があります。
- Submariner をデプロイするクラスターがすでに同じクラスターセットにある場合は、手順 5 を省略して Submariner をデプロイします。
Submariner をデプロイするクラスターが同じクラスターセットにない場合は、以下の手順に従ってクラスターセットを作成します。
- Create cluster set を選択します。
- クラスターセットに名前を付け、Create を選択します。
- Manage resource assignments を選択して、クラスターセットに割り当てます。
- Submariner で接続するマネージドクラスターを選択して、クラスターセットに追加します。
- Review を選択して、選択したクラスターを表示し、確認します。
- Save を選択してクラスターセットを保存し、作成されるクラスターセットページを表示します。
- クラスターセットページで、Submariner add-on タブを選択します。
- Install Submariner add-ons を選択します。
- Submariner をデプロイするクラスターを選択します。
Install Submariner add-on エディターに以下の情報を入力します。
-
AWS Access Key ID- このフィールドは、AWS クラスターをインポートする場合にのみ表示されます。 -
AWS Secret Access Key: このフィールドは、AWS クラスターをインポートする場合にのみ表示されます。 -
Google Cloud Platform service account JSON key: このフィールドは、Google Cloud Platform クラスターをインポートする場合にのみ表示されます。 -
Instance type- マネージドクラスターで作成されたゲートウェイノードの Amazon Web Services EC2 インスタンスタイプ。デフォルト値はc5d.largeです。このフィールドは、マネージドクラスター環境が AWS の場合のみ表示されます。 -
IPsec NAT-T ポート: IPsec NAT トラバーサルポートのデフォルト値はポート4500です。マネージドクラスター環境が VMware vSphere の場合は、ファイアウォールでこのポートが開いていることを確認してください。 -
ゲートウェイ数: マネージドクラスターへの Submariner ゲートウェイコンポーネントのデプロイに使用されるワーカーノードの数。デフォルト値は1です。値が 1 を超える場合、Submariner ゲートウェイの High Availability (HA) は自動的に有効になります。 -
ケーブルドライバー: クラスター間トンネルを維持する Submariner ゲートウェイケーブルエンジンのコンポーネントです。デフォルト値はLibreswan IPsecです。
-
- エディターの末尾で Next を選択して、次のクラスターのエディターに移動し、選択した残りのクラスターごとに、エディターを完了します。
- 各マネージドクラスターの設定を確認します。
Install をクリックして、選択したマネージドクラスターに Submariner をデプロイします。
インストールと設定が完了するまで数分かかる場合があります。Submariner add-on タブの一覧で Submariner ステータスを確認できます。
-
Connection statusは、マネージドクラスターで確立される Submariner 接続の数を示します。 -
Agent statusは、Submariner がマネージドクラスターに正常にデプロイされるかどうかを示します。コンソールでは、インストールと設定が完了するまでDegradedのステータスをレポートする場合があります。 -
Gateway nodes labeledは、マネージドクラスターの Submariner ゲートウェイラベルsubmariner.io/gateway=trueが付いたワーカーノードの数を示します。
-
Submariner がクラスターにデプロイされました。
1.1.5.2. サブマリーナを手動でデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes に Submariner をデプロイする前に、接続用にホスト環境でクラスターを準備する必要があります。現時点で、SubmarinerConfig API を使用して、Amazon Web Services、Google Cloud Platform、および VMware vSphere のクラスターを自動的に準備できます。他のプラットフォームの場合は、手動で準備する必要があります。手順は、Submariner をデプロイする一部のホストの準備 を参照してください。
1.1.5.2.1. Submariner をデプロイする一部のホストの準備 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes に Submariner をデプロイする前に、接続用にホスト環境でクラスターを手動で準備する必要があります。要件はホスティング環境によって異なるため、ホスティング環境の手順に従います。
1.1.5.2.1.1. Submariner 向けの VMware vSphere の準備 リンクのコピーリンクがクリップボードにコピーされました!
Submariner は IPsec を使用して、ゲートウェイノード上のクラスター間でセキュアなトンネルを確立します。デフォルトのポートを使用するか、カスタムポートを指定できます。IPsec NATT ポートを指定せずにこの手順を実行すると、通信にはデフォルトのポートが自動的に使用されます。デフォルトのポートは 4500/UDP です。
Submariner は、仮想拡張可能な LAN (VXLAN) を使用して、ワーカーノードおよびマスターノードからゲートウェイノードに移行するときにトラフィックをカプセル化します。VXLAN ポートはカスタマイズできず、常にポート 4800/UDP を使用します。
Submariner は 8080/TCP を使用してクラスターのノード間でメトリクス情報を送信します。このポートはカスタマイズできません。
Submariner を有効にするには、VMWare vSphere 管理者が以下のポートを開放する必要があります。
| Name | デフォルト値 | カスタマイズ可能 |
|---|---|---|
| IPsec NATT | 4500/UDP | はい |
| VXLAN | 4800/UDP | いいえ |
| Submariner メトリクス | 8080/TCP | いいえ |
Submariner をデプロイするように VMware vSphere を準備するには、以下の手順を実行します。
- IPsec NATT、VXLAN、およびメトリクスポートが開放されていることを確認します。
次の例のような YAML コンテンツをカスタマイズして適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-namespaceは、マネージドクラスターの namespace に置き換えます。注記: 以下の例のように、
SubmarinerConfigの名前はsubmarinerである必要があります。この設定は、Submariner にデフォルトの NATT (Network Address Translation-Traversal) ポート (4500/UDP) を使用し、1 つのワーカーノードは vSphere クラスターの Submariner ゲートウェイとしてラベルが付けられています。
Submariner は IP セキュリティー (IPsec) を使用して、ゲートウェイノード上のクラスター間でセキュアなトンネルを確立します。デフォルトの IPsec NATT ポートを使用するか、設定した別のポートを指定できます。IPsec NATT を指定せずにこの手順を実行すると、4500/UDP のポートが通信に自動的に使用されます。
1.1.5.2.1.2. Submariner 向けのベアメタルの準備 リンクのコピーリンクがクリップボードにコピーされました!
Submariner をデプロイするためのベアメタルクラスターを準備するには、次の手順を実行します。
- IPsec NATT、VXLAN、およびメトリクスポートが開放されていることを確認します。
次の例のような YAML コンテンツをカスタマイズして適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-namespaceは、マネージドクラスターの namespace に置き換えます。注記: 以下の例のように、
SubmarinerConfigの名前はsubmarinerである必要があります。この設定は、Submariner にデフォルトの NATT (Network Address Translation-Traversal) ポート (4500/UDP) を使用し、1 つのワーカーノードはベアメタルクラスターの Submariner ゲートウェイとしてラベルが付けられています。
Submariner は IP セキュリティー (IPsec) を使用して、ゲートウェイノード上のクラスター間でセキュアなトンネルを確立します。デフォルトの IPsec NATT ポートを使用するか、設定した別のポートを指定できます。IPsec NATT を指定せずにこの手順を実行すると、4500/UDP のポートが通信に自動的に使用されます。
カスタマイズオプションについては、Submariner デプロイメントのカスタマイズ を参照してください。
1.1.5.2.2. ManagedClusterAddOn API を使用した Submariner のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
ManagedClusterAddOn API を使用して Submariner をデプロイするには、最初にホスティング環境でクラスターを準備する必要があります。詳細は Submariner をデプロイする一部のホストの準備 を参照してください。
クラスターを準備したら、次の手順を実行します。
ManagedClusterSets の作成と管理 のドキュメントの ManagedClusterSets の作成と管理 のトピックに記載されている手順を使用して、ハブクラスターに
ManagedClusterSetリソースを作成します。ManagedClusterSetのエントリーは以下のような内容になります。apiVersion: cluster.open-cluster-management.io/v1beta1 kind: ManagedClusterSet metadata: name: <managed-cluster-set-name>
apiVersion: cluster.open-cluster-management.io/v1beta1 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>は、先頭から 56 文字で省略されます。ManagedClusterSetが作成されたら、submariner-addonは<managed-cluster-set-name>-brokerと呼ばれる namespace を作成し、その namespace に Submariner ブローカーをデプロイします。次の例のような YAML コンテンツをカスタマイズして適用することにより、
<managed-cluster-set-name>-brokernamespace のハブクラスターに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>" --overwriteCopy 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-operatornamespace に Submariner をインストールする必要があります。ManagedClusterAddOnの作成後に、submariner-addonは Submariner をマネージドクラスターのsubmariner-operatornamespace にデプロイします。この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 -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-nameは、マネージドクラスターの名前に置き換えます。Submariner
ManagedClusterAddOnのステータスの 3 つの条件により、Submariner のデプロイメントステータスが分かります。-
SubmarinerGatewayNodesLabeledの条件は、マネージドクラスターに Submariner ゲートウェイノードにラベル付けされているかどうかを示します。 -
SubmarinerAgentDegradedの条件は、Submariner がマネージドクラスターに正常にデプロイされるかどうかを示します。 -
SubmarinerConnectionDegradedの条件は、Submariner でマネージドクラスターで確立される接続の数を示します。
-
1.1.5.2.3. Submariner デプロイメントのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
NATT (Network Address Translation-Traversal) ポート、ゲートウェイノードの数、ゲートウェイノードのインスタンスタイプなど、Submariner デプロイメントの設定の一部をカスタマイズできます。これらのカスタマイズは、すべてのプロバイダーで一貫しています。
1.1.5.2.3.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 である必要があります。
VMware vSphere 環境で NATT ポートをカスタマイズするには、次の YAML コンテンツをカスタマイズして適用します。
-
managed-cluster-namespaceは、マネージドクラスターの namespace に置き換えます。 -
NATTPortは、使用する NATT ポートに置き換えます。
注記: 以下の例のように、SubmarinerConfig の名前は submariner である必要があります。
1.1.5.2.3.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 である必要があります。
VMware vSphere 環境でゲートウェイノードの数をカスタマイズする場合は、次の例のような YAML コンテンツをカスタマイズして適用します。
-
managed-cluster-namespaceは、マネージドクラスターの namespace に置き換えます。 -
gatewaysは、使用するゲートウェイ数に置き換えます。値が 1 より大きい場合には、Submariner ゲートウェイは高可用性を自動的に有効にします。
1.1.5.2.3.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.5.2.3.4. ケーブルドライバー リンクのコピーリンクがクリップボードにコピーされました!
Submariner Gateway Engine コンポーネントは、他のクラスターへの安全なトンネルを作成します。ケーブルドライバーコンポーネントは、ゲートウェイエンジンコンポーネントのプラグ可能なアーキテクチャーを使用してトンネルを維持します。ケーブルエンジンコンポーネントの cableDriver 設定には、Libreswan または VXLAN 実装を使用できます。以下の例を参照してください。
ベストプラクティス: パブリックネットワークでは VXLAN ケーブルドライバーを使用しないでください。VXLAN ケーブルドライバーは暗号化されていません。プライベートネットワークでの不要な二重暗号化を避けるために、VXLAN のみを使用してください。たとえば、一部のオンプレミス環境では、専用の回線レベルのハードウェアデバイスを使用してトンネルの暗号化を処理する場合があります。
1.1.5.3. Submariner のサービス検出の管理 リンクのコピーリンクがクリップボードにコピーされました!
Submariner がマネージドクラスターと同じ環境にデプロイされた後、マネージドクラスターセット内のクラスター全体で Pod とサービス間の安全な IP ルーティングのためにルートが設定されます。
1.1.5.3.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=8080Copy 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:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、nginx サービス検出が Submariner に対して設定されました。
1.1.5.3.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.5.4. Submariner のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes コンソールまたはコマンドラインを使用して、クラスターから Submariner コンポーネントをアンインストールできます。0.12 より前の Submariner バージョンで、すべてのデータプレーンコンポーネントを完全に削除するには、追加の手順が必要です。Submariner のアンインストールはべき等であるため、問題なく手順を繰り返すことができます。
1.1.5.4.1. コンソール方式 リンクのコピーリンクがクリップボードにコピーされました!
コンソールを使用してクラスターから 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.5.4.2. コマンドライン方式 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して Submariner をアンインストールするには、次の手順を実行します。
次のコマンドを実行して、クラスターの Submariner デプロイメントを削除します。
oc -n <managed-cluster-namespace> delete managedclusteraddon submariner
oc -n <managed-cluster-namespace> delete managedclusteraddon submarinerCopy 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 submarinerCopy 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.5.4.3. Submariner の初期バージョンの手動削除手順 リンクのコピーリンクがクリップボードにコピーされました!
バージョン 0.12 より前のバージョンの Submariner をアンインストールする場合は、Submariner ドキュメントの 手動アンインストール セクションの手順 5 ~ 8 を実行してください。
これらの手順を完了すると、Submariner コンポーネントがクラスターから削除されます。
重要: クラウドプロバイダーによる追加料金を回避するために、すべてのクラウドリソースがクラウドプロバイダーから削除されていることを確認してください。詳細は、Submariner リソースの削除の確認 を参照してください。
1.1.5.4.4. Submariner リソースの削除の確認 リンクのコピーリンクがクリップボードにコピーされました!
Submariner をアンインストールした後、すべての Submariner リソースがクラスターから削除されていることを確認します。それらがクラスターに残っている場合、一部のリソースはインフラストラクチャープロバイダーからの料金を引き続き発生させます。次の手順を実行して、クラスターに追加の Submariner リソースがないことを確認します。
次のコマンドを実行して、クラスターに残っている Submariner リソースを一覧表示します。
oc get cluster <CLUSTER_NAME> grep submariner
oc get cluster <CLUSTER_NAME> grep submarinerCopy 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 リソースがクラスターから削除されます。
1.2. VolSync の永続ボリューム複製サービス リンクのコピーリンクがクリップボードにコピーされました!
VolSync は、レプリケーションの互換性がないストレージタイプが指定されたクラスター全体、または 1 つのクラスター内の永続ボリュームの非同期レプリケーションを有効にする Kubernetes Operator です。これは Container Storage Interface (CSI) を使用して互換性の制限を解消します。VolSync Operator を環境にデプロイした後、それを活用して永続データのコピーを作成および保守できます。VolSync は、バージョン 4.8 以降の Red Hat OpenShift Container Platform クラスターでのみ永続的なボリュームクレームを複製できます。
1.2.1. VolSync を使用した永続ボリュームの複製 リンクのコピーリンクがクリップボードにコピーされました!
サポート対象の方法 3 つを使用して、VolSync で永続ボリュームを複製できます。Rsync、restic または Rclone など所有する同期ロケーションの数により異なります。
1.2.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
クラスターに VolSync をインストールする前に、以下の要件が必要です。
- Red Hat Advanced Cluster Management バージョン 2.4 以降のハブクラスターで実行中で、設定済みの OpenShift Container Platform 環境。
- 同じ Red Hat Advanced Cluster Management ハブクラスターが管理する 2 つ以上のクラスター。
-
VolSync で設定しているクラスター間のネットワーク接続。クラスターが同じネットワーク上にない場合は、Submariner マルチクラスターネットワークとサービスディスカバリー を設定し、
ServiceTypeのClusterIP値を使用してクラスターをネットワーク化するか、ServiceTypeにLoadBalancerの値を指定してロードバランサーを使用できます。 - ソース永続ボリュームに使用するストレージドライバーは、CSI 互換であり、スナップショットをサポートできる必要があります。
1.2.1.2. マネージドクラスターへの VolSync のインストール リンクのコピーリンクがクリップボードにコピーされました!
VolSync が 1 つのクラスターの永続ボリューム要求を別のクラスターの Persistent Volume Claims に複製できるようにするには、ソースとターゲットの両方のマネージドクラスターに VolSync をインストールする必要があります。
VolSync は独自の namespace を作成しないため、他の OpenShift Container Platform のすべての namespace Operator と同じ namespace にあります。VolSync の Operator 設定に加えた変更は、チャネル更新の手動承認に変更した場合など、同じ namespace 内の他の Operator にも影響します。
2 つの方法のいずれかを使用して、環境内の 2 つのクラスターに VolSync をインストールできます。次のセクションで説明するように、ハブクラスター内の各マネージドクラスターにラベルを追加するか、ManagedClusterAddOn を手動で作成して適用することができます。
1.2.1.2.1. ラベルを使用した VolSync のインストール リンクのコピーリンクがクリップボードにコピーされました!
ラベルを追加して、マネージドクラスターに VolSync をインストールします。
Red Hat Advanced Cluster Management コンソールから以下のステップを実行します。
-
詳細を表示するには、ハブクラスターコンソールの
Clustersページからマネージドクラスターの 1 つを選択します。 Labels フィールドに、次のラベルを追加します。
addons.open-cluster-management.io/volsync=true
addons.open-cluster-management.io/volsync=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow VolSync サービス Pod はマネージドクラスターにインストールされます。
- 他のマネージドクラスターに同じラベルを追加します。
各マネージドクラスターで次のコマンドを実行して、VolSync Operator がインストールされていることを確認します。
oc get csv -n openshift-operators
oc get csv -n openshift-operatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストール時に VolSync の Operator がリストされています。
-
詳細を表示するには、ハブクラスターコンソールの
コマンドラインインターフェイスから次の手順を実行します。
- ハブクラスターでコマンドラインセッションを開始します。
次のコマンドを入力して、最初のクラスターにラベルを追加します。
oc label managedcluster <managed-cluster-1> "addons.open-cluster-management.io/volsync"="true"
oc label managedcluster <managed-cluster-1> "addons.open-cluster-management.io/volsync"="true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-1をマネージドクラスターの 1 つの名前に置き換えます。次のコマンドを入力して、ラベルを 2 番目のクラスターに追加します。
oc label managedcluster <managed-cluster-2> "addons.open-cluster-management.io/volsync"="true"
oc label managedcluster <managed-cluster-2> "addons.open-cluster-management.io/volsync"="true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-2を他のマネージドクラスターの名前に置き換えます。ManagedClusterAddOnリソースは、対応する各マネージドクラスターの namespace 内のハブクラスターに自動的に作成される必要があります。
1.2.1.2.2. ManagedClusterAddOn を使用した VolSync のインストール リンクのコピーリンクがクリップボードにコピーされました!
ManagedClusterAddOn を手動で追加して VolSync をマネージドクラスターにインストールするには、次の手順を実行します。
ハブクラスターで、次の例のようなコンテンツを含む
volsync-mcao.yamlという YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow managed-cluster-1-namespaceを、マネージドクラスターの 1 つの namespace に置き換えます。この namespace は、マネージドクラスターの名前と同じです。注: 名前は
volsyncである必要があります。次の例のようなコマンドを入力して、ファイルを設定に適用します。
oc apply -f volsync-mcao.yaml
oc apply -f volsync-mcao.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 他のマネージドクラスターに対して手順を繰り返します。
ManagedClusterAddOnリソースは、対応する各マネージドクラスターの namespace 内のハブクラスターに自動的に作成される必要があります。
1.2.1.3. Rsync レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Rsync レプリケーションを使用して、永続ボリュームの 1:1 非同期レプリケーションを作成できます。Rsync ベースのレプリケーションを災害復旧やリモートサイトへのデータ送信に使用できます。
次の例は、Rsync メソッドを使用して設定する方法を示しています。Rsync の追加情報については、VolSync ドキュメントの Usage を参照してください。
1.2.1.3.1. マネージドクラスター間での Rsync レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Rsync ベースのレプリケーションの場合は、ソースクラスターおよび宛先クラスターでカスタムリソースを設定します。カスタムリソースは、address 値を使用してソースを宛先に接続し、sshKeys を使用して転送されたデータがセキュアであることを確認します。
注記: address および sshKeys の値を宛先からソースにコピーし、ソースを設定する前に宛先を設定する必要があります。
この例では、source-ns namespace の source クラスターの永続ボリューム要求から destination-ns namespace の destination クラスターの永続ボリューム要求に Rsync レプリケーションを設定する手順を説明します。必要に応じて、これらの値を他の値に置き換えることができます。
宛先クラスターを設定します。
宛先クラスターで次のコマンドを実行して、ネームスペースを作成します。
oc create ns <destination-ns>
oc create ns <destination-ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsを、オンサイトのボリューム要求ごとに宛先が含まれる namespace の名前に置き換えます。以下の YAML コンテンツをコピーし、
replication_destination.yamlという名前の新規ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
capacityの値は、レプリケートされる永続ボリューム要求 (PVC) の容量と一致する必要があります。destinationは、宛先 CR の名前に置き換えます。destination-nsは、宛先の namespace の名前に置き換えます。この例では、
LoadBalancerのServiceType値が使用されます。ロードバランサーサービスはソースクラスターによって作成され、ソースマネージドクラスターが別の宛先マネージドクラスターに情報を転送できるようにします。ソースと宛先が同じクラスター上にある場合、または Submariner ネットワークサービスが設定されている場合は、サービスタイプとしてClusterIPを使用できます。ソースクラスターを設定するときに参照するシークレットのアドレスと名前をメモします。storageClassNameおよびvolumeSnapshotClassNameは任意のパラメーターです。特に、環境のデフォルト値とは異なるストレージクラスおよびボリュームスナップショットクラス名を使用している場合は、環境の値を指定してください。宛先クラスターで以下のコマンドを実行し、
replicationdestinationリソースを作成します。oc create -n <destination-ns> -f replication_destination.yaml
oc create -n <destination-ns> -f replication_destination.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsは、宛先の namespace の名前に置き換えます。replicationdestinationリソースが作成されると、以下のパラメーターおよび値がリソースに追加されます。Expand パラメーター 値 .status.rsync.address送信元クラスターと宛先クラスターが通信できるようにするために使用される宛先クラスターの IP アドレス。
.status.rsync.sshKeysソースクラスターから宛先クラスターへの安全なデータ転送を可能にする SSH キーファイルの名前。
以下のコマンドを実行して、ソースクラスターで使用する
.status.rsync.addressの値をコピーします。ADDRESS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsync.address}}` echo $ADDRESSADDRESS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsync.address}}` echo $ADDRESSCopy to Clipboard Copied! Toggle word wrap Toggle overflow destinationは、レプリケーション先のカスタムリソースの名前に置き換えます。destination-nsは、宛先の namespace の名前に置き換えます。出力は、Amazon Web Services 環境の次の出力のように表示されます。
a831264645yhrjrjyer6f9e4a02eb2-5592c0b3d94dd376.elb.us-east-1.amazonaws.com
a831264645yhrjrjyer6f9e4a02eb2-5592c0b3d94dd376.elb.us-east-1.amazonaws.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、シークレットの名前および
.status.rsync.sshKeysの値として提供されるシークレットの内容をコピーします。SSHKEYS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsync.sshKeys}}` echo $SSHKEYSSSHKEYS=`oc get replicationdestination <destination> -n <destination-ns> --template={{.status.rsync.sshKeys}}` echo $SSHKEYSCopy to Clipboard Copied! Toggle word wrap Toggle overflow destinationは、レプリケーション先のカスタムリソースの名前に置き換えます。destination-nsは、宛先の namespace の名前に置き換えます。ソースの設定時に、ソースクラスターで入力する必要があります。出力は、SSH キーシークレットファイルの名前である必要があります。これは、次の名前のようになります。
volsync-rsync-dst-src-destination-name
volsync-rsync-dst-src-destination-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
複製するソース永続ボリュームクレームを特定します。
注記: ソース永続ボリューム要求は CSI ストレージクラスにある必要があります。
ReplicationSourceアイテムを作成します。以下の YAML コンテンツをコピーして、ソースクラスターに
replication_source.yamlという名前の新規ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sourceは、レプリケーションソースカスタムリソースの名前に置き換えます。これを自動的に置き換える方法については、この手順のステップ 3-vi を参照してください。source-nsをソースが置かれている Persistent Volume Claim の namespace に置き換えます。これを自動的に置き換える方法については、この手順のステップ 3-vi を参照してください。persistent_volume_claimは、ソース永続ボリューム要求の名前に置き換えます。mysshkeysは、設定時にReplicationDestinationの.status.rsync.sshKeysフィールドからコピーしたキーに置き換えます。my.host.comは、設定時にReplicationDestinationの.status.rsync.addressフィールドからコピーしたホストアドレスに置き換えます。ストレージドライバーがクローン作成をサポートする場合は、
copyMethodの値にCloneを使用すると、レプリケーションのより効率的なプロセスになる可能性があります。storageClassNameおよびvolumeSnapshotClassNameはオプションのパラメーターです。ご使用の環境のデフォルトとは異なるストレージクラスおよびボリュームスナップショットクラス名を使用している場合は、それらの値を指定してください。永続ボリュームの同期方法を設定できるようになりました。
宛先クラスターに対して次のコマンドを入力して、宛先クラスターから SSH シークレットをコピーします。
oc get secret -n <destination-ns> $SSHKEYS -o yaml > /tmp/secret.yaml
oc get secret -n <destination-ns> $SSHKEYS -o yaml > /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow destination-nsを、宛先が置かれている永続ボリューム要求の namespace に置き換えます。以下のコマンドを入力して、
viエディターでシークレットファイルを開きます。vi /tmp/secret.yaml
vi /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 宛先クラスターのオープンシークレットファイルで、次の変更を行います。
-
名前空間をソースクラスターの名前空間に変更します。この例では、
source-nsです。 -
所有者の参照を削除します (
.metadata.ownerReferences)。
-
名前空間をソースクラスターの名前空間に変更します。この例では、
ソースクラスターで、ソースクラスターで次のコマンドを入力してシークレットファイルを作成します。
kubectl create -f /tmp/secret.yaml
kubectl create -f /tmp/secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ソースクラスターで、以下のコマンドを入力して
ReplicationSourceオブジェクトのaddressおよびsshKeysの値を、宛先クラスターから書き留めた値に置き換えてreplication_source.yamlファイルを変更します。sed -i "s/<my.host.com>/$ADDRESS/g" replication_source.yaml sed -i "s/<mysshkeys>/$SSHKEYS/g" replication_source.yaml oc create -n <source> -f replication_source.yaml
sed -i "s/<my.host.com>/$ADDRESS/g" replication_source.yaml sed -i "s/<mysshkeys>/$SSHKEYS/g" replication_source.yaml oc create -n <source> -f replication_source.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow my.host.comは、設定時にReplicationDestinationの.status.rsync.addressフィールドからコピーしたホストアドレスに置き換えます。mysshkeysは、設定時にReplicationDestinationの.status.rsync.sshKeysフィールドからコピーしたキーに置き換えます。sourceを、ソース が置かれている永続ボリューム要求の名前に置き換えます。注記: 複製する永続ボリューム要求と同じ namespace にファイルを作成する必要があります。
ReplicationSourceオブジェクトで以下のコマンドを実行して、レプリケーションが完了したことを確認します。kubectl describe ReplicationSource -n <source-ns> <source>
kubectl describe ReplicationSource -n <source-ns> <source>Copy to Clipboard Copied! Toggle word wrap Toggle overflow source-nsをソースが置かれている Persistent Volume Claim の namespace に置き換えます。sourceは、レプリケーションソースのカスタムリソースの名前に置き換えます。レプリケーションが成功した場合、出力は次の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Last Sync Timeに時間がリストされていない場合は、レプリケーションが完了していません。
元の永続ボリュームのレプリカがあります。
1.2.1.4. restic バックアップの設定 リンクのコピーリンクがクリップボードにコピーされました!
Restic ベースのバックアップは、永続ボリュームの Restic ベースのバックアップコピーを、restic-config.yaml シークレットファイルで指定された場所にコピーします。Restic バックアップは、クラスター間でデータを同期しませんが、データをバックアップします。
次の手順を実行して、restic ベースのバックアップを設定します。
次の YAML コンテンツのようなシークレットを作成して、バックアップイメージが保存されるリポジトリーを指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow my-restic-repositoryは、バックアップファイルを保存する S3 バケットリポジトリーの場所に置き換えます。my-restic-passwordは、リポジトリーへのアクセスに必要な暗号化キーに置き換えます。必要に応じて、
アクセスとパスワードは、プロバイダーのクレデンシャルに置き換えます。詳細は 新しいリポジトリーの準備 を参照してください。重要: 複数の永続ボリューム要求を同じ S3 バケットにバックアップする場合には、バケットへのパスは永続ボリュームクレームごとに一意である必要があります。各永続ボリュームクレームは個別の
ReplicationSourceでバックアップされるので、個別の restic-config シークレットが必要です。同じ S3 バケットを共有することで、各
ReplicationSourceは S3 バケット全体への書き込みアクセスが割り当てられます。次の YAML コンテンツに似た
ReplicationSourceオブジェクトを作成して、バックアップポリシーを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sourceは、バックアップしている永続ボリュームクレームに置き換えます。scheduleの値は、バックアップを実行する頻度に置き換えます。この例では、30 分ごとにスケジュールが指定されています。詳しくは Synchronization のスケジュール を参照してください。PruneIntervalDaysの値は、インスタンスで次にデータの圧縮するまでの経過時間 (日数) に置き換えて、スペースを節約します。プルーニング操作は、実行中に大量の I/O トラフィックを生成する可能性があります。restic-configは、ステップ 1 で作成したシークレットの名前に置き換えます。retainの値は、バックアップしたイメージの保持ポリシーに設定します。ベストプラクティス:
CopyMethodの値にCloneを使用して、特定の時点のイメージが確実に保存されるようにします。バックアップオプションの詳細は、VolSync ドキュメントの Backup options を参照してください。
1.2.1.4.1. restic バックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
コピーされたデータを restic バックアップから新しい永続ボリューム要求に復元できます。ベストプラクティス: バックアップ 1 つだけを新しい永続ボリューム要求に復元します。Restic バックアップを復元するには、次の手順を実行します。
次の例のように、新しいデータを含む新しい永続ボリュームクレームを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pvc-nameは、新しい永続ボリュームクレームの名前に置き換えます。次の例のような
ReplicationDestinationカスタムリソースを作成して、データの復元先を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow destinationは、宛先 CR の名前に置き換えます。restic-repoは、ソースが保存されているリポジトリーへのパスに置き換えます。pvc-nameは、データを復元する新しい永続ボリュームクレームの名前に置き換えます。これには、新しいボリューム要求をプロビジョニングするのではなく、既存の永続ボリューム要求を使用してください。
復元プロセスは 1 回だけ完了する必要があります。この例では、最新のバックアップを復元します。復元オプションの詳細は、VolSync ドキュメントの Restore options を参照してください。
1.2.1.5. Rclone レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Rclone バックアップは、Rclone を使用して AWS S3 などの中間オブジェクトストレージの場所を介して単一の永続ボリュームを複数の場所にコピーします。複数の場所にデータを配布する場合に役立ちます。
次の手順を実行して、Rclone レプリケーションを設定します。
次の例のような
ReplicationSourceカスタムリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow source-pvcは、レプリケーションソースのカスタムリソースの名前に置き換えます。source-nsをソースが置かれている Persistent Volume Claim の namespace に置き換えます。sourceは、レプリケートしている永続ボリュームクレームに置き換えます。スケジュールの値は、レプリケーションを実行する頻度に置き換えます。この例では、6 分ごとにスケジュールが指定されています。この値は引用符で囲む必要があります。詳しくは Synchronization のスケジュール を参照してください。Intermediate-s3-bucketは、Rclone 設定ファイルの設定セクションへのパスに置き換えます。destination-bucketは、レプリケートされたファイルをコピーするオブジェクトバケットへのパスに置き換えます。rclone-secretは、Rclone 設定情報を含むシークレットの名前に置き換えます。copyMethodの値はClone、Direct、またはSnapshotとして設定します。この値は、ある特定の時点でのコピーを生成するかどうか、生成する場合は、生成方法を指定します。my-sc-nameは、ポイントインタイムコピーに使用するストレージクラスの名前に置き換えます。指定しない場合、ソースボリュームのストレージクラスが使用されます。スナップショットをcopyMethodとして指定した場合はmy-vscを使用するVolumeSnapshotClassの名前に置き換えます。これは、他のタイプのcopyMethodには必要ありません。次の例のような
ReplicationDestinationカスタムリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow スケジュールの値は、レプリケーションを宛先に移動する頻度に置き換えます。移動元と宛先のスケジュールをオフセットして、データが宛先からプルされる前に複製を完了できるようにする必要があります。この例では、オフセットは 3 分で、6 分間隔でスケジュールされています。この値は引用符で囲む必要があります。詳しくは Synchronization のスケジュール を参照してください。Intermediate-s3-bucketは、Rclone 設定ファイルの設定セクションへのパスに置き換えます。destination-bucketは、レプリケートされたファイルをコピーするオブジェクトバケットへのパスに置き換えます。rclone-secretは、Rclone 設定情報を含むシークレットの名前に置き換えます。copyMethodの値はClone、Direct、またはSnapshotとして設定します。この値は、ある特定の時点でのコピーを生成するかどうか、生成する場合は、生成方法を指定します。accessModesの値は、永続ボリュームクレームのアクセスモードを指定します。有効な値はReadWriteOnceまたはReadWriteManyです。容量は宛先ボリュームのサイズを指定します。このサイズは、着信データを格納するのに十分な大きさに指定します。my-scは、特定の時点のコピーの宛先として使用するストレージクラスの名前に置き換えます。指定しない場合、システムストレージクラスが使用されます。スナップショットをcopyMethodとして指定した場合はmy-vscを使用するVolumeSnapshotClassの名前に置き換えます。これは、他のタイプのcopyMethodには必要ありません。含まれていない場合は、システムのデフォルトのVolumeSnapshotClassが使用されます。
1.2.2. 複製されたイメージを使用可能な永続的なボリュームクレームに変換 リンクのコピーリンクがクリップボードにコピーされました!
複製されたイメージを使用してデータを回復するか、永続的なボリュームクレームの新しいインスタンスを作成する必要がある場合があります。イメージのコピーは、使用する前に永続的なボリュームクレームに変換する必要があります。複製されたイメージを永続的なボリュームクレームに変換するには、次の手順を実行します。
レプリケーションが完了したら、以下のコマンドを入力して
ReplicationDestinationオブジェクトから最新のスナップショットを特定します。kubectl get replicationdestination <destination> -n <destination-ns> --template={{.status.latestImage.name}}$ kubectl get replicationdestination <destination> -n <destination-ns> --template={{.status.latestImage.name}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 永続的なボリュームクレームを作成するときの最新のスナップショットの値に注意してください。
destinationは、レプリケーション先の名前に置き換えます。destination-nsは、宛先の namespace に置き換えます。以下の例のような
pvc.yamlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pvc-nameは、新規の永続ボリューム要求 (PVC) の名前に置き換えます。destination-nsを、永続ボリューム要求 (PVC) が置かれている namespace に置き換えます。snapshot_to_replaceを、直前の手順で確認したVolumeSnapshot名に置き換えます。ベストプラクティス: 値が少なくとも最初のソース永続ボリュームクレームと同じサイズである場合は、
resources.requests.storageを異なる値で更新できます。次のコマンドを入力して、永続ボリュームクレームが環境で実行されていることを確認します。
kubectl get pvc -n <destination-ns>
$ kubectl get pvc -n <destination-ns>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
元のバックアップイメージは、メインの永続ボリューム要求として実行されています。
1.2.3. 同期のスケジューリング リンクのコピーリンクがクリップボードにコピーされました!
レプリケーションの開始方法を決定するときは、常に実行する、スケジュールどおりに実行する、または手動で実行するという 3 つのオプションから選択します。レプリケーションのスケジュールは、よく選択されるオプションです。
スケジュール オプションは、スケジュール時にレプリケーションを実行します。スケジュールは cronspec で定義されるため、スケジュールを時間間隔または特定の時間として設定できます。スケジュールの値の順序は次のとおりです。
"minute (0-59) hour (0-23) day-of-month (1-31) month (1-12) day-of-week (0-6)"
レプリケーションはスケジュールされた時間に開始されます。このレプリケーションオプションの設定は、以下の内容のようになります。
spec:
trigger:
schedule: "*/6 * * * *"
spec:
trigger:
schedule: "*/6 * * * *"
これらの方法のいずれかを有効にしたら、設定した方法に従って同期スケジュールが実行されます。
追加情報およびオプションについては、VolSync のドキュメントを参照してください。
1.3. Kubernetes Operator のマルチクラスターエンジンからクラスターで klusterlet アドオンを有効にする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes をインストールし、Kubernetes Operator 用のマルチクラスターエンジンを使用してクラスターを作成またはインポートした後、それらのマネージドクラスターに対して klusterlet アドオンを有効にできます。
Kubernetes Operator のマルチクラスターエンジンを使用してクラスターを作成またはインポートした場合、klusterlet アドオンはデフォルトで有効になっていません。さらに、Red Hat Advanced Cluster Management のインストール後、klusterlet アドオンはデフォルトで有効になりません。
次の利用可能な klusterlet アドオンを参照してください。
- application-manager
- cert-policy-controller
- config-policy-controller
- iam-policy-controller
- governance-policy-framework
- search-collector
Red Hat Advanced Cluster Management のインストール後に、マネージドクラスターの klusterlet アドオンを有効にするには、以下のステップを実行します。
次の
KlusterletAddonConfigに似た YAML ファイルを作成し、アドオンを表すspec値を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注:
policy-controllerアドオンは、governance-policy-frameworkとconfig-policy-controllerの 2 つのアドオンに分かれています。その結果、policyControllerはgovernance-policy-frameworkとconfig-policy-controllermanagedClusterAddonsを制御します。-
ファイルは
klusterlet-addon-config.yamlとして保存します。 ハブクラスターで次のコマンドを実行して、YAML を適用します。
oc apply -f klusterlet-addon-config.yaml
oc apply -f klusterlet-addon-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow KlusterletAddonConfigの作成後に、有効なmanagedClusterAddonsが作成されたかどうかを確認するには、次のコマンドを実行します。oc get managedclusteraddons -n <cluster namespace>
oc get managedclusteraddons -n <cluster namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow