【Let's ハンズオン🤙】node.jsで作成したアプリをAKSでデプロイ❗️【Azure Kubernetes Service】
【Let's ハンズオン🤙】node.jsで作成したアプリをAKSでデプロイ❗️【Azure Kubernetes Service】
目次
- Docker imageを作成
- Azure Container Instanceへpush
- yamlファイルを準備
- AKSを準備
- AKSへデプロイ
Docker imageを作成
今回はローカルで作成したDocker imageを使用致しますので、以下の記事でExpress.jsで作成されたアプリをDocker イメージ化してください!
【Let's ハンズオン🤙】node.jsをDocker化してDocker run❗️【Express.js】
Azure Container Instanceへpush
続いて、Azureポータルの画面からAzureContainerService(以下、ACR)を作成します。
ざっくりACRを説明するとコンテナイメージを置いておく倉庫みたいなところと思ってくれればOKです。
Azureポータルの検索エリアに[コンテナーレジストリ]と入力すると、出てくるかと思います。
コンテナーレジストリをクリックし、[作成]をクリックです!
リソースグループ・リージョン・場所は任意の値でOKです。
SKUはStandardにしておきましょう!
後はデフォルトで作成をクリックです。
ACRができましたか?
まずは、Dockerイメージがちゃんとできていることを確認です。
docker images
こんな感じに表示されましたか?
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sampleapp v1 21ad6769ce90 1 days ago 923MB
上記のようにいい感じにACRが作成されたら、Dockerイメージにtagをつけます。
docker tag sampleapp:v1 [acrのログインサーバーに記載されているurl]/sampleapp:v1
ログインサーバに記載されているurlは[acrの名前].azurecr.ioとなっているものです!
tag付けができたらやっちゃいましょう。
docker pushコマンドでACRへpushです!
docker push [acrのログインサーバーに記載されているurl]/sampleapp:v1
Azureポータルへ戻り、ACR→サービスのリポジトリの箇所にこんな感じでpushされていれば最高です!
ここまでで、ACRへ作成したDockerイメージが格納された形になりました😎
yamlファイルを準備
次はいよいよデプロイ...!と行きたいところですが、デプロイの設定ファイルであるyamlファイルを作成する必要があります。
作成したnode.jsのアプリをエディタで開き、ルート階層へ以下のyamlファイルを追加してください。
- deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sampleapp
spec:
replicas: 1
selector:
matchLabels:
app: sampleapp
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: sampleapp
spec:
nodeSelector:
'kubernetes.io/os': linux
containers:
- name: webapp
image: [ACRに配置したDockerイメージを配置:v1も忘れずに。]
ports:
- containerPort: 8080
resources:
requests:
cpu: 250m
limits:
cpu: 500m
---
apiVersion: v1
kind: Service
metadata:
name: express-load-balancer
labels:
run: express-load-balancer
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
protocol: TCP
selector:
app: sampleapp
作成できましたか?
AKSを準備
Azureポータルを開き、検索エリアへ[aks]と入力してみてください。
Azure Kubernetes Service(以下、AKS)の表示が出てくるはずです。
クリックし、AKSを作成しちゃってください!
Kubernetes クラスターの作成です。
リソースグループは任意を値を、クラスタープリセット構成はDev/TestでOKです。
後はデフォルトの設定でOK
AKSが作成されましたか?
AKSへデプロイ
さぁ、ここまでくれば後はデプロイを残すのみです!
初回の人は以下を実施です。
az aks install-cli
そして、ACRへログインしておきましょう。
az acr login --name [ACR名]
次はkubectl を使用し、クラスターへの接続します。
以下のコマンドを実行です。
az aks get-credentials --resource-group [リソースグループ名] --name [AKS名]
上記がでてきたら、以下のコマンドを実行してみてください。
kubectl get nodes
以下の様な感じになりましたか?
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-37463671-vmss000000 Ready agent 2m37s v1.18.10
いい感じにnodeが作成されていたら、以下コマンドでyamlファイルを使ってデプロイです!
kubectl apply -f deploy.yaml
AKS上にデプロイされたアプリを確認してみましょう。
サービスとイングレスの箇所から、ロードバランサーのIPアドレスをコピーし、お好みのブラウザへ貼り付けて結果をみてみましょう!
Expressのデフォルトの画面が確認できましたか?
ここまでくればデプロイ完了です!
お疲れ様でした!
ps. AKSはつけっぱなしだと意外と値段するので、しっかり停止しておいてね。
Discussion