Azure Pipelines で Azure Container Apps Preview にデプロイしてみる


Ignite 2021 で発表があった Azure Container Apps Preview に Azure Pipelines を使って早速デプロイしてみようという記事です。まだ Preview なので、参考までに。

今回は Azure Pipelines で Azure CLI を使ってデプロイしています。 Preview が終わるころまでには Azure Pipelines のタスクも出来ていると思いたいです。

ちなみに Azure Portal を見ると Continuous deployment メニューがあって、恐らく Azure Container Registry 経由で継続的なデプロイが出来るようになると思います。ただ、タイミングが悪かったのか Start ボタンが Enabled にならず上手く使えなかったのと、 Azure CLI でこれらの設定が見つからなかったため、この記事では書いていないです。 Azure Container Registry 経由のデプロイなら Web app for Container と似たような形になると思うので、慣れているなら少し待ってこっちを試したほうが楽なはずです。

前提条件

  • Azure Container Apps Preview のリソースが作成されていること

Quickstart: Deploy your first container app | Microsoft Docs

正常にリソースが作成されると containerapps-helloworld イメージの、この画面が表示されます。

Azure Pipelines でデプロイ

この YAML 定義を使って Azure Pipelines を動かします。
まだ ubuntu-latest に Azure CLI の Azure Container Apps extension がないため、それをインストールしてから az containerapp update を使って Azure Container Apps へ新しいイメージをデプロイします。
この例では docker/getting-started のイメージファイルをデプロイしています。イメージは Docker Hub から取ってくるようです。

pool:
  vmImage: ubuntu-latest

steps:
- script: |
    az extension add \
      --source https://workerappscliextension.blob.core.windows.net/azure-cli-extension/containerapp-0.2.0-py2.py3-none-any.whl \
      --yes

- task: AzureCLI@2
  inputs:
    azureSubscription: '<YOUR_SERVICE_CONNECTION>'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      az containerapp update -n my-container-app -g my-containerapps \
          --image docker/getting-started

デプロイされると containerapps-helloworld から、この画面に変わります。

Azure CLI のコマンドについて

困ったときは --help しましょう。

$ az containerapp --help

# Group
#     az containerapp : Commands to manage Containerapps.
#         This command group is in preview and under development. Reference and support levels:
#         https://aka.ms/CLI_refstatus
# Subgroups:
#     env           : Commands to manage Containerapps environments.
#     github-action
#     revision      : Commands to manage a Containerapp's revision.

# Commands:
#     create        : Create a Containerapp.
#     delete        : Delete a Containerapp.
#     list          : List Containerapps.
#     scale
#     show          : Show details of a Containerapp.
#     update        : Update a Containerapp.