フィードを購読する

はじめに

コントロールプレーンの管理コストを削減したいとお考えですか?複数のコントロールプレーンを管理する負担を軽減したいとお考えですか?Red Hat OpenShift のホスト型コントロールプレーン (別名 HyperShift) なら、Amazon Web Services (AWS) で OpenShift テナントクラスタを大規模にホストできます。各スタンドアローン OpenShift クラスタでは、コントロールプレーンは 3 つのマシンノードをまたいでスケジュールされます。ただし、ホスト型コントロールプレーンでは、コントロールプレーンは他のワークロードと同様に、使用可能なワーカーノード上で Pod としてスケジュールされます。これにより、多くのコントロールプレーンを作成して、より少ないノードで実行することができるので、プロジェクトやポリシーなどの OpenShift のテナンシー用プリミティブを再利用しながら、クラスタをより手頃な価格にすることができます。ホスト型コントロールプレーンを使用するとコストを削減できますが、Arm ホスト型コントロールプレーンを使用することでも、さらなるコスト削減を実現できる可能性があります。

Arm ホスト型コントロールプレーンは既存の 64 ビット Arm OpenShift Container Platform (OCP) クラスタ環境にインストールでき、64 ビット x86 NodePool を使用して複数の Arm ホスト型コントロールプレーンを迅速にデプロイすることが可能です。このすべてを AWS プラットフォーム上で実行できるので、Arm ホスト型コントロールプレーンの活用によるコスト削減が可能になります。このブログでは、Arm ホスト型コントロールプレーンをインストールするメリットとインストール手順について説明します。

この機能の現在のサポート状況はテクニカルプレビュー (TP) の段階であり、今後のリリースで正式にサポートされる予定です。

Reduce Costs with ARM Hosted Control Planes on AWS-ja

 

メリット

標準の OCP クラスタで Arm ホスト型コントロールプレーンを使用すると、他にも次のようなメリットがあります。

  • Arm ホスト型コントロールプレーンは、同等の x86 ホスト型コントロールプレーンと比較して、コストを約 20% 削減可能(削減額は m6i.xlarge (x86 ベース) と m6g.xlarge (Arm ベース) の 1 時間当たりのコストを基に算出)
  • 保守作業の削減
  • 管理とワークロード間のセキュリティ境界の強化
  • より少ないノードで多くのコントロールプレーンを実行し、クラスタの価格を低減
  • コントロールプレーンの起動時間を短縮
  • マルチクラスタ管理の一元化と容易化を実現

ホスト型クラスタのメリットの詳細については、 ホスト型コントロールプレーンの概要ドキュメントをご覧ください。

クラスタの準備

AWS でホストされる 64 ビットの Arm OCP クラスタの基盤ベースとして OCP 4.13.0 が実行されているものとします。

  1. マルチクラスタエンジン Operator 2.2.4 以降をインストールします。この Operator のインストール手順については、こちらを参照してください。
  2. 次に、「1.7.1.2. Amazon Web Services S3 バケットと S3 OIDC シークレットの作成」の手順に従って AWS S3 バケットと S3 OIDC シークレットを設定します。
    1. 手順 1 の後で、次のコマンドを実行します。
       

      aws s3api put-bucket-ownership-controls --bucket $BUCKET_NAME --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerPreferred}]"
  3. 次に、「1.7.1.6. ホステッドコントロールプレーン機能の有効化」の手順に従ってホスト型コントロールプレーンを有効にします。
  4. 1.7.1.7. ホステッドコントロールプレーン CLI のインストール」の手順に従って hypershift cli をダウンロードします。

 

デモ

次の各セクションでは、以下の手順について説明します。

  1. 環境変数を設定する
  2. Arm ホスト型コントロールプレーンと 64 ビット x86 ゲストクラスタを作成する
  3. 既存の Arm ホスト型コントロールプレーンに 64 ビット x86 ゲストクラスタを追加する
  4. Arm ホスト型コントロールプレーンを削除する

環境変数を設定する

まず、Arm HyperShift Operator をインストールし、ホスト型コントロールプレーンクラスタを作成するために、HyperShift コマンドラインツールで必要とされる環境変数をいくつか設定します。この操作は、「1.7.2.3. コマンドラインを使用して AWS にホストされたクラスターをデプロイする」の手順 1 とほぼ同じです。

イメージ・プルシークレットは Red Hat OpenShift Cluster Manager で取得できます。

REGION=us-east-1
AWS_CREDS=~/.aws/credentials
BASE_DOMAIN=my.base.domain.com
PULL_SECRET=~/all-the-pull-secrets.json
BUCKET_NAME=my-s3-bucket
CLUSTER_NAME=my-hypershift-arm-cluster
NODEPOOL_NAME=my-additional-x86-guest-cluster
NODEPOOL_REPLICAS=2

 

OpenShift 64 ビット Arm 管理クラスタを参照するように KUBECONFIG 環境変数を設定します。

$ hypershift % export KUBECONFIG=/Users/user/aws-oc-nightly/auth/kubeconfig

 

Arm ホスト型コントロールプレーンと 64 ビット x86 ゲストクラスタを作成する

1) 次に、2 つのノードを持つ初期ゲストクラスタを持つホスト型コントロールプレーンを作成します。そして、標準リリースイメージをオーバーライドしてマルチアーキテクチャ・リリースイメージを利用します。これは、管理クラスタは 64 ビット Arm で、ホスト型コントロールプレーンのゲストクラスタは 64 ビット x86 になるためです。これにより、ホスト型クラスタとそのゲストクラスタを作成するときに、正しいブートストラップ設定が使用されます。

この操作は、「1.7.2.3. コマンドラインを使用して AWS にホストされたクラスターをデプロイする」の手順 4 とほぼ同じです。

$ hypershift create cluster aws \ 
--name $CLUSTER_NAME \
--node-pool-replicas=$NODEPOOL_REPLICAS \
--base-domain $BASE_DOMAIN \
--pull-secret $PULL_SECRET \
--aws-creds $AWS_CREDS \
--region $REGION \
--release-image quay.io/openshift-release-dev/ocp-release:4.13.0-multi

 

2) OpenShift コマンドラインツールを使用して、ゲストクラスタが正常に作成されたことを確認します。

$ oc get nodepools --namespace clusters
NAME                                   CLUSTER                     DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION       UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
my-hypershift-arm-cluster-us-east-1a   my-hypershift-arm-cluster   2               2               False         False        4.13.0

 

3) ホスト型コントロールプレーンが正常に作成されたことを確認します。

$ oc get --namespace clusters hostedclusters
NAME                        VERSION       KUBECONFIG                                   PROGRESS    AVAILABLE   PROGRESSING   MESSAGE
my-hypershift-arm-cluster   4.13.0   my-hypershift-arm-cluster-admin-kubeconfig   Completed   True        False         The hosted control plane is available

 

4) ゲストクラスタとホスト型コントロールプレーンが正常に作成されたら、新しいゲストクラスタに移動する KUBECONFIG を作成し、AWS マシンがゲストクラスタに存在することを確認します。

$ hypershift create kubeconfig > temp_kubeconfig
2023/03/21 11:12:32 selected 1 of 1 hostedclusters for the kubeconfig
2023/03/21 11:12:32 adding clusters/my-hypershift-arm-cluster to kubeconfig
2023/03/21 11:12:32 added clusters-my-hypershift-arm-cluster to kubeconfig
2023/03/21 11:12:32 created kubeconfig with 1 contexts
$ hypershift % export KUBECONFIG=/Users/user/hypershift/temp_kubeconfig
$ hypershift % oc get nodes
NAME                           STATUS   ROLES    AGE   VERSION
ip-10-0-142-149.ec2.internal   Ready    worker   10m   v1.26.2+06e8c46
ip-10-0-143-86.ec2.internal    Ready    worker   10m   v1.26.2+06e8c46

 

既存の Arm ホスト型コントロールプレーンに 64 ビット x86 ゲストクラスタを追加する

さらに、HyperShift コマンドラインツールを使用して、必要に応じてホスト型コントロールプレーンにゲストクラスタを追加することができます。

$ hypershift create nodepool aws \
--cluster-name $CLUSTER_NAME \
--name $NODEPOOL_NAME \
--node-count=$NODEPOOL_REPLICAS
NodePool my-additional-x86-guest-cluster created

 

OpenShift コマンドラインツールのコマンドを使用して、新しいゲストクラスタが正常に初期化されたことを確認します。

$ oc get nodepools --namespace clusters
NAME                                   CLUSTER                     DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION       UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
my-additional-x86-guest-cluster        my-hypershift-arm-cluster   2               2               False         False        4.13.0
my-hypershift-arm-cluster-us-east-1a   my-hypershift-arm-cluster   2               2               False         False        4.13.0

 

Arm ホスト型コントロールプレーンを削除する

Arm ホスト型コントロールプレーンを削除するには、以下のコマンドを実行します。この操作は、「1.7.2.6. AWS でのホステッドクラスターの破棄」の手順 1 とほぼ同じです。

$ hypershift destroy cluster aws \
--name $CLUSTER_NAME \ 
--aws-creds $AWS_CREDS

 

まとめ

本稿では、64 ビット x86 テナントクラスタを持つ Arm ホスト型コントロールプレーンをインストールし、検証する手順を説明しました。また、HyperShift コマンドラインツールを使用して Arm HyperShift Operator をインストールする方法、同じ Arm ホスト型コントロールプレーンを利用して追加の 64-bit x86 テナントクラスタを作成する方法、64-bit x86 テナントクラスタが正常に作成されたことを確認する方法、Arm ホスト型コントロールプレーンを削除する方法を示しました。

今後の取り組み

今後は、ホスト型コントロールプレーンのマルチアーキテクチャ CPU 機能の拡張を予定しています。次に追加されるのは、AWS 上で 64 ビット Arm NodePool を作成できるようにする機能です。この機能により、64 ビット x86 NodePool と 64 ビット Arm NodePool を同じホスト型コントロールプレーンで実行できるようになります (注:同じ NodePool 内で CPU アーキテクチャを混在させることはできません)。

AWS での 64 ビット Arm NodePool の提供後は、64 ビット Arm ホスト型コントロールプレーンと 64 ビット Arm NodePool をオンプレミスや他のクラウドプロバイダーでも利用できるようにする予定です。


執筆者紹介

Senior software engineer with over 10 years of industry experience in the full software development cycle. Bryan’s work in Red Hat over the past few years has primarily focused on expanding Arm offerings in Red Hat OpenShift and development on Hosted Control Planes.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

チャンネル別に見る

automation icon

自動化

テクノロジー、チームおよび環境に関する IT 自動化の最新情報

AI icon

AI (人工知能)

お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート

open hybrid cloud icon

オープン・ハイブリッドクラウド

ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。

security icon

セキュリティ

環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報

edge icon

エッジコンピューティング

エッジでの運用を単純化するプラットフォームのアップデート

Infrastructure icon

インフラストラクチャ

世界有数のエンタープライズ向け Linux プラットフォームの最新情報

application development icon

アプリケーション

アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細

Original series icon

オリジナル番組

エンタープライズ向けテクノロジーのメーカーやリーダーによるストーリー