Alibaba Cloud Container Service触ってみた

#導入
Alibaba CloudにはAlibaba Cloud Container Serviceというクラウドコンテナ群を管理できるサービスがあります。Alibaba Cloud　ECS上のインスタンスの分散クラスター上にあるDockerアプリケーションを効率的に行うことができます。本記事では、このAlibaba Cloud Container Serviceを利用して、機能・操作性を試してみたいと思います。


##Containerとは？Dockerとは？
Alibaba Cloud Container Serviceを利用する前に、その要素技術となっているContainer（コンテナ）技術及びDockerについて触れておきます。

コンテナ技術とは、Containerの名前の通り、「容器、空間」を提供します。何の空間かというと、アプリケーションの隔離された空間を提供します。

コンテナ技術と比較して、これまでの単一物理基盤、仮想化技術による並列処理が比較対象となることが多いと思います。
コンテナ技術の有用性を理解するうえで、これらと比較をすることが一番理解につながると思います。

物理基盤は、1つの物理基盤に1つのOSが起動する形です。
仮想化技術は、ホストOS上にハイパーバイザーが存在し、その上のゲストOSを管理することで、一台のマシンで複数の物理基盤を「仮想的に」動作させることができます。
いずれも、１つのアプリケーションを動作させる上でサービス・ランタイムが各々発生します。

<img width="960" alt="00_仮想化.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/b7aa5ff9-fa07-ff44-53dd-cfb57696d443.jpeg">

対して、コンテナ技術を用いると、ホストOS上にはハイパーバイザを持たず、ホストOS内にサービス用コンテナ、管理用コンテナのみを持ちます。

アプリケーションやランタイムはその上で動作するので、コンテナ環境は仮想化技術を用いたハイパーバイザ型の環境に比べて、オーバーヘッドが少ないため、コンテナの起動・停止・動作の並列処理が非常に高速である点がメリットであると言えます。

これがコンテナ技術の概要となります。

次にDockerです。Dockerはコンテナ技術を実現するうえで、現在主流といってもよいオープンソースソフトウェアです。

特徴として、
　・名前空間の隔離機能
　　（ファイルシステムやコンピュータ名、ユーザー名（ユーザーID）、グループ名（グループID）、プロセスID、ネットワーク機能）
　・リソースの隔離機能
　　（CPUやメモリ、ディスク入出力）
　・検証環境から本番環境への差分なし移行
　　（動作環境をまったく変更なしにアプリケーションコンテナのみを移行可能なため）

これらを持ちます。

##Alibaba Cloud Container Service を実際に触ってみる

###クラスターの作成

それでは、実際に利用をしてみましょう。
まずはAlibaba Cloudにログインして、ホーム画面表示後、「Container Service」をクリックします。

<img width="959" alt="01_container選択.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/9bb280f0-d4ed-f1c3-1167-5a85eff705b0.jpeg">

ログイン後、Containerb Service上のコンソール画面が表示されます。この画面から今後作成したコンテナサービス群を管理していくこととなります。

この記事では、コンテナの要素サービスを立ち上げ、試しに一つアプリケーションを構築するところまでを実施してみたいと思います。

<img width="959" alt="02_コンソール.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/b227d412-3eb8-d99c-f2f5-731bed1bc81c.jpeg">

画面左上の「コンテナーサービス」というタイトルの下に、タブで「kubernetes」と「swarm」と選択できますが、ここでは「swarm」のほうを選択してください。

簡単に言うとKubernetesはdockerと同じくコンテナ技術を構成するうえでの一要素技術ではあるのですが、ここでは詳しい説明は割愛したいと思います。

クラスターの作成をクリックします。

すると「クラスターの作成」という画面に遷移しますので、必要なパラメータを入力していきます。
クラスター名は「test」としました。
リージョン、ゾーンは任意の場所に作成できますので、ご自分でお選びください。
ネットワークタイプですが、ご自分でクラスターを作成するゾーンと同じゾーンにVPCを別途作成しておき、それを選択します。

VPCの作り方についてはチュートリアルや他のブログを参考にしてください。
選択が終わったらスクロールします。

<img width="960" alt="03_クラスター作成1.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/b70f2835-8f04-93dc-2b3c-88b8f374fe50.jpeg">

以下は機能検証の段階ではデフォルト値から変更の必要はないので、このままさらにスクロールします。変えたい項目があれば、選択後変更するとよいかと思います。

<img width="959" alt="04_クラスター作成2.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/89353a75-47c1-0d46-d836-21fdffa95c38.jpeg">

以下の画面で、「ログイン」の選択でキーペア　or　パスワードの選択が可能です。
私は楽なのでキーペアを選択し、パスワードを入力しました。
デフォルトではキーペアでした。セキュリティ的にも本当に運用する際にはキーペア認証にすることをお勧めします。
あと、私は検証の利便性のためにEIPを選択しておきました。
選択後スクロールします。

<img width="959" alt="05_クラスター作成3.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/c99936a0-b93b-1448-8ea6-4a58bfac4b93.jpeg">

最後の画面も特にデフォルトから変更をしませんでした。
上の画面右上の「クラスターの作成」をクリックします。

<img width="959" alt="06_クラスター作成4.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/903c3638-f57b-272e-6527-31b68d0c6ccf.jpeg">

今までの設定の確認画面が表示されます。
上記の申し込みにおいてECS×２、ロードバランサ×１、EIP×１、セキュリティグループ×１が作成されます。これらに問題なければOKをクリックします。

<img width="958" alt="07_くらすた確認画面.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/e189a714-965f-c341-74e0-06fd970c116b.jpeg">

正常に実行されると、「リクエストは送信されました」という記述とともに以下の画面が表示されます。画面下、実行結果のログがリアルタイムに表示されます。
おおよそ作成完了には５分から１０分ほどかかります。


<img width="960" alt="08_クラスタ実行中.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/6bb13d59-c204-5174-babe-95dd6b77e095.jpeg">

作成が完了すると、「クラスターが正常に作成されました」と表示されます。

<img width="958" alt="09_クラスタ作成完了.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/03129588-65d6-b815-7128-8d25e64100e7.jpeg">

※※注意※※
この先、RAMを有効化していないとエラーが表示されますので、以下の「RAMを有効にする」を押して有効化しておいてください。

<img width="537" alt="10_ram有効化.png" src="https://qiita-image-store.s3.amazonaws.com/0/255826/aee39420-cf2b-50c6-dbc5-c9f7ebefb5e6.png">

###アプリケーションのデプロイ
ここではチュートリアルに案内のあったwordpressをデプロイしてみます。

まず画面左帯の「イメージとテンプレート」の中の「オーケストレーションリスト」をクリックします。（この画面キャプチャでは枠が足りなくて見えていませんが）
そうするとおそらく利用頻度の高いアプリケーション（gitlabやjenkins）などがリスト表示されます。
ここではwordpressの右の「アプリケーションの作成」をクリックします。

<img width="960" alt="11_オーケストレーションリスト.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/926a0678-cc11-8719-83b5-76f2ba54bf49.jpeg">

「基本情報」の項目に遷移します。
Wordpress-defaultという名前でアプリケーションの作成画面となっています。
先ほど作成した「test」のクラスターが設定されています。
他のクラスター上に作成したい場合はプルダウン選択してください。今回は一つしか作っていないので、「test」上に作成したいと思います。確認後、右下の「次」をクリックします。

<img width="960" alt="12_wordpressデプロイ.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/c32f62e8-920c-29f7-7618-30ea4e5a5b30.jpeg">

「構成」という画面に遷移します。
作成されるアプリケーションのコードが表示されます。なかなかコードが表示されるクラウドサービスはない気がするので驚きました。
右側には作成されるサービスが表示されています。Wordpressの基本画面を構成する「web」と、実際のデータを格納する「db」が作成されるはずです。
問題なければ「作成とデプロイ」をクリックします。

<img width="960" alt="13_wordpressデプロイ2.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/da698e00-b1d1-2e87-cbbd-04d92d15d3d1.jpeg">

その後、「完了」という画面に遷移します。
「アプリケーションを作成中、ほかのページで操作を実行できます。」とのことなので、作成中でも他作業可能のようです。

<img width="960" alt="13_wordpressデプロイ3.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/255826/bccf481e-2efb-d753-eea0-66ef3dab8969.jpeg">

デプロイ完了後、wordpress－defaultの画面から「web」をクリックし、アクセスポイントをクリックするとwordpressの言語選択画面が表示されます。

<img width="371" alt="14_deploy完了後.png" src="https://qiita-image-store.s3.amazonaws.com/0/255826/0f31e9c0-b307-3730-f205-a96c8fbc2cec.png">

#まとめ 
Alibaba cloud container service上でクラスター、ノードの作成およびwordpressのデプロイをしてみました。
一点驚いたのは、今までkubernetesとswarmを選択できるタブがなかったと思うのですが、執筆中に追加されていました。Alibaba cloudの更新の早さに驚かされます。（AzureやAWSなど、他ITジャイアントのサービスもそうですが、特にユーザへの周知もなく新機能や画面の構成変更はガンガン行われている感じですね笑）
特に操作に困ることもなく、わかりやすいUIだったと思います。時間があればjenkinsなど、ほかのアプリケーションも試してみたいと思います。

引用
以下のサイトから、図などを引用させていただきました。

コンテナ技術の基礎知識
https://thinkit.co.jp/story/2015/08/11/6285