Istio ベースの Azure Kubernetes Service 用サービス メッシュ アドオンの Telemetry API
Istio は、メッシュ内のすべてのワークロードのメトリック、分散トレース、アクセス ログを生成できます。 Istio ベースの Azure Kubernetes Service (AKS) 用サービス メッシュ アドオンでは、共有 MeshConfig と Istio Telemetry API v1
(Istio アドオン マイナー リビジョン asm-1-22
以上) を通じてテレメトリのカスタマイズ オプションが提供されます。
Note
Istio MeshConfig にはメッシュ全体でテレメトリをグローバルに構成するためのオプションも用意されていますが、Telemetry API ではサービスごとまたはワークロードごとにテレメトリ設定をより細かく制御できます。 Istio コミュニティは Telemetry API への投資を継続しており、現在ではテレメトリ構成の推奨方法となっています。 メッシュで収集されるテレメトリを構成するには、Telemetry API に移行することをお勧めします。
前提条件
- リビジョン
asm-1-22
以上である必要があります。 マイナー バージョンのアップグレードを実行する方法については、Istio アドオンのアップグレードに関するドキュメントを参照してください。
テレメトリ リソースを構成する
次の例は、asm-1-22
を使用して Telemetry API 経由で Istio アドオンに対してメッシュ全体で Envoy アクセス ログを有効にする方法を示しています (必要に応じてリビジョンを調整してください)。 アドオンのその他の Telemetry API カスタマイズに関するガイダンスについては、「Telemetry API のサポート範囲」セクションと Istio のドキュメントを参照してください。
サンプル アプリケーションを展開する
サイドカー インジェクションの名前空間にラベルを付けます。
kubectl label ns default istio.io/rev=asm-1-22
sleep
アプリケーションを展開し、SOURCE_POD
環境変数を設定します。
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/sleep/sleep.yaml
export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})
その後、httpbin
アプリケーションを展開します。
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/httpbin/httpbin.yaml
Istio Telemetry API を使用して Envoy アクセス ログを有効にする
メッシュ全体の Envoy アクセス ログを有効にするには、次の Istio v1
Telemetry API リソースを展開します。
cat <<EOF | kubectl apply -n aks-istio-system -f -
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-logging-default
spec:
accessLogging:
- providers:
- name: envoy
EOF
アクセス ログをテストする
sleep
から httpbin
に要求を送信します。
kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418
sleep
ポッドのアクセス ログが表示されていることを確認します。
kubectl logs -l app=sleep -c istio-proxy
次の出力が表示されます。
[2024-08-13T00:31:47.690Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 12 11 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" outbound|8000||httpbin.default.svc.cluster.local 10.244.0.12:53336 10.0.112.220:8000 10.244.0.12:42360 - default
次に、httpbin
ポッドのアクセス ログが表示されていることを確認します。
kubectl logs -l app=httpbin -c istio-proxy
次の出力が表示されます。
[2024-08-13T00:31:47.696Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 2 1 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" inbound|8080|| 127.0.0.6:55401 10.244.0.13:8080 10.244.0.12:53336 outbound_.8000_._.httpbin.default.svc.cluster.local default
Telemetry API のサポート範囲
Istio の AKS 用サービス メッシュ アドオンの場合、Telemetry API のフィールドは allowed
、supported
、および blocked
の値として分類されます。 Istio アドオンの機能とメッシュ構成のサポート ポリシーの詳細については、Istio アドオンのサポート ポリシー ドキュメントを参照してください。
次の Telemetry API 構成は、Istio アドオンでは allowed
または supported
のいずれかです。 この表に含まれていないフィールドは blocked
です。
Telemetry API のフィールド | サポート/許可 | ノート |
---|---|---|
accessLogging.match |
サポートされています | - |
accessLogging.disabled |
サポートされています | - |
accessLogging.providers |
許可 | 既定の envoy アクセス ログ プロバイダーがサポートされています。 ログの収集とクエリ実行のマネージド エクスペリエンスについては、「Azure Monitor コンテナー分析情報の Log Analytics」を参照してください。 サードパーティまたはオープンソースのログ収集および分析ソリューションは allowed ですが、サポートされていません。 |
metrics.overrides |
サポートされています | - |
metrics.providers |
許可 | Azure Monitor マネージド Prometheus を使用したメトリック収集がサポートされています。 サードパーティまたはオープンソースのメトリック スクレイピング ソリューションは allowed ですが、サポートされていません。 |
tracing.* |
許可 | すべてのトレース構成は allowed ですが、サポートされていません。 |
Azure Kubernetes Service