マルチオーケストレーションの運用が楽になるCloud Orchestrator
DOCOMO Innovations, Inc.が開発しているOSS製品 Cloud Orchestrator について紹介します。Cloud OrchestratorはAWS、OpenStack、Kubernetes(AWS EKS含む)などの複数のクラスタを統合して管理できるダッシュボードWebアプリケーションです。Cloud Orchestratorならではの特徴的な機能の紹介と、有効な使い方について考えてみます。
テクノロジーコラム
- 2022年04月13日公開
はじめに
NTTテクノクロス株式会社の三井です。DOCOMO Innovations, Inc.が開発しているOSS製品 Cloud Orchestrator について、ご紹介し、その可能性について考えてみたいと思います。
オーケストレーター
近年、アプリケーションの実行環境を仮想化するDocker に代表される「コンテナ」技術の使用が増えています。コンテナ技術のメリットについては、すでに多くの記事があるため、「コンテナ技術 メリット」で検索して参照してください。
コンテナ技術を最大限に活かすポイントのひとつが「オーケストレーション」と言われています。 オーケストレーションとは、複数のコンテナを統合して運用・開発・管理するための技術です。コンテナ一つを管理するのであればオーケストレーターは不要ですが、複数のコンテナで構成されたサービスや、大量のコンテナを管理する場合には、オーケストレーターの存在は必須といえます。 コンテナオーケストレーターの代表が、Kubernetes になります。
クラウドオーケストレーターの位置付け
Cloud Orchestratorは、オーケストレーターのさらに上位に位置するオーケストレーターになります。
コンテナオーケストレーターが一つのKubernetesクラスタを管理するならば、Cloud Orchestratorは複数のKubernetesクラスタを一つのダッシュボードで管理することができます。Cloud Orchestratorで管理できるクラスタをクラウドサービスプロバイダと呼んでいます。現在、接続可能はクラウドサービスプロバイダは、Kubernetesのほかに、AWS 、OpenStack、VMware Cloud、Terraform Cloud です。
Cloud Orchestratorを簡単に紹介
Cloud Orchestratorがどのようなものか知るために、AWS、Kubernetesとの接続を簡単に紹介します。
AWSクラウドサービスプロバイダ
次の図は、Cloud OrchestratorのAWSのダッシュボード画面です。上部の世界地図には、Cloud Orchestratorに接続されているクラウドサービスプロバイダの位置が表示されます。AWSの場合は、リージョンが一つのクラウドサービスプロバイダとしてCloud Orchestratorに登録されます。地図の下に表示される「AWS Resources」ではCloud Orchestratorに接続されるすべてリージョンのリソースを一覧することができます。
あらかじめ条件を指定しておくことで、無駄に稼働しているリソースがないかをチェックすることができます。
EC2インスタンス
- 長期に亘って稼働しているもの
- 使用率が低いもの
Elastic IP
- 使用されていないもの
Elastic Block Store (EBS)
- どのインスタンスにもアタッチされていないボリューム
- ボリュームに関連付けされていないスナップショット
- 古くなったスナップショット
クラウドサービスプロバイダを選択することで、リージョン内のAWSリソースを管理することができます。 次の画面は、AWSリージョンの管理画面で、上の赤枠に管理できるAWSリソースが表示されます。管理対象は、EC2、VPC関連に限られますが、複数のAWSアカウントのリソース管理も同じダッシュボードから、クラウドサービスプロバイダを切り換えるだけで、リソース管理できるのはCloud Orchestratorの利点といえます。
Kubernetes クラウドサービスプロバイダ
Kubernetes 接続も、AWSと同じように世界地図表示や全リソース状況を一覧することができます。 それに加えて、次の図のように、クラスタノードの使用状況(CPUやメモリ、Pod数)や、Podの稼働状況を可視化して表示することができます。
Cloud Orchestratorが提供する機能
Cloud Orchestratorは、最新版であるバージョン4.0.0が2022年2月にリリースされています。
Cloud Orchestratorで利用可能な機能は、クラウドサービスプロバイダごとに異なります。AWS、OpenStack、EKS、Kubernetesに関して、提供機能を次の表にまとめます。
Cloud Orchestratorの使いどころ
Cloud Orchestratorは、クラウドサービスプロバイダの機能をすべて使えるわけではありません。よって、クラウドサービスプロバイダの機能をフルに使いたい、あるいはクラウドサービスプロバイダ自体を使うことが目的の場合は、たとえば直接AWSのマネジメントコンソールを使用するほうがよいでしょう。
そうではなく、クラウドサービスプロバイダネイティブのWebコンソールを使う必要がない、あるいは複数のクラウドサービスプロバイダを同時に管理したい場合には、Cloud Orchestratorによる管理・運用のほうがメリットがある場合もあるでしょう。
上で紹介したCloud Orchestratorの機能のうち、クラウドサービスプロバイダ側にはない独自性のあるものは次のとおりです。
この中から、Cloud Orchestratorが持つ特に重要な機能について、紹介します。
リソース管理の一元化
Cloud Orchestratorに複数のクラウドサービスプロバイダを統合することで、AWS、OpenStack、Kubernetesごとに、全リソースの稼働状況を一覧することができます。 また、クラウドサービスプロバイダごとのリソース管理は、Cloud Orchestratorのダッシュボード上で切り換えるだけで済みます。
権限管理の一元化
Cloud Orchestratorは、Drupal というコンテンツマネジメントシステムにクラウド管理機能を機能拡張しています。Drupal自体が提供する高機能なユーザー管理、権限管理を利用することで、Cloud Orchestratorはロール定義やきめこまやかな権限設定を行うことができます。
言い換えると、クラウドサービスプロバイダ側でのユーザー管理や権限管理は不要で、すべてCloud Orchestrator側で統一的に制御することで、管理をシンプル化することができます。
下記の図は、ユーザーと権限のマッピングの例です。認証済みユーザー(Aさん)は各リソースの参照権限を持ち、運用者ユーザー(Bさん)はさらにリソースの起動・停止権限を持ちます。管理者(Cさん)はすべてのリソースの全権限を持ちます。
また、権限を制限することで、利用者のダッシュボードも必要な機能のみ表示されるように変化します。利用者に対し、必要最小限の機能を提供するカスタマイズされたダッシュボードを提供することが自動的にできることを意味します。
承認ワークフローに基づくリソース作成
EC2インスタンスを作成する場合を考えます。利用者自身にリソース作成をまかせると、非常に高額なインスタンスタイプを選択したり、セキュリティの甘い設定だったりすることが、事後に判明することがあります。 そこで、Cloud Orchestratorでは、利用者は「起動テンプレート」にインスタンスをどのような設定で起動したいのかを記載して、承認者に承認を求めるワークフロー機能を持っています。「起動テンプレート」に不備があれば、承認者は申請を差し戻し、OKであれば承認します。利用者は、承認済みの「起動テンプレート」を使ってインスタンスを起動することができます。
Cloud Orchestratorのユースケース
以上で紹介したCloud Orchestratorの強みを活かすユースケースを考えてみます。
ユースケース1
想定するユーザー
- クラウド基盤の運用者
ユースケース
複数のAWSアカウントを管理し、EC2インスタンスの利用状況を監視する。使用されていないリソースが検知されれば、利用者に要否を確認する。
オンプレで動作するKubernetesと、AWS EKS(AWSのマネージドKubernetesサービス)の複数のクラスタを運用・監視する。新しいジョブを実行する際、リソースに余裕のあるクラスタを確認し、ジョブを投入する。
複数のクラスタを管理・運用する場合でも、Cloud Orchestratorを使うことで、一つのダッシュボード上から利用状況の把握や操作を行うことができます。
ユースケース2
想定するユーザー
- EC2をユーザーに自己管理させたい管理者
ユースケース
- 受講生はEC2上でLinuxのハンズオン研修を実施する。受講生は「起動テンプレート」を編集し、自身のssh鍵を設定して、講師に「起動テンプレート」の承認を依頼する。承認後は、受講生はインスタンスを作成し、起動・停止は自身で実施する。
- 開発者はEC2上でプログラムの開発、テストを実施する。開発者は「起動テンプレート」を編集し、HTTPSとsshを自社からのみ許可するセキュリティグループを設定し、プロジェクトリーダに承認を依頼する。承認後は、開発者はインスタンスを作成し、起動・停止は自身で実施する。
リソースの操作(起動、停止)はエンドユーザに委任しつつ、管理者は適切なセキュリティとコストの中で利用することを「起動テンプレート」の承認ワークフローでチェックすることで担保できます。
まとめ
DOCOMO Innovations, Inc.が開発しているOSS製品 Cloud Orchestrator について紹介しました。 AWS、OpenStack、Kubernetes(AWS EKS含む)などの複数のクラスタを統合して管理できるダッシュボードWebアプリケーションです。Cloud Orchestratorの持つ独自機能を活用することで、業務に密着したWebコンソールを提供し、利用者、運用者の利便性を向上させられる可能性を感じられるOSS製品です。
弊社では、OpenStackやOpenShiftを適用したプライベートクラウド基盤、AWSなどのパブリッククラウド基盤上の案件を多く扱っており、マルチクラウドを利用する機会はますます増えてくると想定されます。マルチクラウド時代の運用効率化にCloud Orchestratorは活用できるのではないかと考えています。
今後、ユースケースについて検証した結果を紹介したいと思います。
Cloud Orchestratorは、無料で利用できるOSS製品です。興味を持った方は「付録:コミュニティ情報」を参照して、ぜひ使ってみてください。案件のご相談は、こちらからご連絡ください。
付録:コミュニティ情報
- Cloud Orchestrator \| Cloud Orchestrator プロジェクトページ
- Cloud Orchestrator - YouTube Cloud Orchestrator YouTube チャンネル
- Cloud \| Drupal.org クラウド管理機能を提供するDrupal Cloud モジュールページ
- project / cloud · GitLab 上記のGitリポジトリ
- Cloud Orchestrator \| Drupal.org Drupal ディストリビューションページ(Cloud モジュールを中心に、ツールとして利用できるようにパッケージ化したもの)
- project / cloud_orchestrator · GitLab 上記のGitリポジトリ
- クラウドオーケストレーターーのはじめかた - Qiita プロジェクトリーダによる解説記事
- クラウドオーケストレーターーで AWS を管理しよう - Qiita プロジェクトリーダによる解説記事
メガクラウドチームのマネージャーをやっています。仕事柄、休みにはAWS認定資格の勉強もしているのですが、話を聞いてくれた中学生の娘が、私のAWSの資格を取りたいと言ってくれました。うれしいような、どこから手をつければ悩ましいような。