Knative サービスでカスタムドメインを使用する場合、データ伝送のセキュリティを強化するために、ドメインに HTTPS 証明書を設定することを推奨します。Knative では、DomainMapping リソースを設定することで HTTPS 証明書を指定でき、これにより Knative サービスがカスタムドメインにマッピングされます。
前提条件
ステップ 1:Knative サービスの作成
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
クラスターリスト ページで、ターゲットクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
-
Knative ページで、サービス管理 タブで、名前空間 ドロップダウンリストから デフォルト を選択し、テンプレートで作成 をクリックします。サンプルテンプレートを使用して helloworld-go サービスを作成し、画面の指示に従います。

ステップ 2:TLS シークレットの作成
Knative は、キー、パスワード、証明書などの機密情報を保存および管理するためにシークレットを使用します。
-
自己署名証明書を作成するには、次のコマンドを実行します。
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 -
ステップ 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******==
-
-
次のコマンドを実行して、シークレットを作成します。
このシークレットは、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 サービスにマッピングするリソースオブジェクトであり、そのドメインを介してサービスにアクセスできるようにします。
-
次のコマンドを実行して、
helloworld.knative.top.yamlファイルを作成します。vim helloworld.knative.top.yaml -
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 -
次のコマンドを実行して、
helloworld.knative.top.yamlファイルをクラスターに適用します。kubectl apply -f helloworld.knative.top.yaml期待される出力:
domainmapping.serving.knative.dev/helloworld.knative.top created -
次のコマンドを実行して、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!
関連ドキュメント
-
プローブを設定して、Knative サービスのヘルスと可用性をモニターします。詳細については、「Knative でのポートプロービングの設定」をご参照ください。
-
ご利用の Elastic Container Instance (ECI) がインターネットに接続する必要がある場合は、Elastic IP Address (EIP) をインスタンスに関連付ける必要があります。詳細については、「パブリックアクセスのために EIP を ECI にバインドする」をご参照ください。