AWSのOpenShiftサービスをマルチAZで使うとどれくらい課金されるのか。実際にやってみた。

こんにちは、Red Hatのソリューションアーキテクト金森です。
みなさんコンテナ触ってますか?
私が人生で初めて触ったコンテナは海上20feetコンテナでした。
コンテナって借りた時、前の荷主がナマモノとか運んでたりするとコンテナ内が生臭くて困っちゃいますよね。

というわけで、今日はコンテナの話です。

コンテナプラットフォームといいつつ、CI/CDの仕組みもサーバレスやサービスメッシュの仕組みもマネージドサービス的に色んなアプリを使える仕組みなど様々な機能をOSSで実現しているRed Hat OpenShift Container PlatformをAWSさんから提供されるマネージドサービスとして使えるROSAについて書いていこうと思います。

タイトルの通り、ROSA (Red Hat OpenShift service On AWS)がどれくらいの費用がかかるのかを実感を持って調べたかったのでやってみました。
デプロイして課金される様子を眺め、その結果から年間でどれくらいかかるかを予測します。

この投稿ではデプロイするまでの流れと、AWSさんから届いた請求額を公開して行こうと思います。
ただしお約束として、ここで書かれる金額はあくまで概算であり精緻さは目指していないことをあらかじめご了承ください。 (参考程度にしてね)

今回は以下のような流れでマルチAZなOpenShiftクラスターを構成していきます。
結果だけをみたい方は結論まで飛ばしてもらって大丈夫です。

デプロイまでのながれ

未来のだれかに迷惑をかけたくないので書いておくと、これは2021/9末時点の手順を基にしています。
公式な手順はこのあたりを参考にしてください。
詳細なデプロイ手順は他のメンバーによるブログ記事でも解説されております。
ROSAをデプロイするまでの道のりは以下の通りです。

  1. (無い場合)AWSのアカウントを作成し、ROSA用のIAMユーザを作成する。
  2. AWSのマネジメントコンソールでROSAサービスを有効にする
  3. (無い場合)AWS-CLIを操作端末へインストールし、awsコマンドが利用できるようにしておく
  4. (無い場合)Red Hatアカウントを作成する
  5. (無い場合)ROSAコマンドを操作端末へインストールしRed Hatアカウントでログインする
  6. AWSの権限とQuotaがROSAのデプロイに問題ないかを確認する
  7. いざデプロイ

ほとんどが前準備ですね。
AWSを普段利用している人ならAWS CLIは既に手元にあると思うので、ROSA CLIを端末にセットアップして貰えればOKと思います。

繰り返しですが、デプロイ興味ないですという人は結論まで飛ばしてください。


いざデプロイ

ではセットアップを始めます。

[rkanamor@rkanamor-pc ~]$ rosa init
I: Logged in as 'XXXXXXXXXXXXXXXXXX@redhat.com' on 'https://api.openshift.com'
I: Validating AWS credentials...
I: AWS credentials are valid!
I: Validating SCP policies...
I: AWS SCP policies ok
I: Validating AWS quota...
I: 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
I: Ensuring cluster administrator user 'osdCcsAdmin'...
I: Admin user 'osdCcsAdmin' created successfully!
I: Validating SCP policies for 'osdCcsAdmin'...
I: AWS SCP policies ok
I: Validating cluster creation...
I: Cluster creation valid
I: Verifying whether OpenShift command-line tool is available...
I: Current OpenShift Client Version: 4.8.11

あっさり終わりました。
必要なユーザなどが作成され、Quotaチェックなど再度行われたようです。
この先はEC2などが立ち上がるので、いよいよ課金がスタートです。ゴクリ。

僕にとってはじめてのROSAクラスターなのでrk-hajimeteno1にしました。
失敗したらhajimeteno2にしようと思います。
構成は東京リージョンにMulti-AZな構成でデプロイします。

$ rosa create cluster --multi-az --cluster-name=rk-hajimeteno1
I: Creating cluster 'rk-hajimeteno1'
I: To view a list of clusters and their status, run 'rosa list clusters'
I: Cluster 'rk-hajimeteno1' has been created.
I: Once the cluster is installed you will need to add an Identity Provider before you can login into the cluster. See 'rosa create idp --help' for more information.
I: To determine when your cluster is Ready, run 'rosa describe cluster -c rk-hajimeteno1'.
I: To watch your cluster installation logs, run 'rosa logs install -c rk-hajimeteno1 --watch'.
Name:                       rk-hajimeteno1
ID:                         XXXXXXXXXXXXXXXXXX
External ID:
OpenShift Version:
Channel Group:              stable
DNS:                        rk-hajimeteno1.a2wo.p1.openshiftapps.com
AWS Account:                XXXXXXXXXXXXXXXXXX
API URL:
Console URL:
Region:                     ap-northeast-1
Multi-AZ:                   true
Nodes:
 - Master:                  3
 - Infra:                   3
 - Compute:                 3
Network:
 - Service CIDR:            172.30.0.0/16
 - Machine CIDR:            10.0.0.0/16
 - Pod CIDR:                10.128.0.0/14
 - Host Prefix:             /23
State:                      pending (Preparing account)
Private:                    No
Created:                    Sep 22 2021 07:14:17 UTC
Details Page:               https://console.redhat.com/openshift/details/s/XXXXXXXXXXXXXXXXXX

[rkanamor@rkanamor-pc ~]$

無事にOpenShiftクラスターがawsサービスとしてデプロイされました!
実際にはこのコマンドが終了しても裏ではクラスターのインストール処理がまだ走っているはずです。
すでにSREが運用監視に入っているらしいので、EC2ノードやELBなどを無邪気に落とすと怒られるらしいです。気になりますね〜。

ROSAデプロイ後の設定や確認

やりたいことはできたのですが、せっかくなのでクラスターにもログインできるようにしました。
今日は手っ取り早くローカルユーザを追加します。
(検証なのでSElinuxをオフくらいの気持ちでやってます。本来はidp設定をしたほうが良いです)

[rkanamor@rkanamor-pc ~]$ rosa create admin --cluster=rk-hajimeteno1
W: It is recommended to add an identity provider to login to this cluster. See 'rosa create idp --help' for more information.
I: Admin account has been added to cluster 'rk-hajimeteno1'.
I: Please securely store this generated password. If you lose this password you can delete and recreate the cluster admin user.
I: To login, run the following command:

   oc login https://api.rk-hajimeteno1.a2wo.p1.openshiftapps.com:6443 --username cluster-admin --password XXXXXXXXXXXXXXXXXX

I: It may take up to a minute for the account to become active.

出力をみていたらidpも設定したくなったのでGithubをidpに設定してみます。

[rkanamor@rkanamor-pc ~]$ rosa create idp --cluster=rk-hajimeteno1 --interactive
I: Interactive mode enabled.
Any optional fields can be left empty and a default will be selected.
? Type of identity provider: github
? Identity provider name: github
? Restrict to members of: organizations
? GitHub organizations: rkanamor-XXXXXXXXXXXXXXXXXX
? To use GitHub as an identity provider, you must first register the application:
  - Open the following URL:
    https://github.com/organizations/rkanamor-XXXXXXXXXXXXXXXXXX/settings/applications/new?oauth_application%5Bcallback_url%5D=https%3A%2F%2Foauth-openshift.apps.rk-hajimeteno1.a2wo.p1.openshiftapps.com%2Foauth2callback%2Fgithub&oauth_application%5Bname%5D=rk-hajimeteno1&oauth_application%5Burl%5D=https%3A%2F%2Fconsole-openshift-console.apps.rk-hajimeteno1.a2wo.p1.openshiftapps.com
  - Click on 'Register application'
? Client ID: XXXXXXXXXXXXXXXXXX
? Client Secret: [? for help] ****************************************
? GitHub Enterprise Hostname (optional):
? Mapping method: claim
I: Configuring IDP for cluster 'rk-hajimeteno1'
I: Identity Provider 'github' has been created.
   It will take up to 1 minute for this configuration to be enabled.
   To add cluster administrators, see 'rosa grant user --help'.
   To login into the console, open https://console-openshift-console.apps.rk-hajimeteno1.a2wo.p1.openshiftapps.com and click on github.
[rkanamor@rkanamor-pc ~]$

Github側の設定もありましたが、とても簡単にできました。
これでGithubアカウントでもOpenShiftにログインできるし友達がいれば一緒に開発できそうですね!

さて。
OpenShiftクラスターにログインしてみます。せっかくローカルユーザ作ったので先ずはローカルユーザで。

$ oc login https://api.rk-hajimeteno1.a2wo.p1.openshiftapps.com:6443 --username cluster-admin --password XXXXXXXXXXXXXXXXXX
Login successful.

You have access to 89 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".
Welcome! See 'oc help' to get started.
$
$ oc whoami
cluster-admin

問題なさそうです。 ノードがちゃんと実行されてるかを見てみます。

$ oc get nodes
NAME                                              STATUS   ROLES          AGE   VERSION
ip-10-0-132-170.ap-northeast-1.compute.internal   Ready    master         57m   v1.21.1+9807387
ip-10-0-132-93.ap-northeast-1.compute.internal    Ready    infra,worker   22m   v1.21.1+9807387
ip-10-0-134-150.ap-northeast-1.compute.internal   Ready    worker         49m   v1.21.1+9807387
ip-10-0-172-57.ap-northeast-1.compute.internal    Ready    worker         50m   v1.21.1+9807387
ip-10-0-185-234.ap-northeast-1.compute.internal   Ready    master         58m   v1.21.1+9807387
ip-10-0-190-20.ap-northeast-1.compute.internal    Ready    infra,worker   22m   v1.21.1+9807387
ip-10-0-199-143.ap-northeast-1.compute.internal   Ready    master         58m   v1.21.1+9807387
ip-10-0-199-97.ap-northeast-1.compute.internal    Ready    worker         50m   v1.21.1+9807387
ip-10-0-213-113.ap-northeast-1.compute.internal   Ready    infra,worker   22m   v1.21.1+9807387
$

無事にMaster3, Infra3, Worker3の合計9Nodeがインストールされ立ち上がっていました。

このあと、GithubアカウントでちゃんとOpenShiftのWebコンソールにログインして、なにかしようかな〜と思ったのですが、今回クラスターをデプロイした理由は「ROSAクラスタのマルチAZデプロイ時にどんなリソースが使われるのかを実際見てみたい」だったことを思い出しました。
つまり僕にはクラスターをデプロイする以外にやりたいことは特に無かったのです。

そのことに気がついて、OpenShiftの開発者画面をそっと閉じました。
くれぐれも皆さんはOpenShiftなどをご利用の際には「なにかをデプロイすることを目的」にすることなく、「なにを実現させたいのか」を考えた上で行動してくださいね。
IPAのDX白書にもそんな文言があったみたいです。

さて。
デプロイは終わったのでこの後1日ほど気絶しました。

で、いくらかかりました?

ここからは結果を見てみましょう。

マネジメントコンソールのbilling画面で丸一日稼働していた結果を抜き出してみました。

f:id:canalroy:20211014164013p:plain
$120弱。消費税別っぽい。
EC2と周辺料金で88%くらい、ROSA(Red Hat OpenShift Service on AWS)の料金が10%前後となっています。

今回の算出ではほぼ割引などが無い状況かつマルチAZ構成でおよそ$120かかりました。
一年だと$43,800程度からスタートと言えるかと思います。
(ディスカウントを考慮しませんでしたが、一方で実運用時に発生するアプリケーションのトラフィックや監視のためにCloudWatch利用分、AWSさんのサポート費用も含まれていないことに注意してください。 )

結論。

Q.マルチAZなROSAクラスタにいくらかかるの?
Ans. 今回は実測一日 $120くらいでした。
一月だと$3,600くらい、一年だと単純に365倍で$43,800くらいかかりそうです。 (あくまで目安です)
前述の補足事項にも注意しながら参考になれば幸いです。

せっかくなので、詳細な請求書もせっかくなので文末に貼っておきます。
(1.5日程度放置していた結果なので、こちらの請求書では$238となっています。)

最後に。
シングルAZ構成と今回のマルチAZ構成の違いは以下のような点が挙げられます。

  • 最小構成のノード数が2ノード違う(Single AZではMaster3, Infra2, Worker2の合計7ノードに対し、Multi AZ構成では3つのAZにMaster, Infra, Workerが1ノードずつすべて3ノードで構成され合計9ノードが最小で必要になります)
  • マルチAZなので、当然AZ間の通信が発生する。何もしてないOpenShiftクラスターでもetcdがAZ間を元気にやりとりしてたと思われる。

構成の違いについては他のメンバーによるブログ記事でも解説されておりますのでこちらもご確認ください。 前述のようにEC2の料金が支配的ですので細かく計算する意味はあまりないかもしれませんが、ついでにAZ間通信がどの程度発生したのかを見てみます。

クラスタ削除前に確認したところ、AWSさんの請求書に記載されたAZ間通信はその時点で645GB程度発生していました。

f:id:canalroy:20211014172245p:plain
AWSさんからの請求書から切り抜き。

構築時のトラフィックもあるため正確さにかけるかもしれませんが、構築後放置した1日に絞ると約$5の通信料でした。
月額ではおよそ$150程度と言えそうです。

f:id:canalroy:20211014171216p:plain
表示を切り替えてZone間通信をハイライトしています

いずれにしてもマルチAZを選択したから費用が増えたというよりも、最小構成では必要なEC2が2ノード違うという方が大きな違いと言えそうです。

ROSAを利用することで、AWSの柔軟なリソースとOpenShift上の様々なサービスを利用でき、Red Hatの深いサポートを得られるということがユーザさんにとっても良い選択肢になるといいなと思っています。

ROSAのデプロイだけでなく、色々なOSSで構成された各種サービスや開発体験を体験頂けると嬉しいです。
その中でもし未知の問題や課題と出会った際には、Red Hatの知見を活用いただき、Red HatがどのようにOSSコミュニティと協働しながらそれらの課題を乗り越えていくのかも観測してもらえると嬉しいです!



最後に、今回検証した9月の全ての請求書をこちらに置いておきます。
デプロイされた期間は全体では2日弱ですので、$238の請求になっています。
何かの参考になれば幸いです。
(おしまい)



(ここから宣伝)

もっと知りたいんだが?という人はぜひ10/20に開催されるRed Hat Forumへご参加ください。 www.redhat.com 参加するとTシャツやバッグが貰えたり、トレーニングの割引など色々あるみたいですよ・・・!


OpenShiftとkubernetesは何がちがうの?何が含まれてるの?が気になった人はこちらをどうぞ www.redhat.com


Red Hatのサポートは何をしてくれるの?が気になった人はこちら


とりあえず触りたいんだけど?という人はこちら


OpenShiftを使ってみんな何をしているの?なにが変わるの?というひとはこちら


OpenShiftの最新アップデート情報はYoutubeでも配信してます www.youtube.com

(宣伝おしまい)

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。