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

Container Compute Service:Knative Service に HTTPS でアクセスするための証明書設定

最終更新日:Sep 17, 2026

Knative Service にカスタムドメイン名を使用する場合は、データ転送のセキュリティを向上させるため、カスタムドメイン名に HTTPS 証明書を設定することを推奨します。Knative では、DomainMapping を設定することで HTTPS 証明書を指定でき、Knative Service をカスタムドメイン名へ安全にマッピングできます。

前提条件

Container Compute Service (ACS) クラスターに Knative がデプロイされていること。詳細については、「Knative のデプロイ」をご参照ください。

ステップ 1: Knative Service の作成

  1. コンテナコンピューティングサービス (ACS) コンソールにログインします。左側のナビゲーションペインで、[クラスター]をクリックします。

  2. [クラスター] ページで、ターゲットクラスターの名前をクリックします。 クラスター詳細ページの左側のナビゲーションペインで、[アプリケーション] > [Knative] を選択します。

  3. [Knative] ページの [サービス] タブで、[名前空間] を default に設定し、[テンプレートから作成] をクリックして、コンソールのサンプルテンプレートから Knative サービス (helloworld-go サービス) を作成します。指示に従って作成を完了します。サービスが作成されると、そのステータスが「サービス」タブで成功と表示され、デフォルトのドメイン名は helloworld-go.default.example.com になります。サービスにアクセスする前に、アクセスドメイン名をホストとしてイングレスゲートウェイにバインドする必要があります。

ステップ 2: HTTPS サービスの設定

HTTPS の設定方法は、ゲートウェイタイプによって異なります。

  • ALB ゲートウェイ:証明書は AlbConfig で一元管理されます。アノテーションを使用して TLS を有効にするため、証明書ファイルを手動で処理する必要はありません。

  • Kourier ゲートウェイ:証明書 Secret を手動で作成し、DomainMapping を使用して Secret をドメイン名にバインドする必要があります。

ALB

AlbConfig に証明書を指定し、knative.k8s.alibabacloud/tls: "true" アノテーションを使用すると、Knative Service で TLS アクセスを有効にできます。 次の例をご参照ください。

HTTPS アクセスを有効にするには、Knative Service に TLS アノテーションを追加し、AlbConfig でポート 443 にリスナーを設定します。

  1. Knative Service の YAML に knative.k8s.alibabacloud/tls: "true" アノテーションを追加します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld
      namespace: default
      annotations:
        knative.k8s.alibabacloud/tls: "true"
    spec:
      template:
        spec:
          containers:
          - image: registry-vpc.cn-shenzhen.aliyuncs.com/knative-sample/helloworld-go:73fbdd56  # リージョンを実際に使用するリージョンに置き換えてください。
            env:
            - name: TARGET
              value: "Knative"
  2. AlbConfig (例: knative-internet) にポート 443 のリスナーを追加し、HTTPS トラフィックをクラスターにルーティングします。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: knative-internet
    spec:
      config:
      ...
      listeners:
        - port: 443
          # 有効な値: HTTP、HTTPS、QUIC
          protocol: HTTPS
      ...
  3. Service に HTTPS 経由でアクセスできることを確認します。

    # alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com を実際のALBゲートウェイアドレスに置き換えてください。
    curl -H "Host: helloworld.knative.top" https://alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com -k

    想定される出力:

    Hello Knative!

Kourier

Kourier ゲートウェイには、組み込みの証明書管理機能がありません。まず、TLS 証明書を Secret としてクラスターに保存する必要があります。Secret の準備ができたら、DomainMapping を使用してドメイン名を証明書にバインドします。

1. 証明書 Secret の作成

次の例では、OpenSSL で生成された自己署名 HTTPS 証明書を使用します。 すでに .pem 形式の証明書ファイルがある場合は、ステップ 1 をスキップしてステップ 2 から開始できます。

自己署名証明書はテスト目的にのみ使用してください。本番環境では、認証局 (CA) によって発行された証明書を使用することを推奨します。

  1. OpenSSL を使用して自己署名証明書を作成します。

    openssl genrsa -out knativetop-key.pem 4096
    openssl req -subj "/CN=helloworld.knative.top" -sha256 -new -key knativetop-key.pem -out knativetop.csr
    echo subjectAltName = DNS:helloworld.knative.top > extfile.cnf
    openssl x509 -req -days 3650 -sha256 -in knativetop.csr -signkey knativetop-key.pem -out knativetop-cert.pem -extfile extfile.cnf

    想定される出力:

    Signature ok
    subject=CN = helloworld.knative.top
    Getting Private key
  2. ステップ 1 で作成した knativetop-key.pem と knativetop-cert.pem ファイルを Base64 エンコードします。

    • knativetop-key.pem を Base64 エンコードします。

      cat knativetop-key.pem | base64

      想定される出力:

      a25hdGl2ZXRvcC1r******
    • knativetop-cert.pem を Base64 でエンコードします。

      cat knativetop-cert.pem | base64

      想定される出力:

      a25hdGl2ZXRvcC1jZ******==
  3. Secret を作成します。この Secret を Knative Service の TLS 設定で使用すると、ドメイン名 helloworld.knative.top への安全なアクセスを有効にできます。

    kubectl create secret tls secret-tls --key knativetop-key.pem --cert knativetop-cert.pem

    想定される出力:

    secret/secret-tls created

2. DomainMapping の作成

Knative では、DomainMapping はドメイン名を 1 つ以上の Knative Service にマッピングするリソースオブジェクトです。Secret の準備ができたら、DomainMapping を使用してカスタムドメイン名を Knative Service にバインドし、以前に作成した Secret を参照して TLS 暗号化を有効にします。

  1. 以下の内容で helloworld.knative.top.yaml ファイルを作成します。

    apiVersion: serving.knative.dev/v1beta1
    kind: DomainMapping
    metadata:
      name: helloworld.knative.top
      namespace: default
    spec:
      ref:
        name: helloworld-go
        kind: Service
        apiVersion: serving.knative.dev/v1
    # tlsブロックでは、使用するSecretを指定します。
      tls:
        secretName: secret-tls
  2. DomainMapping をクラスターに適用します。

    kubectl apply -f helloworld.knative.top.yaml

    想定される出力:

    domainmapping.serving.knative.dev/helloworld.knative.top created
  3. 次のコマンドを実行して、DomainMapping が利用可能であることを確認します。

    kubectl get domainmapping helloworld.knative.top

    想定される出力:

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       https://helloworld.knative.top            True
  4. カスタムドメイン名経由で Service にアクセスできることを確認します。

    # 8.141.XX.XX は Kourier ゲートウェイのアドレスです。
    curl -H "Host: helloworld.knative.top" https://8.141.XX.XX -k

    想定される出力:

    Hello Knative!