为 DomainMapping 使用自定义 TLS 证书¶
功能可用性:自 Knative v0.24 起为 beta 版
- beta 功能经过充分测试,启用它们被认为是安全的。对整个功能的_支持_不会取消,但细节可能会以不兼容的方式更改。
通过提供对现有TLS 证书的引用,您可以指示 DomainMapping 使用该证书来保护映射的服务。请注意,对于使用此功能的服务,将跳过使用 external-domain-tls 的自动证书创建。
先决条件¶
- 您已按照 配置自定义域名 中的步骤操作,现在有了一个工作的
DomainMapping。 - 您必须拥有来自证书颁发机构 (CA) 提供商的 TLS 证书或自签名证书。
步骤¶
-
假设您已从 CA 提供商处获得了
cert和key文件或拥有自签名证书,请运行以下命令创建一个普通的 Kubernetes TLS Secret使用 kubectl 创建 secret
其中kubectl create secret tls <tls-secret-name> --cert=path/to/cert/file --key=path/to/key/file<tls-secret-name>是正在创建的 secret 对象的名称。 -
按如下所示更新您的
DomainMappingYAML 文件以使用新创建的 secret其中apiVersion: serving.knative.dev/v1beta1 kind: DomainMapping metadata: name: <domain-name> namespace: <namespace> spec: ref: name: <service-name> kind: Service apiVersion: serving.knative.dev/v1 # tls block specifies the secret to be used tls: secretName: <tls-secret-name><tls-secret-name>是上一步中创建的 TLS secret 的名称。<domain-name>是您要将 Service 映射到的域名。<namespace>是包含DomainMapping和Service对象的命名空间。<service-name>是将被映射到该域的服务名称。
-
验证
DomainMapping状态- 通过运行以下命令检查状态状态的
kubectl get domainmapping <domain-name>URL列应显示映射的域,并将 scheme 更新为httpsNAME URL READY REASON <domain-name> https://<domain-name> True - 如果服务是公开暴露的,请通过运行以下命令验证其是否可用如果是自签名证书,请向 curl 命令添加
curl https://<domain-name>-k标志以跳过验证。
- 通过运行以下命令检查状态