Azureでコンテナアプリケーション開発をはじめよう!

2.8K Views

April 30, 24

スライド概要

2024/04/27 なごあずの集い#1 での登壇資料です

profile-image

SIer所属のインフラ屋さんです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Azureでコンテナアプリケーション開発をはじ めよう! 2024/04/27 なごあずの集い#1 Shunsuke Yoshikawa

2.

Shunsuke Yoshikawa X: @ussvgr Technical Evangelist @ AP Communications Organizer @ Platform Engineering Meetup Microsoft MVP (Microsoft Azure) 2023~

3.

こんな経験ありませんか? 本番環境と開発環境 で設定が違う … 明日までに 本番サーバーを もう1個作れって? コスト削減の一貫で開 発用サーバーを 複数システムで共用 することに…

4.

コンテナで解決 ・設定ファイルで環境を作成できる ・ビルドしたコンテナは他のサーバーでも動く ・サーバーを論理的に分割しリソースを割当て

5.

Azure上の代表的なコンテナサービス Azure Kubernetes Service Azure Container Apps Web App for Containers 難易度 高 中 小 自由度 高 中 小 ※個人の見解です

6.

「ちょうどいい」サービス Azure Kubernetes Service Azure Container Apps Web App for Containers 難易度 高 中 小 自由度 高 中 小 ※個人の見解です

7.

フルマネージドなKubernetesサービス ACA は Azure Kubernetes Service(AKS) と同じく Kubernetes をベースにしたサービス AKS と ACA の大きな違いは、 ACAは「フルマネージド」であること Kubernetes の API にユーザーがアクセスすることはできないが、 その代わりに面倒な管理部分はすべて Microsoft がやってくれる ノードのキャパシティ管理や Kubernetes のバージョンアップなどに悩まされることなく アプリケーションの開発・運用に注力できる

8.

実際の開発の流れを考える

9.

こんなアプリケーションを想定 ● Python + Flask のWebアプリケーション ● データベースに PostgreSQL を使用 ● 高頻度にアプリをリリースしたい

10.

まずはローカル環境 開発マシンにコンテナ実行環境をインストールしましょう Windows だと… など Docker Desktop (個人利用および小規模ビジネスは無償、それ以外は有償) Podman Desktop (OSS Apache-2.0 license) Rancher Desktop (OSS Apache-2.0 license) Docker-CE on WSL2

11.

アプリのディレクトリ構造 こんな感じのファイル配置 . ├── Dockerfile ├── app.py └── requirements.txt ← コンテナ作成方法の定義ファイル ← アプリの実体 ← 依存パッケージ情報

12.

Dockerfile どう作るか Azure CLI で自動生成できるので、まずはそこから始めればよい az aks draft create --dockerfile-only=true

13.

自動生成されたDockerfile FROM python ENV PORT 3000 EXPOSE 3000 WORKDIR /usr/src/app COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . ENTRYPOINT ["python"] CMD ["app.py"]

14.

コンテナをビルドして起動 # アプリとPostgreSQLを配置するネットワークを作成 docker network create sample-network # コンテナをビルドして起動 docker build -t sampleapp:v1 . docker run -p 3000:3000 --network sample-network -d sampleapp:v1 # PostgreSQLもコンテナとして起動 docker run --name some-postgres --network sample-network \ -e POSTGRES_PASSWORD=mysecretpassword -d postgres

15.

ここまでの環境

16.

Azure上で起動する(忙しい人向け) 以下のコマンド一つで、PostgreSQL以外の必要なリソースを作成し、 コンテナイメージのビルド・起動まですべてやってくれる az containerapp up -n sample-containerapp --source .

17.

Azure上で起動する(普通の手順) 前ページのコマンドだと細かい設定ができないため、 本番利用を鑑みるとリソースを個別に作成していくのが望ましい 必要なリソースは以下のとおり ● ● ● ● ● ● VNet/Subnet Azure Container Registry Container Apps環境 コンテナアプリ Log Analyticsワークスペース Azure Database for PostgreSQL

18.

Azureでの環境構築例

19.

Azure Container Registry (ACR) ビルドしたコンテナイメージを格納するサービス 格納したイメージを実行することで、 どの環境でも同じコンテナイメージでアプリケーションを起動できる

20.

コンテナをビルドしてACRへPush # コンテナをビルドする際に、 ACR名をタグとして付与する docker build -t <ACR名>.azurecr.io/sampleapp:v1 . # ACRへログイン az acr login -n <ACR名> # コンテナイメージを ACRへPush docker push <ACR名>.azurecr.io/sampleapp:v1

21.

Azure Container Apps を構成する2つのリソース ACAは Container Apps 環境 コンテナー アプリ の2つのリソースで構成される Container Apps 環境 は ネットワークやログの保管先などを定義する論理的な境界 コンテナー アプリ は 実際に稼働させるアプリケーションコンテナの リソースを指す 引用元: Azure Container Apps のコンテナー

22.

もう少しわかりやすく Container Apps 環境 を作成するときは ● ● どのサブネットに配置するか ログをどのLog Analyticsワークスペースに出力するか を指定する コンテナーアプリ を作成するときは ● ● ● どのContainer Apps環境上に作成するか どのコンテナイメージを起動するか どれくらいのリソースを割り当てるか を指定する ※他にももっと設定できる項目あるんですが、 説明の便宜上内容を省略してます

23.

CI/CDパイプライン 高頻度のアプリリリースを考慮すると 現代のアプリケーション開発ではCI/CDパイプラインの整備は不可欠 Azure Container Appsでは、GitHub Actionsを利用したCI/CDパイプラインを簡単に作成できる

24.

実際の画面

25.

本番利用向けの機能

26.

FQDNを設定したい Azure Container Appsは標準で https://<コンテナーアプリ名>.<ランダムな文字列>.<リージョン名>.azurecontainerapps.io というFQDNが用いられる 自社ドメインを設定する場合はカスタムドメイン 機能で設定できる DNSレコードとして TXTレコードと CNAME or A レコードを設定するのみで利用可能 SSL/TLS証明書も無料で発行可能!

27.

急なアクセス増に備えたい HTTPリクエストに応じてオートスケールできます! リクエストの数だけじゃなく、KEDA を利用した様々なスケール条件を利用可能

28.

コストを抑えたい オートスケールで 0個にスケールイン することで、リクエストがないときの費用を下げられる ただし、0 → 1 のスケールアウト時はレスポンスを返すまでに時間がかかってしまうので、 それを許容できる場合にのみ利用する その他、CPU使用率が低いときは自動で請求額が下がる仕組みや 節約プランを活用することもできる

29.

2024/04/27 時点の価格表 引用元: Azure Container Apps の価格

30.

特定のIPアドレスからのみアクセスを受け付けたい Azure Container Apps単体で設定可能

31.

まとめ

32.

Azureでコンテナ、いいですよ ● Azure CLIやポータルでの操作で簡単に設定できる ● 追加の要件があれば、手動で複雑な設定も可能 ● より詳細な要件があればAzure Kubernetes Serviceを、 もっと簡単にコンテナ起動するだけならWeb App for Containers、 と多様なユースケースをカバーするサービスが揃ってる Azureでコンテナ、やってみましょう!

33.

ご清聴ありがとうございました