Azure Red Hat OpenShift の チュートリアル をやってみた

はじめに

皆さんどうもこんにちは、FIXER の 石井 です!

この間会社で支給されているお昼ご飯のメニューの一つである 「サラダランチ」 を頼んでみました。まだ 2 種類しか食べられてないですが、どちらもおいしかったです!

今年の健康診断の結果はまだ返ってきてないですが、健康状態は間違いなく去年より悪化しているので、おいしいサラダランチを頼んで普段不足している野菜をとるようにしようかなと思い始めています。

今回は Azure Red Hat OpenShift の チュートリアルをやっていこうと思います!

(チュートリアルのリンクは おわりに に載せてあるので、そちらをご参照ください)

Azure Red Hat OpenShift とは

今回紹介する Azure Red Hat OpenShift (以下 ARO と表します) は コンテナオーケストレーションシステム OpenShift を Azure 上で使えるようにしたものです。

Red Hat OpenShift とある通り、OpenShift は有名な Linux ディストリビューション の一つである Red Hat を生んだ Red Hat 社が作ったソフトウェアです。

ざっくりと説明すると、 OpenShift は kubernetes (以下 k8s と表します) を フルマネージドサービス化したソフトウェアであり、 k8s を運用する上で自分たちで管理・作業しなければいけなかった部分を OpenShift に任せることができるようになります。

Open Shift について詳しく知りたい方は 下記の公式の HP からどうぞ

https://www.redhat.com/ja/technologies/cloud-computing/openshift

Azure Red Hat OpenShift のチュートリアル

今回は Az CLI と Powershell 7 を使って、コマンドベースで構築していきます……と言いたいところですが、1 点ポータル上で作業する必要があるかもしれないので、そちらを先に済ませます。

お決まりのログインコマンドと環境変数の定義を済ませます。

# ログインコマンドを叩く
az login -t <AROを作成するテナント>
az account set -s <AROを作成するサブスクリプション>
az account show
# 環境変数の定義
$RESOURCEGROUP="ARORG"
$LOCATION="japaneast"
$CLUSTER="AROCluster"

今回作成する ARO クラスタを構築するには 40 vCPU が必要になりますが、サブスクリプションのクォータによっては 40 vCPU が許可されていないことがあるため、下記を実行して確認しましょう。

# クォータ数の確認
$LOCATION="japaneast"
az vm list-usage -l $LOCATION `
  --query "[?contains(name.value, 'standardDSv3Family')]" `
  -o table
vCPU のクォータを確認。以前引き上げをしていない場合、40 以下になっているはず

上記の画像のように Limit が 40 より 小さい場合は vCPU を引き上げするサポートリクエストを作成してください。(40 以上の場合は、この手順を飛ばして次の リソースプロバイダーの登録 に進んでください)

Azure Portal 上から サブスクリプション ⇒ 設定 の 使用量 + クォータ ⇒ 引き上げを依頼する を選択します。

クォータの種類 から コンピューティング-VM(コア-vCPU)のサブスクリプション上限の増加 を 選び クォータの管理 を選択すると 下記画像のようになります。

上部の検索欄にDSv3を入力し、リージョンを東日本を入力します。

その後、Standard DSv3 ファミリ vCPUs の赤丸で囲った部分を選択して、40 以上の vCPU を要求します。ちょっとだけ時間がかかるので、要求が承認されるのを待ちましょう。

次は リソースプロバイダーの登録 をします。

# リソースプロバイダーの登録
az provider register -n Microsoft.RedHatOpenShift --wait
az provider register -n Microsoft.Compute --wait
az provider register -n Microsoft.Storage --wait
az provider register -n Microsoft.Authorization --wait

実行が完了するまでに 2 ~ 3 分程度かかります。
次は ARO クラスタを配置する仮想ネットワークとサブネットを作成します。

# リソースグループの作成
az group create `
  --name $RESOURCEGROUP `
  --location $LOCATION
# 仮想ネットワークの作成
az network vnet create `
   --resource-group $RESOURCEGROUP `
   --name aro-vnet `
   --address-prefixes 10.0.0.0/22
# マスターノード用のサブネットの作成
az network vnet subnet create `
  --resource-group $RESOURCEGROUP `
  --vnet-name aro-vnet `
  --name master-subnet `
  --address-prefixes 10.0.0.0/23 `
  --service-endpoints Microsoft.ContainerRegistry
# ワーカーノード用のサブネットの作成
az network vnet subnet create `
  --resource-group $RESOURCEGROUP `
  --vnet-name aro-vnet `
  --name worker-subnet `
  --address-prefixes 10.0.2.0/23 `
  --service-endpoints Microsoft.ContainerRegistry
# マスターノード用サブネットのプライベートエンドポリシーの無効化
az network vnet subnet update `
  --name master-subnet `
  --resource-group $RESOURCEGROUP `
  --vnet-name aro-vnet `
  --disable-private-link-service-network-policies true

これで ARO クラスタを作る準備が整いました。下記コマンドを実行しましょう!

# ARO クラスタの作成!!!
az aro create `
  --resource-group $RESOURCEGROUP `
  --name $CLUSTER `
  --vnet aro-vnet `
  --master-subnet master-subnet `
  --worker-subnet worker-subnet
10 分経過したときの図。Running 無限グルグル編

…………作成にはかなり時間がかかるので、気長に待ちましょう。
(公式ドキュメントでは 35 分らしいですが、今回作成したときには 28 分で済んだので運がよかったみたいです)

ARO クラスタが作成できたので、ARO クラスタにさっそくアクセスしてみましょう!

# クレデンシャル情報を表示
az aro list-credentials `
  --name $CLUSTER `
  --resource-group $RESOURCEGROUP
# ARO クラスタのコンソールにアクセスするためのURLを表示
az aro show `
  --name $CLUSTER `
  --resource-group $RESOURCEGROUP `
  --query "consoleProfile.url" -o tsv

2 つ目のコマンドで表示された URL をブラウザに貼りつけてコンソールのログイン画面を表示させます。

ARO のコンソールのログイン画面。先ほど取得したクレデンシャル情報の入力後です

クレデンシャル情報を入れてログインすると……

いかにもな GUI のコンソール画面。いろいろな機能が使えそうでワクワクしますね

すごくわかりやすい GUI の画面が出てきました!

ただ、GUI での操作はそれはそれで素晴らしいものですが、エンジニアとしては CLI でコマンドを叩ける方が安心ですよね。(個人の感想です)

ということで、CLI をインストールしましょう、上部のタブの ? マークから コマンドラインツール を選択します。

CLI のダウンロード画面。実行環境の OS に合わせてインストールしましょう

一応、下記のミラーサイトからも CLI のインストールができるので覚えておくと便利です。

https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/

私は Windows ユーザなので Windows 版で落としましたが、.msi のインストーラ形式ではなく、oc.exe という実行形式のファイルだったので、パスを通すのは手動で行いましょう。パスを通す方法の説明は省きます。

oc コマンドを実行してみた結果が下記画像です。

oc は OpenShift Client の略っぽい。oc という短い文字列なので素早く打てるのがグッド

画像の Since OpenShift runs on ~~ に書いてありますが、 oc コマンドは K8s 用の kubectl を包含しているので、普段から k8s を CLI で操作している方は同じようにコマンド操作が行えます。もちろん oc 専用コマンドもあるので、そちらも oc --help で確認して使いこなせるようになりたいですね。

では、さっそく oc コマンドを使って ARO クラスタに接続してみましょう!

# ARO クラスタのAPIにアクセスするためのURLを格納
$apiServerUrl = ( az aro show `
  --name $CLUSTER `
  --resource-group $RESOURCEGROUP `
  --query "apiserverProfile.url" -o tsv
)
# ARO クラスタに接続
oc login $apiServerUrl -u kubeadmin -p <kubeadmin のパスワード>

(接続成功後の画像を取り忘れました……ごめんなさい)

無事に ARO クラスタに接続できたと思うので、最後に ARO クラスタをクリーンアップしましょう。

# ARO クラスタの削除
az aro delete --resource-group $RESOURCEGROUP --name $CLUSTER --yes
# リソースグループの削除
az group delete --name $RESOURCEGROUP --yes

上記コマンドを実行したら、後は待つだけで削除されます。

おわりに

ARO クラスタの作成と接続、そして削除のチュートリアルをやってみました。

今回のチュートリアルは以下の MS Docs を使いました。こちらも確認してみてください!
(作成、接続、削除 で全 3 編あります)

https://docs.microsoft.com/ja-jp/azure/openshift/tutorial-create-cluster

https://docs.microsoft.com/ja-jp/azure/openshift/tutorial-connect-cluster

https://docs.microsoft.com/ja-jp/azure/openshift/tutorial-delete-cluster

そして、実は 今回作成したARO クラスタは一日で 8000 円程度かかります。高い……

ポータル上でリソースを確認した図。VM が 6 台に LoadBalancer が 2 台 もある!

豊富な機能があって、いろいろなことが手が届くけれど、その分料金も高くなってしまうので、本当に必要かどうか目的にあったものを選択するようにしましょう!

FIXER Inc. 石井 汰樹
  • FIXER Inc. 石井 汰樹
  • 高専卒の2020年4月入社。四日市事業所所属。
    インフラ関連の知見を深めていきたい。