2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure Container Apps 触ってみた~環境準備編

Last updated at Posted at 2022-09-09

はじめに

Azure で一番簡単にコンテナオーケストレーションを実現する Azure Container Apps について、環境構築から、挙動確認、もろもろの測定を記事として残すためのシリーズです

この記事は環境構築の内容なので、ご興味のあるものがあればそちらのリンクをご確認ください

  • 事前環境準備 (※本記事の内容です)
  • レイテンシを測ってみた
  • ARM テンプレート化してみる(予定)
  • スケールの挙動を見てみる(予定)

Azure Container Apps って何さ?

乱暴にいうと、マネージドなAKS、です

  • k8s そのものや、下回りの仮想マシンなどの管理は不要
  • KEDA によるスケーリング(0スケール可能)
  • Envoy によるトラフィック制御
  • Dapr によるサービス連携など

あたりが大きな特徴ですね。AKS に比べると細かい部分の設定調整などはできませんが、ざっくり上記の代表的な動きができる便利サービスです。
あとはARMテンプレート/bicep で周辺系のサービス( DB など)含めて全部記載できるものメリットになるかなと。YAML 不要!

触ってみるために作る環境について

まずは下図のような Azure Container Apps 環境を作成していきます
今回は choi という通信をリレーするアプリケーションをコンテナとして 4つ使いたいと思います
choi はパブリックなコンテナとして、 shyamagu/choi:http を指定すれば構築できるのでこういう環境構築ではとても便利なソフトウェアです

Azure ポータル画面でポチポチで作る

せっかく ARM テンプレートとか使えるのに~という状況ですが、まずは画面 UI ベースでポチポチ作りたいと思います。
※2022/9/9 時点での画面ベースです。もしかすると見られたタイミング次第ではUIが変わっているかもしれません。

とりえあず最初に以下の赤枠の構成を作成してきます。

最初はコンテナーアプリを探してポチっ

コンテナーアプリの作成ボタンから、以下の情報をいれて、Container App #1 と、Container Apps Environment #1 あとは Log Analytics Workspace を作っていきます

プロジェクトの詳細

  • サブスクリプション: お使いのサブスクリプション
  • リソースグループ: "新規作成"から、rg-aca-test-20220909 とか適当に
  • コンテナーアプリ名: container-app-1

Container Apps 環境

  • 地域: Japan East (どこでもいいですけど)
  • Container Apps 環境: "新規作成"をポチっとして Container Apps 環境の作成へ

Conatiner Apps 環境の作成

  • 環境名: container-apps-environment-1
  • ゾーン冗長: 無効のままでOK

「監視」のタブを選択して、

  • Log Analytics ワークスペース: ここも"新規作成"をポチっとして
  • 名前: workspace-aca-test-20220909とか適当に

「ネットワーク」はそのままでいいので、画面左下のCreateを実行すると「コンテナーアプリの作成」画面に戻ります

コンテナーアプリの作成

次に「アプリ設定」のタブを選択、

  • クイックスタートイメージを使用する: 選択を外す

コンテナーの詳細

  • 名前: app1
  • イメージのソース: Docker Hub またはその他のレジストリ を選択
  • イメージの種類: パグリックのまま
  • レジストリログインサーバー: docker.ioのまま
  • イメージとタグ: shyamagu/choi:httpを指定
    (コマンドのオーバーライドとかCPUメモリとかはそのまま)
  • HTTPイングレス: 無効をクリックして、有効にする
  • イングレストラフィック: どこからでもトラフィックを受け入れますを選択
  • ターゲットポート: 80を指定

全部できたら左下の 確認と作成 を実行、下図のような構成ができたら、これまた左下の 作成 ボタンを実行

しばし待つ・・・・

デプロイが完了したらリソースに移動して、認証と、Dapr の設定を変えていきます。

AAD 認証をつけて、不特定多数のアクセスを制御する(※オプション)

左パネルの認証から、IDプロバイダーを追加を選択

  • IDプロバイダー:Microsofotを選択して、

他は特に触らず、画面左下の 追加 ボタンを実行
そうすると、現在Azureポータルにログインしているアカウントでアクセス制限をかけることができます。便利!

Dapr を有効にする

同じく左パネルの Dapr から、

  • Dapr: 有効
  • アプリポート: 80 (これはコンテナのポート、choiはデフォルト80なので80)
  • アプリID: dapr-app1
  • プロトコル: http
    を選んで、左下の 保存 を実行すると、続行しますか?と聞かれるので、続行を。

これで赤枠部分のサービスがひとまずできます。

というわけで動作確認を。左パネルの 概要 から、アプリケーションURLを選ぶと(下図)…

AAD の認証を入れている場合は、アクセス許可が要求されるので、承諾 を選択してください

choi の起動画面になれば(下図)、ここまでは完成です。

Container App #2の作成

次に下図の赤枠部分、Container App #2 を作成します

まずはコンテナを追加するために、コンテナアプリ環境を選びます。
概要Container Apps 環境のリンク をクリック(下図)

コンテナ環境のページに飛ぶので、アプリ から、+作成 をクリック

そうすると Container App #1 の時と同じくコンテナーアプリの作成画面になります
先ほどとほぼ同様に設定していきます。 #1 との変更部分は赤で表記

  • サブスクリプション: お使いのサブスクリプション
  • リソースグループ: rg-aca-test-20220909 (そのまま、さっき作ったのが入っていると思います)
  • コンテナーアプリ名: container-app-2
  • 地域: Japan East (そのまま)
  • Container Apps 環境: container-apps-environment-1 (そのまま)

次へ:アプリ設定> を選んで、もしくはアプリ設定タグを選択して、Container App #1 の時と同じように、

  • クイックスタートイメージを使用する: 選択を外す
  • 名前: app2
  • イメージのソース: Docker Hub またはその他のレジストリ を選択
  • イメージの種類: パグリックのまま
  • レジストリログインサーバー: docker.ioのまま
  • イメージとタグ: shyamagu/choi:httpを指定
    (コマンドのオーバーライドとかCPUメモリとかはそのまま)
  • HTTPイングレス: 無効をクリックして、有効にする
  • イングレストラフィック: Container Apps 環境に限定を選択
  • ターゲットポート: 3000を指定

できたら画面左下の 確認と作成 から、検証が終わればそのまま 作成 を実行
デプロイが完了したら リソースに移動 を選択して、Dapr と アプリのポートの設定を変えます

Dapr を有効にする

左パネルの Dapr から、

  • Dapr: 有効
  • アプリポート: 3000 (container app #2は3000ポートで起動させるため(※後述))
  • アプリID: dapr-app2
  • プロトコル: http
    を選んで、左下の 保存 を実行すると、続行しますか?と聞かれるので、続行を。

コンテナの環境変数を変えて起動ポートを変える

左パネルの コンテナー から、編集とデプロイを選択

app2 のリンクを選んで

コンテナの編集パネルの下部にある、環境変数 のところの 追加 を選択、

  • PORT、手動エントリ、3000
    を指定して保存したら、作成を実行

これで container-app-2 はポート3000で choi が起動します。
※ただしこのcontainer-app-2 は、同一のコンテナアプリ環境からしかアクセスできません。動作検証は一旦後回しにして、

Container App #3の作成

最後に下図の赤枠部分、Container App #3 を作成します

先ほどと同様に、まずはコンテナアプリを追加するために、コンテナアプリ環境を選びます。
概要Container Apps 環境のリンク をクリック(下図)

先ほど同様に、左パネル アプリ から、+作成 を選択

そうすると Container App #1 や #2 の時と同じくコンテナーアプリの作成画面になります
先ほどとほぼ同様に設定していきます。 #1 との変更部分は赤で表記

  • サブスクリプション: お使いのサブスクリプション
  • リソースグループ: rg-aca-test-20220909 (そのまま、さっき作ったのが入っていると思います)
  • コンテナーアプリ名: container-app-3
  • 地域: Japan East (そのまま)
  • Container Apps 環境: container-apps-environment-1 (そのまま)

次へ:アプリ設定> を選んで、もしくはアプリ設定タグを選択して、Container App #1 の時と同じように、

  • クイックスタートイメージを使用する: 選択を外す
  • 名前: app3
  • イメージのソース: Docker Hub またはその他のレジストリ を選択
  • イメージの種類: パグリックのまま
  • レジストリログインサーバー: docker.ioのまま
  • イメージとタグ: shyamagu/choi:httpを指定
    (コマンドのオーバーライドとかCPUメモリとかはそのまま)
  • HTTPイングレス: 無効

できたら画面左下の 確認と作成 から、検証が終わればそのまま 作成 を実行
デプロイが完了したら リソースに移動 を選択して、コンテナの追加、アプリのポートの設定を変えて、Daprを有効化します

アプリのポートの設定を変える

左パネルの コンテナー から、編集とデプロイを選択

app3 のリンクを選んで (下図ではapp2ですが、app3と読み変えてください)

先ほどと同じく、右パネルの下部にある環境変数の +追加 で、今度は

  • PORT、手動エントリ、5000
    を指定して、保存 & 作成 を実行

これで App3 の設定は完了です。次に、

コンテナを追加する(App4 を追加する)

同じく、左パネルの コンテナー から、編集とデプロイを選択

コンテナーイメージ+追加 を選択

右パネルに ** コンテナーの追加** が表示されるので、以下の設定をもりもりと

  • 名前: app4
  • イメージのソース: Docker Hub またはその他のレジストリ を選択
  • イメージとタグ: shyamagu/choi:http を指定
  • 環境変数:
    • 名前: PORT
    • ソース: 手動エントリ
    • 値: 4000

上記指定したら 追加 & 作成 を実行

ここまでできたらあと少しです。最後に、

Dapr を有効にする

左パネルの Dapr から、

  • Dapr: 有効
  • アプリポート: 5000 (container app #3は5000ポートで起動させるため)
  • アプリID: dapr-app3
  • プロトコル: http
    を選んで、左下の 保存 を実行すると、続行しますか?と聞かれるので、続行を。

やっと終わりました。これでひとまずの準備は完了です。
ARMテンプレート使えばここまでの内容が1発でできるので、やはりARMテンプレート使うのが正義ですね^^;

やっとできた。でわ動作確認

ここまでの内容で、以下の構成が完成しているはずです。choiを使って、赤矢印の動作を確認してみたいと思います

URLを確認するために、コンテナアプリ環境を選びます。
概要Container Apps 環境のリンク をクリック(下図)

container-app-1 と container-app-2 のアクセスURLをそれぞれ表示してメモっておきます

container-app-1 のURLをたたいて、choi の画面を表示させます
choiの設定画面で、以下のパラメータを設定します

他は特にいじらずに、Start Requestを実行すると・・・やったー疎通確認完了です!

しっかし18秒かかってますね…これは、色々やっている(記事書いている)うちに全部のコンテナアプリが0スケールしてしまっているためです。
すぐにもう一回 Start Requestすると今度は早いですねー

おわりに

今回は Azure Container Apps を触ってみるための事前準備として、とりあえず画面ポータル上でぽちぽちと構成を組みました。しかし辛い…やはりテンプレートは正義ですね。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?