AKS の自動デプロイ機能で生成される GitHub Actions コードを見てみた
AKS にて、自動デプロイ設定がプレビュー提供されています。
ドキュメントを確認する限り、ポチポチやるだけでイメージビルド~デプロイの GitHub Actions がサクッと構成できるみたいですね。
下記のドキュメント (自分で GitHub Actions を構成する際のもの) との差も少し気になったので、試してみました。
環境・準備
- Azure Kubernetes Service (v1.22.6)
- Azure Vote リポジトリ (fork しておきます)
やってみた
AKS の左ペインにある「自動デプロイ」から構成します。手順としては、冒頭のドキュメントの通りに実施すれば、特に迷うことは無いかと。
今回は構成される GitHub Actions を確認してみたいだけなので、ある程度エイヤで設定していきますw
Azure Portal 側での作業が一通りできると、GitHub 側にプルリクエストが作成されますので、承認すれば OK です。間違えて fork 元リポジトリにプルリクを上げないように注意しましょう。
なお、GitHub Actions のコードを確認するだけなら承認の必要も無いです。
作成された GitHub Actions コードの確認
GitHub 下記のようなコードが生成されました。
name: aks-autodeploy-test-1
"on":
push:
branches:
- master
workflow_dispatch: {}
env:
ACR_RESOURCE_GROUP: <リソースグループ名>
AZURE_CONTAINER_REGISTRY: <コンテナレジストリ名>
CLUSTER_NAME: <AKS クラスタ名>
CLUSTER_RESOURCE_GROUP: <リソースグループ名>
CONTAINER_NAME: vote001
DEPLOYMENT_MANIFEST_PATH: |
./azure-vote-all-in-one-redis.yaml
jobs:
buildImage:
permissions:
contents: read
id-token: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1.4.3
name: Azure login
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
- name: Build and push image to ACR
run: az acr build --image ${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.ACR_RESOURCE_GROUP }} -f ./azure-vote/Dockerfile ./
deploy:
permissions:
actions: read
contents: read
id-token: write
runs-on: ubuntu-latest
needs:
- buildImage
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1.4.3
name: Azure login
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
- uses: azure/aks-set-context@v3
name: Get K8s context
with:
cluster-name: ${{ env.CLUSTER_NAME }}
resource-group: ${{ env.CLUSTER_RESOURCE_GROUP }}
- uses: Azure/k8s-deploy@v4
name: Deploys application
with:
action: deploy
images: ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }}
manifests: ${{ env.DEPLOYMENT_MANIFEST_PATH }}
namespace: namespace-workflow-1661177743344
buildImage
ジョブでイメージをビルドし、deploy
ジョブで対象の Kubernetes (AKS) にデプロイしていますね。自分で構成する際のドキュメントと比較すると、だいたい同じですがジョブが分割されているので多少分かりやすくなっています。
認証情報などは GitHub Actions の secret を構成してくれています。当たり前品質の箇所ではありますが、嬉しい自動化。
まとめ
ということで、予想通りではありますがポチポチっとするだけで GitHub Actions によるデプロイ自動化の構成が簡単にできました。
コードのリポジトリ内に Kubernetes マニフェストまで一式揃えてデプロイまで一気通貫するので、GitOps (コードリポジトリとマニフェストのリポジトリは分けたり) まで視野に入っている場合は少し注意が必要そうです。
自動化チャレンジの取っ掛かりとか、テスト環境等で時間をかけずに構成したい場合には良さそうですね!
Discussion