すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:IPv6アドレスを使用するイングレスゲートウェイの作成

最終更新日:Jan 15, 2025

IPv6は、IPv4と比較して、より大きなアドレス空間とより高いセキュリティを提供します。このトピックでは、Service Mesh(ASM)イングレスゲートウェイをIPv6アドレスを使用して作成する方法について説明します。また、既存のイングレスゲートウェイにIPv6アドレスを追加する方法についても説明します。

前提条件

クラスターがASMインスタンスに追加されていること。詳細については、「ASMインスタンスへのクラスターの追加」をご参照ください。

方法 1:IPv6アドレスを使用するイングレスゲートウェイの作成

IPv6アドレスを使用するイングレスゲートウェイを作成するには、service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6" アノテーションをYAMLコードに追加する必要があります。

  1. [ASMコンソール] にログインします。左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASMインスタンスの名前をクリックします。左側のナビゲーションペインで、[ASMゲートウェイ] > [イングレスゲートウェイ] を選択します。

  3. [イングレスゲートウェイ] ページで、[YAMLから作成] をクリックします。

  4. [作成] ページで、[名前空間] パラメーターを [istio-system] に設定し、YAMLコードエディターに次のコンテンツを入力して、[作成] をクリックします。

    clusterIds フィールドの値を、データプレーン上のクラスターのIDに置き換えます。

    サンプルYAMLコードの表示

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      name: ingressgateway
      namespace: istio-system
    spec:
      gatewayType: ingress
      clusterIds:
        -c808cdd6abd854d5ba6764da5ca2e**** # データプレーン上のクラスターIDに置き換えてください。
      ports:
        - name: http-0
          port: 80
          targetPort: 80
          protocol: HTTP
        - name: https-1
          port: 443
          targetPort: 443
          protocol: HTTPS
      serviceAnnotations:
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
      replicaCount: 1
      resources:
        limits:
          cpu: '2'
          memory: 4G
        requests:
          cpu: 200m
          memory: 256Mi
      serviceType: LoadBalancer
      autoCreateGatewayYaml: true                      

    フィールド

    説明

    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.smallslb.s2.small、slb.s2.medium、slb.s3.smallslb.s3.mediumslb.s3.large

    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version

    CLBインスタンスが使用するIPアドレスのバージョン。この例では、パラメーターは ipv6 に設定されており、CLBインスタンスがIPv6アドレスを使用することを示します。

    イングレスゲートウェイが作成されると、[イングレスゲートウェイ] ページに表示されるイングレスゲートウェイの [サービスアドレス] がIPv6アドレスであることがわかります。

方法 2:既存のイングレスゲートウェイへのIPv6アドレスの追加

IPv4アドレスを使用するイングレスゲートウェイを作成済みの場合は、CLBインスタンスを作成してイングレスゲートウェイにIPv6アドレスを追加できます。その後、イングレスゲートウェイはIPv4アドレスとIPv6アドレスの両方を使用します。

  1. [ACKコンソール] にログインします。左側のナビゲーションペインで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。左側のペインで、[ネットワーク] > [サービス] を選択します。

  3. [サービス] ページの上部で、[名前空間] パラメーターを [istio-system] に設定し、右上隅にある [YAMLから作成] をクリックします。

  4. [作成] ページで、カスタム[サンプルテンプレート] ドロップダウンリストから テンプレート作成 を選択し、次のコンテンツを コードエディターにコピーして、 をクリックします。

    重要

    nodePortパラメーターの値は、既存のポート番号と同じにすることはできません。

    サンプルYAMLコードの表示

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
      labels:
        app: istio-ingressgateway
        asm-system: 'true'
        istio: ingressgateway
      name: istio-ingressgateway-2
      namespace: istio-system
    spec:
      externalTrafficPolicy: Cluster
      ports:
        - name: http-0
          nodePort: 30544
          port: 80
          protocol: TCP
          targetPort: 80
        - name: https-2
          nodePort: 30682
          port: 443
          protocol: TCP
          targetPort: 443
      selector:
        app: istio-ingressgateway
        asm-system: 'true'
        istio: ingressgateway
        provider: asm
      sessionAffinity: None
      type: LoadBalancer
                            

    フィールド

    説明

    service.beta.kubernetes.io/alicloud-loadbalancer-address-type

    CLBインスタンスのタイプ。有効な値:

    • internet:インターネット向けCLBインスタンス

    • intranet:内部向けCLBインスタンス

    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec

    CLBインスタンスの仕様。有効な値:slb.s1.smallslb.s2.smallslb.s2.mediumslb.s3.smallslb.s3.mediumslb.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アドレスは、イングレスゲートウェイによって使用されます。

    image

FAQ

クライアントの元のIPv6アドレスを取得するにはどうすればよいですか?

  1. IPv6アドレスを使用するCLBインスタンスを構成します。ポート 80 および 443 のCLBインスタンスのリスナーの [詳細設定] セクションでProxy Protocolを有効にします。詳細については、「レイヤー4リスナーでクライアントIPアドレスを保持する」をご参照ください。

  2. Envoyフィルターテンプレートを作成します。

    1. [ASMコンソール] にログインします。左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASMインスタンスの名前をクリックします。左側のナビゲーションペインで、[プラグイン拡張センター] > [envoyfilterテンプレート] を選択します。表示されるページで、[envoyfilterテンプレートの作成] をクリックします。

    3. [作成] ページで、テンプレート名を入力し、[特定の適用済み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
  3. イングレスゲートウェイがProxy Protocolをサポートするように、Envoyフィルターテンプレートをイングレスゲートウェイに適用します。

    1. [envoyfilterテンプレート] ページで、前の手順で作成したEnvoyフィルターテンプレートを見つけて、テンプレートの編集[アクション] 列の をクリックします。

    2. [envoyfilterテンプレートの編集] ページで、[ワークロードへのテンプレートのバインド] タブをクリックし、[ワークロードへのenvoyfilterのバインド] をクリックします。

    3. [ワークロードへのenvoyfilterのバインド] ダイアログボックスで、[名前空間] パラメーターを [istio-system] に、[ワークロードタイプ] パラメーターを [デプロイメント] に設定し、バインド[バインドされていない] セクションのイングレスゲートウェイの横にある OK をクリックし、 をクリックします。

  4. 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}