🎼

Azure Container Apps でコンテナ間の TCP 接続を行う

2023/04/30に公開

Azure Container Apps にて、待望の TCP サポートが GA されました!

今までは HTTP(S) のみしかコンテナ間通信が出来なかったのですが、他の TCP ポートによる通信もできるようになりました。

手元で試してみましたので残しておこうと思います。

環境・準備

  • Azure Container Apps

Azure Container Apps

下記の公式チュートリアルを参考にデプロイしておきます。

やってみた

今回のサンプルは、いつもの azure-vote-app-redis です。

バックエンド (Redis) アプリのデプロイ

Azure portal の「コンテナーアプリの作成」ページにて、下記のように設定していきます。

  • コンテナーアプリ名: 任意の名前を設定します。この名前は後で使用します。

  • イメージのソース: "Docker Hub またはその他のレジストリ"
  • イメージの種類: "パブリック"
  • レジストリ ログイン サーバー: "mcr.microsoft.com"
  • レジストリ ログイン サーバー: "oss/bitnami/redis:6.0.8"
  • 環境変数: "ALLOW_EMPTY_PASSWORD:yes" のキーを作成

  • イングレス: "有効"
  • イングレス トラフィック: "Container Apps 環境に限定"
  • イングレス タイプ: "TCP"
  • ターゲット ポート: "6379"
  • 公開されたポート: "6379"

フロントエンドアプリのデプロイ

Azure portal の「コンテナーアプリの作成」ページにて、下記のように設定していきます。

  • コンテナーアプリ名: 任意の名前を設定します。画面は割愛。

  • イメージのソース: "Docker Hub またはその他のレジストリ"
  • イメージの種類: "パブリック"
  • レジストリ ログイン サーバー: "mcr.microsoft.com"
  • レジストリ ログイン サーバー: "azuredocs/azure-vote-front:v1"
  • 環境変数: "REDIS:<フロントエンドコンテナの名前>" のキーを作成

  • イングレス: "有効"
  • イングレス トラフィック: "どこからでもトラフィックを受け入れます"
  • イングレス タイプ: "HTTP"
  • セキュリティで保護されていない接続: "許可"
  • ターゲット ポート: "80"

動作確認

フロントエンドアプリの画面に記載の アプリケーション URL から、接続できることを確認します。

こんな感じで投票画面が表示されていれば OK です。

Azure portal でフロントエンドアプリのログストリームを確認すると、ちゃんと REDIS 側に接続されていることも確認できます。

これ、以前は REDIS プロトコルでの TCP 接続が出来なかったので、実現できていなかったんですよね。できるようになっていました!

まとめ

ということで、Azure Container Apps のアプリ間で HTTP(S) 以外でも TCP 接続が実現できる機能が GA されました!

しかもめちゃくちゃ簡単な設定で実現でき、このあたりはさすがだなと思いました🤗

Discussion