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

Container Service for Kubernetes:Knative サービスの HTTPS 証明書アクセスの設定

最終更新日:Apr 04, 2026

Knative サービスでカスタムドメインを使用する場合、データ伝送のセキュリティを強化するために、ドメインに HTTPS 証明書を設定することを推奨します。Knative では、DomainMapping リソースを設定することで HTTPS 証明書を指定でき、これにより Knative サービスがカスタムドメインにマッピングされます。

前提条件

ステップ 1:Knative サービスの作成

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

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

  3. Knative ページで、サービス管理 タブで、名前空間 ドロップダウンリストから デフォルト を選択し、テンプレートで作成 をクリックします。サンプルテンプレートを使用して helloworld-go サービスを作成し、画面の指示に従います。

    image.png

ステップ 2:TLS シークレットの作成

Knative は、キー、パスワード、証明書などの機密情報を保存および管理するためにシークレットを使用します。

  1. 自己署名証明書を作成するには、次のコマンドを実行します。

    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. ステップ 1knativetop-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. 次のコマンドを実行して、シークレットを作成します。

    このシークレットは、Knative サービスの TLS 設定で使用され、helloworld.knative.top ドメインを保護します。

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

    期待される出力:

    secret/secret-tls created

ステップ 3:DomainMapping の作成

Knative では、DomainMapping はカスタムドメインを Knative サービスにマッピングするリソースオブジェクトであり、そのドメインを介してサービスにアクセスできるようにします。

  1. 次のコマンドを実行して、helloworld.knative.top.yaml ファイルを作成します。

    vim helloworld.knative.top.yaml
  2. 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 ブロックは、使用するシークレットを指定します
      tls:
        secretName: secret-tls
  3. 次のコマンドを実行して、helloworld.knative.top.yaml ファイルをクラスターに適用します。

    kubectl apply -f helloworld.knative.top.yaml

    期待される出力:

    domainmapping.serving.knative.dev/helloworld.knative.top created
  4. 次のコマンドを実行して、DomainMapping を検証します。

    kubectl get domainmapping helloworld.knative.top

    期待される出力:

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       https://helloworld.knative.top            True

ステップ 4:HTTPS サービスへのアクセス

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

ALB

ポート 443 のリスナーを AlbConfig に追加します。たとえば、次のリスナー設定を knative-internet に追加します。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: knative-internet
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: HTTPS # protocol の有効な値:HTTP、HTTPS、QUIC。
  ...

サービスへのアクセス:

# alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com を ALB イングレスアドレスに置き換えます。
curl -H "Host: helloworld.knative.top" https://alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com -k

ASM

# 8.141.XX.XX を ASM イングレスアドレスに置き換えます。
curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX -k

期待される出力:

Hello Knative!

関連ドキュメント