IPv6は、IPv4と比較して、より大きなアドレス空間とより高いセキュリティを提供します。このトピックでは、Service Mesh(ASM)イングレスゲートウェイをIPv6アドレスを使用して作成する方法について説明します。また、既存のイングレスゲートウェイにIPv6アドレスを追加する方法についても説明します。
前提条件
クラスターがASMインスタンスに追加されていること。詳細については、「ASMインスタンスへのクラスターの追加」をご参照ください。
方法 1:IPv6アドレスを使用するイングレスゲートウェイの作成
IPv6アドレスを使用するイングレスゲートウェイを作成するには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
アノテーションをYAMLコードに追加する必要があります。
[ASMコンソール] にログインします。左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASMインスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
[イングレスゲートウェイ] ページで、[YAMLから作成] をクリックします。
[作成] ページで、[名前空間] パラメーターを [istio-system] に設定し、YAMLコードエディターに次のコンテンツを入力して、[作成] をクリックします。
clusterIds
フィールドの値を、データプレーン上のクラスターのIDに置き換えます。フィールド
説明
service.beta.kubernetes.io/alicloud-loadbalancer-address-type
Classic Load Balancer(CLB)インスタンスのタイプ。有効な値:
internet:インターネット向けCLBインスタンス
intranet:内部向けCLBインスタンス
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec
CLBインスタンスの仕様。有効な値:slb.s1.small、slb.s2.small、slb.s2.medium、slb.s3.small、slb.s3.medium、slb.s3.large。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
CLBインスタンスが使用するIPアドレスのバージョン。この例では、パラメーターは
ipv6
に設定されており、CLBインスタンスがIPv6アドレスを使用することを示します。イングレスゲートウェイが作成されると、[イングレスゲートウェイ] ページに表示されるイングレスゲートウェイの [サービスアドレス] がIPv6アドレスであることがわかります。
方法 2:既存のイングレスゲートウェイへのIPv6アドレスの追加
IPv4アドレスを使用するイングレスゲートウェイを作成済みの場合は、CLBインスタンスを作成してイングレスゲートウェイにIPv6アドレスを追加できます。その後、イングレスゲートウェイはIPv4アドレスとIPv6アドレスの両方を使用します。
[ACKコンソール] にログインします。左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のペインで、 を選択します。
[サービス] ページの上部で、[名前空間] パラメーターを [istio-system] に設定し、右上隅にある [YAMLから作成] をクリックします。
[作成] ページで、カスタム[サンプルテンプレート] ドロップダウンリストから テンプレート作成 を選択し、次のコンテンツを コードエディターにコピーして、 をクリックします。
重要nodePortパラメーターの値は、既存のポート番号と同じにすることはできません。
フィールド
説明
service.beta.kubernetes.io/alicloud-loadbalancer-address-type
CLBインスタンスのタイプ。有効な値:
internet:インターネット向けCLBインスタンス
intranet:内部向けCLBインスタンス
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec
CLBインスタンスの仕様。有効な値:slb.s1.small、slb.s2.small、slb.s2.medium、slb.s3.small、slb.s3.medium、slb.s3.large。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
CLBインスタンスが使用するIPアドレスのバージョン。この例では、パラメーターは
ipv6
に設定されており、CLBインスタンスがIPv6アドレスを使用することを示します。CLBインスタンスが作成されると、[サービス] ページの [外部IP] 列に、istio-ingressgatewayとistio-ingressgateway-2のIPv4アドレスとIPv6アドレスが表示されます。表示されたIPv4アドレスとIPv6アドレスは、イングレスゲートウェイによって使用されます。
FAQ
クライアントの元のIPv6アドレスを取得するにはどうすればよいですか?
IPv6アドレスを使用するCLBインスタンスを構成します。ポート 80 および 443 のCLBインスタンスのリスナーの [詳細設定] セクションでProxy Protocolを有効にします。詳細については、「レイヤー4リスナーでクライアントIPアドレスを保持する」をご参照ください。
Envoyフィルターテンプレートを作成します。
[ASMコンソール] にログインします。左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASMインスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。表示されるページで、[envoyfilterテンプレートの作成] をクリックします。
[作成] ページで、テンプレート名を入力し、[特定の適用済みistioバージョン用のenvoyfilterテンプレートを追加] をクリックし、Istioバージョンを選択し、YAMLコードエディターに次のコンテンツを入力して、[作成] をクリックします。
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: proxy-protocol namespace: istio-system spec: configPatches: - applyTo: LISTENER patch: operation: MERGE value: listener_filters: - name: envoy.listener.proxy_protocol - name: envoy.listener.tls_inspector workloadSelector: labels: istio: ingressgateway
イングレスゲートウェイがProxy Protocolをサポートするように、Envoyフィルターテンプレートをイングレスゲートウェイに適用します。
[envoyfilterテンプレート] ページで、前の手順で作成したEnvoyフィルターテンプレートを見つけて、テンプレートの編集[アクション] 列の をクリックします。
[envoyfilterテンプレートの編集] ページで、[ワークロードへのテンプレートのバインド] タブをクリックし、[ワークロードへのenvoyfilterのバインド] をクリックします。
[ワークロードへのenvoyfilterのバインド] ダイアログボックスで、[名前空間] パラメーターを [istio-system] に、[ワークロードタイプ] パラメーターを [デプロイメント] に設定し、バインド[バインドされていない] セクションのイングレスゲートウェイの横にある OK をクリックし、 をクリックします。
IPv6アドレスを使用するURLにアクセスし、イングレスゲートウェイのログを確認します。
サンプルログでは、
downstream_remote_address
フィールドの値は、クライアントの元のIPv6アドレスを示します。{"upstream_cluster":null,"bytes_received":0,"downstream_local_address":"[2400:XXXX:1300::12d1]:80","upstream_service_time":null,"FILTER_CHAIN_NAME":null,"path":"/","x_forwarded_for":"2402:XXXX:1800:af00:0:9671:f00f:314b","upstream_host":null,"bytes_sent":0,"requested_server_name":null,"route_name":null,"response_flags":"NR","start_time":"2022-12-28T06:41:57.796Z","upstream_transport_failure_reason":null,"protocol":"HTTP/1.1","authority":"[2400:XXXX:1300::12d1]","LOCAL_REPLY_BODY":"","duration":0,"method":"GET","downstream_remote_address":"[2402:XXXX:1800:af00:0:9671:f00f:314b]:58272","request_id":"fee2b69a-b755-986b-91e4-5d228c81****","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36","trace_id":null,"authority_for":"[2400:XXXX:1300::12d1]","upstream_local_address":null,"istio_policy_status":null,"response_code":404}