OpenShift Advanced Cluster Management for Kubernetes (ACM) と AWS 環境への OpenShift の超簡単新規構築!!

皆様こんにちは、Red Hat ソリューションアーキテクトの岡野です。

私、ベースがインフラエンジニアでして、これまで Ansible のブログを沢山書いてきましたが、今回、ちょっと浮気して、OpenShift の注目の新機能、Advanced Cluster Management for Kubernetes (ACM)について書いてみたいと思います。というのも、これ凄く面白いんです。しかも、『インフラ視点』で。

クラウド環境への OpenShift のデプロイが超簡単。それをお伝えしたくて。インフラ管理者が喜ぶ機能だと思います。♬

※今回の Blog は OpenShift 4.5 及び、ACM 2.0 を前提としています。他のバージョンでは設定方法やUIが異なる可能性がありますのであらかじめご了承ください。また、環境構築方法も示していますが、とりあえず動くことを目指しており、本番環境で使うことは想定しておりません。基本的に、『面白いのでちょっと試してみる』という観点で書いています。その点ご了承ください。

今回のシナリオ
ACM も色々な機能があるのですが、今回はその中から、AWS環境への OpenShift の簡単構築をご紹介します。♪
以下、本ブログの項目となります。

1. ACM 概要
2. OpenShift 4.5 上に ACM を構築する
3. ACM から AWS 上に OpenShift 環境を新規にデプロイする

環境が準備できるようであれば、皆さんも実際にやってみてください。♪
必要なものは、ACM を構成するための OpenShift 環境と、新規に OpenShift をデプロイするための AWS 環境です。また、OpenShift の構築には、Red Hat のサブスクリプションを管理するカスタマーポータルのアカウントが必要となります。まだお持ちでない方は、こちらの Log in ボタンから新規アカウントを作成ください。

構築する場合の注意点として、ACM は関連する沢山の Pod をデプロイするため物凄くリソースを食います。特に、ワーカーノード側のリソース消費が激しいので、PoC だからと言ってリソースをケチるとPod のデプロイが出来ず、ACM の構築が完了しませんのでご注意ください。実は私、何度やってもうまくいかないのでおかしいなぁ・・・、と思っていたら、単にリソース不足でした。勿論マニュアルは読んで必要リソースは確認していたのですが、PoC だから大丈夫だろ、と思っていたら甘かったです。(^^)

ちなみに、私の環境は以下の通りです。

Master:8CPU 24GB Memory x 3台
Worker:8CPU 24GB Memory x 3台

それぞれ、4CPU / 16GB では構築が完了しませんでした・・・。必要なリソースに関してはこちらに記載がりますので、ご確認ください。また、ACM を使って OpenShift を新規構築する AWS 側も多くのリソースを消費しますので、 こちらは特に、費用面でご注意ください。高額請求となっても責任はとれません!

1. ACM について
ACM は複数の OpenShift や AKS / EKS / GKE / IKS など一括管理する事が出来るマルチ K8s 管理ツールです。
ACM 自体は、OpenShift 上で稼働するアプリケーションで、Hub Cluster を構成します。この Hub Cluster が、マネージドクラスターと呼ばれる管理対象の OpenShift や AKS / EKS / GKE / IKS などを管理する形です。

f:id:hokn5:20200827110454j:plain

提供する機能は以下の通りです。

・End-to-end visibility
・Cluster Lifecycle
・Application Lifecycle
・Governance, Risk and Compliance

ACM に登録された OpenShift クラスターの状態やPod の情報、Logなどを OpenShift のコンソールにアクセスすることなく、ACM 上から確認する事が出来ます。勿論各 OpenShift クラスターへのリンクもあるので、ACM から簡単に各 OpenShift UIへアクセスして、より細かい情報を取得することも可能です。また、アプリケーションを管理して管理下のマネージドクラスターにデプロイしたり、別途定義可能なコンプライアンスに準拠しているかどうかなども確認可能です。

マネージドクラスターの種類によって提供される機能が異なりますが、OpenShift であれば、ACM から AWS / Azure / GCP 環境への OpenShift クラスター自体の新規作成や削除、バージョン管理(アップデート)も可能です。その他のマネージド K8s は、作成されたものをマネージドクラスターとして登録する形をとります。勿論、ACM 以外で作成された OpenShift もマネージド K8s 同様事後登録することも可能です。

2. OCP 4.5 上に ACM を構築する
ACM は OpenShift 上で稼働するアプリケーションです。構築は Operator で行います。手順は以下の通りです。

  1. ACM を構成するプロジェクトを作成する
  2. OpenShift Cluster Manager 内の Pull Secret 情報含むシークレットを作成する
  3. Operator で ACM をデプロイする
  4. Operator の中で、2のシークレットを指定し、Hub Cluster を構築する

では順にやっていきましょう。まずはプロジェクトの作成です。これは簡単ですね。♪
ここでは、acm というプロジェクト名にしています。

f:id:hokn5:20200827114722j:plain

次に、シークレットの作成を行います。この作成には、ご自身の OpenShift Cluster Manager のPull Secretを使います。この辺りから Copy Pull Secret をクリックし、クリップボードにコピーしておいてください。

Pull Secret のクリップボードへのコピーが終わったら、上部の Project で acm が選択されている事を確認して、WorkloadsSecrets から、Create のプルダウンで、Image Pull Secret を選択。

f:id:hokn5:20200827115816j:plain

Image Pull Secret 作成画面で、適当に名前を入力(ここでは、acm-secret)し、Authentication Type で、Upload Configuration File を選択。 Configuration File の欄に、先ほどコピーした Pull Secret を貼り付けて、Create ボタンをクリックします。

f:id:hokn5:20200827132123j:plain

次は、Operator のデプロイです。ACM は沢山の Pod から構成されますが、Operator を使うことにより簡単に構築が出来ます。
OperatorsOperatorHub から、Advanced Cluster Management for Kubernetes を選択します。

f:id:hokn5:20200828155604j:plain

ACM のインストール画面となりますので、Install をクリックします。

f:id:hokn5:20200827131716j:plain

次ちょっと注意です。 Installed Namespace のところ、デフォルトでは open-cluster-management が選択されていると思いますので、Pick an existing namespace を選択し、acm プロジェクトを選択の上 Install をクリックします。

f:id:hokn5:20200828155321j:plain

数分待つと、StatusSucceeded となり、ACM Operator のデプロイが完了します。

次は、Hub Cluster の作成です。左にある、Advanced Cluster Management for Kubernetes をクリックします。

f:id:hokn5:20200827133047j:plain

MultiClusterHub を選択して、Create MultiClusterHub をクリックします。

f:id:hokn5:20200827133700j:plain

Hub Cluster の作成画面で、YAML View をクリックし、spec: {} のところを以下のように編集し、Create をクリックします。

apiVersion: operators.open-cluster-management.io/v1beta1
kind: MultiClusterHub
metadata:
  name: acm
  namespace: <namespace>
spec:
  imagePullSecret: acm-secret

f:id:hokn5:20200827134254j:plain

StatusPhase: Running なれば完了です。10分ほどかかります。状況が気になる方は、WorkloadsPods で Pod デプロイの状況を見てみてください。ACM 関連の Pod を見る事が出来ます。この一連のPod のデプロイが全て完了すると、Hub Cluster の構築完了です!

f:id:hokn5:20200827135319j:plain

Hub Cluster の構築が終わると、ACM アプリケーション UI へのルートが自動的に作成されますので、 NetworkingRoutesLocation をクリックして接続してみます。アカウント情報の入力画面では、OCP と同じユーザー名/Password が利用で可能です。

f:id:hokn5:20200824135621j:plain

この画面が出てくれば成功です!!うまく行きましたか?

f:id:hokn5:20200827162901j:plain

次はいよいよ ACM を使って AWS 環境に OpenShift をデプロイしてみます。♪

3. ACM から AWS 上に OCP 環境をデプロイし管理する
ACM を使って、AWS 上に OCP クラスタを作成してみましょう。

ACM のホーム画面で、Go to Clusters をクリックします。

Add cluster をクリックし、Create a cluster を選択します。

f:id:hokn5:20200824141626j:plain

Cluster 作成画面が現れます。各パラメータの意味は以下の通りです。

f:id:hokn5:20200827173350j:plain

Cluster name:このマネージドクラスターに名前を付けます
Distribution: Amazon Web Servicesを選択します
※ 2020年 8月24日時点、OCP 4.5 では AWS、GCP、Azure がサポート対象となっています。
Release image:デプロイする OpenShift のバージョンを選択します。特に問題なければ最新版を選択しましょう。

最初のデプロイの際は、AWS への接続情報を登録する必要があります。Add connection をクリックします。

AWS に OpenSfhit 環境を作成するために必要なパラメータが表示されます。各パラメーターの意味は以下の通りです。

f:id:hokn5:20200827175338j:plain

Connection name : この接続情報に対する単なる名前です。
Namespace : 1の ACM 作成の際、シークレットを作成したプロジェクト名を選択します。今回は、acm です。
Base DNS domain : AWS 上の OCP のベースドメイン名を入力します。
AWS Access Key ID : AWS に接続するためのアクセスキーを入力します。
AWS Secret Access Key ID : AWS に接続するためのシークレットキーを入力します。
Red Hat OpenShift Pull Secret : 自身の OpenShift Cluster Manager からPull Secret をダウンロードして中身を貼り付けます。
SSH Private Key : 作成する AWS 上のOCP クラスターにアクセスするための SSH プライベートキーの中身を貼り付けます。
SSH Public Key : 作成する AWS 上のOCP クラスターにアクセスするための SSH パブリックキーの中身を貼り付けます。

入力が完了したら、右上の Create をクリックします。

元の入力画面に戻るので、先ほど作成した接続情報 acm を選択し、必要に応じて、Node の情報(リージョン、ゾーン、インスタンスタイプ、ディスク容量、ワーカーノードの個数など)を変更し、右上の Create をクリックします。

f:id:hokn5:20200828095703j:plain

StatusCreating 状態になって、作成中であることが分かります。あとは待つだけです。♬
約30くらいで AWS 環境への OpenShift 環境構築が完了します。完了すると ACM 上では、以下の通り Ready となります。

f:id:hokn5:20200825095112j:plain

OpenShift UI ログインのためのアカウント情報も記載されていますので、確認の上ログインしてみてください。
既に、Upgrade available になってますね。(^^)

f:id:hokn5:20200828111207j:plain

Upgrade available をクリックすると、以下の様な画面が現れて、こちらからバージョンを指定して OpenShift のバージョンアップが可能です。

f:id:hokn5:20200828100655j:plain

まとめ
さて、Advanced Cluster Management for Kubernetes による AWS 環境への OpenShift の簡単構築、如何でしたでしょうか。お楽しみいただけましたでしょうか?♬ ACM はアプリケーションのデプロイやコンプライアンス管理なども出来るのですが、今回は ACM 自体の構築と、ACM を使った OpenShift の AWS 環境への新規構築方法に関してご説明しました。こんなに簡単に OpenShift が新規構築できるなんて面白いですよね。

この ACM、マルチ K8s 管理という意味で凄く期待を抱かせる統合管理アプリケーションだと思います。
今後とも目が離せない ACM 是非ご期待ください!

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