チュートリアル
Red Hat OpenShift Service on AWS のチュートリアル
概要
第1章 チュートリアルの概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat エキスパートによるステップバイステップのチュートリアルを使用して、マネージド OpenShift クラスターを最大限に活用してください。
このコンテンツは Red Hat のエキスパートが作成したものですが、サポート対象のすべての設定でまだテストされていません。
第2章 チュートリアル: Red Hat OpenShift Service on AWS のアクティベーションとアカウントのリンク リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、最初のクラスターをデプロイする前に、Red Hat OpenShift Service on AWS をアクティブ化し、AWS アカウントにリンクするプロセスについて説明します。
製品のプライベートオファーを受け取っている場合、このチュートリアルを始める前に、プライベートオファーに記載されている手順に従ってください。プライベートオファーは、製品がすでにアクティブ化されている場合 (この場合はアクティブなサブスクリプションを置き換えます)、また初めてアクティブ化する場合に利用できるように設計されています。
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Service on AWS 製品サブスクリプションをアクティブ化する AWS アカウントに関連付ける Red Hat アカウントにログインします。
- サービスの請求に使用する AWS アカウントは、1 つの Red Hat アカウントにのみ関連付けることができます。通常、AWS 支払者アカウントは、Red Hat OpenShift Service on AWS にサブスクライブするために使用され、アカウントのリンクと請求に使用されます。
- 同じ Red Hat 組織に属するすべてのチームメンバーは、Red Hat OpenShift Service on AWS クラスターの作成中に、リンクされた AWS アカウントを使用してサービス課金を行うことができます。
2.2. サブスクリプションの有効化と AWS アカウントのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
AWS コンソールページ で [ 開始する ] ボタンをクリックして、Red Hat OpenShift Service on AWS 製品をアクティブ化します。
図2.1 使用してみる
以前に Red Hat OpenShift Service on AWS を有効化したが、プロセスを完了していない場合は、ボタンをクリックして、次の手順に従ってアカウントのリンクを完了してください。
連絡先情報を Red Hat と共有することを確認し、サービスを有効にします。
図2.2 Red Hat OpenShift Service on AWS を有効にする
- このステップでサービスを有効にしても料金は発生しません。課金と計測が連携されるのは、最初のクラスターをデプロイした後のみです。これには数分かかる場合があります。
プロセスが完了すると、確認メッセージが表示されます。
図2.3 Red Hat OpenShift Service on AWS の有効化の確認
この検証ページの他のセクションには、追加の前提条件 (が満たされているかどうか) のステータスが表示されます。これらの前提条件のいずれかが満たされていない場合は、対応するメッセージが表示されます。選択したリージョンで割り当てが不十分な例を次に示します。
図2.4 サービスクォータ
- Increase service quotas ボタンをクリックするか、Learn more リンクを使用して、サービスクォータの管理方法に関する詳細情報を取得します。クォータが不十分な場合、クォータはリージョン固有であることに注意してください。Web コンソールの右上隅にあるリージョンスイッチャーを使用して、関心のあるリージョンのクォータチェックを再実行し、必要に応じてサービスクォータの増加リクエストを送信できます。
すべての前提条件が満たされている場合、ページは次のようになります。
図2.5 Red Hat OpenShift Service on AWS の前提条件を確認する
ELB サービスにリンクされたロールは自動的に作成されます。青色の小さな Info リンクをクリックすると、状況に応じたヘルプやリソースが表示されます。
2.3. AWS と Red Hat のアカウントとサブスクリプションのリンク リンクのコピーリンクがクリップボードにコピーされました!
オレンジ色の Continue to Red Hat ボタンをクリックして、アカウントのリンクを続行します。
図2.6 Red Hat に進む
現在のブラウザーのセッションで Red Hat アカウントにまだログインしていない場合は、アカウントにログインするように求められます。
注記お使いの AWS アカウントが 1 つの Red Hat 組織にリンクされている必要があります。
図2.7 Red Hat アカウントへのログイン
- このページでは、新しい Red Hat アカウントに登録したり、パスワードをリセットしたりすることもできます。
- Red Hat OpenShift Service on AWS 製品サブスクリプションをアクティブ化した AWS アカウントに関連付ける Red Hat アカウントにログインします。
- サービスの請求に使用する AWS アカウントは、1 つの Red Hat アカウントにのみ関連付けることができます。通常、AWS 支払者アカウントは、Red Hat OpenShift Service on AWS にサブスクライブするために使用され、アカウントのリンクと請求に使用されます。
- 同じ Red Hat 組織に属するすべてのチームメンバーは、Red Hat OpenShift Service on AWS クラスターの作成中に、リンクされた AWS アカウントを使用してサービス課金を行うことができます。
利用規約を確認した後、Red Hat アカウントの連携を完了させます。
注記この手順は、AWS アカウントが以前にどの Red Hat アカウントにもリンクされていない場合にのみ使用できます。
ユーザーがログイン中の Red Hat アカウントに AWS アカウントがすでにリンクされている場合、この手順はスキップされます。
AWS アカウントが別の Red Hat アカウントにリンクされている場合は、エラーが表示されます。トラブルシューティングは、Correcting Billing Account Information for HCP clusters を参照してください。
図2.8 アカウント連携の完了
Red Hat と AWS の両方のアカウント番号がこの画面に表示されます。
サービス規約に同意する場合は、Connect accounts ボタンをクリックします。
Red Hat Hybrid Cloud Console を初めて使用する場合は、最初のクラスターを作成する前に、一般的なマネージドサービスの利用規約に同意するように求められます。
図2.9 利用規約
View Terms and Conditions ボタンをクリックすると、確認して同意する必要がある追加の利用規約が表示されます。
図2.10 Red Hat の利用規約
この時点で追加の条件を確認し、プロンプトが表示されたら同意を確定します。
Hybrid Cloud Console に、AWS アカウントのセットアップ完了に関する確認メッセージと、クラスターのデプロイの前提条件が表示されます。
図2.11 Red Hat OpenShift Service on AWS の前提条件を完了する
このページの最後のセクションでは、
rosa
CLI または Web コンソールを使用したクラスターデプロイメントオプションを示します。図2.12 クラスターのデプロイとアクセスの設定
2.4. CLI を使用してクラスターデプロイメント中に Red Hat OpenShift Service on AWS の AWS 請求アカウントを選択する リンクのコピーリンクがクリップボードにコピーされました!
最新の ROSA コマンドラインインターフェイス (CLI) と AWS CLI がインストールされており、前のセクションで説明した Red Hat OpenShift Service on AWS の前提条件が完了していることを確認してください。詳細は、ROSA CLI セットアップのヘルプ および AWS CLI のインストール手順 を参照してください。
rosa create cluster
コマンドを使用してクラスターのデプロイを開始します。コンソールの Set up Red Hat OpenShift Service on AWS (ROSA) ページ で コピー ボタンをクリックし、コマンドをターミナルに貼り付けることができます。これにより、クラスター作成プロセスが対話モードで起動します。図2.13 クラスターのデプロイとアクセスの設定
-
カスタムの AWS プロファイルを使用するには、
~/.aws/credentials
で指定したデフォルト以外のプロファイルのいずれかを使用します。rosa create cluster コマンドに–profile <profile_name>
のセレクターを追加すると、コマンドは rosa create cluster–profile stage
のようになります。このオプションを使用して、AWS CLI プロファイルが指定されていない場合は、デフォルトの AWS CLI プロファイルにより、AWS インフラストラクチャーのプロファイルがどのクラスターにデプロイされるかが決定されます。請求用 AWS プロファイルは、次のいずれかの手順で選択します。 Red Hat OpenShift Service on AWS クラスターをデプロイするときは、請求先の AWS アカウントを指定する必要があります。
図2.14 請求先アカウントの指定
- ユーザーがログイン中の Red Hat アカウントにリンクされている AWS アカウントのみが表示されます。
- 指定された AWS アカウントには、Red Hat OpenShift Service on AWS サービスの使用料が課金されます。
インジケーターは、特定の AWS 請求アカウントに対して Red Hat OpenShift Service on AWS 契約が有効になっているかどうかを示します。
- Contract enabled というラベルが表示されている AWS 請求先アカウントを選択した場合、前払い済みの契約の容量が消費されるまで、オンデマンドの消費料金は課金されません。
- Contract enabled というラベルのない AWS アカウントには、該当するオンデマンド消費料金が課金されます。
関連情報
- 詳細なクラスターデプロイ手順は、このチュートリアルの範囲外です。CLI を使用して Red Hat OpenShift Service on AWS クラスターのデプロイメントを完了する方法の詳細は 、デフォルトオプションを使用した Red Hat OpenShift Service on AWS クラスターの作成を 参照してください。
2.5. Web コンソールを使用してクラスターのデプロイメント中に Red Hat OpenShift Service on AWS の AWS 請求アカウントを選択する リンクのコピーリンクがクリップボードにコピーされました!
ウェブコンソールを使用してクラスターを作成するには、Red Hat OpenShift Service on AWS のセットアップの 紹介ページの下部にある 2 番目のオプションを選択します。
図2.15 Web インターフェイスでのデプロイ
注記Web コンソールでのデプロイプロセスを開始する前に、前提条件を完了してください。
アカウントロールの作成など、一部のタスクには
rosa
CLI が必要です。Red Hat OpenShift Service on AWS を初めて導入する場合は、Web コンソールのデプロイメント手順を開始する前に、rosa whoami
コマンドを実行するまで CLI 手順に従ってください。Web コンソールを使用して Red Hat OpenShift Service on AWS クラスターを作成する場合の最初の手順は、コントロールプレーンの選択です。Next ボタンをクリックする前に、Hosted オプションが選択されていることを確認してください。
図2.16 Hosted オプションの選択
次のステップ アカウントとロール では、Red Hat OpenShift Service on AWS クラスターがデプロイされ、リソースが消費および管理されるインフラストラクチャー AWS アカウントを指定できます。
図2.17 AWS インフラストラクチャーアカウント
- Red Hat OpenShift Service on AWS クラスターをデプロイするアカウントが表示されない場合は、新しい AWS アカウントを関連付ける方法 をクリックして、この関連付けのアカウントロールを作成またはリンクする方法の詳細を確認してください。
-
これには
rosa
CLI を使用します。 -
複数の AWS アカウントを使用しており、それらのプロファイルが AWS CLI 用に設定されている場合は、
rosa
CLI コマンドを使用するときに--profile
セレクターを使用して AWS プロファイルを指定できます。
請求先の AWS アカウントは、すぐ次のセクションで選択されます。
図2.18 AWS 請求先アカウント
- ユーザーがログイン中の Red Hat アカウントにリンクされている AWS アカウントのみが表示されます。
- 指定された AWS アカウントには、Red Hat OpenShift Service on AWS サービスの使用料が課金されます。
インジケーターは、特定の AWS 請求アカウントに対して Red Hat OpenShift Service on AWS 契約が有効になっているかどうかを示します。
- Contract enabled というラベルが表示されている AWS 請求先アカウントを選択した場合、前払い済みの契約の容量が消費されるまで、オンデマンドの消費料金は課金されません。
- Contract enabled というラベルのない AWS アカウントには、該当するオンデマンド消費料金が課金されます。
請求先の AWS アカウントの選択以降の手順は、このチュートリアルの範囲外です。
関連情報
- CLI を使用してクラスターを作成する方法については、CLI を使用した Red Hat OpenShift Service on AWS クラスターの作成を 参照してください。
- Web コンソールを使用してクラスターのデプロイメントを完了する方法の詳細は、このラーニングパスを 参照してください。
第3章 チュートリアル: Red Hat OpenShift Service on AWS プライベートオファーの承認と共有 リンクのコピーリンクがクリップボードにコピーされました!
このガイドでは、Red Hat OpenShift Service on AWS のプライベートオファーを受け入れる方法と、すべてのチームメンバーがプロビジョニングするクラスターに対してプライベートオファーを使用できるようにする方法について説明します。
Red Hat OpenShift Service on AWS のコストは、AWS インフラストラクチャーコストと Red Hat OpenShift Service on AWS サービスコストで設定されます。必要なワークロードを実行している EC2 インスタンスなどの AWS インフラストラクチャーのコストは、インフラストラクチャーがデプロイされている AWS アカウントに課金されます。Red Hat OpenShift Service on AWS のサービスコストは、クラスターのデプロイ時に AWS 請求アカウントとして指定された AWS アカウントに課金されます。
各コストの請求先を、別々の AWS アカウントにすることができます。Red Hat OpenShift Service on AWS のサービスコストと AWS インフラストラクチャーコストの計算方法の詳細は 、Red Hat OpenShift Service on AWS の料金ページ を参照してください。
3.1. プライベートオファーの承認 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS のプライベートオファーを取得すると、販売者が指定した特定の AWS アカウント ID でのみアクセスできる一意の URL が提供されます。
注記購入者として指定された AWS アカウントを使用してログインしていることを確認してください。別の AWS アカウントを使用してオファーにアクセスしようとすると、以下のトラブルシューティングセクションの図 11 に示すように、"page not found" というエラーメッセージが表示されます。
図 1 はオファー選択ドロップダウンメニューを示しています。通常のプライベートオファーが事前に選択されています。このタイプのオファーは、パブリックオファーまたは別のプライベートオファーを使用する前に Red Hat OpenShift Service on AWS がアクティブ化されていない場合にのみ受け入れることができます。
図3.1 通常のプライベートオファー
図 2 には、以前にパブリックオファーを使用して Red Hat OpenShift Service on AWS をアクティブ化した AWS アカウント用に作成されたプライベートオファーが表示され、製品名と、アップグレードというラベルが付いた選択されたプライベートオファーが表示されています。このプライベートオファーは、現在実行中の Red Hat OpenShift Service on AWS の契約を置き換えます。
図3.2 プライベートオファー選択画面
ドロップダウンメニューを使用して、複数のオファーから選択できます (利用可能な場合)。以前にアクティブ化されたパブリックオファーは、図 3 のように、"Upgrade" というラベルが付いた、新しく提供された同意ベースのオファーと一緒に表示されます。
図3.3 プライベートオファー選択ドロップダウン
オファー設定が選択されていることを確認します。図 4 は、オファーの詳細が記載されたオファーページの下部を示しています。
注記契約終了日、オファーに含まれるユニット数、および支払いスケジュールが表示されます。この例には、1 つのクラスターと、4 つの仮想 CPU を使用する最大 3 つのノードが含まれています。
図3.4 プライベートオファーの詳細
オプション: 購入するサブスクリプションに 独自の注文書 (PO) 番号を追加 して、後の AWS 請求書にその番号を含めることができます。また、"New offer configuration details" の範囲を超える使用量に対して課金される "Additional usage fees" を確認します。
注記プライベートオファーには、利用可能な設定がいくつかあります。
- 承認するプライベートオファーに、固定された将来の開始日が設定されている可能性があります。
- プライベートオファー、パブリックオファー、または古いプライベートオファーのエンタイトルメントを承諾した時点で、別のアクティブな Red Hat OpenShift Service on AWS サブスクリプションがない場合は、プライベートオファー自体を承諾し、指定されたサービス開始日以降にアカウントのリンクとクラスターのデプロイメントの手順を続行します。
これらの手順を完了するには、アクティブな Red Hat OpenShift Service on AWS エンタイトルメントが必要です。サービス開始日は、常に UTC タイムゾーンで表示されます。
契約を作成またはアップグレードします。
Red Hat OpenShift Service on AWS がまだ有効化されておらず、このサービスの最初の契約を作成している AWS アカウントによって承認されたプライベートオファーの場合は、契約の作成ボタン をクリックします。
図3.5 Create contract ボタン
同意ベースのオファーの場合は、Upgrade current contract ボタンをクリックします (図 4 および 6 を参照)。
図3.6 Upgrade current contract ボタン
Confirm をクリックします。
図3.7 プライベートオファー承認の確認ウィンドウ
承認するプライベートオファーのサービス開始日がオファー承認の直後に設定されている場合、確認モーダルウィンドウで Set up your account ボタンをクリックします。
図3.8 サブスクリプションの確認
承認するプライベートオファーに将来の開始日が指定されている場合は、サービス開始日後にプライベートオファーページに戻り、Setup your account ボタンをクリックして、Red Hat と AWS アカウントのリンクを続行します。
注記同意が有効でない場合、以下に説明するアカウントリンクがトリガーされず、"アカウントのセットアップ" プロセスを "Service start date" 以降まで実行できません。
これらの日付は常に UTC タイムゾーンの日付です。
3.2. プライベートオファーの共有 リンクのコピーリンクがクリップボードにコピーされました!
前の手順で Set up your account ボタンをクリックすると、AWS と Red Hat のアカウントをリンクする手順に進みます。この時点で、オファーを承認した AWS アカウントですでにログインしています。Red Hat アカウントでログインしていない場合は、ログインするように求められます。
AWS エンタイトルメント上の Red Hat OpenShift サービスは、Red Hat 組織アカウントを通じて他のチームメンバーと共有されます。同じ Red Hat 組織内の既存の全ユーザーは、上記の手順に従って、プライベートオファーを承認した請求 AWS アカウントを選択できます。Red Hat 組織管理者としてログインしている場合は、Red Hat 組織内のユーザーを管理 し、新しいユーザーを招待したり作成したりできます。
注記Red Hat OpenShift Service on AWS プライベートオファーは、AWS ライセンスマネージャーを介して AWS リンクアカウントと共有することはできません。
- Red Hat OpenShift Service on AWS クラスターを展開するユーザーを追加します。Red Hat アカウントのユーザー管理タスクの詳細は、こちらのユーザー管理に関する FAQ を参照してください。
- すでにログインしている Red Hat アカウントに、承認されたプライベートオファーの恩恵を受ける Red Hat OpenShift Service on AWS クラスターのデプロイヤーとなるすべてのユーザーが含まれていることを確認します。
Red Hat アカウント番号と AWS アカウント ID が、リンクさせる目的のアカウントであることを確認します。このリンクは一意であり、Red Hat アカウントと連携できるのは 1 つの AWS (請求先) アカウントだけです。
図3.9 AWS と Red Hat アカウントの連携
AWS アカウントを、このページの図 9 に示されているもの以外の Red Hat アカウントにリンクする場合は、アカウントを連携する前に Red Hat Hybrid Cloud Console からログアウトし、すでに承認されているプライベートオファー URL に戻ってアカウントの設定手順を再度実行します。
AWS アカウントと連携できるのは、1 つの Red Hat アカウントだけです。Red Hat アカウントと AWS アカウントを連携すると、ユーザーはこれを変更できなくなります。変更が必要な場合、ユーザーはサポートチケットを作成する必要があります。
- 利用規約に同意して、Connect accounts をクリックします。
3.3. AWS 請求先アカウントの選択 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Service on AWS クラスターをデプロイするときは、エンドユーザーがプライベートオファーを承諾した AWS 請求アカウントを選択していることを確認します。
Red Hat OpenShift Service on AWS をデプロイするために Web インターフェイスを使用する場合、関連付けられた AWS インフラストラクチャーアカウントは通常、作成されるクラスターの管理者が使用する AWS アカウント ID に設定されます。
- これは、請求 AWS アカウントと同じ AWS アカウントにすることができます。
このアカウントに AWS リソースがデプロイされます。これにより、そのリソースに関連するすべての請求が処理されます。
図3.10 Red Hat OpenShift Service on AWS クラスターのデプロイメント中のインフラストラクチャーと課金 AWS アカウントの選択
- 購入したクォータを作成中のクラスターで使用することを想定している場合は、上記のスクリーンショットの AWS 請求先アカウントのドロップダウンを、プライベートオファーを承認した AWS アカウントに設定する必要があります。インフラストラクチャーと請求先の "ロール" として別々の AWS アカウントを選択した場合は、図 10 のような青色の注記が表示されます。
3.4. トラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
プライベートオファーの承認と Red Hat アカウントのリンクに関連する最もよくある問題を紹介します。
3.4.1. 別の AWS アカウントを使用してプライベートオファーにアクセスする リンクのコピーリンクがクリップボードにコピーされました!
オファーで定義されていない AWS アカウント ID でログインしてプライベートオファーにアクセスしようとし、図 11 のようなメッセージが表示された場合は、目的の AWS 請求先アカウントとしてログインしていることを確認してください。
図3.11 プライベートオファー URL 使用時の HTTP 404 エラー
- プライベートオファーを別の AWS アカウントに拡張する必要がある場合は、販売者に問い合わせてください。
3.4.2. アクティブなサブスクリプションのため、プライベートオファーを承認できない リンクのコピーリンクがクリップボードにコピーされました!
別のパブリックまたはプライベートオファーを使用して Red Hat OpenShift Service on AWS をすでにアクティブ化している状態で、Red Hat OpenShift Service on AWS の初めてのアクティブ化のために作成されたプライベートオファーにアクセスしようとし、次の通知が表示された場合は、オファーを提供した販売者に連絡してください。
販売者は、以前のサブスクリプションをキャンセルする必要なく、新しいオファーを提供し、現在の同意をシームレスに置き換えることができます。
図3.12 既存のサブスクリプションによりプライベートオファーの承認が妨げられる
3.4.3. AWS アカウントがすでに別の Red Hat アカウントにリンクされている リンクのコピーリンクがクリップボードにコピーされました!
プライベートオファーを承認した AWS アカウントを現在ログイン中の Red Hat ユーザーに接続しようとしたときに、"AWS account is already linked to a different Red Hat account" というエラーメッセージが表示された場合、その AWS アカウントはすでに別の Red Hat ユーザーと連携しています。
図3.13 AWS アカウントがすでに別の Red Hat アカウントにリンクされている
別の Red Hat アカウントか別の AWS アカウントを使用すると、ログインできます。
- ただし、このガイドはプライベートオファーに関するものであるため、購入者として指定された AWS アカウントでログインし、すでにプライベートオファーを承認していることを想定しています。そのため、このアカウントを請求先アカウントとして使用することを想定しています。プライベートオファーを承認した後、別の AWS アカウントとしてログインすることは想定していません。
- プライベートオファーを承認した AWS アカウントにすでに連携している別の Red Hat ユーザーでログインすることもできます。同じ Red Hat 組織に属する他の Red Hat ユーザーは、図 10 に示すように、クラスターを作成するときに、リンクされた AWS アカウントを Red Hat OpenShift Service on AWS AWS 請求アカウントとして使用できます。
- 既存のアカウントのリンクが正しくないと思われる場合は、以下の "チームメンバーが別の Red Hat 組織に属している" という質問を参照して、対処方法のヒントを確認してください。
3.4.4. チームメンバーが別の Red Hat 組織に属している リンクのコピーリンクがクリップボードにコピーされました!
- AWS アカウントと連携できるのは、1 つの Red Hat アカウントだけです。クラスターを作成し、この AWS アカウントに付与されたプライベートオファーを利用するユーザーは、同じ Red Hat アカウントに属している必要があります。これを実現するには、ユーザーを同じ Red Hat アカウントに招待し、新しい Red Hat ユーザーを作成します。
3.4.5. クラスターの作成時に間違った AWS 請求先アカウントを選択した リンクのコピーリンクがクリップボードにコピーされました!
- ユーザーが間違った AWS 請求先アカウントを選択した場合、これを修正する最も早い方法は、クラスターを削除し、正しい AWS 請求先アカウントを選択して新しいクラスターを作成することです。
- 簡単に削除できない実稼働クラスターの場合は、Red Hat サポートに問い合わせて、既存のクラスターの請求先アカウントを変更してください。この問題を解決するには、ある程度の時間がかかることが予想されます。
第4章 チュートリアル: カスタム DNS リゾルバーを使用した Red Hat OpenShift Service on AWS の導入 リンクのコピーリンクがクリップボードにコピーされました!
カスタムの DHCP オプションセットを使用 すると、独自の DNS サーバー、ドメイン名などを使用して VPC をカスタマイズできます。カスタム DHCP オプションセットを使用した Red Hat OpenShift Service on AWS クラスターサポート。デフォルトでは、Red Hat OpenShift Service on AWS クラスターでは、クラスターの作成と操作を正常に行うために、ドメインネームサーバーオプションを AmazonProvidedDNS
に設定する必要があります。DNS 解決にカスタム DNS サーバーを使用するお客様は、Red Hat OpenShift Service on AWS クラスターの作成と操作を正常に実行できるように追加の設定を行う必要があります。
このチュートリアルでは、特定の DNS ゾーン (詳細は後述) の DNS ルックアップを Amazon Route 53 Inbound Resolver に転送するように DNS サーバーを設定します。
このチュートリアルでは、オープンソースのバインド DNS サーバー (named
) を使用して、Red Hat OpenShift Service on AWS クラスターをデプロイする予定の VPC にある Amazon Route 53 インバウンドリゾルバーに DNS ルックアップを転送するために必要な設定について説明します。ゾーン転送を設定する方法は、希望する DNS サーバーのドキュメントを参照してください。
4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
ROSA CLI (
rosa
) -
AWS CLI (
aws
) - 手動で作成された AWS VPC
- カスタム DNS サーバーを参照するように設定され、VPC のデフォルトとして設定されている DHCP オプションセット
4.2. 環境の設定 リンクのコピーリンクがクリップボードにコピーされました!
次の環境変数を設定します。
export VPC_ID=<vpc_ID> export REGION=<region> export VPC_CIDR=<vpc_CIDR>
$ export VPC_ID=<vpc_ID>
1 $ export REGION=<region>
2 $ export VPC_CIDR=<vpc_CIDR>
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のセクションに進む前に、すべてのフィールドが正しく出力されていることを確認してください。
echo "VPC ID: ${VPC_ID}, VPC CIDR Range: ${VPC_CIDR}, Region: ${REGION}"
$ echo "VPC ID: ${VPC_ID}, VPC CIDR Range: ${VPC_CIDR}, Region: ${REGION}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. Amazon Route 53 Inbound Resolver の作成 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、クラスターのデプロイ先の VPC に Amazon Route 53 Inbound Resolver をデプロイします。
この例では、クラスターが使用するのと同じ VPC に Amazon Route 53 Inbound Resolver をデプロイします。別の VPC にデプロイする場合は、クラスターの作成を開始してから、以下に詳述するプライベートホストゾーンを手動で関連付ける必要があります。クラスター作成プロセスを開始する前にゾーンを関連付けることはできません。クラスター作成プロセス中にプライベートホストゾーンを関連付けないと、クラスター作成が失敗します。
セキュリティーグループを作成し、VPC からポート
53/tcp
および53/udp
へのアクセスを許可します。SG_ID=$(aws ec2 create-security-group --group-name rosa-inbound-resolver --description "Security group for ROSA inbound resolver" --vpc-id ${VPC_ID} --region ${REGION} --output text) aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol tcp --port 53 --cidr ${VPC_CIDR} --region ${REGION} aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol udp --port 53 --cidr ${VPC_CIDR} --region ${REGION}
$ SG_ID=$(aws ec2 create-security-group --group-name rosa-inbound-resolver --description "Security group for ROSA inbound resolver" --vpc-id ${VPC_ID} --region ${REGION} --output text) $ aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol tcp --port 53 --cidr ${VPC_CIDR} --region ${REGION} $ aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol udp --port 53 --cidr ${VPC_CIDR} --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VPC に Amazon Route 53 Inbound Resolver を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記上記のコマンドは、動的に割り当てられた IP アドレスを使用して、指定した VPC 内の すべてのサブネット に Amazon Route 53 Inbound Resolver エンドポイントをアタッチします。サブネットや IP アドレスを手動で指定する場合は、代わりに次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<subnet_ID>
はサブネット ID に、<endpoint_IP>
はインバウンドリゾルバーエンドポイントを追加する静的 IP アドレスに置き換えます。
DNS サーバー設定で指定するインバウンドリゾルバーエンドポイントの IP アドレスを取得します。
aws route53resolver list-resolver-endpoint-ip-addresses \ --resolver-endpoint-id ${RESOLVER_ID} \ --region=${REGION} \ --query 'IpAddresses[*].Ip'
$ aws route53resolver list-resolver-endpoint-ip-addresses \ --resolver-endpoint-id ${RESOLVER_ID} \ --region=${REGION} \ --query 'IpAddresses[*].Ip'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
[ "10.0.45.253", "10.0.23.131", "10.0.148.159" ]
[ "10.0.45.253", "10.0.23.131", "10.0.148.159" ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. DNS サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、必要なプライベートホストゾーンを Amazon Route 53 Inbound Resolver に転送するように DNS サーバーを設定します。
4.4.1. Red Hat OpenShift Service on AWS リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS クラスターでは、2 つのプライベートホストゾーンに対して DNS 転送を設定する必要があります。
-
<cluster-name>.hypershift.local
-
rosa.<domain-prefix>.<unique-ID>.p3.openshiftapps.com
これらの Amazon Route 53 プライベートホストゾーンは、クラスターの作成中に作成されます。cluster-name
と domain-prefix
はお客様が指定する値ですが、unique-ID
はクラスターの作成中にランダムに生成され、事前に選択することはできません。そのため、クラスター作成プロセスが開始してから、p3.openshiftapps.com
プライベートホストゾーンの転送を設定する必要があります。
クラスターを作成する前に、
<cluster-name>.hypershift.local
のすべての DNS 要求を Amazon Route 53 Inbound Resolver エンドポイントに転送するように DNS サーバーを設定します。BIND DNS サーバーの場合は、任意のテキストエディターで/etc/named.conf
ファイルを編集し、以下の例を使用して新しいゾーンを追加します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - クラスターを作成します。
クラスターの作成プロセスが開始したら、新しく作成されたプライベートホストゾーンを特定します。
aws route53 list-hosted-zones-by-vpc \ --vpc-id ${VPC_ID} \ --vpc-region ${REGION} \ --query 'HostedZoneSummaries[*].Name' \ --output table
$ aws route53 list-hosted-zones-by-vpc \ --vpc-id ${VPC_ID} \ --vpc-region ${REGION} \ --query 'HostedZoneSummaries[*].Name' \ --output table
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クラスター作成プロセスで Route 53 にプライベートホストゾーンが作成されるまでに、数分かかる場合があります。
p3.openshiftapps.com
ドメインが表示されない場合は、数分待ってからコマンドを再度実行してください。クラスタードメインの一意の ID を調べたら、
rosa.<domain-prefix>.<unique-ID>.p3.openshiftapps.com
のすべての DNS 要求を Amazon Route 53 Inbound Resolver エンドポイントに転送するように DNS サーバーを設定します。BIND DNS サーバーの場合は、任意のテキストエディターで/etc/named.conf
ファイルを編集し、以下の例を使用して新しいゾーンを追加します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 チュートリアル: AWS WAF と Amazon CloudFront を使用して Red Hat OpenShift Service on AWS を保護する リンクのコピーリンクがクリップボードにコピーされました!
AWS WAF は Web アプリケーションファイアウォールです。保護対象の Web アプリケーションリソースに転送される HTTP および HTTPS 要求を監視できます。
Amazon CloudFront を使用して、Red Hat OpenShift Service on AWS に Web アプリケーションファイアウォール (WAF) を追加できます。外部ソリューションを使用すると、WAF の処理によるサービス拒否の発生から Red Hat OpenShift Service on AWS リソースを保護できます。
5.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Service on AWS クラスター。
-
OpenShift CLI (
oc
) にアクセスできる。 -
AWS CLI (
aws
) にアクセスできる。
5.1.1. 環境設定 リンクのコピーリンクがクリップボードにコピーされました!
環境変数を準備します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
IngressController
に使用するカスタムドメインに置き換えます。
注記前のコマンドからの "Cluster" の出力は、クラスターの名前、クラスターの内部 ID、またはクラスターのドメイン接頭辞である可能性があります。別の識別子を使用する場合は、次のコマンドを実行して手動でこの値を設定できます。
export CLUSTER=my-custom-value
$ export CLUSTER=my-custom-value
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. セカンダリー Ingress Controller の設定 リンクのコピーリンクがクリップボードにコピーされました!
標準 (およびデフォルト) クラスター Ingress Controller からの WAF 保護対象の外部トラフィックをセグメント化するために、セカンダリー Ingress Controller を設定する必要があります。
前提条件
カスタムドメイン用の公的に信頼された SAN 証明書またはワイルドカード証明書 (例:
CN=*.apps.example.com
)重要Amazon CloudFront は HTTPS を使用してクラスターのセカンダリー Ingress Controller と通信します。Amazon CloudFront のドキュメント で説明されているように、CloudFront とクラスター間の HTTPS 通信には自己署名証明書を使用できません。Amazon CloudFront は、証明書が信頼できる認証局によって発行されたことを確認します。
手順
秘密鍵と公開証明書から新しい TLS シークレットを作成します。
fullchain.pem
は完全なワイルドカード証明書チェーン (中間証明書を含む)、privkey.pem
はワイルドカード証明書の秘密鍵です。例
oc -n openshift-ingress create secret tls waf-tls --cert=fullchain.pem --key=privkey.pem
$ oc -n openshift-ingress create secret tls waf-tls --cert=fullchain.pem --key=privkey.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規の
IngressController
リソースを作成します。waf-Ingress-controller.yaml
の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow IngressController
を適用します。例
oc apply -f waf-ingress-controller.yaml
$ oc apply -f waf-ingress-controller.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IngressController が外部ロードバランサーを正常に作成したことを確認します。
oc -n openshift-ingress get service/router-cloudfront-waf
$ oc -n openshift-ingress get service/router-cloudfront-waf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-cloudfront-waf LoadBalancer 172.30.16.141 a68a838a7f26440bf8647809b61c4bc8-4225395f488830bd.elb.us-east-1.amazonaws.com 80:30606/TCP,443:31065/TCP 2m19s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-cloudfront-waf LoadBalancer 172.30.16.141 a68a838a7f26440bf8647809b61c4bc8-4225395f488830bd.elb.us-east-1.amazonaws.com 80:30606/TCP,443:31065/TCP 2m19s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.1. AWS WAF の設定 リンクのコピーリンクがクリップボードにコピーされました!
AWS WAF サービスは、Red Hat OpenShift Service on AWS などの保護された Web アプリケーションリソースに転送される HTTP および HTTPS リクエストを監視、保護、制御できる Web アプリケーションファイアウォールです。
Web ACL に適用する AWS WAF ルールファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、コア (共通) および SQL AWS マネージドルールセットが有効になります。
上記で指定したルールを使用して、AWS WAF の Web ACL を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. Amazon CloudFront の設定 リンクのコピーリンクがクリップボードにコピーされました!
新しく作成されたカスタム Ingress Controller の NLB ホスト名を取得します。
NLB=$(oc -n openshift-ingress get service router-cloudfront-waf \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
$ NLB=$(oc -n openshift-ingress get service router-cloudfront-waf \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書を Amazon Certificate Manager にインポートします。
cert.pem
はワイルドカード証明書、fullchain.pem
はワイルドカード証明書のチェーン、privkey.pem
はワイルドカード証明書の秘密鍵です。注記この証明書は、クラスターがデプロイされているリージョンに関係なく
us-east-1
にインポートする必要があります。Amazon CloudFront はグローバル AWS サービスであるためです。例
aws acm import-certificate --certificate file://cert.pem \ --certificate-chain file://fullchain.pem \ --private-key file://privkey.pem \ --region us-east-1
$ aws acm import-certificate --certificate file://cert.pem \ --certificate-chain file://fullchain.pem \ --private-key file://privkey.pem \ --region us-east-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - AWS コンソール にログインして、CloudFront ディストリビューションを作成します。
次の情報を使用して、CloudFront ディストリビューションを設定します。
注記以下の表でオプションが指定されていない場合は、デフォルトのままにしておきます (空白でも構いません)。
Expand オプション 値 Origin domain
前のコマンドからの出力[1]
名前
rosa-waf-ingress [2]
Viewer protocol policy
Redirect HTTP to HTTPS
Allowed HTTP methods
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
Cache policy
CachingDisabled
Origin request policy
AllViewer
Web Application Firewall (WAF)
Enable security protections
Use existing WAF configuration
true
Choose a web ACL
cloudfront-waf
Alternate domain name (CNAME)
*.apps.example.com [3]
Custom SSL certificate
上のステップでインポートした証明書を選択 [4]
-
origin domain を取得するには、
echo ${NLB}
を実行します。 - 複数のクラスターがある場合は、オリジンの名前が一意であることを確認してください。
- これは、カスタム Ingress Controller の作成に使用したワイルドカードドメインと同じである必要があります。
- これは、上で入力した alternate domain name と同じである必要があります。
-
origin domain を取得するには、
Amazon CloudFront ディストリビューションエンドポイントを取得します。
aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[?DomainName=='${NLB}']].DomainName" --output text
$ aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[?DomainName=='${NLB}']].DomainName" --output text
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CNAME を持つカスタムのワイルドカードドメインの DNS を、前述のステップの Amazon CloudFront ディストリビューションエンドポイントに更新します。
例
*.apps.example.com CNAME d1b2c3d4e5f6g7.cloudfront.net
*.apps.example.com CNAME d1b2c3d4e5f6g7.cloudfront.net
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. サンプルアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、サンプルアプリケーション用の新しいプロジェクトを作成します。
oc new-project hello-world
$ oc new-project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Hello World アプリケーションをデプロイします。
oc -n hello-world new-app --image=docker.io/openshift/hello-openshift
$ oc -n hello-world new-app --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムドメイン名を指定してアプリケーションのルートを作成します。
例
oc -n hello-world create route edge --service=hello-openshift hello-openshift-tls \ --hostname hello-openshift.${DOMAIN}
$ oc -n hello-world create route edge --service=hello-openshift hello-openshift-tls \ --hostname hello-openshift.${DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートにラベルを付けて、カスタム Ingress Controller へのアクセスを許可します。
oc -n hello-world label route.route.openshift.io/hello-openshift-tls route=waf
$ oc -n hello-world label route.route.openshift.io/hello-openshift-tls route=waf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. WAF のテスト リンクのコピーリンクがクリップボードにコピーされました!
アプリが Amazon CloudFront の背後でアクセスできることをテストします。
例
curl "https://hello-openshift.${DOMAIN}"
$ curl "https://hello-openshift.${DOMAIN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow WAF が不正な要求を拒否することをテストします。
例
curl -X POST "https://hello-openshift.${DOMAIN}" \ -F "user='<script><alert>Hello></alert></script>'"
$ curl -X POST "https://hello-openshift.${DOMAIN}" \ -F "user='<script><alert>Hello></alert></script>'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 予期される結果は
403 ERROR
エラーです。このエラーが返されれば、アプリケーションは AWS WAF によって保護されています。
第6章 チュートリアル: AWS WAF と AWS ALB を使用して Red Hat OpenShift Service on AWS を保護する リンクのコピーリンクがクリップボードにコピーされました!
AWS WAF は Web アプリケーションファイアウォールです。保護対象の Web アプリケーションリソースに転送される HTTP および HTTPS 要求を監視できます。
AWS アプリケーションロードバランサー (ALB) を使用して、Red Hat OpenShift Service on AWS に Web アプリケーションファイアウォール (WAF) を追加できます。外部ソリューションを使用すると、WAF の処理によるサービス拒否の発生から Red Hat OpenShift Service on AWS リソースを保護できます。
ALB ベースのソリューションを絶対に使用する必要がある場合を除き、より柔軟な CloudFront メソッド を使用することを推奨します。
6.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS クラスター。
注記AWS ドキュメントによると、AWS ALB には AZ 全体にわたって少なくとも 2 つの public サブネットが必要です。このため、ALB では複数の AZ Red Hat OpenShift Service on AWS クラスターのみを使用できます。
-
OpenShift CLI (
oc
) にアクセスできる。 -
AWS CLI (
aws
) にアクセスできる。
6.1.1. 環境設定 リンクのコピーリンクがクリップボードにコピーされました!
環境変数を準備します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.2. AWS VPC とサブネット リンクのコピーリンクがクリップボードにコピーされました!
このセクションは、既存の VPC にデプロイされたクラスターにのみ適用されます。クラスターを既存の VPC にデプロイしなかった場合は、このセクションをスキップして、その後のインストールセクションに進んでください。
以下の変数を、Red Hat OpenShift Service on AWS の適切な値に設定します。
export VPC_ID=<vpc-id> export PUBLIC_SUBNET_IDS=(<space-separated-list-of-ids>) export PRIVATE_SUBNET_IDS=(<space-separated-list-of-ids>)
$ export VPC_ID=<vpc-id>
1 $ export PUBLIC_SUBNET_IDS=(<space-separated-list-of-ids>)
2 $ export PRIVATE_SUBNET_IDS=(<space-separated-list-of-ids>)
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- クラスターの VPC ID に置き換えます (例:
export VPC_ID=vpc-04c429b7dbc4680ba
)。 - 2
- クラスターのプライベートサブネット ID のスペース区切りリストに置き換えます。
()
は必ず保持してください。例:export PUBLIC_SUBNET_IDS=(subnet-056fd6861ad332ba2 subnet-08ce3b4ec753fe74c subnet-071aa28228664972f)
。 - 3
- クラスターのプライベートサブネット ID のスペース区切りリストに置き換えます。
()
は必ず保持してください。たとえば、export PRIVATE_SUBNET_IDS=(subnet-0b933d72a8d72c36a subnet-0817eb72070f1d3c2 subnet-0806e64159b66665a)
です。
クラスター識別子を使用して、クラスターの VPC にタグを追加します。
aws ec2 create-tags --resources ${VPC_ID} \ --tags Key=kubernetes.io/cluster/${CLUSTER},Value=shared --region ${REGION}
$ aws ec2 create-tags --resources ${VPC_ID} \ --tags Key=kubernetes.io/cluster/${CLUSTER},Value=shared --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリックサブネットにタグを追加します。
aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
$ aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートサブネットにタグを追加します。
aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
$ aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. AWS Load Balancer Operator のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
AWS Load Balancer Operator は、 Red Hat OpenShift Service on AWS クラスターで aws-load-balancer-controller
のインスタンスをインストール、管理、および設定するために使用されます。Red Hat OpenShift Service on AWS に ALB をデプロイするには、まず AWS Load Balancer Operator をデプロイする必要があります。
次のコマンドを実行して、AWS Load Balancer Operator をデプロイする新しいプロジェクトを作成します。
oc new-project aws-load-balancer-operator
$ oc new-project aws-load-balancer-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、AWS Load Balancer Controller の AWS IAM ポリシーを作成します (まだ存在しない場合)。
注記ポリシーは アップストリームの AWS Load Balancer Controller ポリシー から取得されます。これは Operator が機能するために必要です。
POLICY_ARN=$(aws iam list-policies --query \ "Policies[?PolicyName=='aws-load-balancer-operator-policy'].{ARN:Arn}" \ --output text)
$ POLICY_ARN=$(aws iam list-policies --query \ "Policies[?PolicyName=='aws-load-balancer-operator-policy'].{ARN:Arn}" \ --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator の AWS IAM 信頼ポリシーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator の AWS IAM ロールを作成します。
ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER}-alb-operator" \ --assume-role-policy-document "file://${SCRATCH}/trust-policy.json" \ --query Role.Arn --output text)
$ ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER}-alb-operator" \ --assume-role-policy-document "file://${SCRATCH}/trust-policy.json" \ --query Role.Arn --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、以前に作成した IAM ロールに AWS Load Balancer Operator ポリシーを割り当てます。
aws iam attach-role-policy --role-name "${CLUSTER}-alb-operator" \ --policy-arn ${POLICY_ARN}
$ aws iam attach-role-policy --role-name "${CLUSTER}-alb-operator" \ --policy-arn ${POLICY_ARN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しく作成した AWS IAM ロールを引き受けるための AWS Load Balancer Operator 用のシークレットを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator をインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の Operator を使用して、AWS Load Balancer Controller のインスタンスをデプロイします。
注記ここでエラーが発生した場合は、少し待ってから再試行してください。エラーが発生するのは、Operator がまだインストールを完了していないためです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator Pod とコントローラー Pod の両方が実行されていることを確認します。
oc -n aws-load-balancer-operator get pods
$ oc -n aws-load-balancer-operator get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のようなメッセージが表示されます。表示されない場合は、少し待ってから再試行してください。
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. サンプルアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
サンプルアプリケーション用に新しいプロジェクトを作成します。
oc new-project hello-world
$ oc new-project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Hello World アプリケーションをデプロイします。
oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 事前に作成済みのサービスリソースを NodePort サービスタイプに変換します。
oc -n hello-world patch service hello-openshift -p '{"spec":{"type":"NodePort"}}'
$ oc -n hello-world patch service hello-openshift -p '{"spec":{"type":"NodePort"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator を使用して AWS ALB をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS ALB Ingress エンドポイントを curl して、Hello World アプリケーションにアクセスできることを確認します。
注記AWS ALB のプロビジョニングには数分かかります。
curl: (6) Could not resolve host
というエラーが表示された場合は、待機してから再試行してください。INGRESS=$(oc -n hello-world get ingress hello-openshift-alb -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${INGRESS}"
$ INGRESS=$(oc -n hello-world get ingress hello-openshift-alb -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${INGRESS}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.1. AWS WAF の設定 リンクのコピーリンクがクリップボードにコピーされました!
AWS WAF サービスは、Red Hat OpenShift Service on AWS などの保護された Web アプリケーションリソースに転送される HTTP および HTTPS リクエストを監視、保護、制御できる Web アプリケーションファイアウォールです。
Web ACL に適用する AWS WAF ルールファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、コア (共通) および SQL AWS マネージドルールセットが有効になります。
上記で指定したルールを使用して、AWS WAF の Web ACL を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ingress リソースに AWS WAF の Web ACL ARN のアノテーションを付けます。
oc annotate -n hello-world ingress.networking.k8s.io/hello-openshift-alb \ alb.ingress.kubernetes.io/wafv2-acl-arn=${WAF_ARN}
$ oc annotate -n hello-world ingress.networking.k8s.io/hello-openshift-alb \ alb.ingress.kubernetes.io/wafv2-acl-arn=${WAF_ARN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルールが反映されるまで 10 秒待ち、アプリケーションがまだ動作するかテストします。
curl "http://${INGRESS}"
$ curl "http://${INGRESS}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow WAF が不正な要求を拒否することをテストします。
curl -X POST "http://${INGRESS}" \ -F "user='<script><alert>Hello></alert></script>'"
$ curl -X POST "http://${INGRESS}" \ -F "user='<script><alert>Hello></alert></script>'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記AWS WAF 統合の有効化には数分かかる場合があります。
403 Forbidden
エラーが表示されない場合は、数秒待ってからもう一度お試しください。予期される結果は
403 Forbidden
エラーです。このエラーが返されれば、アプリケーションは AWS WAF によって保護されています。
第7章 チュートリアル: Red Hat OpenShift Service on AWS クラスターに OpenShift API for Data Protection をデプロイする リンクのコピーリンクがクリップボードにコピーされました!
このコンテンツは Red Hat のエキスパートが作成したものですが、サポート対象のすべての設定でまだテストされていません。
環境
環境変数を準備します。
注記クラスター名を Red Hat OpenShift Service on AWS クラスターと一致するように変更し、管理者としてクラスターにログインしていることを確認します。次に進む前に、すべてのフィールドが正しく出力されていることを確認してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1. AWS アカウントの準備 リンクのコピーリンクがクリップボードにコピーされました!
S3 アクセスを許可する IAM ポリシーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターの IAM ロール信頼ポリシーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IAM ポリシーを IAM ロールに割り当てます。
aws iam attach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn ${POLICY_ARN}
$ aws iam attach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn ${POLICY_ARN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2. クラスターへの OADP のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OADP の namespace を作成します。
oc create namespace openshift-adp
$ oc create namespace openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 認証情報のシークレットを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<aws_region>
は、Security Token Service (STS) エンドポイントに使用する AWS リージョンに置き換えます。
OADP Operator をデプロイします。
注記現在、Operator のバージョン 1.1 では、バックアップが
PartiallyFailed
ステータスになるという問題があります。これはバックアップと復元のプロセスには影響しないと思われますが、それに関連する問題があるため注意が必要です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator の準備が整うまで待ちます。
watch oc -n openshift-adp get pods
$ watch oc -n openshift-adp get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE openshift-adp-controller-manager-546684844f-qqjhn 1/1 Running 0 22s
NAME READY STATUS RESTARTS AGE openshift-adp-controller-manager-546684844f-qqjhn 1/1 Running 0 22s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラウドストレージを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションのストレージのデフォルトのストレージクラスを確認します。
oc get pvc -n <namespace>
$ oc get pvc -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- アプリケーションの namespace を入力します。
出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE applog Bound pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8 1Gi RWO gp3-csi 4d19h mysql Bound pvc-16b8e009-a20a-4379-accc-bc81fedd0621 1Gi RWO gp3-csi 4d19h
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE applog Bound pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8 1Gi RWO gp3-csi 4d19h mysql Bound pvc-16b8e009-a20a-4379-accc-bc81fedd0621 1Gi RWO gp3-csi 4d19h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get storageclass
$ oc get storageclass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 4d21h gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3 ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 4d21h gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3 ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gp3-csi、gp2-csi、gp3、または gp2 のいずれかを使用すると機能します。バックアップ対象のアプリケーションがすべて CSI を使用した PV を使用している場合は、OADP の DPA 設定に CSI プラグインを含めます。
CSI のみ: Data Protection Application をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記CSI ボリュームに対してこのコマンドを実行する場合は、次のステップをスキップできます。
非 CSI ボリューム: Data Protection Application をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Red Hat OpenShift Service on AWS では、コンテナーイメージのバックアップと復元 (
spec.backupImages
) の値はサポートされていないため、false
に設定する必要があります。 -
Restic 機能 (
restic.enable=false
) は無効になっており、Red Hat OpenShift Service on AWS ではサポートされていません。 -
DataMover 機能 (
dataMover.enable=false
) は無効になっており、Red Hat OpenShift Service on AWS ではサポートされていません。
7.3. バックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
次のサンプル hello-world アプリケーションには、永続ボリュームが接続されていません。どちらの DPA 設定も機能します。
バックアップするワークロードを作成します。
oc create namespace hello-world oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc create namespace hello-world $ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートを公開します。
oc expose service/hello-openshift -n hello-world
$ oc expose service/hello-openshift -n hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションが動作していることを確認します。
curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワークロードをバックアップします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップが完了するまで待ちます。
watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デモワークロードを削除します。
oc delete ns hello-world
$ oc delete ns hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップから復元します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 復元が完了するまで待ちます。
watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワークロードが復元されていることを確認します。
oc -n hello-world get pods
$ oc -n hello-world get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90s
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - トラブルシューティングのヒントは、OADP チームの トラブルシューティングドキュメント を参照してください。
- 追加のサンプルアプリケーションは、OADP チームの サンプルアプリケーションディレクトリー にあります。
7.4. クリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
ワークロードを削除します。
oc delete ns hello-world
$ oc delete ns hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップおよび復元リソースが不要になった場合は、クラスターからリソースを削除します。
oc delete backups.velero.io hello-world oc delete restores.velero.io hello-world
$ oc delete backups.velero.io hello-world $ oc delete restores.velero.io hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow s3 のバックアップ/復元オブジェクトとリモートオブジェクトを削除するには、以下を実行します。
velero backup delete hello-world velero restore delete hello-world
$ velero backup delete hello-world $ velero restore delete hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Data Protection Application を削除します。
oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa
$ oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラウドストレージを削除します。
oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp
$ oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告このコマンドがハングした場合は、ファイナライザーの削除が必要になる場合があります。
oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge
$ oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator が不要になった場合は、Operator を削除します。
oc -n openshift-adp delete subscription oadp-operator
$ oc -n openshift-adp delete subscription oadp-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator の namespace を削除します。
oc delete ns redhat-openshift-adp
$ oc delete ns redhat-openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムリソース定義が不要になった場合は、クラスターからカスタムリソース定義を削除します。
for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done $ for CRD in `oc get crds | grep -i oadp | awk '{print $1}'`; do oc delete crd $CRD; done
$ for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done $ for CRD in `oc get crds | grep -i oadp | awk '{print $1}'`; do oc delete crd $CRD; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS S3 バケットを削除します。
aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp
$ aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive $ aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロールからポリシーの割り当てを解除します。
aws iam detach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn "${POLICY_ARN}"
$ aws iam detach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn "${POLICY_ARN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロールを削除します。
aws iam delete-role --role-name "${ROLE_NAME}"
$ aws iam delete-role --role-name "${ROLE_NAME}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第8章 チュートリアル: Red Hat OpenShift Service on AWS での AWS Load Balancer Operator リンクのコピーリンクがクリップボードにコピーされました!
このコンテンツは Red Hat のエキスパートが作成したものですが、サポート対象のすべての設定でまだテストされていません。
AWS Load Balancer Operator によって作成されたロードバランサーは OpenShift Routes には使用できません。OpenShift Route の完全なレイヤー 7 機能を必要としない個々のサービスまたは Ingress リソースにのみ使用する必要があります。
AWS Load Balancer Controller は、 Red Hat OpenShift Service on AWS クラスターの AWS Elastic Load Balancer を管理します。このコントローラーは、Kubernetes Ingress リソースを作成するときに AWS Application Load Balancer (ALB) をプロビジョニングし、LoadBalancer タイプを使用して Kubernetes Service リソースを実装するときに AWS Network Load Balancer (NLB) をプロビジョニングします。
デフォルトの AWS インツリーロードバランサープロバイダーと比較して、このコントローラーは ALB と NLB 用の詳細なアノテーションを使用して開発されています。高度な使用例としては以下が挙げられます。
- ネイティブ Kubernetes Ingress オブジェクトと ALB を使用する
- AWS ウェブアプリケーションファイアウォール (WAF) サービスと ALB を統合する
- カスタムの NLB ソース IP 範囲を指定する
- カスタムの NLB 内部 IP アドレスを指定する
AWS Load Balancer Operator は、 Red Hat OpenShift Service on AWS クラスターで aws-load-balancer-controller
のインスタンスをインストール、管理、および設定するために使用されます。
8.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
AWS ALB には、マルチ AZ クラスターと、クラスターと同じ VPC 内の 3 つの AZ に分割された 3 つのパブリックサブネットが必要です。このため、ALB は多くの PrivateLink クラスターには適していません。AWS NLB にはこの制限はありません。
- Red Hat OpenShift Service on AWS クラスター
- BYO VPC クラスター
- AWS CLI
- OC CLI
8.1.1. 環境 リンクのコピーリンクがクリップボードにコピーされました!
環境変数を準備します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.1.2. AWS VPC とサブネット リンクのコピーリンクがクリップボードにコピーされました!
このセクションは、既存の VPC にデプロイされたクラスターにのみ適用されます。クラスターを既存の VPC にデプロイしなかった場合は、このセクションをスキップして、その後のインストールセクションに進んでください。
以下の変数をクラスターのデプロイメントに適した値に設定します。
export VPC_ID=<vpc-id> export PUBLIC_SUBNET_IDS=<public-subnets> export PRIVATE_SUBNET_IDS=<private-subnets> export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}")
$ export VPC_ID=<vpc-id> $ export PUBLIC_SUBNET_IDS=<public-subnets> $ export PRIVATE_SUBNET_IDS=<private-subnets> $ export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター名を使用してクラスターの VPC にタグを追加します。
aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}
$ aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリックサブネットにタグを追加します。
aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='' \ --region ${REGION}
$ aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='' \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートサブネットにタグを追加します。
aws ec2 create-tags \ --resources "${PRIVATE_SUBNET_IDS}" \ --tags Key=kubernetes.io/role/internal-elb,Value='' \ --region ${REGION}
$ aws ec2 create-tags \ --resources "${PRIVATE_SUBNET_IDS}" \ --tags Key=kubernetes.io/role/internal-elb,Value='' \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. インストール リンクのコピーリンクがクリップボードにコピーされました!
AWS Load Balancer Controller の AWS IAM ポリシーを作成します。
注記このポリシーは、アップストリームの AWS Load Balancer Controller ポリシー に加えて、サブネット上にタグを作成する権限から取得されます。これは Operator が機能するために必要です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator の AWS IAM 信頼ポリシーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator の AWS IAM ロールを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しく作成した AWS IAM ロールを引き受けるための AWS Load Balancer Operator 用のシークレットを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator をインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の Operator を使用して、AWS Load Balancer Controller のインスタンスをデプロイします。
注記ここでエラーが発生した場合は、少し待ってから再試行してください。エラーが発生するのは、Operator がまだインストールを完了していないためです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator Pod とコントローラー Pod の両方が実行されていることを確認します。
oc -n aws-load-balancer-operator get pods
$ oc -n aws-load-balancer-operator get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のようなメッセージが表示されます。表示されない場合は、少し待ってから再試行してください。
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. デプロイメントの検証 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトを新規作成します。
oc new-project hello-world
$ oc new-project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Hello World アプリケーションをデプロイします。
oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS ALB が接続する NodePort サービスを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator を使用して AWS ALB をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS ALB Ingress エンドポイントを curl して、Hello World アプリケーションにアクセスできることを確認します。
注記AWS ALB のプロビジョニングには数分かかります。
curl: (6) Could not resolve host
というエラーが表示された場合は、待機してから再試行してください。INGRESS=$(oc -n hello-world get ingress hello-openshift-alb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${INGRESS}"
$ INGRESS=$(oc -n hello-world get ingress hello-openshift-alb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${INGRESS}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Hello World アプリケーション用に AWS NLB をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS NLB エンドポイントをテストします。
注記NLB のプロビジョニングには数分かかります。
curl: (6) Could not resolve host
というエラーが表示された場合は、待機してから再試行してください。NLB=$(oc -n hello-world get service hello-openshift-nlb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${NLB}"
$ NLB=$(oc -n hello-world get service hello-openshift-nlb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${NLB}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4. クリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
hello world アプリケーションの namespace (および namespace 内のすべてのリソース) を削除します。
oc delete project hello-world
$ oc delete project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator と AWS IAM ロールを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS IAM ポリシーを削除します。
aws iam delete-policy --policy-arn $POLICY_ARN
$ aws iam delete-policy --policy-arn $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第9章 チュートリアル: Microsoft Entra ID (旧称 Azure Active Directory) をアイデンティティープロバイダーとして設定する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS で、Microsoft Entra ID (旧称 Azure Active Directory) をクラスターアイデンティティープロバイダーとして設定できます。
このチュートリアルでは、次のタスクを完了する手順を示します。
- 認証のために Entra ID に新しいアプリケーションを登録します。
- Entra ID でのアプリケーション登録を設定して、トークンに任意のクレームとグループクレームを含めます。
- Entra ID をアイデンティティープロバイダーとして使用するように Red Hat OpenShift Service on AWS クラスターを設定します。
- 個々のグループに追加の権限を付与します。
9.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Microsoft のドキュメント に従って、一連のセキュリティーグループを作成し、ユーザーを割り当てている。
9.2. 認証のために Entra ID に新規アプリケーションを登録する リンクのコピーリンクがクリップボードにコピーされました!
Entra ID にアプリケーションを登録するには、まず OAuth コールバック URL を作成し、次にアプリケーションを登録します。
手順
指定の変数を変更し、次のコマンドを実行して、クラスターの OAuth コールバック URL を作成します。
注記このコールバック URL を忘れずに保存してください。後のプロセスで必要になります。
domain=$(rosa describe cluster -c <cluster_name> | grep "DNS" | grep -oE '\S+.openshiftapps.com')
$ domain=$(rosa describe cluster -c <cluster_name> | grep "DNS" | grep -oE '\S+.openshiftapps.com') echo "OAuth callback URL: https://oauth.${domain}/oauth2callback/AAD"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OAuth コールバック URL の末尾にある "AAD" ディレクトリーは、このプロセスで後で設定する OAuth アイデンティティープロバイダー名と同じである必要があります。
Azure portal にログインして Entra ID アプリケーションを作成し、App registrations ブレード を選択します。次に、New registration を選択して新しいアプリケーションを作成します。
-
アプリケーションに名前を付けます (例:
openshift-auth
)。 - Redirect URI ドロップダウンから Web を選択し、前のステップで取得した OAuth コールバック URL の値を入力します。
必要な情報を入力したら、Register をクリックしてアプリケーションを作成します。
Certificates & secrets サブブレードを選択し、New client secret を選択します。
要求された詳細を入力し、生成されたクライアントシークレット値を保存します。このシークレットは、このプロセスで後で必要になります。
重要初期セットアップ後は、クライアントシークレットを確認できません。クライアントシークレットを保存しなかった場合は、新しいクライアントシークレットを生成する必要があります。
Overview サブブレードを選択し、
Application (client) ID
とDirectory (tenant) ID
をメモします。これらの値は後のステップで必要になります。
9.3. 任意のクレームとグループクレームを含めるように Entra ID でのアプリケーション登録を設定する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS がユーザーのアカウントを作成するのに十分な情報を取得できるように、Entra ID を設定して 2 つの任意のクレーム (email
と preferred_username
) を指定する必要があります。Entra ID の任意のクレームに関する詳細は、Microsoft のドキュメント を参照してください。
個々のユーザー認証に加えて、Red Hat OpenShift Service on AWS はグループクレーム機能を提供します。この機能により、Entra ID などの OpenID Connect (OIDC) アイデンティティープロバイダーが、Red Hat OpenShift Service on AWS 内で使用するユーザーのグループメンバーシップを提供できるようになります。
9.3.1. 任意のクレームの設定 リンクのコピーリンクがクリップボードにコピーされました!
Entra ID の任意のクレームを設定できます。
Token configuration サブブレードをクリックし、Add optional claim ボタンを選択します。
ID ラジオボタンを選択します。
email クレームのチェックボックスを選択します。
preferred_username
クレームのチェックボックスを選択します。次に、Add をクリックし、Entra ID アプリケーションの email および preferred_username クレームを設定します。ページの上部にダイアログボックスが表示されます。プロンプトに従って、必要な Microsoft Graph 権限を有効にします。
9.3.2. グループクレームの設定 (オプション) リンクのコピーリンクがクリップボードにコピーされました!
グループクレームを提供するように Entra ID を設定します。
手順
Token configuration サブブレードで、Add groups claim をクリックします。
Entra ID アプリケーションのグループクレームを設定するには、Security groups を選択し、Add をクリックします。
注記この例では、グループクレームに、ユーザーがメンバーとなっているすべてのセキュリティーグループを含めます。実際の実稼働環境では、グループクレームに、Red Hat OpenShift Service on AWS に適用するグループのみを含めてください。
9.4. Entra ID をアイデンティティープロバイダーとして使用するように Red Hat OpenShift Service on AWS クラスターを設定する リンクのコピーリンクがクリップボードにコピーされました!
Entra ID をアイデンティティープロバイダーとして使用するように Red Hat OpenShift Service on AWS を設定する必要があります。
Red Hat OpenShift Service on AWS では OpenShift Cluster Manager を使用してアイデンティティープロバイダーを設定する機能が提供されていますが、クラスターの OAuth プロバイダーが Entra ID をアイデンティティープロバイダーとして使用するように設定するには、ROSA CLI を使用します。アイデンティティープロバイダーを設定する前に、アイデンティティープロバイダー設定に必要な変数を設定します。
手順
次のコマンドを実行して変数を作成します。
CLUSTER_NAME=example-cluster IDP_NAME=AAD APP_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx TENANT_ID=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
$ CLUSTER_NAME=example-cluster
1 $ IDP_NAME=AAD
2 $ APP_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
3 $ CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4 $ TENANT_ID=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
5 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、クラスターの OAuth プロバイダーを設定します。グループクレームを有効にした場合は、必ず
--group-claims groups
引数を使用してください。グループクレームを有効にした場合は、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow グループクレームを有効にしなかった場合は、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
数分後、クラスター認証 Operator が変更を調整します。すると、Entra ID を使用してクラスターにログインできるようになります。
9.5. 個々のユーザーおよびグループへの追加の権限の付与 リンクのコピーリンクがクリップボードにコピーされました!
初めてログインすると、権限が非常に制限されていることがわかります。デフォルトでは、Red Hat OpenShift Service on AWS はクラスター内に新しいプロジェクトまたは namespace を作成する権限のみを付与します。他のプロジェクトの表示は制限されています。
このような追加の権限を個々のユーザーおよびグループに付与する必要があります。
9.5.1. 個々のユーザーに追加の権限を付与する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS には、クラスターに対する完全なアクセスと制御を付与する cluster-admin
ロールなど、事前設定済みの多数のロールが組み込まれています。
手順
次のコマンドを実行して、ユーザーに
cluster-admin
ロールへのアクセス権を付与します。rosa grant user cluster-admin \ --user=<USERNAME>
$ rosa grant user cluster-admin \ --user=<USERNAME>
1 --cluster=${CLUSTER_NAME}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- cluster-admin 権限を付与する Entra ID ユーザー名を指定します。
9.5.2. 個々のグループに追加の権限を付与する リンクのコピーリンクがクリップボードにコピーされました!
グループクレームを有効にすることを選択した場合、クラスター OAuth プロバイダーによって、ユーザーのグループメンバーシップがグループ ID を使用して自動的に作成または更新されます。クラスター OAuth プロバイダーは、作成されたグループの RoleBinding
と ClusterRoleBindings
を自動的に作成しません。これらのバインディングは、ユーザーが独自のプロセスを使用して作成する必要があります。
自動生成されたグループに cluster-admin
ロールへのアクセス権を付与するには、グループ ID への ClusterRoleBinding
を作成する必要があります。
手順
次のコマンドを実行して、
ClusterRoleBinding
を作成します。oc create clusterrolebinding cluster-admin-group \ --clusterrole=cluster-admin \ --group=<GROUP_ID>
$ oc create clusterrolebinding cluster-admin-group \ --clusterrole=cluster-admin \ --group=<GROUP_ID>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- cluster-admin 権限を付与する Entra ID グループ ID を指定します。
これで、指定したグループ内のすべてのユーザーに
cluster-admin
アクセス権が自動的に付与されます。
第10章 チュートリアル: STS を使用した Red Hat OpenShift Service on AWS での AWS Secrets Manager CSI の使用 リンクのコピーリンクがクリップボードにコピーされました!
AWS Secrets and Configuration Provider (ASCP) は、AWS シークレットを Kubernetes ストレージボリュームとして公開する方法を提供します。ASCP を使用すると、Secrets Manager でシークレットを保存および管理し、Red Hat OpenShift Service on AWS で実行されているワークロードを通じてシークレットを取得できます。
10.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このプロセスを開始する前に、次のリソースとツールがあることを確認してください。
- STS でデプロイされた Red Hat OpenShift Service on AWS クラスター
- Helm 3
-
aws
CLI -
oc
CLI -
jq
CLI
その他の環境要件
次のコマンドを実行して、Red Hat OpenShift Service on AWS クラスターにログインします。
oc login --token=<your-token> --server=<your-server-url>
$ oc login --token=<your-token> --server=<your-server-url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ログイントークンを見つけるには、Red Hat OpenShift Cluster Manager からプルシークレット でクラスターにアクセスします。
次のコマンドを実行して、クラスターに STS があることを検証します。
oc get authentication.config.openshift.io cluster -o json \ | jq .spec.serviceAccountIssuer
$ oc get authentication.config.openshift.io cluster -o json \ | jq .spec.serviceAccountIssuer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
"https://xxxxx.cloudfront.net/xxxxx"
"https://xxxxx.cloudfront.net/xxxxx"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力が異なる場合は、続行しないでください。このプロセスを続行する前に 、STS クラスターの作成に関する Red Hat のドキュメントを 参照してください。
次のコマンドを実行して、CSI ドライバーの実行を許可するように
SecurityContextConstraints
権限を設定します。oc new-project csi-secrets-store oc adm policy add-scc-to-user privileged \ system:serviceaccount:csi-secrets-store:secrets-store-csi-driver oc adm policy add-scc-to-user privileged \ system:serviceaccount:csi-secrets-store:csi-secrets-store-provider-aws
$ oc new-project csi-secrets-store $ oc adm policy add-scc-to-user privileged \ system:serviceaccount:csi-secrets-store:secrets-store-csi-driver $ oc adm policy add-scc-to-user privileged \ system:serviceaccount:csi-secrets-store:csi-secrets-store-provider-aws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、このプロセスで後で使用する環境変数を作成します。
export REGION=$(oc get infrastructure cluster -o=jsonpath="{.status.platformStatus.aws.region}") export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster \ -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||') export AWS_ACCOUNT_ID=`aws sts get-caller-identity --query Account --output text` export AWS_PAGER=""
$ export REGION=$(oc get infrastructure cluster -o=jsonpath="{.status.platformStatus.aws.region}") $ export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster \ -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||') $ export AWS_ACCOUNT_ID=`aws sts get-caller-identity --query Account --output text` $ export AWS_PAGER=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. AWS シークレットと設定プロバイダーのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行し、Helm を使用してシークレットストア CSI ドライバーを登録します。
helm repo add secrets-store-csi-driver \ https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
$ helm repo add secrets-store-csi-driver \ https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Helm リポジトリーを更新します。
helm repo update
$ helm repo update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シークレットストア CSI ドライバーをインストールします。
helm upgrade --install -n csi-secrets-store \ csi-secrets-store-driver secrets-store-csi-driver/secrets-store-csi-driver
$ helm upgrade --install -n csi-secrets-store \ csi-secrets-store-driver secrets-store-csi-driver/secrets-store-csi-driver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、AWS プロバイダーをデプロイします。
oc -n csi-secrets-store apply -f \ https://raw.githubusercontent.com/rh-mobb/documentation/main/content/misc/secrets-store-csi/aws-provider-installer.yaml
$ oc -n csi-secrets-store apply -f \ https://raw.githubusercontent.com/rh-mobb/documentation/main/content/misc/secrets-store-csi/aws-provider-installer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、両方の Daemonset が実行されていることを確認します。
oc -n csi-secrets-store get ds \ csi-secrets-store-provider-aws \ csi-secrets-store-driver-secrets-store-csi-driver
$ oc -n csi-secrets-store get ds \ csi-secrets-store-provider-aws \ csi-secrets-store-driver-secrets-store-csi-driver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シークレットストア CSI ドライバーにラベルを付けて、制限付き Pod セキュリティープロファイルとともに使用することを許可します。
oc label csidriver.storage.k8s.io/secrets-store.csi.k8s.io security.openshift.io/csi-ephemeral-volume-profile=restricted
$ oc label csidriver.storage.k8s.io/secrets-store.csi.k8s.io security.openshift.io/csi-ephemeral-volume-profile=restricted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. シークレットと IAM アクセスポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、Secrets Manager のシークレットを作成します。
SECRET_ARN=$(aws --region "$REGION" secretsmanager create-secret \ --name MySecret --secret-string \ '{"username":"shadowman", "password":"hunter2"}' \ --query ARN --output text); echo $SECRET_ARN
$ SECRET_ARN=$(aws --region "$REGION" secretsmanager create-secret \ --name MySecret --secret-string \ '{"username":"shadowman", "password":"hunter2"}' \ --query ARN --output text); echo $SECRET_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、IAM アクセスポリシードキュメントを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、IAM アクセスポリシーを作成します。
POLICY_ARN=$(aws --region "$REGION" --query Policy.Arn \ --output text iam create-policy \ --policy-name openshift-access-to-mysecret-policy \ --policy-document file://policy.json); echo $POLICY_ARN
$ POLICY_ARN=$(aws --region "$REGION" --query Policy.Arn \ --output text iam create-policy \ --policy-name openshift-access-to-mysecret-policy \ --policy-document file://policy.json); echo $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、IAM ロール信頼ポリシードキュメントを作成します。
注記信頼ポリシーは、このプロセスで後で作成する namespace のデフォルトのサービスアカウントにロックされます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、IAM ロールを作成します。
ROLE_ARN=$(aws iam create-role --role-name openshift-access-to-mysecret \ --assume-role-policy-document file://trust-policy.json \ --query Role.Arn --output text); echo $ROLE_ARN
$ ROLE_ARN=$(aws iam create-role --role-name openshift-access-to-mysecret \ --assume-role-policy-document file://trust-policy.json \ --query Role.Arn --output text); echo $ROLE_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ロールをポリシーに割り当てます。
aws iam attach-role-policy --role-name openshift-access-to-mysecret \ --policy-arn $POLICY_ARN
$ aws iam attach-role-policy --role-name openshift-access-to-mysecret \ --policy-arn $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4. このシークレットを使用するアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、OpenShift プロジェクトを作成します。
oc new-project my-application
$ oc new-project my-application
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、STS ロールを使用するようにデフォルトのサービスアカウントにアノテーションを付けます。
oc annotate -n my-application serviceaccount default \ eks.amazonaws.com/role-arn=$ROLE_ARN
$ oc annotate -n my-application serviceaccount default \ eks.amazonaws.com/role-arn=$ROLE_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シークレットにアクセスするためのシークレットプロバイダークラスを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドでシークレットを使用してデプロイメントを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod にシークレットがマウントされていることを確認します。
oc exec -it my-application -- cat /mnt/secrets-store/MySecret
$ oc exec -it my-application -- cat /mnt/secrets-store/MySecret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5. クリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行してアプリケーションを削除します。
oc delete project my-application
$ oc delete project my-application
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、シークレットストア CSI ドライバーを削除します。
helm delete -n csi-secrets-store csi-secrets-store-driver
$ helm delete -n csi-secrets-store csi-secrets-store-driver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Security Context Constraints を削除します。
oc adm policy remove-scc-from-user privileged \ system:serviceaccount:csi-secrets-store:secrets-store-csi-driver; oc adm policy remove-scc-from-user privileged \ system:serviceaccount:csi-secrets-store:csi-secrets-store-provider-aws
$ oc adm policy remove-scc-from-user privileged \ system:serviceaccount:csi-secrets-store:secrets-store-csi-driver; oc adm policy remove-scc-from-user privileged \ system:serviceaccount:csi-secrets-store:csi-secrets-store-provider-aws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、AWS プロバイダーを削除します。
oc -n csi-secrets-store delete -f \ https://raw.githubusercontent.com/rh-mobb/documentation/main/content/misc/secrets-store-csi/aws-provider-installer.yaml
$ oc -n csi-secrets-store delete -f \ https://raw.githubusercontent.com/rh-mobb/documentation/main/content/misc/secrets-store-csi/aws-provider-installer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、AWS のロールとポリシーを削除します。
aws iam detach-role-policy --role-name openshift-access-to-mysecret \ --policy-arn $POLICY_ARN; aws iam delete-role --role-name openshift-access-to-mysecret; aws iam delete-policy --policy-arn $POLICY_ARN
$ aws iam detach-role-policy --role-name openshift-access-to-mysecret \ --policy-arn $POLICY_ARN; aws iam delete-role --role-name openshift-access-to-mysecret; aws iam delete-policy --policy-arn $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Secrets Manager のシークレットを削除します。
aws secretsmanager --region $REGION delete-secret --secret-id $SECRET_ARN
$ aws secretsmanager --region $REGION delete-secret --secret-id $SECRET_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第11章 チュートリアル: Red Hat OpenShift Service on AWS で Kubernetes 用の AWS コントローラーを使用する リンクのコピーリンクがクリップボードにコピーされました!
AWS Controllers for Kubernetes (ACK) を使用すると、Red Hat OpenShift Service on AWS から直接 AWS サービスリソースを定義して使用できます。ACK を使用すると、クラスター外のリソースを定義したり、クラスター内のデータベースやメッセージキューなどのサポート機能を提供するサービスを実行したりすることなく、アプリケーションで AWS マネージドサービスを利用できます。
OperatorHub からさまざまな ACK Operator を直接インストールできます。これにより、アプリケーションで Operator を簡単に使い始めることができます。このコントローラーは AWS Controller for Kubernetes プロジェクトのコンポーネントであり、現在開発者プレビュー段階にあります。
このチュートリアルを使用して、ACK S3 Operator をデプロイしてください。クラスターの OperatorHub 内の他の ACK Operator に合わせて調整することもできます。
11.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Service on AWS クラスター
-
cluster-admin
権限を持つユーザーアカウント -
OpenShift CLI (
oc
) -
Amazon Web Services (AWS) CLI (
aws
)
11.2. 環境の設定 リンクのコピーリンクがクリップボードにコピーされました!
次の環境変数を設定し、お使いのクラスターに合わせてクラスター名を変更します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のセクションに進む前に、すべてのフィールドが正しく出力されていることを確認してください。
echo "Cluster: ${ROSA_CLUSTER_NAME}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
$ echo "Cluster: ${ROSA_CLUSTER_NAME}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.3. AWS アカウントの準備 リンクのコピーリンクがクリップボードにコピーされました!
ACK Operator の AWS Identity Access Management (IAM) 信頼ポリシーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AmazonS3FullAccess
ポリシーを割り当てた、ACK Operator が引き受ける AWS IAM ロールを作成します。注記推奨されるポリシーは、各プロジェクトの GitHub リポジトリー (例: https://github.com/aws-controllers-k8s/s3-controller/blob/main/config/iam/recommended-policy-arn) で見つけることができます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. ACK S3 コントローラーのインストール リンクのコピーリンクがクリップボードにコピーされました!
ACK S3 Operator をインストールするプロジェクトを作成します。
oc new-project ack-system
$ oc new-project ack-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 Operator の設定を含むファイルを作成します。
注記ACK_WATCH_NAMESPACE
は、コントローラーがクラスター内のすべての namespace を適切に監視できるように、意図的に空白のままにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のステップのファイルを使用して ConfigMap を作成します。
oc -n ack-system create configmap \ --from-env-file=${SCRATCH}/config.txt ack-${ACK_SERVICE}-user-config
$ oc -n ack-system create configmap \ --from-env-file=${SCRATCH}/config.txt ack-${ACK_SERVICE}-user-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorHub から ACK S3 Operator をインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 Operator サービスアカウントに、割り当てる AWS IAM ロールのアノテーションを付けて、デプロイメントを再起動します。
oc -n ack-system annotate serviceaccount ${ACK_SERVICE_ACCOUNT} \ eks.amazonaws.com/role-arn=${ROLE_ARN} && \ oc -n ack-system rollout restart deployment ack-${ACK_SERVICE}-controller
$ oc -n ack-system annotate serviceaccount ${ACK_SERVICE_ACCOUNT} \ eks.amazonaws.com/role-arn=${ROLE_ARN} && \ oc -n ack-system rollout restart deployment ack-${ACK_SERVICE}-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 Operator が実行されていることを確認します。
oc -n ack-system get pods
$ oc -n ack-system get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE ack-s3-controller-585f6775db-s4lfz 1/1 Running 0 51s
NAME READY STATUS RESTARTS AGE ack-s3-controller-585f6775db-s4lfz 1/1 Running 0 51s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5. デプロイメントの検証 リンクのコピーリンクがクリップボードにコピーされました!
S3 バケットリソースをデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow S3 バケットが AWS で作成されたことを確認します。
aws s3 ls | grep ${CLUSTER_NAME}-bucket
$ aws s3 ls | grep ${CLUSTER_NAME}-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
2023-10-04 14:51:45 mrmc-test-maz-bucket
2023-10-04 14:51:45 mrmc-test-maz-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.6. クリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
S3 バケットリソースを削除します。
oc -n ack-system delete bucket.s3.services.k8s.aws/${CLUSTER-NAME}-bucket
$ oc -n ack-system delete bucket.s3.services.k8s.aws/${CLUSTER-NAME}-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 Operator と AWS IAM ロールを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ack-system
プロジェクトを削除します。oc delete project ack-system
$ oc delete project ack-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第12章 チュートリアル: 外部トラフィックへの一貫した Egress IP の割り当て リンクのコピーリンクがクリップボードにコピーされました!
セキュリティー基準を満たすために IP ベースの設定を必要とするセキュリティーグループなど、クラスターから出るトラフィックに一貫した IP アドレスを割り当てることができます。
デフォルトでは、Red Hat OpenShift Service on AWS は OVN-KubernetesContainer Network Interface (CNI) を使用して、プールからランダムな IP アドレスを割り当てます。これにより、セキュリティーロックダウンの設定が予測不可能になったり、オープンになったりする可能性があります。
詳細は、EgressIP アドレスの設定を 参照してください。
目的
- Egress クラスタートラフィック用に予測可能な IP アドレスのセットを設定する方法を学習します。
前提条件
- OVN-Kubernetes でデプロイされた Red Hat OpenShift Service on AWS クラスター
-
OpenShift CLI (
oc
) -
ROSA CLI (
rosa
) -
jq
12.1. 環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、環境変数を設定します。
注記別のマシンプールをターゲットにするには、
ROSA_MACHINE_POOL_NAME
変数の値を置き換えます。export ROSA_CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}" | sed 's/-[a-z0-9]\{5\}$//') export ROSA_MACHINE_POOL_NAME=worker
$ export ROSA_CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}" | sed 's/-[a-z0-9]\{5\}$//') $ export ROSA_MACHINE_POOL_NAME=worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2. 容量の確保 リンクのコピーリンクがクリップボードにコピーされました!
各ノードに割り当てられる IP アドレスの数は、パブリッククラウドプロバイダーごとに制限されます。
次のコマンドを実行して、十分な容量を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. Egress IP ルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
Egress IP ルールを作成する前に、使用する Egress IP を特定します。
注記選択する Egress IP は、ワーカーノードがプロビジョニングされているサブネットの一部として存在する必要があります。
オプション: AWS Virtual Private Cloud (VPC) Dynamic Host Configuration Protocol (DHCP) サービスとの競合を回避するために、要求した Egress IP を予約します。
CIDR 予約ページの AWS ドキュメント で明示的な IP 予約をリクエストします。
12.4. namespace への Egress IP の割り当て リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して新しいプロジェクトを作成します。
oc new-project demo-egress-ns
$ oc new-project demo-egress-ns
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、namespace 内のすべての Pod に Egress ルールを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5. Pod への Egress IP の割り当て リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して新しいプロジェクトを作成します。
oc new-project demo-egress-pod
$ oc new-project demo-egress-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod の Egress ルールを作成します。
注記spec.namespaceSelector
は必須フィールドです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.1. ノードのラベル付け リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、保留中の Egress IP 割り当てを取得します。
oc get egressips
$ oc get egressips
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS demo-egress-ns 10.10.100.253 demo-egress-pod 10.10.100.254
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS demo-egress-ns 10.10.100.253 demo-egress-pod 10.10.100.254
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成した Egress IP ルールは、
k8s.ovn.org/egress-assignable
ラベルを持つノードにのみ適用されます。ラベルが特定のマシンプールにのみ存在することを確認します。次のコマンドを使用して、マシンプールにラベルを割り当てます。
警告マシンプールのノードラベルに依存している場合は、このコマンドによってそれらのラベルが置き換えられます。ノードラベルを保持するには、必要なラベルを
--labels
フィールドに入力してください。rosa update machinepool ${ROSA_MACHINE_POOL_NAME} \ --cluster="${ROSA_CLUSTER_NAME}" \ --labels "k8s.ovn.org/egress-assignable="
$ rosa update machinepool ${ROSA_MACHINE_POOL_NAME} \ --cluster="${ROSA_CLUSTER_NAME}" \ --labels "k8s.ovn.org/egress-assignable="
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.2. Egress IP の確認 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、Egress IP の割り当てを確認します。
oc get egressips
$ oc get egressips
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS demo-egress-ns 10.10.100.253 ip-10-10-156-122.ec2.internal 10.10.150.253 demo-egress-pod 10.10.100.254 ip-10-10-156-122.ec2.internal 10.10.150.254
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS demo-egress-ns 10.10.100.253 ip-10-10-156-122.ec2.internal 10.10.150.253 demo-egress-pod 10.10.100.254 ip-10-10-156-122.ec2.internal 10.10.150.254
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6. 検証 リンクのコピーリンクがクリップボードにコピーされました!
12.6.1. サンプルアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Egress IP ルールをテストするには、指定した Egress IP アドレスに制限されるサービスを作成します。これは、IP アドレスの小さなサブセットを期待する外部サービスをシミュレートします。
リクエストを複製するには、
echoserver
コマンドを実行します。oc -n default run demo-service --image=gcr.io/google_containers/echoserver:1.4
$ oc -n default run demo-service --image=gcr.io/google_containers/echoserver:1.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod をサービスとして公開し、指定した Egress IP アドレスへの Ingress を制限します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ロードバランサーのホスト名を取得し、環境変数として保存します。
export LOAD_BALANCER_HOSTNAME=$(oc get svc -n default demo-service -o json | jq -r '.status.loadBalancer.ingress[].hostname')
$ export LOAD_BALANCER_HOSTNAME=$(oc get svc -n default demo-service -o json | jq -r '.status.loadBalancer.ingress[].hostname')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6.2. namespace の Egress のテスト リンクのコピーリンクがクリップボードにコピーされました!
対話型シェルを起動して、namespace の Egress ルールをテストします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロードバランサーにリクエストを送信し、正常に接続できることを確認します。
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接続が成功したかどうかの出力を確認します。
注記client_address
は、Egress IP ではなく、ロードバランサーの内部 IP アドレスです。.spec.loadBalancerSourceRanges
に制限されたサービスに接続することで、クライアントアドレスが正しく設定されていることを確認できます。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して Pod を終了します。
exit
$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6.3. Pod の Egress のテスト リンクのコピーリンクがクリップボードにコピーされました!
対話型シェルを起動して、Pod の Egress ルールをテストします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ロードバランサーにリクエストを送信します。
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接続が成功したかどうかの出力を確認します。
注記client_address
は、Egress IP ではなく、ロードバランサーの内部 IP アドレスです。.spec.loadBalancerSourceRanges
に制限されたサービスに接続することで、クライアントアドレスが正しく設定されていることを確認できます。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して Pod を終了します。
exit
$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6.4. オプション: ブロックされた Egress のテスト リンクのコピーリンクがクリップボードにコピーされました!
オプション: 次のコマンドを実行して、Egress ルールが適用されない場合にトラフィックが正常にブロックされることをテストします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ロードバランサーにリクエストを送信します。
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - コマンドが失敗すると、Egress が正常にブロックされます。
以下のコマンドを実行して Pod を終了します。
exit
$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.7. クラスターのクリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行してクラスターをクリーンアップします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、割り当てられたノードラベルをクリーンアップします。
警告マシンプールのノードラベルに依存している場合は、このコマンドによってそれらのラベルが置き換えられます。ノードラベルを保持するには、必要なラベルを
--labels
フィールドに入力します。rosa update machinepool ${ROSA_MACHINE_POOL_NAME} \ --cluster="${ROSA_CLUSTER_NAME}" \ --labels ""
$ rosa update machinepool ${ROSA_MACHINE_POOL_NAME} \ --cluster="${ROSA_CLUSTER_NAME}" \ --labels ""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Legal Notice
リンクのコピーリンクがクリップボードにコピーされました!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.