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

Alibaba Cloud Service Mesh:イングレスゲートウェイの CLB インスタンスの HTTPS リスナーを作成する

最終更新日:Mar 21, 2025

Service Mesh(ASM)を使用すると、イングレスゲートウェイを使用して HTTPS と動的な証明書の読み込みを有効にすることができます。これにより、ゲートウェイのセキュリティが強化されます。イングレスゲートウェイの Classic Load Balancer(CLB)インスタンスに証明書をバインドすることで、HTTPS リスナーを作成できます。 HTTPS リスナーは、HTTPS リクエストを HTTP リクエストに復号化し、HTTP リクエストをイングレスゲートウェイポッドに転送します。このトピックでは、イングレスゲートウェイの CLB インスタンスに証明書をバインドして HTTPS リスナーを作成する方法について説明します。

前提条件

手順 1:CLB インスタンスにバインドする証明書を準備する

証明書と秘密鍵が作成されている場合

aliyun.com ドメイン名の証明書と秘密鍵を作成した場合は、証明書の名前を aliyun.com.crt に、秘密鍵の名前を aliyun.com.key に変更します。

証明書と秘密鍵が作成されていない場合

aliyun.com ドメイン名の証明書と秘密鍵がない場合は、OpenSSL を使用して、次の手順を実行して証明書または秘密鍵を作成します。

  1. 次のコマンドを実行して、ルート証明書と秘密鍵を作成します。

    openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt
  2. 次のコマンドを実行して、aliyun.com サーバーの証明書と秘密鍵を作成します。

    openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization"
    openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
  3. CLBコンソールで証明書を作成します。詳細については、「Alibaba Cloud SSL Certificates Service の証明書を使用する」をご参照ください。

    HTTPS リスナーを設定する場合、Certificate Management Service の証明書を使用するか、サードパーティのサーバー証明書と認証局(CA)証明書をアップロードできます。

手順 2:HTTPS リスナーを作成する

ASM では、カスタムイングレスゲートウェイを作成できます。 YAML ファイルでパラメーターを設定できます。詳細については、「Kubernetes API を使用したイングレスゲートウェイの作成と管理」をご参照ください。

  1. 次の内容を使用して、ingressgateway.yaml ファイルを作成します。

    serviceAnnotations フィールドを設定して、HTTPS CLB インスタンスを作成します。 CLB インスタンスは、ポート 443 で受信した HTTPS リクエストを HTTP リクエストに復号化し、HTTP リクエストをイングレスゲートウェイポッドのポート 80 に転送します。 ${YOUR_CERT_ID} は、手順 1 で準備した証明書の ID を指定します。

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: IstioGateway
    metadata:
      name: ingressgateway
      namespace: istio-system
    spec:
     ....
      ports:
        - name: http-0
          port: 80
          protocol: HTTP
          targetPort: 80
        - name: https-1
          port: 443
          protocol: HTTPS
          targetPort: 80
      ....
      serviceAnnotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: 'https:443'
        ....
      serviceType: LoadBalancer
  2. 次のコマンドを実行して、イングレスゲートウェイをデプロイします。

    kubectl apply -f ingressgateway.yaml

手順 3:HTTPS リスナーが有効になっているかどうかを確認する

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

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

  3. [イングレスゲートウェイ] ページで、[サービスアドレス] の値を取得します。

    [サービスアドレス] の値は、イングレスゲートウェイの IP アドレスです。

  4. 次のコマンドを実行して、HTTPS 経由で productpage サービスにアクセスします。

    前の手順で取得した イングレスゲートウェイの IP アドレス を使用します。

    curl -k -H Host:a.aliyun.com --resolve a.aliyun.com:443:${IP address of the ingress gateway} https://a.aliyun.com/productpage -I

    出力例:

    HTTP/2 200
    date: Fri, 13 Jan 2023 07:11:45 GMT
    content-type: text/html; charset=utf-8
    content-length: 5294
    vary: Accept-Encoding
    x-envoy-upstream-service-time: 23

    暗号化されたトラフィックは、CLB インスタンスを通過するときにプレーンテキストに復号化され、クラスターに入ります。この結果は、HTTPS リスナーが有効になっていることを示しています。