はじめに
諸事情でGKEで動かしていたアプリケーションをAKSに移行しなければなくなったので、やりかたをまとめました。
せっかくなのでACRとも連携させます。
環境:Windows 10 Pro, 64bit
環境準備
- VS Codeインストール
- 別にVS Codeでなくてもいいんだけど、ms製品のほうが相性がよさそうな気がして
- VS Code
- VS Code 拡張機能のインストール
- Azure CLIコマンドのインストール(WSL Ubuntu)
- Azureサービスをコマンドから実行するためのツールをインストール
$ sudo apt-get install apt-transport-https lsb-release software-properties-common -y
$ AZ_REPO=$(lsb_release -cs)
$ echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | \
sudo tee /etc/apt/sources.list.d/azure-cli.list
$ curl -OL http://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb`
$ sudo apt update
$ sudo apt install azure-cli
参考:WSLでAzure CLIを試してみる
4. kubectlコマンドのインストール(WSL Ubuntu)
- バイナリをダウンロードして保存して環境変数に追加する
$ sudo apt-get update && sudo apt-get install -y apt-transport-https
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo touch /etc/apt/sources.list.d/kubernetes.list
$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee --a /etc/apt/sources.list.d/kubernetes.list
$ sudo apt-get update
$ sudo apt-get install -y kubectl
- バージョン確認
$ kubectl version
Azure Container Registryを使ったコンテナイメージのビルドと公開
- ACR名設定
$ ACR_NAME=sampleYuxzuxRepositry
- ACR名チェック
- ACR名は世界でユニークじゃないといけないのでチェックする
$ az acr check-name -n $ACR_NAME
- リソースグループ名設定
$ ACR_RES_GROUP=$ACR_NAME
- リソースグループ作成
$ az group create --resource-group $ACR_RES_GROUP --location japaneast
- ACRレジストリ作成
$ az acr create --resource-group $ACR_RES_GROUP --name $ACR_NAME --sku Standard --location japaneast
- イメージのビルド
$ az acr build --registry $ACR_NAME --image yuxzux:v1.0 .
- イメージの確認
$ az acr repository show-tags -n $ACR_NAME --repository yuxzux
- ACR_IDを取得して環境変数に設定
$ ACR_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
- サービスプリンシパル名の設定
$ SP_NAME="sample-acr-service-principal"
- サービスプリンシパルの作成
$ SP_PASSWD=$(az ad sp create-for-rbac --name $SP_NAME --role Reader --scopes $ACR_ID --query password --output tsv)
- サービスプリンシパルのIDをAPP_IDに設定
$ APP_ID=$(az ad sp show --id http://$SP_NAME --query appId --output tsv)
- 確認
$ echo $APP_ID
$ echo $SP_PASSWD
Azure Kubernetes Serviceを使ったクラスター作成
- クラスターの作成
$ AKS_CLUSTER_NAME=YuxzuxCluster
- クラスターを作成するリソースグループの設定
$ AKS_RES_GROUP=$AKS_CLUSTER_NAME
- リソースグループの作成
$ az group create --resource-group $AKS_RES_GROUP --location japaneast
- クラスターの作成(Cloud Shell)
$ az aks create \
--name $AKS_CLUSTER_NAME \
--resource-group $AKS_RES_GROUP \
--node-count 3 \
--node-vm-size Standard_DS1_v2 \
--generate-ssh-keys \
--service-principal $APP_ID \
--client-secret $SP_PASSWD
- 認証情報の取得
$ az aks get-credentials --admin --resource-group $AKS_RES_GROUP --name $AKS_CLUSTER_NAME
以上。kubectlコマンドでいろいろできます。