AWSにARMプロセッサー環境のOpenShiftをデプロイ

# はじめに
今回は、OpenShift4.10でGAとなった、ARMプロセッサー環境へのOpenShiftインストールを試してみます。



# ARMプロセッサーとは

ARMプロセッサーとは、ARM社が開発しライセンス販売を主体に提供しているCPUで、様々な企業がARMアーキテクチャを活用した独自CPUを作成しています。近年ではAppleがM1プロセッサーを作成したことで一般的な認知度も上がってきていますが、かねてよりiPhoneやAndroidスマホ、カーナビやゲーム機など様々なシーンで使われてきました。2017年で210億以上の出荷実績があり、後述するようにサーバ環境でも積極的に活用されてきているので、今後ますます出荷台数が増えていくことが予想されます。

このARMプロセッサーですが、高い消費電力性能が大きなメリットとして挙げられます。そのため、このCPUを活用することで、よりコストパフォーマンスの高い環境を構築しサービスを提供できるのではないか、ということで注目されています。

しかしこのような進化を遂げたのはスマートフォンが登場してからになるため、PC/サーバーのCPU市場はほぼIntelのプロセッサーが占めており、まだまだミドルウェアやアプリケーションのARM対応は発展途上になります。

そんな中、OpenShiftでは2022年3月にリリースした4.10でARMプロセッサー環境へのデプロイがGAになりました。

デプロイの形態はAWSへのIPIインストールと、ベアメタル向けのUPIインストールの2種類ありますが、今回はAWSへのIPIインストールを実施します。

# 前提条件
* AWSアカウントを準備していること
* Administrator AccessのIAMユーザーを作成していること
* DNSドメイン(Route53など)を取得していること
* ocコマンドをインストールしていること

# AWSへOpenShiftをデプロイ
まずはOpenShiftインストールバイナリをダウンロードします。
以下のサイトにアクセスして、自分の端末に合ったインストーラを選択してください。
2022/4/4時点では、Linux(x86_64/arm64)用とmac(x86_64)用のインストーラが選択できます。
https://console.redhat.com/openshift/downloads
「OpenShift for ARM Installer」というのが今回のインストーラになります。

ダウンロードが完了したらファイルを解凍します。
```
$ tar -zxvf openshift-install-linux.tar.gz
```
masterノードにSSHする際に使うキーを生成します。ここではパスワードなしで作成しています。
```
$ ssh-keygen -t ed25519 -f ~/.ssh/openshift-master -N "" <<<y
```
AWS CLIの設定を行います。　Administrator Accessの権限を持つIAMユーザーを設定してください。
```
$ aws configure
```
ここまでできたらinstall-configを作成します。
```
$ ./openshift-insall create install-config
```
対話形式で必要な情報を入力してください。
domainについてはroute53にホストゾーンがあれば対話の中で選択できます。

pull-secretについては、以下のURLからCopyしてきます。
https://console.redhat.com/openshift/downloads#tool-pull-secret

作成されたinstall-config.yamlを見てみましょう。
```
apiVersion: v1
baseDomain: *******.com
compute:
- architecture: arm64
  hyperthreading: Enabled
  name: worker
  platform: {}
  replicas: 3
controlPlane:
  architecture: arm64
  hyperthreading: Enabled
  name: master
  platform: {}
  replicas: 3
metadata:
  creationTimestamp: null
  name: democluster-arm-001
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.0.0.0/16
  networkType: OpenShiftSDN
  serviceNetwork:
  - 172.30.0.0/16
platform:
  aws:
    region: ap-northeast-1
publish: External
pullSecret: '{"auths":{"cloud.openshift.com":{"auth":*************
```

`compute.architecture`や`controlPlane.architecture`を確認すると、`arm64`になっていることがわかります。
この値を見てインストーラはデプロイ先のプロセッサーを判別します。
ちなみに、amd64用のインストーラでinstall-config.yamlを作成後、ここの値を`arm64`に設定しても**正常にOpenShiftをデプロイできません。** 必ずarm64用のインストーラを利用して下さい。

ではOpenShiftのインストールを実行してください。
```
./openshift-install create cluster
```

1時間ほど待つとクラスターが構築されています。

## デプロイ環境を確認
ではAWS上でデプロイされた環境を確認してみましょう。
Workerノードを確認すると、インスタンスタイプが`m6g.large`になっています。
![スクリーンショット 2022-04-04 9.37.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/419286/77d36b55-8533-bed9-4d14-557fd3e5eb3d.png)

m6gとは、AWS製のARMベースプロセッサー"AWS Graviton2"を搭載したインスタンスのタイプです。
通常のインスタンスタイプ（M5など)よりも大幅にコストが低く、パフォーマンスも高いので最近注目されているサービスになります。
詳細については、[公式ページ](https://aws.amazon.com/jp/ec2/instance-types/m6g/)を確認いただくか、[こちらのBlackBelt動画](https://youtu.be/2XY3-e4eKAk)がわかりやすく解説しています。

# おわりに
いかがでしたでしょうか？
手順を見てみるとx86_64版とほとんど変わらない手順でデプロイできることがわかるかと思います。
せっかく4.10でGAとなりましたので、ぜひ活用を検討してみていただければと思います。

次回は、ARM版のOpenShiftを利用する際の注意点や、x86_64版とのパフォーマンスの比較をまとめていきたいと思います。