Alibaba Cloud Service Mesh (ASM) は、オープンソースの Istio と互換性のあるフルマネージドサービスです。ASM では、マネージド環境における起動順序の最適化、リソース効率の向上、グレースフルシャットダウンの実現のために、Istio のいくつかのデフォルト設定を調整しています。
以下の表では、ASM と Istio demo インストールプロファイル(バージョン 1.17)のデフォルト値を比較しています。セルフマネージド Istio から ASM へ移行する場合や、ワークロードの予期しない動作をトラブルシューティングする際に、これらの表をご参照ください。
注: Istio には複数のインストールプロファイル(default、demo、minimal、remote、empty)があり、それぞれ異なるパラメーター値を持ちます。本比較ではdemoプロファイルを使用しています。プロファイルファイルは、各 Istio リリースのmanifests/profilesディレクトリにあります。ご利用の Istio インストールで異なるプロファイルを使用している場合、一部のベースライン値が異なる可能性があります。
./istioctl install --set profile=demo -y主な差分の概要
以下のパラメーターは、ASM と Istio 1.17(demo プロファイル)でデフォルト値が異なります。その他のパラメーターはすべて同じデフォルト値を保持しています。
| パラメーター | コンポーネント | Istio のデフォルト | ASM のデフォルト | 影響 |
|---|---|---|---|---|
holdApplicationUntilProxyStarts | Proxy | false | true | サイドカープロキシがアプリケーションコンテナより先に起動し、起動時の競合状態を防止します。 |
proxyMetadata | Proxy | {} | {EXIT_ON_ZERO_ACTIVE_CONNECTIONS: "true"} | アクティブ接続がなくなると、サイドカープロキシがグレースフルシャットダウンします。 |
proxyStatsMatcher | Proxy | N/A | inclusionRegexps: [.*adaptive_concurrency.*] | Envoy からアダプティブ同時実行数のメトリックをレポートします。 |
| Init container resources (requests) | Proxy | cpu: 100m, memory: 128Mi | cpu: 10m, memory: 10Mi | サイドカー init コンテナのリソース オーバーヘッドを軽減します。 |
clusterDomain | Proxy | cluster.local | インスタンス作成時に指定 | データプレーン上の Kubernetes クラスタードメインと一致している必要があります。 |
| Tracing (Zipkin address) | Proxy | zipkin.istio-system:9411 | N/A | ASM ではトレーシング分析はデフォルトで有効になっていません。トレーシング分析は ASM コンソールで別途設定してください。 |
ISTIO_META_DNS_CAPTURE | MeshConfig | true | false | DNS プロキシはデフォルトで無効になっています。 |
BOOTSTRAP_XDS_AGENT | MeshConfig | true | false | pilot-agent プロセスは Envoy 起動前にブートストラップ構成を動的にフェッチしません。 |
enablePrometheusMerge | MeshConfig | true | false | Istio Agent はアプリケーションの公開メトリックを Envoy およびエージェントのメトリックとマージしません。 |
extensionProviders | MeshConfig | インストール済みアドオンごとに設定 | ASM コンソールで設定 | Log Service、トレーシング分析、メトリックモニタリングのプロバイダーは ASM コンソールで設定してください。 |
構成オーバーライドのレベル
ASM のデフォルトパラメーターは、以下の 3 つのレベルでオーバーライドできます。より具体的なレベルの設定が優先されます。
| レベル | スコープ | 方法 |
|---|---|---|
| メッシュ全体 | メッシュ内のすべてのワークロード | ASM コンソールの MeshConfig |
| 名前空間 | 名前空間内のすべてのワークロード | ProxyConfig カスタムリソース |
| ワークロード単位 | 単一のワークロード | proxy.istio.io/config Pod アノテーション |
ProxyConfig カスタムリソースと Pod アノテーションの両方が同一のワークロードに適用される場合、重複するフィールドについては Pod アノテーションが優先されます。
プロキシパラメーター
これらのパラメーターは、サイドカープロキシ注入、トラフィックの自動転送、リソース割り当て、ランタイム動作を制御します。
| パラメーター | Istio のデフォルト | ASM のデフォルト | 説明 |
|---|---|---|---|
clusterDomain | cluster.local | インスタンス作成時に指定 | クラスター内ドメイン名。データプレーン上の Kubernetes クラスタードメインと一致している必要があります。 |
enableCoreDump | false | Istio と同じ | 注入されたサイドカープロキシのコアダンプを有効にし、デバッグに使用します。 |
excludeInboundPorts | "" | Istio と同じ | サイドカープロキシへのリダイレクトから除外されるインバウンドポート。 |
includeInboundPorts | "*" | Istio と同じ | トラフィックがサイドカープロキシにリダイレクトされるインバウンドポート。 |
includeIPRanges | "*" | Istio と同じ | トラフィックがサイドカープロキシにリダイレクトされる IP 範囲(CIDR)。 |
excludeIPRanges | "" | Istio と同じ | サイドカープロキシへのリダイレクトから除外される IP 範囲(CIDR)。 |
includeOutboundPorts | "" | Istio と同じ | トラフィックがサイドカープロキシにリダイレクトされるアウトバウンドポート。 |
excludeOutboundPorts | "" | Istio と同じ | サイドカープロキシへのリダイレクトから除外されるアウトバウンドポート。 |
logLevel | warning | Istio と同じ | サイドカープロキシのログレベル。 |
readinessFailureThreshold | 30 | Istio と同じ | サイドカープロキシが未準備状態とマークされるまでの連続したプローブ失敗回数。 |
readinessInitialDelaySeconds | 1 | Istio と同じ | 最初の readiness プローブが実行されるまでの秒数。 |
readinessPeriodSeconds | 2 | Istio と同じ | readiness プローブ間の間隔(秒)。 |
resources | requests: cpu: 100m, memory: 128Mi; limits: cpu: 2000m, memory: 1024Mi | Istio と同じ | サイドカープロキシコンテナのリソースリクエストおよびリミット。 |
holdApplicationUntilProxyStarts | false | true | true の場合、アプリケーションコンテナが起動する前にサイドカープロキシコンテナが準備完了状態になる必要があります。これにより、プロキシが準備完了する前にアプリケーションがトラフィックを送信してしまう競合状態を防止します。 |
concurrency | 2 | Istio と同じ | Envoy ワーカースレッド数。0 に設定すると、Envoy はリソース制限に関係なくすべての CPU コアを使用し、CPU 消費量が高くなる可能性があります。特に変更理由がない限り、デフォルト値のままにしてください。 |
interceptionMode | REDIRECT | Istio と同じ | サイドカープロキシがトラフィックをインターセプトするモード。 |
tracing | zipkin: {address: zipkin.istio-system:9411} | N/A | ASM ではトレーシング分析はデフォルトで有効になっていません。トレーシングは ASM コンソールで設定してください。 |
proxyMetadata | {} | {EXIT_ON_ZERO_ACTIVE_CONNECTIONS: "true"} | サイドカープロキシコンテナに追加される環境変数。ASM では、すべての接続がドレインされた後にグレースフルシャットダウンを有効にしています。 |
terminationDrainDuration | 5s | Istio と同じ | サイドカープロキシ終了時に既存の接続を完了させるために許容される時間。 |
proxyStatsMatcher | N/A | inclusionRegexps: [.*adaptive_concurrency.*] | レポートするカスタム Envoy メトリック。ASM ではアダプティブ同時実行数のメトリックをデフォルトで有効にしています。 |
| Init container resources | requests: cpu: 100m, memory: 128Mi; limits: cpu: 2, memory: 1Gi | requests: cpu: 10m, memory: 10Mi; limits: cpu: 2, memory: 1Gi | サイドカープロキシ init コンテナのリソースリクエストおよびリミット。ASM ではスケジューリングオーバーヘッドを削減するために、より低いリソースリクエストを使用しています。 |
OutboundTrafficPolicy | ALLOW_ANY | Istio と同じ | 外部サービスへのアウトバウンドトラフィックのポリシー。ALLOW_ANY は、メッシュ外の送信先へのトラフィックを許可します。 |
Pilot(コントロールプレーン)パラメーター
| パラメーター | Istio のデフォルト | ASM のデフォルト | 説明 |
|---|---|---|---|
jwtPolicy | third-party-jwt | Istio と同じ | JWT ベースの認証ポリシー。有効値:third-party-jwt、first-party-jwt。 |
MeshConfig パラメーター
これらのパラメーターは、DNS プロキシ、アクセスログ、メトリックのマージ、テレメトリプロバイダーなど、メッシュ全体の設定を制御します。
| パラメーター | サブフィールド | Istio のデフォルト | ASM のデフォルト | 説明 |
|---|---|---|---|---|
proxyMetadata | ISTIO_META_DNS_CAPTURE | true | false | DNS プロキシの有効化または無効化。 |
proxyMetadata | BOOTSTRAP_XDS_AGENT | true | false | 有効にすると、pilot-agent プロセスは Envoy 起動前にブートストラップ構成を動的にフェッチします。 |
accessLogFile | - | /dev/stdout | Istio と同じ | アクセスログのファイルパス。 |
enablePrometheusMerge | - | true | false | 有効にすると、Istio Agent はアプリケーションの公開メトリックを Envoy および Istio Agent のメトリックとマージします。 |
extensionProviders | - | インストール済みアドオンごとに設定 | ASM コンソールで設定 | テレメトリバックエンドプロバイダー。Log Service、トレーシング分析、メトリックモニタリングのプロバイダーは ASM コンソールで設定してください。 |
テレメトリパラメーター
| パラメーター | サブフィールド | Istio のデフォルト | ASM のデフォルト | 説明 |
|---|---|---|---|---|
prometheus | wasmEnabled | false | Istio と同じ | 統計フィルター用の WebAssembly(Wasm)ランタイムの有効化または無効化。 |
metadataExchange | wasmEnabled | false | Istio と同じ | メタデータ交換フィルター用の Wasm ランタイムの有効化または無効化。 |
一般的な誤設定に関する警告
| パラメーター | 誤設定 | 影響 | 推奨事項 |
|---|---|---|---|
concurrency | 0 に設定します。0 | Envoy がすべての CPU コアを使用し、リソース制限を無視します。これにより CPU 消費量が高くなり、ノード上の他のワークロードに影響を与える可能性があります。 | デフォルト値(2)のままにしてください。 |
holdApplicationUntilProxyStarts | ASM で false に設定 | アプリケーションコンテナがサイドカープロキシの準備完了前に起動し、起動時にリクエストが失敗する可能性があります。 | 起動レイテンシーが特に懸念されない限り、ASM のデフォルト(true)を維持してください。 |
accessLogFile | 高トラフィック環境で /dev/stdout のままに設定 | アクセスログはディスク I/O およびストレージを消費します。高トラフィック環境ではパフォーマンスに影響を与える可能性があります。 | 大規模環境で実行する場合は、アクセスログを無効にするか、専用のログサービスにルーティングしてください。 |