皆様こんにちは、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 などを管理する形です。
提供する機能は以下の通りです。
・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 で行います。手順は以下の通りです。
- ACM を構成するプロジェクトを作成する
- OpenShift Cluster Manager 内の Pull Secret 情報含むシークレットを作成する
- Operator で ACM をデプロイする
- Operator の中で、2のシークレットを指定し、Hub Cluster を構築する
では順にやっていきましょう。まずはプロジェクトの作成です。これは簡単ですね。♪
ここでは、acm
というプロジェクト名にしています。
次に、シークレットの作成を行います。この作成には、ご自身の OpenShift Cluster Manager のPull Secretを使います。この辺りから Copy Pull Secret
をクリックし、クリップボードにコピーしておいてください。
Pull Secret のクリップボードへのコピーが終わったら、上部の Project で acm
が選択されている事を確認して、Workloads
→ Secrets
から、Create のプルダウンで、Image Pull Secret
を選択。
Image Pull Secret 作成画面で、適当に名前を入力(ここでは、acm-secret
)し、Authentication Type
で、Upload Configuration File
を選択。 Configuration File
の欄に、先ほどコピーした Pull Secret
を貼り付けて、Create
ボタンをクリックします。
次は、Operator のデプロイです。ACM は沢山の Pod から構成されますが、Operator を使うことにより簡単に構築が出来ます。
Operators
→ OperatorHub
から、Advanced Cluster Management for Kubernetes
を選択します。
ACM のインストール画面となりますので、Install
をクリックします。
次ちょっと注意です。 Installed Namespace
のところ、デフォルトでは open-cluster-management
が選択されていると思いますので、Pick an existing namespace
を選択し、acm
プロジェクトを選択の上 Install
をクリックします。
数分待つと、Status
が Succeeded
となり、ACM Operator のデプロイが完了します。
次は、Hub Cluster の作成です。左にある、Advanced Cluster Management for Kubernetes
をクリックします。
MultiClusterHub
を選択して、Create MultiClusterHub
をクリックします。
Hub Cluster の作成画面で、YAML View をクリックし、spec: {}
のところを以下のように編集し、Create
をクリックします。
apiVersion: operators.open-cluster-management.io/v1beta1 kind: MultiClusterHub metadata: name: acm namespace: <namespace> spec: imagePullSecret: acm-secret
Status
が Phase: Running
なれば完了です。10分ほどかかります。状況が気になる方は、Workloads
→ Pods
で Pod デプロイの状況を見てみてください。ACM 関連の Pod を見る事が出来ます。この一連のPod のデプロイが全て完了すると、Hub Cluster の構築完了です!
Hub Cluster の構築が終わると、ACM アプリケーション UI へのルートが自動的に作成されますので、 Networking
→ Routes
→ Location
をクリックして接続してみます。アカウント情報の入力画面では、OCP と同じユーザー名/Password が利用で可能です。
この画面が出てくれば成功です!!うまく行きましたか?
次はいよいよ ACM を使って AWS 環境に OpenShift をデプロイしてみます。♪
3. ACM から AWS 上に OCP 環境をデプロイし管理する
ACM を使って、AWS 上に OCP クラスタを作成してみましょう。
ACM のホーム画面で、Go to Clusters
をクリックします。
Add cluster
をクリックし、Create a cluster
を選択します。
Cluster 作成画面が現れます。各パラメータの意味は以下の通りです。
Cluster name
:このマネージドクラスターに名前を付けます
Distribution
: Amazon Web Servicesを選択します
※ 2020年 8月24日時点、OCP 4.5 では AWS、GCP、Azure がサポート対象となっています。
Release image
:デプロイする OpenShift のバージョンを選択します。特に問題なければ最新版を選択しましょう。
最初のデプロイの際は、AWS への接続情報を登録する必要があります。Add connection
をクリックします。
AWS に OpenSfhit 環境を作成するために必要なパラメータが表示されます。各パラメーターの意味は以下の通りです。
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
をクリックします。
Status
が Creating
状態になって、作成中であることが分かります。あとは待つだけです。♬
約30くらいで AWS 環境への OpenShift 環境構築が完了します。完了すると ACM 上では、以下の通り Ready となります。
OpenShift UI ログインのためのアカウント情報も記載されていますので、確認の上ログインしてみてください。
既に、Upgrade available になってますね。(^^)
Upgrade available をクリックすると、以下の様な画面が現れて、こちらからバージョンを指定して OpenShift のバージョンアップが可能です。
まとめ
さて、Advanced Cluster Management for Kubernetes による AWS 環境への OpenShift の簡単構築、如何でしたでしょうか。お楽しみいただけましたでしょうか?♬ ACM はアプリケーションのデプロイやコンプライアンス管理なども出来るのですが、今回は ACM 自体の構築と、ACM を使った OpenShift の AWS 環境への新規構築方法に関してご説明しました。こんなに簡単に OpenShift が新規構築できるなんて面白いですよね。
この ACM、マルチ K8s 管理という意味で凄く期待を抱かせる統合管理アプリケーションだと思います。
今後とも目が離せない ACM 是非ご期待ください!