LinuCエヴァンジェリストの鯨井貴博@opensourcetechです。
はじめに
今回は、Qiita Advent Calendar2022のAzureの23日目として、
Microsoft Azureで初めてのAKS(Azure Kubernetes Service)を使ってみます!
https://qiita.com/advent-calendar/2022/azure
AKSとは?
Microsoft Azure上で利用できるKubernetesのマネージドサービスです。
※kubernetes環境を用意してくれるので、利用者はアプリケーションのデプロイすればいいだけというものです。
https://azure.microsoft.com/ja-jp/free/
アカウントを持っていない方は、まず登録からはじめましょう!
kubernetes環境の構築
メニューの中にKubernetesサービスとあるので、そこからまずkubernetes環境の構築をします。
作成 → kubernetesクラスターの作成 と進めばOKです。
ちょっとだけ補足すると、
"Azure Arcにkubernetesクラスターを追加"は、 Azure Arc(様々なkubernetesクラスターやサービスを一元的に管理できる役割)にkubernetesクラスターを追加するものです。
https://learn.microsoft.com/ja-jp/azure/azure-arc/overview
また、Azure Arcに対応したkubernetesクラスターは、以下から確認出来ます。
https://learn.microsoft.com/ja-jp/azure/azure-arc/kubernetes/overview
・リソースグループの新規作成 ※そのままですがリソースを管理するグループです
・クラスターのプリセット構成 ※今回はとりあえず使えればいいのでDev/Testとしました
・クラスター名 ※使うことができる文字列の中ですきに付ければOkです
・kubernetesクラスターのバージョン ※今回は、既定の1.24.6としました
・ノード数の範囲:1 ※シングルノードにMasterとWorkerの機能を持たせています
その他は、基本的には変更なしです。
※ネットワークポリシーを、calicoに変更
そして、確認および作成とすれば、作成可能か検証が行われます。
その後、kubernetsクラスターが作成されます。
今回の場合、約5分で構築完了しました。
Kubernetesクラスターへの接続
手元のWindows PCから接続してみます。
接続にはaz-cli(azコマンド)を使うので、まずそれをインストールします。
以下からMSIファイルを取得してインストールします。
https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli-windows?tabs=azure-cli
すると、azコマンドがコマンドプロンプトから利用可能になります。
続いて、コマンドプロンプトにてaz loginとしてAzureへログインします。
※ブラウザが起動するので、そこでログインすればOKです。
そして、以下のコマンドでkubernetesクラスターに接続します。
az aks get-credentials --resource-group test_kubernetes --name MyAzureFirstCluster
※接続認証に使うファイル.configはここに置いたぞってメッセージが出ます。
kubectlコマンドを使えるようにする
続いて、kubectlコマンドを利用可能にします。
az aks install-cliと実行し、表示される内容に従って環境変数PATHにパスを追加します。
kuectlコマンドの確認
kubectlが実行できるか確認します。
・kubectl get nodes ※ノードの確認
・kubectl get deployment ※デプロイメントの確認
・kubectl get ns ※名前空間の確認
など好きなものを実行すればOKです。
C:\>kubectl get nodes NAME STATUS ROLES AGE VERSION aks-agentpool-12323657-vmss000000 Ready agent 57m v1.24.6 C:\>kubectl get deployments --all-namespaces NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE calico-system calico-kube-controllers 1/1 1 1 56m calico-system calico-typha 1/1 1 1 56m kube-system coredns 2/2 2 2 57m kube-system coredns-autoscaler 1/1 1 1 57m kube-system konnectivity-agent 2/2 2 2 57m kube-system metrics-server 2/2 2 2 57m tigera-operator tigera-operator 1/1 1 1 57m C:\>kubectl get ns NAME STATUS AGE calico-system Active 57m default Active 58m kube-node-lease Active 58m kube-public Active 58m kube-system Active 58m tigera-operator Active 57m
Webアプリケーション(nginx)のデプロイと公開
名前空間webの作成、deployment(nginx)のデプロイ、kubectl exposeを使ったサービス公開をしました。
C:\>kubectl create ns web namespace/web created C:\>kubectl get ns NAME STATUS AGE calico-system Active 58m default Active 58m kube-node-lease Active 58m kube-public Active 58m kube-system Active 58m tigera-operator Active 58m web Active 2s C:\>kubectl create deployment deploy-nginx --image=nginx:latest --replicas=2 -n web deployment.apps/deploy-nginx created C:\>kubectl get deploy,rs,pods -n web NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/deploy-nginx 2/2 2 2 24s NAME DESIRED CURRENT READY AGE replicaset.apps/deploy-nginx-6fc7884949 2 2 2 24s NAME READY STATUS RESTARTS AGE pod/deploy-nginx-6fc7884949-s8lhl 1/1 Running 0 25s pod/deploy-nginx-6fc7884949-wtmnn 1/1 Running 0 25s C:\>kubectl get pods -n web -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES deploy-nginx-6fc7884949-s8lhl 1/1 Running 0 2m20s 10.244.0.14 aks-agentpool-12323657-vmss000000 <none> <none> deploy-nginx-6fc7884949-wtmnn 1/1 Running 0 2m20s 10.244.0.13 aks-agentpool-12323657-vmss000000 <none> <none> C:\>kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 62m C:\>kubectl expose deployment deploy-nginx -n web --type=LoadBalancer --port 80 service/deploy-nginx exposed C:\>kubectl get svc -n web NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE deploy-nginx LoadBalancer 10.0.16.36 20.242.130.126 80:32100/TCP 10s
Azureの管理画面上でも同様のものを確認出来ます。
そして、サービス公開(kubectl expose)して表示されたグローバルIPアドレス(今回の場合、20.242.130.126)にアクセスすると、Webアプリ(nginx)が応答するコンテンツが表示されました。
おわりに
初めてAKS使ってみましたが、構築が簡単なのはいいですね!
なお、AKSでは簡単にkubernetesクラスターを作ることが出来ますが、
構築時の各種パラメータを設計する際にはクラスター環境の知識が必要になるので
一度OSインストールからkubernetesクラスターを作ってみて理解を深めるのがいいと感じました。
以前kubernetesクラスターを構築した記事があるので、よければどうぞ!
https://www.opensourcetech.tokyo/entry/20220215/1644853476