Alibaba Cloud Service Mesh (ASM) は、kind が IstioGateway に設定され、apiVersion が istio.alibabacloud.com/v1beta1 に設定されたカスタムリソース定義 (CRD) を提供します。また、ASM には対応するコントローラーも用意されています。このコントローラーは、この CRD リソースの変更を監視し、クラスター内の関連 Kubernetes Service、Deployment、ServiceAccount およびその他の関連リソースを同期します。本トピックでは、ASM ゲートウェイ CRD の構成例とフィールド定義について説明します。
構成例
前提条件
必要な構成情報にアクセスできるようにするため、すべての新しい ASM ゲートウェイは istio-system 名前空間内に作成してください。Istio 1.6 以降のバージョンでは、他の名前空間にゲートウェイをデプロイすると必要な構成にアクセスできず、ASM ゲートウェイが起動しません。
例 1: Kubernetes API を使用してイングレスゲートウェイを管理する
-
ASM コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。
-
Mesh 管理ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、を選択します。
Ingress Gatewayページで、Create from YAMLをクリックします。
Createページで、ゲートウェイのNameを入力し、Namespacesとしてistio-systemを選択し、以下の YAML を設定して、Createをクリックします。
各フィールドの詳細については、「CRD フィールドリファレンス」をご参照ください。
説明Kubernetes クライアントを使用して Ingress Gateway を管理する場合は、「Gateway Go 構造体の実装」をご参照ください。
Ingress Gateway のサービス情報を表示します。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリストをクリックします。
クラスターリストページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、をクリックします。
サービスページの上部にある名前空間ドロップダウンリストから、istio-systemを選択します。
サービス一覧で、対象のサービス名をクリックして、その Ingress Gateway 情報を表示します。
Ingress Gateway の Pod 情報を表示します。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリストをクリックします。
クラスターリストページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、をクリックします。
ポッドページの上部にある名前空間ドロップダウンリストから、istio-systemを選択します。
Pod 一覧で、対象の Pod 名をクリックして、その Ingress Gateway 情報を表示します。
例 2: Kubernetes API を使用したエグレスゲートウェイの管理
Alibaba Cloud Service Mesh (ASM) は、メッシュ内のアプリケーション向けに統一されたトラフィック出口ポイントを提供するエグレスゲートウェイサービスを提供します。
-
ASM コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
-
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[Egress Gateway] ページで、[Create from YAML] をクリックします。
[Create] ページで、エグレスゲートウェイの [Name] を入力し、[Namespaces] として istio-system を選択し、以下の YAML を設定して、[Create] をクリックします。
各フィールドの詳細については、「CRD フィールドリファレンス」をご参照ください。
エグレスゲートウェイのサービス情報を表示します。
[ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。
[クラスターリスト] ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
[サービス] ページで、[名前空間] ドロップダウンリストから istio-system を選択します。
サービス一覧で、対象のサービス名をクリックして、そのエグレスゲートウェイ情報を表示します。
エグレスゲートウェイの Pod 情報を表示します。
[ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。
[クラスターリスト] ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
[ポッド] ページで、[名前空間] ドロップダウンリストから istio-system を選択します。
Pod 一覧で、対象の Pod 名をクリックして、そのエグレスゲートウェイ情報を表示します。
CRD フィールドリファレンス
フィールド | 説明 | デフォルト |
metadata.name | 名前。生成される Kubernetes Service および Deployment の名前は istio-{この値} になります。 | なし |
metadata.namespace | 生成される Kubernetes Service および Deployment が配置される名前空間。 重要 Istio 1.6 以降のバージョンとの互換性を維持するため、この名前空間は istio-system である必要があります。 | istio-system |
clusterIds | 配列型。ゲートウェイをデプロイするクラスターの ID。これらのクラスターは現在のメッシュインスタンスに属します。 | なし |
env | 配列型。ゲートウェイ Pod の環境変数。 | なし |
externalTrafficPolicy | 外部トラフィックをノードローカルまたはクラスター全体のエンドポイントにルーティングするかどうかを指定します。有効な値は Cluster または Local です。 説明 このフィールドはイングレスゲートウェイにのみ適用されます。 | Cluster |
ports | 配列型。ゲートウェイ Pod に定義されたポートおよびプロトコルの一覧。例:
説明 1.9.7.107 より前のバージョンでは、protocol フィールドは明示的に宣言されません。TCP として統一的に宣言する必要があります。 | なし |
gatewayType | ゲートウェイタイプ。有効な値は ingress または egress です。
| ingress |
replicaCount | レプリカ数。 | 1 |
configVolumes | ゲートウェイ Pod にマウントされる ConfigMap ボリューム。例: | なし |
resources | ゲートウェイ Pod のリソース構成。 |
|
secretVolumes | ゲートウェイ Pod にマウントされるシークレットボリューム。例: | なし |
serviceType | ゲートウェイのサービスタイプ。有効な値は LoadBalancer、NodePort、または ClusterIP です。エグレスゲートウェイは通常 ClusterIP に設定されます。 重要 データプレーンクラスターが登録済みクラスターであり、このフィールドを LoadBalancer に設定する場合、クラスターが LoadBalancer タイプのサービスをサポートしていることを確認してください。サポートされていない場合、ASM ゲートウェイの作成が失敗します。 | LoadBalancer |
loadBalancerClass | ゲートウェイサービスの loadBalancerClass を指定します。このフィールドは serviceType が LoadBalancer の場合にのみ有効です。このフィールドは ASM バージョン 1.18 以降でサポートされています。詳細については、「ASM イングレスゲートウェイでの Network Load Balancer (NLB) の使用」をご参照ください。 | なし |
serviceAnnotations | ゲートウェイサービスのアノテーション。例: 説明 このフィールドは serviceType が LoadBalancer に設定されたゲートウェイにのみ適用されます。エグレスゲートウェイでは通常このフィールドは使用されません。 | なし |
serviceLabels | ゲートウェイサービスのラベル。 | なし |
podLabels | ゲートウェイ Pod のラベル。 | なし |
podAnnotations | ゲートウェイ Pod のアノテーション。 | なし |
rollingMaxSurge | ローリングアップデート中に、希望するレプリカ数を超えて存在できる最大 Pod 数。この値は絶対数またはパーセンテージで指定できます。 | "100%" |
rollingMaxUnavailable | ローリングアップデート中に許容される最大の利用不可な Pod 数。この値は絶対数またはパーセンテージで指定できます。 | "25%" |
overrides | clusterIds で 2 つ以上のクラスターを指定する場合、上記の一般的なパラメーターとは異なるクラスター固有の構成を定義できます。値はマップ型です。 説明
| なし |
kernel.enabled | カスタムカーネルパラメーターは有効ですか? | false |
kernel.parameters | カーネルパラメーター設定。現在サポートされているカーネルパラメーターは以下のとおりです:
説明 ホストのカーネルバージョンによっては、一部のカーネルパラメーターがサポートされていない場合があります。その場合、メッシュ Pod でエラーが報告される可能性があります。
すべてのカーネルパラメーター値は文字列である必要があります。YAML 構文ではプレーンな数値が数値型として解析されるため、値を二重引用符 ("") で囲んでください。例: net.core.somaxconn: "65535"。 | なし |
compression.enabled | イングレスゲートウェイの圧縮機能を有効にします。 説明 compression 関連のフィールドはイングレスゲートウェイにのみ適用されます。 | false |
compression.content_type | 圧縮対象の ContentType の一覧。例:
| なし |
compression.disable_on_etag_header |
| false |
compression.min_content_length | ContentLength がこの値以上の場合に圧縮をトリガーします。 | 30 |
compression.remove_accept_encoding_header |
| false |
compression.gzip | 現在は gzip 圧縮のみがサポートされています。圧縮を有効にするには、このフィールドを含める必要があります。すべてのパラメーターがデフォルト値であっても、空の構造体を含めてください。例: | なし |
compression.gzip.memory_level | zlib 内部処理のメモリ使用量レベル。有効な値は 1~9 です。値が高いほどメモリ使用量が増えますが、圧縮速度と圧縮率が向上します。 | 5 |
compression.gzip.compression_level | zlib の圧縮レベル。有効な値:
説明 BEST_COMPRESSION は最高の圧縮品質を提供します。BEST_SPEED は最速の圧縮速度を提供します。具体的には:
| DEFAULT_COMPRESSION |
compression.gzip.compression_strategy | zlib の圧縮戦略。有効な値:
説明 DEFAULT_STRATEGY デフォルトの圧縮戦略は、基盤となるデフォルト動作を使用し、ほとんどのケースで満足のいく結果を提供します。 FILTERED 主に繰り返しデータを含むシナリオ向けに、フィルターレイヤーの圧縮アルゴリズムを優先します。テキストや人工的に生成されたデータに対して高い圧縮率を提供します。 HUFFMAN_ONLY 他の圧縮アルゴリズムを使用せずにハフマン符号化のみを使用します。通常、高速な展開を必要とする静的データに使用されます。 RLE ランレングスエンコーディングを使用し、同一データの連続シーケンス(例:ビットマップ)を効率的に圧縮します。 FIXED 入力データに基づいて動的に生成する代わりに、事前定義されたエンコーディングツリーを使用してハフマン符号化を行います。高速な圧縮および展開を可能にしますが、一般的に圧縮率は低くなります。 | DEFAULT_STRATEGY |
compression.gzip.window_bits | zlib のウィンドウサイズ。有効な値は 9~15 です。 | 12 |
compression.gzip.chunk_size | zlib の出力バッファーサイズ。 | 4096 |
hostNetwork | ホストネットワーキング。
| false |
dnsPolicy | DNS ポリシー。dnsPolicy の詳細については、「サービスと Pod の DNS」をご参照ください。 | ClusterFirst |
cpu.targetAverageUtilization | HPA が有効な場合の CPU ターゲット使用率。有効な値は 1~100 です。使用率がこの値を超えるとレプリカ数が増加し、下回ると減少します。 | なし |
memory.targetAverageUtilization | HPA が有効な場合のメモリターゲット使用率。有効な値は 1~100 です。使用率がこの値を超えるとレプリカ数が増加し、下回ると減少します。 | なし |
maxReplicas | HPA によって調整される最大レプリカ数。正の整数である必要があります。 | なし |
minReplicas | HPA によって調整される最小レプリカ数。正の整数である必要があり、最小値は 1 です。 | なし |
nodeSelector | ゲートウェイ Pod を実行するノードを指定します。このフィールドの下にカスタムのキーと値のペアを定義します。例: | なし |
affinity | ノードアフィニティを使用して、ゲートウェイ Pod のノードを指定します。詳細については、「アフィニティとアンチアフィニティ」をご参照ください。 | なし |
tolerations | ノードの Taint と併用します。詳細については、「Taint と Toleration」をご参照ください。 | なし |
ローリングリスタートをトリガーするフィールド
以下のフィールドを変更すると、ゲートウェイのローリングリスタートがトリガーされます。慎重に操作してください。
env
ports (ASM バージョン 1.16 より前ではリスタートがトリガーされますが、1.16 以降ではトリガーされません)
configVolumes
resources
secretVolumes
podLabels
podAnnotations
kernel.enabled
kernel.parameters
hostNetwork
dnsPolicy
nodeSelector (スケジューリングに依存)
affinity (スケジューリングに依存)
tolerations (スケジューリングに依存)