0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

以前4回に分けてDockerとAzure Kubernetes Serviceのネットワークの内部構造を色々と調査しました。

今度はAzure Container Apps(以下、ACA)のネットワーク構造について紐解いてみたくなりました。以下では、ACAの内部構造を暴くために検証してみた結果を書いていきます。

ACAとは

  • 2022年5月にGAした、コンテナベースのアプリケーションを簡単にデプロイ、管理、スケールできるサービス
  • フルマネージドk8sベースのアプリケーションプラットフォーム
  • k8sが提供する高い可用性、セキュリティ、スケーラビリティの恩恵を受けつつ、k8sの管理は不要
  • KEDA、Dapr、EnvoyといったCNCFプロジェクトの成果物をマネージドサービスとして提供する
  • 内部的にはAzure Kubernetes Service (AKS) を使用している

※AKSについては以前の記事を参照。

AKSとの違い

AKS:k8sAPI使いたい、k8sの設定自由度を確保したいならAKSを使うべき。
ACA:k8sAPIは意識しない。k8sの機能は使いたいけどクラスターの管理とかはしたくない人向けの便利なプラットフォーム。

なので、k8sが提供する高い可用性、セキュリティ、スケーラビリティの恩恵を受けたいがk8sの管理が大変、そもそもk8sを勉強するのが難しい、k8s開発スピード早すぎてついていけないという人にACAがおすすめ。

参考

やってみたこと

VMSSへのSSHログイン

想定

ACAを構成するAKSクラスター内のVMSSにログインできれば内部構造が鮮明になるのではないか。

結果

  • VMSSへのnmapコマンド実行(ポートスキャン)
    →SSHは空いていた。 「22/tcp open ssh」

  • VMSSへのSSHログイン
    →右記メッセージが出て、ログインできなかった。  「 Permission denied (publickey).」

内部向けLBへのTraceroute

想定

ホップアドレスとしてACAを構成するAKS内のPod等のIPアドレスが確認できるのではないか。

結果

コマンドの結果からは送信元の検証用VMと内部向けLB(10.33.0.62)が直接通信しているように見えた。
SDNの世界でルーティングされているため、このような結果となったと推測している。

TRACEROUTE (using port 80/tcp)
HOP RTT     ADDRESS
1.00 ms 10.33.0.62
Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds

ACAにおけるコンテナ間通信のTraceroute

想定

2つのコンテナが内部的には異なるVMSSにて起動している場合、AKSでTracerouteすると以下のような流れになる。

送信元PodのIPアドレス→送信元NodeのIPアドレス→送信先NodeのIPアドレス→送信先PodのIPアドレス

ACAは内部的にAKSを使用しているので、ACAでも同様の結果となるはずである。

検証環境 

送信元PodのIPアドレス:10.33.0.61
送信元NodeのIPアドレス:10.33.0.33
送信先NodeのIPアドレス:10.33.0.4
送信先PodのIPアドレス:10.33.0.21

image.png

結果

コマンドの結果から、想定は正しいと考えている。

sh-5.1# traceroute 10.33.0.21
traceroute to 10.33.0.21 (10.33.0.21), 30 hops max, 60 byte packets
 1  10-33-0-33.npm-metrics-cluster-service.kube-system.svc.cluster.local (10.33.0.33)  0.058 ms  0.015 ms  0.010 ms
 2  10-33-0-4.npm-metrics-cluster-service.kube-system.svc.cluster.local (10.33.0.4)  0.853 ms  0.784 ms  0.843 ms
 3  10-33-0-21.azfooaca-aca01-2--7b6u83h-headless.k8se-apps.svc.cluster.local (10.33.0.21)  0.923 ms  0.894 ms  0.878 ms

なお「npm-metrics-cluster-service.kube-system.svc.cluster.local」については以下の通り。

  • kube-system:AKSに既定で作成される名前空間名
  • npm-metrics-cluster-service:Prometheusの設定で、クラスターレベルのメトリクスを集めるために使用されるサービス。AKSクラスター上のkube-system名前空間内に存在している

おわりに

上記に加えて、3回に分けてACAの選択できるネットワークオプションごとにネットワーク構造を整理した記事もありますので、是非見てみて下さい!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?