SE(しがないエンジニア)のブログ

IT技術ネタ(クラウド・セキュリティ周り)が中心です!他雑記(お馬さん 他いろいろ)もあり。

Kubernetes(AKS)をやさしく学ぶ旅 その3

ちょっとグダってました・・・・。

3連休、PC周りに触れたかったのですがなんだかんだでグダってしまい、寝落ちを3連発してました・・・・かろうじて日曜日、お昼に下記のイベントに参加したのですが、ブログにアウトプットできる程の文字起こしができなさそうなので頭の中にこっそりしまっておきます。笑

everyone-cyber-security.connpass.com

*イベントとしては多角的なセキュリティのLTを聞けたので楽しかったです!

話は変わり Kubernetes の本題に(~アプリケーションの実行まで)

どんな切り口でAKSに入ればよいだろうとウロウロしていると下記のサイトを発見しました。

Azure Kubernetes Service (AKS) のドキュメント - チュートリアル、API リファレンス | Microsoft Docs

まずは、「5分間のクイック スタート」部分にて。今回は「Azure Portal」を利用することにします。(スクリーンショットは細かいものではなくざっくりとです)

f:id:btsn:20190918001634j:plain

まずは AKS クラスター の作成です。

f:id:btsn:20190918002517j:plain

説明に沿ってこんな感じで作成します。ひとまず、ノードサイズはテスト的なものなので「Standard B2s」のお安いものにしました。ノード数も今回は「1」で。その後に「次: スケール > 」を押下します。「スケール」ではそのままを維持して「次: 認証 > 」を押下します。

f:id:btsn:20190918003004j:plain

「認証」はこんな感じで。(表示された設定のまま)

f:id:btsn:20190918003430j:plain

f:id:btsn:20190918004611j:plain

以降の設定もそのまま進んで検証に成功するとクラスターを作成できます。デプロイが開始して私の環境では10分程かかりました。ちなみに、AKSの利用料金に関しては下記を参照下さいませ。

価格 - Container Service | Microsoft Azure

f:id:btsn:20190918005004j:plain

リソース移動後の詳細はこんな感じです。ここからはクラスターへの接続を行いますが、Azure Cloud Shell を利用します。

f:id:btsn:20190918005603j:plain

ポータル画面上部の検索ボックス右にある中のアイコンをクリックします。

f:id:btsn:20190918005638j:plain

私の場合は初回利用だったこともあり、ストレージアカウントの作成を求められました。

f:id:btsn:20190918005822j:plain

完了するとこんな感じです。ここからが実践になります。kubectlを構成するには「az aks get-credentials」コマンドを使用します。リソースグループ「resgr」の私の環境下では下記のコマンドです。

az aks get-credentials --resource-group resgr --name myAKSCluster

「Merged ~~」のようなメッセージがリターンされればOKです。その後にクラスターへの接続を確認する際は「kubectl get nodes」を入力します。

Azure:/
Merged "myAKSCluster" as current context in /home/xxxxxxxx/.kube/configr
Azure:/
NAME                       STATUS   ROLES   AGE   VERSION
aks-agentpool-19xxxx23-0   Ready    agent   24m   v1.13.10
Azure:/

 このような感じで入力したコマンドはクリアされ、リターンの結果表示されます。ここまででクラスターへの接続確認が取れたので続いてアプリケーションの実行を行います。接続確認が取れたパスにて説明の通りYAMLファイルを作成します。作成後は「kubectl apply」コマンドを使用してアプリケーションをデプロイします。

viで作成したファイル名 ➡ azure-vote.yaml

実行コマンド ➡ kubectl apply -f azure-vote.yaml

deployment.apps/azure-vote-back created.yaml
service/azure-vote-back created
deployment.apps/azure-vote-front created
service/azure-vote-front created

アプリケーションの実行後は Kubernets サービスにとって(サンプル)アプリケーション フロント エンドがインターネットに公開される形になります。状況監視は下記のコマンドで確認可能です。(Ctrl + C にてブレイク可能)

kubectl get service azure-vote-front --watch
Azure:/
NAME               TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.243.139   52.243.36.91   80:32401/TCP   6m45s

*本来は「EXTERNAL-IP」部分は Pending から遷移します

「EXTERNAL-IP」が開放され、自PCのブラウザで確認してみると?

f:id:btsn:20190918012257j:plain

デプロイされたアプリケーションが表示されます!勿論、ボタンを押下してカウントされ、リセットも動作します。

おまけ(Azure Monitor での正常性の監視とログ)

前述のクラスター作成時にコンテナーに対する Azure Monitor が有効になっている状態です。監視機能に関しては説明を確認する限りでは AKS クラスターとクラスター上で動作するポッドの両方の正常性メトリックを提供してくれるとのことです。ちなみに、クラスターやポッドの概念に関しては既に上げている記事を振り返り下さいませ。

www.btsn.xyz

f:id:btsn:20190918014502j:plain

こんな感じの その1 です。

f:id:btsn:20190918013545j:plain

こんな感じの その2 です。

f:id:btsn:20190918013706j:plain

こんな感じの その3 です。

f:id:btsn:20190918014954j:plain

f:id:btsn:20190918015023j:plain

「azure-vote-front」コンテナーに対するログを確認したい場合は上記のような形で確認可能です。と、色々と閲覧することが可能です。

ちなみに、今回サクッとアプリケーションがデプロイできたのは既に準備されたコンテナー イメージを利用した為です。YAMLファイルでそれを指定しており、サクッとできたように見えただけです。笑

今回の「KubernetesAKS)をやさしく学ぶ旅 その3」では感覚を掴む為に前述リンクのクイックスタートを利用しました。次回以降はステップバイステップに進みつつ、その先は応用にスライドしていければイイな、と思います。

忘れずに検証のクラスターは削除!

今回の検証したクラスターはクラスターこそ課金対象ではないものの付随する各種リソースが課金対象の為、忘れずに削除するようにします。(自環境では10分少々で削除されました)

az aks delete --resource-group resgr myAKSCluster --no-wait
Azure:/
PS Azure:\> az aks delete --resource-group resgr --name myAKSCluster --no-wait
Are you sure you want to perform this operation? (y/n): y
Azure:/
PS Azure:\>

*関連するすべてのリソースも削除されます

 ご利用は計画的に・・・・。

追記(Appendix)

2019/09/22

この記事のあとに「その4」と「その5」を上げたのですが、ステップバイステップの手順「4」で詰まってしまった為、混乱の元となるので記事は 2019/09/22 2:20 頃におろしました。「その4」に☆を付けて下さった皆様、申し訳ありません・・・・。

f:id:btsn:20190921232332j:plain

「その4」の Appendix にも記載したのですが、クラスター作成時に「--node-vm-size」オプションを付加しないと割と良いVMになってしまうようで。私の場合は1日放置してお布施が跳ね上がりました。泣

結果、詰まった上にお布施だけ払う結果になってしまいました!(また、別の形で検証はしようと思います。。)