こんにちは。
コンサルティング & テクノロジー部の
Azure チームの吾郷です。
Advent Calender「
ネクストスケープ クラウド事業本部 Advent Calendar 2017」 23日目の記事です。
もうすぐゴールが近づいてきましたね。
今回は、今まで気になっていたけど触ることができていなかった、Azure Container Services(AKS)を触ってみました。
まぁー、チュートリアルをやった程度なので、
個人のブログに書けばいいじゃんって言われちゃうくらいの内容ですが、
最後までお付き合いいただけるとありがたいです。

Azure Container Service(AKS) について
Microsoft Azure のコンテナーサービスには、
・Azure Container Service
・Azure Container Service(AKS)
と、2種類があります。今回は、AKSの方です。
Azure Container Service の方は、オーケストレーターに、
・DC/OS
・Swarm
・Kubernetes
が利用できる、コンテナサービスです。
1年半くらい前に試したときは、Virtual Machine Scale Sets を下回りにリソースプールを構成して、その上にコンテナクラスタを構築しているサービスでしたが、今はなかなかいい感じにまとまってる感じですね。
Azure Container Service(AKS)は、Managed Kubernetes コンテナー オーケストレーター サービスです。もちろん選択できるオーケストレーターは、Kubernetes
だけですね。
Azure Container ServiceでオーケストレーターをKubernetes にした場合と Azure Container Service(AKS) を比較した場合、マスターの課金の扱いが違うのと SLA の有無が一番大きな違いのようです。
あとは、作成されるリソースが全然違います。
[Azure Container Service で作成した場合]

[Azure Container Service(AKS)で作成した場合]

試してみたよ
ここのチュートリアルを参考に、K8Sクラスターを作成しサンプルアプリをデプロイしました。
ついでに、Log Analytics につないで監視の設定もやってみました。
K8Sクラスタの作成
参考にしたのは、以下のチュートリアルです。
■
Azure Container Service (AKS) クラスターのデプロイ
事前準備として、
・
SSHキー
・
サービスプリンシパル
が必要になります。
これらを準備したら、あとはポータルからポチポチするだけでとっても簡単です。
まずは、新規作成から「Azure Conainer Service - AKS」を選択します。

Conteiner name と、Kubernetes のバージョン、リソースグループ、リージョンを設定します。
リソースグループは、サービスプリンシパルの所の手順ですでに作成しているはずです。

SSH キーはすでに作成しているものを、Service principal Client ID とService proncipal client ID は、サービスプリンシパルの作成したものを設定します。

ここまで来たら、「OK」をクリックするだけです。

サンプルアプリのデプロイ
サンプルアプリのデプロイです。
チュートリアルにある、YAML をコピーしてymlファイルを作成します。
それを、[kubectl create -f]でデプロイして、
[kubectl get service --watch]で起動を確認しているという感じです。

起動したら、EXTERNAL-IP に割り当てられたIPをブラウザで開くと、こんな感じのアプリに繋がります。

監視の設定
Azure Log Analytics を利用して、Azure Container Services(AKS)の監視を行うことができます。
ポータルからポチポチするだけなので、とっても簡単にできますよ。
参考にしたチュートリアルは、次のものです。
■
Azure Container Service (AKS) の監視
まずは、新規で、「Container Monitoring Solution」を選びます。
あとは、OMS Workspacesを作りまる。(あるものを選択してもいいんですけど)

で、あとは、[Create]を押します。

できたら、詳細設定の「Connected Sources」→「Linux Serviers」と開いて、ID と PRIMARY KEY をコピっておきます

で、またチュートリアルにあるYAMLをつかいます。
このときに、前の手順でコピった ID と Key を使います。
ymlファイルを作ったら、「kubectl create -f」 で設定を流し込みます。

しばらくすると、こんな感じでログを見ることができます。

まとめ
個人的には、Azure では、App Services がとても大好きです。
PaaS で運用していると、パッチの更新とかセキュリティ対策がとっても楽ですもんね。
でも、環境的なことや様々な要因で、PaaS を選択できない場合に、
コンテナという選択肢がでてくることも少なくないと思います。
これが、少し前までは、VM を使ったリソースプールというのを意識せざるを得なかったのが、だいぶ緩和されてきていると思います。
Azure Container Service(AKS)は、とても素晴らしいサービスだと思いますので、私ももっと使って知見を貯めたいと思います。
(貯めたらどっかでOutputしまーす。)
ただ、一点だけ言わせて頂けると、名前がとってもわかりにくい
・Azure Container Service
・Azure Container Service(AKS)
結果的にこの二つって別のサービスですよ。
MS さんどうにかしてください~w