Service Mesh (ASM) インスタンスのイングレスゲートウェイサービスのデータ圧縮を有効にすると、サーバーは HTTP リクエストのレスポンスコンテンツを圧縮します。これにより、応答時間とトラフィック消費が削減されます。このトピックでは、ASM インスタンスのイングレスゲートウェイサービスのデータ圧縮を有効にする方法について説明します。
前提条件
クラスターが ASM インスタンスに追加されていること。詳細については、「ASM インスタンスへのクラスターの追加」をご参照ください。
イングレスゲートウェイがデプロイされていること。詳細については、「イングレスゲートウェイの作成」をご参照ください。
ドメイン名を使用する場合は、ドメイン名のインターネットコンテンツプロバイダー (ICP) ファイリングを取得していること。
手順
ACK クラスターに NGINX アプリケーションをデプロイします。
以下の内容を含む nginx.yaml ファイルを作成します。
apiVersion: apps/v1 # 1.9.0 より前のバージョンでは apps/v1beta2 を使用します kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx sidecarset-injected: "true" spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx spec: ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: ClusterIP
次のコマンドを実行して、NGINX アプリケーションをデプロイします。
kubectl apply -f nginx.yaml
仮想サービスと Istio ゲートウェイを作成します。
ASM コンソール にログインします。左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。ASM インスタンスの名前をクリックするか、管理[アクション] 列の をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。表示されるページで、[YAML から作成] をクリックします。
[作成] ページで、名前空間を選択し、次の内容をコードエディターにコピーして、[作成] をクリックします。
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: nginx namespace: default spec: gateways: - nginx-gateway hosts: - '*' http: - match: - uri: exact: / route: - destination: host: nginx port: number: 80
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。表示されるページで、[YAML から作成] をクリックします。
[作成] ページで、名前空間を選択し、次の内容をコードエディターにコピーして、[作成] をクリックします。
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: nginx-gateway namespace: default spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
ASM インスタンスのイングレスゲートウェイサービスのデータ圧縮を有効にします。
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。
[イングレスゲートウェイ] ページで、使用するイングレスゲートウェイを見つけて、[YAML] をクリックします。
[編集] ダイアログボックスで、次の内容を YAML コードに追加し、[OK] をクリックします。
compression: content_type: - text/html enabled: true gzip: memory_level: 9 remove_accept_encoding_header: true
次の表に、いくつかのフィールドについて説明します。フィールドの詳細については、「Kubernetes API を使用したイングレスゲートウェイの作成と管理」をご参照ください。
フィールド
説明
compression.content_type
圧縮される Content-Type ヘッダー。
compression.enabled
イングレスゲートウェイサービスのデータ圧縮を有効にするかどうかを指定します。
compression.gzip
圧縮形式と圧縮に使用できるメモリの量。
compression.remove_accept_encoding_header
イングレスゲートウェイが HTTP リクエストをアップストリームサービスに転送する前に、クライアントから送信された HTTP リクエストから Accept-Encoding ヘッダーを削除するかどうかを指定します。パラメーターが
true
に設定されている場合、Accept-Encoding ヘッダーは HTTP リクエストから削除されます。パラメーターが
false
に設定されている場合、Accept-Encoding ヘッダーは HTTP リクエストに保持されます。
設定例:
イングレスゲートウェイサービスのデータ圧縮が有効になっていることを確認する
ブラウザーのデバッグページを開きます。この例では、Google Chrome を使用します。
Google Chrome の右上隅にある
アイコンをクリックします。
を選択します。
NGINX アプリケーションにアクセスします。
ACK コンソール にログインします。左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のペインで、 を選択します。
[サービス] ページの上部で、istio-system[名前空間] ドロップダウンリストから 外部 IP を選択します。 istio_ingressgateway を見つけ、 列でポートが 80 の IP アドレスを表示します。
DevTools パネルで、取得した istio_ingressgateway サービスのエンドポイントを入力します。
次の図に示すように、[レスポンスヘッダー] セクションで
content-encoding
パラメーターの値がgzip
の場合、イングレスゲートウェイサービスのデータ圧縮が有効になっていることを示します。