Kubernetes(AKS)をやさしく学ぶ旅 その3
ちょっとグダってました・・・・。
3連休、PC周りに触れたかったのですがなんだかんだでグダってしまい、寝落ちを3連発してました・・・・かろうじて日曜日、お昼に下記のイベントに参加したのですが、ブログにアウトプットできる程の文字起こしができなさそうなので頭の中にこっそりしまっておきます。笑
everyone-cyber-security.connpass.com
*イベントとしては多角的なセキュリティのLTを聞けたので楽しかったです!
話は変わり Kubernetes の本題に(~アプリケーションの実行まで)
どんな切り口でAKSに入ればよいだろうとウロウロしていると下記のサイトを発見しました。
Azure Kubernetes Service (AKS) のドキュメント - チュートリアル、API リファレンス | Microsoft Docs
まずは、「5分間のクイック スタート」部分にて。今回は「Azure Portal」を利用することにします。(スクリーンショットは細かいものではなくざっくりとです)
説明に沿ってこんな感じで作成します。ひとまず、ノードサイズはテスト的なものなので「Standard B2s」のお安いものにしました。ノード数も今回は「1」で。その後に「次: スケール > 」を押下します。「スケール」ではそのままを維持して「次: 認証 > 」を押下します。
「認証」はこんな感じで。(表示された設定のまま)
以降の設定もそのまま進んで検証に成功するとクラスターを作成できます。デプロイが開始して私の環境では10分程かかりました。ちなみに、AKSの利用料金に関しては下記を参照下さいませ。
価格 - Container Service | Microsoft Azure
リソース移動後の詳細はこんな感じです。ここからはクラスターへの接続を行いますが、Azure Cloud Shell を利用します。
ポータル画面上部の検索ボックス右にある中のアイコンをクリックします。
私の場合は初回利用だったこともあり、ストレージアカウントの作成を求められました。
完了するとこんな感じです。ここからが実践になります。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のブラウザで確認してみると?
デプロイされたアプリケーションが表示されます!勿論、ボタンを押下してカウントされ、リセットも動作します。
おまけ(Azure Monitor での正常性の監視とログ)
前述のクラスター作成時にコンテナーに対する Azure Monitor が有効になっている状態です。監視機能に関しては説明を確認する限りでは AKS クラスターとクラスター上で動作するポッドの両方の正常性メトリックを提供してくれるとのことです。ちなみに、クラスターやポッドの概念に関しては既に上げている記事を振り返り下さいませ。
こんな感じの その1 です。
こんな感じの その2 です。
こんな感じの その3 です。
「azure-vote-front」コンテナーに対するログを確認したい場合は上記のような形で確認可能です。と、色々と閲覧することが可能です。
ちなみに、今回サクッとアプリケーションがデプロイできたのは既に準備されたコンテナー イメージを利用した為です。YAMLファイルでそれを指定しており、サクッとできたように見えただけです。笑
今回の「Kubernetes(AKS)をやさしく学ぶ旅 その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」に☆を付けて下さった皆様、申し訳ありません・・・・。
「その4」の Appendix にも記載したのですが、クラスター作成時に「--node-vm-size」オプションを付加しないと割と良いVMになってしまうようで。私の場合は1日放置してお布施が跳ね上がりました。泣
結果、詰まった上にお布施だけ払う結果になってしまいました!(また、別の形で検証はしようと思います。。)