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

Container Service for Kubernetes:HTTPS リスナーの証明書の構成

最終更新日:Jun 11, 2025

HTTPS リスナーを作成する場合は、クライアントとリスナー間の暗号化接続を確保するために、SSL または Transport Layer Security (TLS) 証明書を構成する必要があります。 このトピックでは、Application Load Balancer (ALB) Ingress でサポートされている証明書の構成方法について説明します。

証明書の構成方法の比較

ALB Ingress を使用すると、証明書の自動検出の構成、Kubernetes Secrets としての証明書の管理、AlbConfigs での証明書の指定を行うことができます。 次の表は、前述の方法を比較したものです。

項目

証明書の自動検出を構成する

AlbConfigs で証明書を指定する

Kubernetes Secrets として証明書を管理する

証明書の保存

証明書は Certificate Management Service に保存されます。

証明書は Kubernetes Secrets として保存されます。

証明書の検出

証明書は、証明書にバインドされているドメイン名に基づいて検出されます。

証明書は、その ID に基づいて検出されます。

証明書は、証明書が保存されているシークレットに基づいて検出されます。

シナリオ

この方法は、Certificate Management Service コンソールで購入した証明書、または Certificate Management Service コンソールにアップロードされた証明書に適しています。

この方法は、クラスタ内で管理される証明書に適しています。 たとえば、cert-manager を使用して証明書を管理する場合、証明書を Secrets に保存できます。

名前空間をまたがる証明書の利用

サポートされています

サポートされていません。 Secret として保存された証明書は、その Secret の名前空間内でのみ使用できます。

証明書の更新方法

Certificate Management Service コンソール に新しい証明書をアップロードするか、元の証明書を更新する必要があります。 その後、証明書が関連付けられている Ingress の構成を手動で変更する必要があります。

証明書が保存されている Secret の構成を更新する必要があります。

重要

ALB インスタンスは最大 25 個の証明書をサポートします。 ほとんどの場合、ALB インスタンスで使用される証明書の数は、Ingress に関連付けられた証明書を含む、インスタンスのすべてのリスナーに関連付けられた証明書の総数と等しくなります。 詳細については、「ALB クォータの計算方法」をご参照ください。

異なる方法で構成された証明書の互換性

次の表は、異なる方法で構成された証明書の互換性について説明しています。

証明書の構成方法

説明

ある証明書は証明書の自動検出を使用して構成され、別の証明書は Kubernetes Secret を使用して構成されています。

  • 両方の証明書が同じドメイン名に関連付けられている場合、Secret を使用して構成された証明書が優先的に使用されます。

  • 証明書が異なるドメイン名に関連付けられている場合、ALB Ingress コントローラーは対応するドメイン名の証明書を使用します。

ある証明書は証明書の自動検出を使用して構成され、別の証明書は AlbConfig で指定されています。 両方の証明書は同じリスナーに関連付けられています。

リスナーは、AlbConfig で指定された証明書のみを使用します。

ある証明書は Kubernetes Secret を使用して構成され、別の証明書は AlbConfig で指定されています。 両方の証明書は同じリスナーに関連付けられています。

両方の証明書が使用されます。

前提条件

信頼できる証明書を取得します。 以下のいずれかの方法で証明書を取得できます。

  • Certificate Management Service コンソールで証明書を購入します。 詳細については、「公式証明書を購入する」をご参照ください。

  • 別の認証局 (CA) によって発行された証明書を購入します。

  • (オプション) 自己署名証明書を作成します。 詳細については、「自己署名証明書を作成する」をご参照ください。

手順

重要

デフォルトでは、AlbConfig はポート 80 の HTTP リスナーで構成されています。HTTPS リスナーを作成し、証明書を構成する必要があります。証明書が構成されていない場合、HTTPS リスナーは使用できなくなり、証明書がないためコントローラーは失敗します。

ステップ 1: AlbConfig で HTTPS リスナーを作成する

ACK コンソールを使用する

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

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、[ワークロード] > [カスタムリソース] を選択します。

  3. [リソースオブジェクト] タブで、検索ボックスに AlbConfig と入力し、表示された [AlbConfig] をクリックします。

  4. [AlbConfig] パネルで、デフォルトで名前が alb のリソースを見つけ、[アクション] 列の [YAML を編集] をクリックします。

  5. [YAML で表示] パネルで、spec.listeners.port フィールドと spec.listeners.protocol フィールドを追加します。次に、[OK] をクリックします。

    image

kubectl を使用する

  1. 次のコマンドを実行して、albconfig 構成ファイルを編集します。

    kubectl edit albconfig <Albconfig_Name>
  2. ビジネス要件に基づいて構成を変更します。Albconfig で port パラメーターと protocol パラメーターを構成して、対応するリスナーを作成できます。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        addressAllocatedMode: Fixed
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-bp19sXXXXXXX176iv
        - vSwitchId: vsw-bp1boXXXXXXXu74xz
      listeners:
      - port: 80
        protocol: HTTP
      - port: 443         # 新しいフィールド
        protocol: HTTP # 新しいフィールド。有効な値: HTTP、 HTTPS、および QUIC。
    

(オプション) ステップ 2:自己署名証明書を作成する

以下の OpenSSL コマンドを実行して、自己署名証明書を作成します。

重要
  • デフォルトでは、自己署名証明書はブラウザまたはクライアントによって信頼されていません。自己署名証明書を使用する場合、セキュリティ警告が表示されることがあります。この例で生成された自己署名証明書は参照用です。本番環境では証明書を使用しないでください。

  • 上記のコマンドラインでは、demo.alb.ingress.top ドメイン名が自己署名証明書に関連付けられています。ドメイン名をカスタムドメイン名に置き換えることができます。

openssl genrsa -out albtop-key.pem 4096
openssl req -subj "/CN=demo.alb.ingress.top" -sha256  -new -key albtop-key.pem -out albtop.csr
echo subjectAltName = DNS:demo.alb.ingress.top > extfile.cnf
openssl x509 -req -days 3650 -sha256 -in albtop.csr -signkey albtop-key.pem -out albtop-cert.pem -extfile extfile.cnf
  1. 証明書と秘密鍵を表示するには、次のコマンドを実行します。

    cat albtop-key.pem     # 秘密鍵。
    cat albtop-cert.pem   # 証明書。
  2. 証明書ファイルと秘密鍵ファイルを Base64 でエンコードするには、次のコマンドを実行します。

    echo -n `cat albtop-key.pem` | base64     # 秘密鍵ファイルを Base64 でエンコードします。
    echo -n `cat albtop-cert.pem` | base64   # 証明書ファイルを Base64 でエンコードします。

ステップ 3:サンプルリソースを作成する

AlbConfig に加えて、ALB Ingress が正しく機能するには、Deployment、Service、IngressClass、および Ingress の 4 つの Kubernetes リソースが必要です。次の手順を使用して、これらのリソースをすばやく作成します。

ACK コンソールを使用する

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

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

  3. [YAML から作成] をクリックします。

    1. [サンプルテンプレート][カスタム] を選択します。

    2. [テンプレート]:次のコードをコードエディターにコピーします。この構成は、Deployment、Service、IngressClass、および Ingress リソースを定義します。

      YAML ファイルを表示する

      apiVersion: networking.k8s.io/v1
      kind: IngressClass
      metadata:
        name: https-ingressclass
      spec:
        controller: ingress.k8s.alibabacloud/alb
        parameters:
          apiGroup: alibabacloud.com
          kind: AlbConfig
          name: alb # 作成した AlbConfig の名前に値を設定します。
      ---
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: https-ingress
      spec:
        ingressClassName: https-ingressclass
        rules:
        - host: demo.alb.ingress.top # demo.alb.ingress.top を使用するドメイン名に置き換えます。
          http:
            paths:
            - backend:
                service:
                  name: https-svc
                  port:
                    number: 443
              path: /
              pathType: Prefix
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: https-deploy
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: https-deploy
        template:
          metadata:
            labels:
              app: https-deploy
          spec:
            containers:
              - image: registry.cn-hangzhou.aliyuncs.com/acs-sample/old-nginx:latest
                imagePullPolicy: IfNotPresent
                name: https-deploy
                ports:
                  - containerPort: 80
                    protocol: TCP
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: https-svc
      spec:
        ports:
          - name: port1
            port: 443
            protocol: TCP
            targetPort: 80
        selector:
          app: https-deploy
        sessionAffinity: None
        type: ClusterIP
    3. [作成] をクリックします。リソースの作成プロセスが開始されたことを示す確認メッセージが表示されます。

    4. 次の手順を実行して、Deployment と Service が作成されたことを確認します。

      1. 左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。https-deploy という名前の Deployment がデプロイされます。

      2. 左側のナビゲーションウィンドウで、[ネットワーク] > [サービス] を選択します。https-svc という名前の Service がデプロイされます。

      3. 左側のナビゲーションウィンドウで、[ネットワーク] > [Ingress] を選択します。https-ingress という名前の Ingress がデプロイされます。

kubectl を使用する

  1. https-quickstart.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: https-ingressclass
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb # 作成した AlbConfig の名前に値を設定します。
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: https-deploy
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: https-deploy
      template:
        metadata:
          labels:
            app: https-deploy
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/acs-sample/old-nginx:latest
              imagePullPolicy: IfNotPresent
              name: https-deploy
              ports:
                - containerPort: 80
                  protocol: TCP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: https-svc
    spec:
      ports:
        - name: port1
          port: 443
          protocol: TCP
          targetPort: 80
      selector:
        app: https-deploy
      sessionAffinity: None
      type: ClusterIP
  2. 次のコマンドを実行して、上記のリソースを作成します。

    kubectl apply -f https-quickstart.yaml

ステップ 4: 証明書を構成する

証明書の自動検出を構成する

ACK コンソールを使用する

自己署名証明書を Certificate Management Service にアップロードした後、Ingress 構成の tls フィールドに証明書にバインドされているドメイン名を指定できます。このようにして、ALB Ingress はアップロードされた証明書を自動的に検出して使用できます。

  1. 自己署名証明書を Certificate Management Service コンソールにアップロードします。詳細については、「SSL 証明書のアップロードと共有」をご参照ください。

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

  3. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のウィンドウで、[ネットワーク] > [Ingress] を選択します。

  4. [Ingress] ページで、更新する Ingress を見つけ、[アクション] 列の [更新] をクリックします。[Ingress の変更] パネルで、パラメーターを構成します。次の表にパラメーターを示します。

    パラメーター

    説明

    TLS 設定

    TLS 認証を有効にするかどうかを指定します。Ingress の TLS 認証を有効にできます。

    • ドメイン名:カスタムドメイン名を入力します。

    • シークレット:使用するシークレットを選択します。

      説明

      このパラメーターを空のままにすると、証明書の自動検出が使用されます。

      シークレットを作成するには、次の手順を実行します。

      1. [シークレット] フィールドの右側にある [作成] をクリックします。

      2. [シークレットの作成] ダイアログボックスで、[名前][証明書]、および [キー] パラメーターを構成します。次に、[OK] をクリックします。

      3. [シークレット] ドロップダウンリストから、作成したシークレットを選択します。

    [+ 追加] をクリックして、さらに TLS 証明書を追加できます。

    • ドメイン名:demo.alb.ingress.top

    • シークレット:このパラメーターは空のままにします。

    (オプション) アノテーション

    以下のことができます。

    • カスタムアノテーション名と値を定義する

    • 構成のために、名前で既存のアノテーションを選択またはフィルタリングする

    Ingress アノテーションの詳細については、「Ingress でサポートされているアノテーション」をご参照ください。

    [+ アノテーションを追加] をクリックして、アノテーションを追加します。ACK では、追加できる Ingress アノテーションの数に制限はありません。

    構成は不要です。

    説明

    HTTP リクエストと HTTPS リクエストの両方をリッスンする場合は、次のアノテーションを追加します。

    • 名前alb.ingress.kubernetes.io/listen-ports

    • [{"HTTP": 80},{"HTTPS": 443}]

    1746500886011_7B8D9B84-2F18-4519-9A8A-50BECE7333FB

kubectl を使用する

自己署名証明書を Certificate Management Service にアップロードした後、Ingress 構成の tls フィールドに証明書にバインドされているドメイン名を指定できます。このようにして、ALB Ingress はアップロードされた証明書を自動的に検出して使用できます。

  1. 自己署名証明書を Certificate Management Service コンソールにアップロードします。詳細については、「SSL 証明書のアップロードと共有」をご参照ください。

  2. 次のコマンドを実行して、Ingress を変更します。

    kubectl edit ingress https-ingress
  3. tls フィールドを追加し、証明書にバインドされているドメイン名を指定します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    #  annotations:
    #    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'  # HTTP リクエストと HTTPS リクエストの両方をリッスンする場合に、このアノテーションを追加します。
      name: https-ingress
    spec:
      ingressClassName: https-ingressclass
      rules:
      - host: demo.alb.ingress.top # demo.alb.ingress.top を使用するドメイン名に置き換えます。
        http:
          paths:
          - backend:
              service:
                name: https-svc
                port:
                  number: 443
            path: /
            pathType: Prefix
      tls: # 新しいフィールド
      -hosts: # 新しいフィールド
        - demo.alb.ingress.top # 新しいフィールド。証明書にバインドされているドメイン名に設定します。ドメイン名は、「rules: host」フィールドで指定されたドメイン名と同じである必要があります。

説明

証明書の自動検出が構成されると、関連付けられた ALB インスタンスは自動的に HTTPS:443 リスナーを作成します。

証明書をシークレットとして管理する

ACK コンソールを使用する

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

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

  3. [Ingress] ページで、更新する Ingress を見つけ、[アクション] 列の [更新] をクリックします。[Ingress の変更] パネルで、パラメーターを構成します。次の表にパラメーターを示します。

    パラメーター

    説明

    TLS 設定

    TLS 認証を有効にするかどうかを指定します。 Ingress の TLS 認証を有効にできます。

    • ドメイン名:カスタムドメイン名を入力します。

    • シークレット:使用するシークレットを選択します。

      説明

      このパラメーターを空のままにすると、証明書の自動検出が使用されます。

      シークレットを作成するには、次の手順を実行します。

      1. [シークレット] フィールドの右側にある [作成] をクリックします。

      2. [シークレットの作成] ダイアログボックスで、[名前][証明書]、および [キー] パラメーターを構成します。次に、[OK] をクリックします。

      3. [シークレット] ドロップダウンリストから、作成したシークレットを選択します。

    [+ 追加] をクリックして、さらに TLS 証明書を追加できます。

    • ドメイン名:demo.alb.ingress.top

    • シークレット:https-secret

      • シークレット名:https-secret

      • 証明書:Base64 でエンコードされていない自己署名証明書。

      • キー:Base64 でエンコードされていない自己署名秘密鍵。

    (オプション) アノテーション

    以下のことができます。

    • カスタムアノテーション名と値を定義する

    • 構成のために、名前で既存のアノテーションを選択またはフィルタリングする

    Ingress アノテーションの詳細については、「Ingress でサポートされているアノテーション」をご参照ください。

    [+ アノテーションを追加] をクリックして、アノテーションを追加します。ACK では、追加できる Ingress アノテーションの数に制限はありません。

    構成は不要です。

    説明

    HTTP リクエストと HTTPS リクエストの両方をリッスンする場合は、次のアノテーションを追加します。

    • 名前alb.ingress.kubernetes.io/listen-ports

    • [{"HTTP": 80},{"HTTPS": 443}]

    image

kubectl を使用する

自己署名証明書をシークレットに保存し、Ingress 構成でシークレットを指定できます。

  1. シークレットを作成する

    1. https-secret.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。証明書ファイルと秘密鍵ファイルを Base64 でエンコードする方法の詳細については、「(オプション) ステップ 2:自己署名証明書を作成する」の手順をご参照ください。

      apiVersion: v1
      kind: Secret
      metadata:
        name: https-secret
      type: kubernetes.io/tls
      data:
        tls.key: |  # albtop-key.pem ファイルの Base64 エンコードされたコンテンツ。
          {base64 albtop-key.pem}     
        tls.crt: |  # albtop-cert.pem ファイルの Base64 エンコードされたコンテンツ。
          {base64 albtop-cert.pem}     
    2. 次のコマンドを実行して、シークレットを作成します。

      kubectl apply -f https-secret.yaml
  2. Ingress を変更します。

    1. 次のコマンドを実行して、Ingress を変更します。

      kubectl edit ingress https-ingress
    2. tls フィールドを追加し、証明書にバインドされているドメイン名と、証明書が保存されているシークレットを指定します。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
      #  annotations:
      #    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'  # HTTP リクエストと HTTPS リクエストの両方をリッスンする場合に、このアノテーションを追加します。
        name: https-ingress
        namespace: default
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top # demo.alb.ingress.top を使用するドメイン名に置き換えます。
          http:
            paths:
            - backend:
                service:
                  name: https-svc
                  port:
                    number: 443
              path: /
              pathType: Prefix
        tls: # 新しいフィールド
        - hosts:
          - demo.alb.ingress.top # 新しいフィールド。証明書にバインドされているドメイン名に設定します。ドメイン名は、「rules: host」フィールドで指定されたドメイン名と同じである必要があります。
          secretName: https-secret # 新しいフィールド。証明書キーを作成します。

説明

シークレットを構成した後、default-https-secret-****** という名前の証明書が Certificate Management Service コンソールの SSL 証明書管理ページに自動的にアップロードされます。関連付けられた ALB インスタンスは自動的に HTTPS:443 リスナーを作成します。

AlbConfig で証明書を指定する

ACK コンソールを使用する

  1. 自己署名証明書の CertIdentifier を取得します。

    自己署名証明書を Certificate Management Service にアップロードした後、AlbConfig のリスナー構成の CertificateId フィールドに証明書 ID を指定できます。このようにして、証明書はリスナーに関連付けられます。

    説明

    リスナーが証明書に関連付けられている場合、Ingress は証明書の自動検出機能を使用しなくなります。

    1. 自己署名証明書を Certificate Management Service コンソールにアップロードします。詳細については、「SSL 証明書のアップロードと共有」をご参照ください。

    2. 証明書 ID を取得します。

      1. Certificate Management Service コンソール にログインします。

      2. 左側のナビゲーションウィンドウで、[証明書管理] > [SSL 証明書管理] を選択します。

      3. [SSL 証明書管理] ページで、[アップロードされた証明書の管理] タブをクリックします。アップロードした証明書を選択し、[アクション] 列の [詳細] をクリックします。

        [証明書の詳細] パネルで、[CertIdentifier] フィールドに証明書 ID が表示されます。

  2. AlbConfig で証明書を指定します。

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

    2. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のウィンドウで、[ワークロード] > [カスタムリソース] を選択します。

    3. [リソースオブジェクト] タブで、検索ボックスに AlbConfig と入力し、表示された [AlbConfig] をクリックします。

    4. [AlbConfig] パネルで、デフォルトで名前が alb であるリソースを見つけ、[アクション] 列の [YAML の編集] をクリックします。

    5. [YAML で表示] パネルで、次のフィールドを追加します。表示されるダイアログボックスで、インスタンス名を変更し、[確認] をクリックします。

      フィールド

      説明

      certificates

      証明書情報。

      -

      CertificateId

      証明書の CertIdentifier です。これは、ステップ 1 で取得できます。

      756****-cn-hangzhou

      IsDefault

      証明書をデフォルトの証明書として設定するかどうかを指定します。

      true

      image

  3. Ingress を変更します。

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

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

    3. [Ingress] ページで、更新する Ingress を見つけ、[更新] 列の [アクション] をクリックします。[Ingress の変更] パネルで、パラメーターを構成します。次の表にパラメーターを示します。

      パラメーター

      説明

      アノテーション

      以下のことができます。

      • カスタムアノテーション名と値を定義する

      • 構成のために、名前で既存のアノテーションを選択またはフィルタリングする

      Ingress アノテーションの詳細については、「Ingress でサポートされているアノテーション」をご参照ください。

      [+ アノテーションを追加] をクリックして、アノテーションを追加します。ACK では、追加できる Ingress アノテーションの数に制限はありません。

      • 名前: alb.ingress.kubernetes.io/listen-ports

      • : [{"HTTPS": 443}]

        説明

        HTTP リクエストと HTTPS リクエストの両方を listen する必要がある場合は、この値を [{"HTTP": 80},{"HTTPS": 443}] に置き換えます。

      image

kubectl を使用する

自己署名証明書を Certificate Management Service にアップロードした後、AlbConfig のリスナー構成の CertificateId フィールドで証明書 ID を指定できます。このようにして、証明書はリスナーに関連付けられます。

説明

リスナーが証明書に関連付けられている場合、Ingress は自動証明書検出機能を使用しなくなります。

  1. 自己署名証明書を Certificate Management Service コンソールにアップロードします。詳細については、「SSL 証明書のアップロードと共有」をご参照ください。

  2. 証明書 ID を取得します。

    1. Certificate Management Service コンソール にログインします。

    2. 左側のナビゲーションウィンドウで、[証明書管理] > [SSL 証明書管理] を選択します。

    3. [SSL 証明書管理] ページで、[アップロード済み証明書の管理] タブをクリックします。アップロードした証明書を選択し、[アクション] 列の [詳細] をクリックします。

      [証明書の詳細] パネルで、[CertIdentifier] フィールドに証明書 ID が表示されます。

AlbConfig で証明書を指定します。

  1. 次のコマンドを実行して、AlbConfig を変更します。

    kubectl edit albconfig <ALBCONFIG_NAME> # AlbConfig の名前に置き換えます。
  2. AlbConfig のリスナー構成に certificates フィールドを追加し、前の手順で取得した [証明書 ID] を指定します。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        addressType: Intranet
        name: xiaosha-alb-test
      listeners:
        - port: 80
          protocol: HTTP
        - certificates:
            - CertificateId: 756****-cn-hangzhou   # 証明書の ID
              IsDefault: true                      # 証明書がデフォルトかどうかを指定します
          port: 443
          protocol: HTTPS
  3. 次のコマンドを実行して、Ingress を変更します。

    kubectl edit ingress https-ingress
  4. alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]' アノテーションを追加します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'  # 新しいフィールド。 HTTP リクエストと HTTPS リクエストの両方をリッスンする場合は、値を '[{"HTTP": 80},{"HTTPS": 443}]' に変更します。
      name: https-ingress
    spec:
      ingressClassName: https-ingressclass
      rules:
      - host: demo.alb.ingress.top # demo.alb.ingress.top を使用するドメイン名に置き換えます。
        http:
          paths:
          - backend:
              service:
                name: https-svc
                port:
                  number: 443
            path: /
            pathType: Prefix
説明

AlbConfig が構成されると、関連付けられた ALB インスタンスは HTTPS:443 リスナーを自動的に作成します。

ステップ 5: 結果の確認

HTTPS 経由でアプリケーションにアクセスし、証明書が構成されているかどうかを確認します。

  1. 次のコマンドを実行して Ingress をクエリします。

    kubectl get ingress

    期待される出力:

    NAME            CLASS                HOSTS                  ADDRESS                         PORTS     AGE
    https-ingress   https-ingressclass   demo.alb.ingress.top   alb-********.alb.aliyuncs.com   80, 443   83m

    HOSTS 列と ADDRESS 列の値を記録します。

  2. 次のコマンドを実行して、ALB Ingress のバックエンド サービスにアクセスします。 demo.alb.ingress.topalb-********.alb.aliyuncs.com を前の手順で取得した値に置き換えます。

    curl -H HOST:demo.alb.ingress.top -k https://alb-********.alb.aliyuncs.com

    次の出力が返された場合、証明書は構成されています。

    old

参考文献