Microsoft Azure Container Networkingチームは最近、Retinaというオープンソースプロジェクトを発表した。このクラウドネイティブなコンテナネットワーキング観測可能プラットフォームによって、DevOpsエンジニアと管理者は、多様な環境にわたるワークロード・トラフィックを可視化、デバッグ、分析できるようになる。
Retinaはカスタマイズ可能なテレメトリを収集し、Prometheus、Azure Monitor、その他のプロバイダを含む様々なストレージソリューションに送信したり、Grafana、Azure Log Analytics、その他のプラットフォームなどの様々なオファリングを通じて表示することができる。RetinaはAzureに直接縛られることはなく、オンプレミス、AWS、Azure、GCPのどのKubernetesインスタンスでも実行できる。
Retinaは、Falcoセキュリティツールのような拡張Berkeley Packet Filters(eBPF)を利用し、アプリケーションコンテナに影響を与えることなく、ホストOS上でカーネルレベルのコード実行を可能にする。このアプローチにより、監視用のコンテナ・エージェントやコード・ライブラリが不要になり、クラウドベースか物理ハードウェアかにかかわらず、単一のeBPFプローブでホスト上のすべてのノードを監視できるようになる。
さらにRetinaは、特定のコンテナ・ネットワーク・インターフェース(CNI)、オペレーティング・システム、データプレーンに制限されることなく、LinuxとWindowsの環境をサポートしている。Retinaは、クラスタ上で最小限のリソースを使用しながら、効率的に拡張できるよう装備されている。
Retinaのアーキテクチャ概要(出典:Microsoft DevOps Blog)
Retinaを使い始めるには、ユーザーはRetinaのGitHubリポジトリををクローンを作成し、提供されているHelmチャートを使ってインストールする必要がある。データロギングのために、Prometheusの構成が必要になる場合がある。CLIアクセスにはLinuxホストのKubernetes環境が必要で、CLIは他のKubernetesツールで使いやすいようにkubectlにシームレスに統合されている。ネットワークキャプチャは、YAMLカスタムリソース定義を介して設定・実行もできる。
Microsoft Azure担当コーポレートバイスプレジデント兼テクニカルフェローのDeepak Bansal氏と、Microsoft Azure担当パートナーグループエンジニアリングマネージャーのChandan Aggarwal氏は、次のように書いている。
多くの企業はマルチクラウドに取り組んでおり、Microsoft Azureだけでなく、他のクラウドやオンプレミスでもうまく機能するソリューションを求めています。Retinaはオープンソースで、初日からマルチクラウドに対応しています。Retinaをオープンソース化することで、Kubernetesのネットワーキングの可観測性に関する我々の知識とビジョンを、より広範なクラウドネイティブ・エコシステムと共有することを目指しています。この分野で同じような経験や目標を共有する他の開発者や組織とのコラボレーションを通じて、Retinaが進化し、成長していくことを我々は望んでいます。
しかし、Retinaに関するHacker Newsスレッドの回答者が述べたように、もっと多くの提供がある。
Red Hatも同様のeBPFベースのツールを持っています(免責事項: 現在開発中です) - retinaやredhat netobservやpixieのクールな点は、特定のCNIに縛られていないことです。現在、eBPFベースのツールがどんどん増えているため、eBPFベースのツール間の潜在的なコンフリクトやコラボレーションの欠如という問題が生じている。bpfmanと呼ばれるものは、この点に対処することを目的としています。
別の人がこう答えている。
私たちがeBPFを使ってマイクロサービスのための分散トレーシングを実装したDeepFlowもチェックできます。これには、もちろん K8s ネットワークの可観測性も含まれています。
Retinaの詳細については、ドキュメントのウェブサイトを参照してほしい。