2
1

More than 1 year has passed since last update.

AWS上でOpenShiftクラスタ(ROSA)を動かしてみました。

Last updated at Posted at 2023-03-26

概要

 最近はOpenShiftを利用し始めました。AWS上も構築可能と聞いて実際に作ってみました。
 正式のサービス名称はRed Hat OpenShift Service on AWSだそうです。頭文字をとって、ROSA(ロサ)と略しているのようです。以下はROSAで表記します。

ROSAの構築作業

事前準備作業

  • Redhatのアカウントにログイン
    image.png
    image.png
  • Redhatコンソール画面
  • ログイン後、Redhatコンソール画面に遷移して、画面の真ん中下にがる「Redhat Openshift」を選択してください。
    image.png
  • Create an OpenShift cluster(OpenShiftクラスタ作成する)ボタンをクリック、作成画面に遷移します。
    image.png
    image.png
  • 提供できるベンダはいくつかありますが、今回はAWSを選択します。
    • 作成方法はCLIとWeb Interface2つあります。
      • 今回はWeb Interfaceで作成します。
    • 初めての場合にAWS側にいくつかの準備が必要です。[Create Cluster]ボタン下の[Prerequisties]リンクボタンを押下してください。
      image.png
  • 事前準備作業のステップ一覧
    • Pre-Step1. AWSアカウント側でROSAサービスの有効化
    • Pre-Step2. ROSA/AWS CLIのインストール
    • Pre-Step3. ELBためのサービスリンクロール作成
    • Pre-Step4. AWSアカウントロールとポリシーの作成
    • Pre-Step5. 最終確認

ではPre-Step1から実施します。

Pre-Step1. AWSアカウント側でROSAサービスの有効化

  • Open AWS Consoleボタン押下してAWS Console画面に遷移
    image.png
  • 利用料金についても一応確認してみてください。
    image.png
  • Red Hat OpenShift Service on AWS (ROSA)下にある「使用を開始」ボタン押下
    image.png
  • チェックボックス「連絡先情報を Red Hat と共有することに同意します。」にチェックを入れて、「ROSAを有効にする」ボタン押下
    image.png
  • ROSAを有効にしたことを確認
    image.png

Pre-Step2. ROSA/AWS CLIのインストール

  • AWS CLIのインストール/セッティングは割愛とさせてください。
  • 「Download the ROSA CLI」ボタンクリックしてROSA CLIをダウンロード
    • rosa-windows.zipを解凍してください
      image.png
    • コマンドプロンプトで実行確認
      • rosa.exe -h
        image.png

Pre-Step3. ELBためのサービスリンクロール作成

Create the service linked role for the Elastic Load Balancer (ELBためのサービスリンクロールを作成します。すでに存在してあるため、Step4に進みます。)
image.png

  • 存在しない場合には以下のコマンドで作成できます。
    • aws iam get-role --role-name "AWSServiceRoleForElasticLoadBalancing"

Pre-Step4. AWSアカウントロールとポリシーの作成

Log in to the ROSA CLI with your Red Hat account token and create AWS account roles and policies(ROSA CLIを利用してAWSアカウントロールとポリシーを作成します)

  • Pre-Step4-1. 画面上提示したコマンドをそのままコピペで実行(tokenの部分は個人専用のため省略)
    image.png
    image.png
    • コマンドプロンプト上、下記が表示されたらログインOKです。
  • Pre-Step4-2. AWSアカウントで必要なロールを作成します
    • AWS CLI(aws credentials)が事前に設定しておいてください。
    • コマンドプロンプトでrosa create account-roles --mode auto実行、各ロール作成の確認でYesと押下。
    INFO: Logged in as 'xxxxx@xxxx.com' on 'https://api.openshift.com'
    INFO: Validating AWS credentials...
    INFO: AWS credentials are valid!
    INFO: Validating AWS quota...
    INFO: AWS quota ok. If cluster installation fails, validate actual AWS resource usage against https://docs.openshift.com/rosa/rosa_getting_started/rosa-required-aws-service-quotas.html
    INFO: Verifying whether OpenShift command-line tool is available...
    WARN: OpenShift command-line tool is not installed.
    Run 'rosa download oc' to download the latest version, then add it to your PATH.
    INFO: Creating account roles
    INFO: Creating roles using 'arn:aws:iam::xxxxxxxx:user/xxxxx'
    ? Create the 'ManagedOpenShift-Installer-Role' role? Yes
    INFO: Created role 'ManagedOpenShift-Installer-Role' with ARN 'arn:aws:iam::xxxxxxxx:role/ManagedOpenShift-Installer-Role'
    ? Create the 'ManagedOpenShift-ControlPlane-Role' role? Yes
    INFO: Created role 'ManagedOpenShift-ControlPlane-Role' with ARN 'arn:aws:iam::xxxxxxxx:role/ManagedOpenShift-ControlPlane-Role'
    ? Create the 'ManagedOpenShift-Worker-Role' role? Yes
    INFO: Created role 'ManagedOpenShift-Worker-Role' with ARN 'arn:aws:iam::xxxxxxxx:role/ManagedOpenShift-Worker-Role'
    ? Create the 'ManagedOpenShift-Support-Role' role? Yes
    INFO: Created role 'ManagedOpenShift-Support-Role' with ARN 'arn:aws:iam::xxxxxxxx:role/ManagedOpenShift-Support-Role'
    INFO: To create a cluster with these roles, run the following command:
    rosa create cluster --sts
    
    • AWSコンソール、IAMコンソール画面に作成されたロール確認してください。無事に4つ全部表示されています。
      image.png

Pre-Step5. 事前準備の最終確認

  • Pre-Step5.1コマンドプロンプトでrosa whoamiを実行、以下の情報が表示されます。※右側の値の部分は割愛
    image.png
  • Pre-Step5.2 AWSクォーターの確認が満たしているかどうかを確認のため、コマンドプロンプトでrosa verfiy quota実行します。問題がなければ以下のが表示されます。
    image.png

OpenShiftクラスタの作成

  • コンソール画面でCreate Clusterボタン(With Web Interface)を押下
    image.png
  • 初めての場合にはRed Hat Terms and Conditionsに同意が必要です。同意しSubmitボタン押下
    image.png
    image.png
  • クラスタ作成には6つのステップあります。

Step1 利用するAWSアカウントを指定

  • 初めての場合にはロール利用するアカウントにアソシエートが必要です。Associate a new AWS account押下してアカウントリンクページに遷移します。
    image.png

  • Step1-1. OpenShift Cluster Manager roleを作成します。
    image.png

  • 以下の感じでコマンドプロンプトでrosa create ocm-role --adminを実行してください。

    C:\rosa-windows>rosa create ocm-role --admin
    INFO: Creating ocm role
    ? Role prefix: [? for help] (ManagedOpenShift) sample
    
    ? Role prefix: sample
    ? Permissions boundary ARN (optional): [? for help]
    
    ? Permissions boundary ARN (optional):
    ? Role Path (optional): [? for help]
    
    ? Role Path (optional):
    ? Role creation mode: auto
    INFO: Creating role using 'arn:aws:iam::xxxx:user/xxxx'
    ? Create the 'sample-OCM-Role-xxxxx' role? Yes
    INFO: Created role 'sample-OCM-Role-xxxxx' with ARN 'arn:aws:iam::xxxxxxxx:role/sample-OCM-Role-xxxx'
    INFO: Linking OCM role
    ? OCM Role ARN: [? for help] (arn:aws:iam::xxxxx:role/sample-OCM-Role-xxxxx)
    
    ? OCM Role ARN: arn:aws:iam::xxxxx:role/sample-OCM-Role-xxxxx
    ? Link the 'arn:aws:iam::xxxxx:role/sample-OCM-Role-xxxxx' role with organization 'xxxxxxx'? Yes
    INFO: Successfully linked role-arn 'arn:aws:iam::xxxxxxx:role/sample-OCM-Role-xxxxxx' with organization account 'xxxxxx'
    
    • AWS IAM画面でAdminロールが作成されたことを確認
      image.png
    • Step1-2 続いて、同じくコマンドプロンプトでUser role作成
    rosa create user-role
    INFO: Creating User role
    ? Role prefix: [? for help] (ManagedOpenShift) sample
    
    ? Role prefix: sample
    ? Permissions boundary ARN (optional): [? for help]
    
    ? Permissions boundary ARN (optional):
    ? Role Path (optional): [? for help]
    
    ? Role Path (optional):
    ? Role creation mode: auto
    INFO: Creating ocm user role using 'arn:aws:iam::xxxxxx:user/xxx'
    ? Create the 'sample-User-xxxxx@xxxxx.com-Role' role? Yes
    INFO: Created role 'sample-User-xxxx@xxxxx.com-Role' with ARN 'arn:aws:iam::xxxxxx:role/sample-User-xxxxx@xxxxx.com-Role'
    INFO: Linking User role
    ? User Role ARN: [? for help] (arn:aws:iam::xxxxx:role/sample-User-xxxxx@xxxxx.com-Role)
    
    ? User Role ARN: arn:aws:iam::xxxxx:role/sample-User-xxxx@xxxx.com-Role
    ? Link the 'arn:aws:iam::xxxxx:role/sample-User-xxxxx@xxxxx.com-Role' role with account 'xxxxxxx'? Yes
    INFO: Successfully linked role ARN 'arn:aws:iam::xxxxx:role/sample-User-xxxx@xxxxx.com-Role' with account 'xxxxxx'
    
    • AWS IAM画面でユーザーロールが作成されたことを確認
      image.png
        * Step1のAccounts and roles画面に戻って、リンク用AWSアカウントを選択してください。AWSアカウントIDが表示されない場合には、右側にある「Refresh」ボタンを押して更新してください。
        image.png
        * Installer role, Support role, Worker role, Control plane roleがセットされていることも確認してください。

Step2.クラスタの設定

  • Step2.1 Cluster details(クラスタ詳細設定)
    • ClusterName(クラスタ名)
      • ルールに従って作成してください
        image.png
    • Version(OpenShiftバージョン)
      • 用意する時点最新の4.12.7を選びます
    • Region(リージョン)
      • ap-northeast-1 / Tokyoリージョン
    • Avaiabiltity(AWS AZ ゾーン)
      • Mulit-zoneにします
      • 耐障害性向上のため、AZゾーンごとにOpenShiftのワーカーノードを配布します。
    • モニタリングを有効にします
    • 暗号化キー
      • デフォルトのAWS kmsを利用するか、カスタマイズキーを用意することが可能です。
    • etcd encryption
      • 必要に応じてチェックいれてください。今回はないで構築しました。
        image.png
  • Step2.2 マシンプールで構築用サーバー情報設定(最小構成)
    • EC2インスタンスタイプ: m5.xlarge, 動作確認用のため小さ目のインスタンスを利用。
    • Enable AutoScalingの場合:Min:1 Max:1
      image.png
    • Enable AutoScalingなしの場合、Compute node count(per zone) 1に指定
      image.png
    • Edit node labels:
      • env:demo
        image.png

Step3. ネットワーク設定

  • Step3-1. Networking設定
    • クラスタポリシー(下記両者の区別を意識したうえで作成してください。)
      • Public:今回はこちら
        • k8sのAPIエンドポイントは公開インタネットからアクセスが可能
      • Private
        • k8sのAPIエンドポイントはプライベートインタネットからアクセスが可能
    • Virtual Private Cloud (VPC)
      • 新規VPC作成する:今回はこちら
      • 既存のVPCにインストールすることは可能です。
        image.png
  • Step3-2. CIDRレンジ設定
    • 必要に応じて柔軟で定義可能で、今回はDefaultバリューのままで構築
      image.png

Step4. クラスタロールとポリシー

  • 今回デフォルトのままで構築
    image.png

Step5. クラスタアップデートポリシー

  • OpenShiftクラスタバージョンアップデート方針をここで選びます。
  • 自動更新させたくない場合にはIndividual updatesを選びます。
    image.png

Step6. クラスタ作成前最終確認

  • 作成前に最終のレビューをやりましょう。
    image.png

  • Create clusterボタン押下
    image.png

  • 作成中画面が表示されます
    image.png
    image.png

  • 完成画面が表示されるまでしばらく待ちます、目安30分~1時間は必要です。(Cluster creation usually takes 30 to 60 minutes to complete.)
    image.png
    image.png

作成完了後の画面

image.png
image.png

  • 作成されたEC2インスタンス(一部抜粋あり)
    • Master3台、Worker3台、Infra3台、BootStrap1台
      image.png

OpenShiftの管理画面にログイン

image.png
image.png
※htpasswdユーザー作成の部分は割愛

  • 構築できたOpenShiftの管理画面
    image.png
  • OpenShiftオペレータインストール画面
    image.png

ここまででROSAのインストールが完了しました。

OpenShiftクラスタの削除

  • OpenShiftクラスタには停止(Shutdown)機能がないため、EC2インスタンスの料金が発生しないように、今回構築後、合わせってクラスタの削除も実施します。
    • RedHatコンソールのクラスタ一覧画面に遷移し、削除したいクラスタを選択し、「Delete Cluster」をクリック
      image.png
    • 確認ポップアップでクラスタ名を入力
      image.png
    • 「Delete」ボタン押下
      image.png
    • Uninstallingと表示されて、削除処理実施中
      image.png
    • AWS側でEC2インスタンスが終了済みなっていること確認
      image.png

  * Redhatコンソールのクラスタ一覧画面に更新して、削除されたことを確認
  image.png

これで一通り終わりました。お疲れ様でした。

感想的にいうと、構築の速さとやりやすさです。今回はおおよそ1時間以内でROSAクラスタの構築ができました。CLIなども利用可能で、とても便利だとり感じております。
では今回はここまでとさせてください。ご覧いただきありがとうございます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1