为 DomainMapping 使用自定义 TLS 证书¶
功能可用性:beta 自 Knative v0.24 起
- beta 功能经过充分测试,启用它们被认为是安全的。对整体功能的支持不会被取消,尽管细节可能会以不兼容的方式改变。
通过提供对现有TLS 证书的引用,您可以指示 DomainMapping
使用该证书来保护映射的服务。请注意,对于使用此功能的服务,将跳过使用外部域 TLS 的自动证书创建。
先决条件¶
- 您已按照配置自定义域 中的步骤操作,现在拥有一个有效的
DomainMapping
。 - 您必须拥有来自证书颁发机构提供商的 TLS 证书或自签名证书。
步骤¶
-
假设您已从证书颁发机构提供商处获得
cert
和key
文件或拥有自签名证书,请通过运行以下命令创建普通的 Kubernetes TLS 秘密使用 kubectl 创建秘密
其中kubectl create secret tls <tls-secret-name> --cert=path/to/cert/file --key=path/to/key/file
<tls-secret-name>
是正在创建的秘密对象的名称。 -
更新您的
DomainMapping
YAML 文件以使用新创建的秘密,如下所示其中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 秘密的名称。<domain-name>
是您要将服务映射到的域名。<namespace>
是包含DomainMapping
和Service
对象的命名空间。<service-name>
是要映射到域的服务的名称。
-
验证
DomainMapping
状态- 通过运行以下命令检查状态状态的
kubectl get domainmapping <domain-name>
URL
列应显示已映射的域,其方案已更新为https
NAME URL READY REASON <domain-name> https://<domain-name> True
- 如果服务公开暴露,请通过运行以下命令验证它是否可用如果证书是自签名的,请通过将
curl https://<domain-name>
-k
标志添加到 curl 命令来跳过验证。
- 通过运行以下命令检查状态