はじめに
こんばんは、ACS事業部の吉川です。
Microsoft Build開幕から一晩経ち、発表されたアップデート内容を追いかけている方も多いと思います。
以下の記事でコンテナ系サービスのアップデートを簡単に紹介しましたが、その中の一つ Azure Container Apps Jobs を少し掘り下げてご紹介します。
これまでのAzure Container Apps
Azure Container Apps は昨年のBuildでGAされたサービスです。Kubernetesの複雑な部分を上手く隠蔽し、非常に使いやすいコンテナサービスとなっています。
これまでのAzure Container Appsは、常に起動しているタイプのコンテナを対象としていました。KEDAによって0スケールできるとはいえ、それはあくまで外部から停止されるもの。処理終了後にコンテナ自身が終了するというタイプのものには対応していませんでした。基本的には常時稼働し続けるサーバープロセスが前提となります。Kubernetesでいう Deployment リソースのみに対応しているイメージです。
今回のアップデートにより、新たにジョブコンテナが実行できるようになりました。コンテナが起動後一定の処理を実行し、完了したらコンテナが終了するというタイプです。Kubernetesでいう Job リソースのイメージです。
よりワークロードに合った形でコンテナを動かすことができるようになった、と捉えればよいのかなと思います。
3つのトリガー
ジョブの実行トリガーとして、以下の3種に対応しています。
- 手動起動
- スケジュール起動
- KEDAによるイベント起動
手動起動は文字通り実行タイミングで人間がコマンド実行して起動するものです。
スケジュール起動はcron形式で設定したスケジュールに合わせジョブが起動します。
KEDAのイベント起動は、KEDAがサポートするイベントによってジョブが起動されます。イベントの一覧はコチラを参照するといいでしょう。
KEDAによるイベント起動については以下のスライドが参考になると思います。
このスライドの9ページあたりに記載がある ScaledJob がContainer Apps Jobsと同等のものと捉えてください。
作成してみる
発表されたばかりのプレビュー状態ということもあり、ポータルから作成することはできません。作成にはAzure CLIを利用しましょう。
公式のドキュメントに手順が記載されているので、これを参考にします。
スケジュール起動を例として作成してみましょう。毎時40分に起動する設定で作成します。
# リソース名などの定義 RG_NAME=rg-sample LOCATION=japaneast CAE_NAME=cae-sample JOB_NAME=caj-sample # リソースグループ作成 az group create --location $LOCATION --name $RG_NAME # Container Apps環境作成 az containerapp env create -n $CAE_NAME -g $RG_NAME -l $LOCATION # Container Apps Jobs作成 az containerapp job create \ -n $JOB_NAME -g $RG_NAME --environment $CAE_NAME \ --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \ --replica-timeout 60 --replica-retry-limit 1 --replica-completion-count 1 --parallelism 1 \ --trigger-type "Schedule" \ --cron-expression "40 * * * *"
前述のとおりポータルから作成することはできませんが、CLIで作成したものを表示することは可能です。
起動し終わった頃合いを見て、Execution history を見てましょう。ジョブの実行時間と成否が確認できます。
ここからジョブのログを見ることも可能です。View logs のリンクをクリックすると、Log Analyticsのクエリが実行され該当ジョブのログが表示されます。
通常のContainer Appsと違い、ジョブの実行管理に特化した画面となっているのがわかると思います。
プレビュー中の制約
まだ出たばかりということもあり、機能面でいくつかの制約があります。
前述の「ポータルからリソースを作成できない」というのもそうですが、それ以外に通常のContainer Appsでサポートされている以下の機能が未サポートです。
- ボリュームのマウント
- Init コンテナー
- Dapr
- シークレット内での Azure Key Vault の参照
- イングレスとカスタム ドメインや SSL 証明書などの関連機能
Container Appsの大きな特徴であるDaprに対応していないのは残念ですね。ジョブの中でデータベースやストレージなどのデータストアにアクセスしたいシーンはよくあるので、接続を抽象化できるDaprに対応するとより便利に使えそうです。同一Container Apps環境内にWebアプリとジョブを同居させた際にはDapr設定が共用できるのでよりシンプルになるでしょう。早期に対応してほしいものです。
おわりに
Azure Container Appsの利用シーンが広がるアップデートでした。機能の不足などBuildに合わせて突貫で準備した感もありますが、徐々にアップデートされていくでしょう。楽しみにウォッチしていきたいと思います。
【PR】
私達ACS事業部はAzure・AKSなどのクラウドネイティブ技術を活用した内製化のご支援をしております。
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。