前回の記事までは、AKS クラスターの作成を行い、AKS アプリケーションをデプロイする下準備をしました。今回の記事では、いよいよ AKS アプリケーションをデプロイ、実行してきます。
アプリケーションのデプロイの基本的な流れは、3段階です。
①マニュフェストファイルの作成
②クラスターでのリソース作成
③アプリケーションの動作確認
この手順に従ってアプリケーションをデプロイしていきます。
マニュフェストファイルの作成
前回の記事までに Git したものをそのまま使用します、チュートリアルコードが Chap03 の中にあります。ただし、Azure Container Registry の値が異なりますので、自分が作成した正しい値に置き換えます。
ちなみに Azure CLI からでも、該当のディレクトリで、code .
をすることでオンラインで編集することが可能です。とても便利ですね!! マニュフェストファイルの中身は以下の様になっています。
# A. 基本項目
apiVersion: apps/v1
kind: Deployment
metadata:
name: photoview-deployment
# B. Deploymentのスペック
spec:
replicas: 5 # レプリカ数
selector:
matchLabels:
app: photo-view # テンプレートの検索条件
# C. Podのテンプレート
template:
metadata:
labels:
app: photo-view
env: stage
spec:
containers:
- image: XXXXXXXXXXXXXX.azurecr.io/photo-view:v1.0 # コンテナイメージの場所
name: photoview-container # コンテナ名
ports:
- containerPort: 80 # ポート番号
また、Kubernetes 上で動作させた Pod にクライアントからアクセスさせるためにサービスファイルも定義します。
# A. 基本項目
apiVersion: v1
kind: Service
metadata:
name: webserver
# B. Serviceのスペック
spec:
type: LoadBalancer
ports: # ポート番号
- port: 80
targetPort: 80
protocol: TCP
# C. Podの条件(ラベル)
selector:
app: photo-view
この二つを作成することで、マニュフェストファイルの準備は完了しました。
クラスターでのリソース作成
作成したマニュフェストファイルをデプロイする前に基本コマンドでクラスター内の Node の状態を確認します。
miyasaka@Azure:~/Understanding-K8s/chap03$ kubectl get node
NAME STATUS ROLES AGE VERSION
aks-nodepool1-XXXXXXXX-vmss000000 Ready agent 3h53m v1.13.12
aks-nodepool1-XXXXXXXX-vmss000001 Ready agent 3h53m v1.13.12
aks-nodepool1-XXXXXXXX-vmss000002 Ready agent 3h53m v1.13.12
以下コマンドを実行して、作成したマニュフェストファイルをクラスターに送ります。
$kubectl apply -f tutorial-deployment.yaml
$kubectl apply -f tutorial-service.yaml
マニュフェストファイルを送ったあとで、get コマンドを実行すると以下の様に返ってきます。
yasaka@Azure:~/Understanding-K8s/chap03$ kubectl get pod
NAME READY STATUS RESTARTS AGE
photoview-deployment-XXXXXXXXXX-cdq9n 0/1 ErrImagePull 0 26m
photoview-deployment-XXXXXXXXXX-dgxt9 0/1 ImagePullBackOff 0 26m
photoview-deployment-XXXXXXXXXX-g2fpr 0/1 ImagePullBackOff 0 26m
photoview-deployment-XXXXXXXXXX-gf7t8 0/1 ImagePullBackOff 0 26m
photoview-deployment-XXXXXXXXXX-m9wzp 0/1 ErrImagePull 0 26m
アプリケーションの動作確認
ここまででクラスターリソースが出来ているので、あとはクラスターにデプロイしたアプリケーションに割り振られたアドレスを確認します。
$kubetcl get svc
miyasaka@Azure:~/Understanding-K8s/chap03$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 12m
webserver LoadBalancer 10.0.XXX.XXX XX.XXX.XXX.XX 80:31869/TCP 4m30s
これで EXTERNAL-IP に割り振られたアドレスを確認することが出来ます。このアドレスにクライアント PC のブラウザからアクセスすることで、無事にサンプル web アプリケーションにアクセスすることが可能です。
※ <Pending Status>
が想像以上に長かったので気長に待ちましょう!
これで無事最初のデプロイが完了しました!!
参考
チュートリアル:Azure Kubernetes Service (AKS) でのアプリケーションの実行
https://docs.microsoft.com/ja-jp/azure/aks/tutorial-kubernetes-deploy-application