跳至内容

为 DomainMapping 使用自定义 TLS 证书

功能可用性:beta 自 Knative v0.24 起
  • beta 功能经过充分测试,启用它们被认为是安全的。对整体功能的支持不会被取消,尽管细节可能会以不兼容的方式改变。

通过提供对现有TLS 证书的引用,您可以指示 DomainMapping 使用该证书来保护映射的服务。请注意,对于使用此功能的服务,将跳过使用外部域 TLS 的自动证书创建。

先决条件

  • 您已按照配置自定义域 中的步骤操作,现在拥有一个有效的 DomainMapping
  • 您必须拥有来自证书颁发机构提供商的 TLS 证书或自签名证书。

步骤

  1. 假设您已从证书颁发机构提供商处获得 certkey 文件或拥有自签名证书,请通过运行以下命令创建普通的 Kubernetes TLS 秘密

    使用 kubectl 创建秘密

    kubectl create secret tls <tls-secret-name> --cert=path/to/cert/file --key=path/to/key/file
    
    其中 <tls-secret-name> 是正在创建的秘密对象的名称。

  2. 更新您的 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> 是包含 DomainMappingService 对象的命名空间。
    • <service-name> 是要映射到域的服务的名称。
  3. 验证 DomainMapping 状态

    1. 通过运行以下命令检查状态
      kubectl get domainmapping <domain-name>
      
      状态的 URL 列应显示已映射的域,其方案已更新为 https
      NAME                      URL                               READY   REASON
      <domain-name>             https://<domain-name>             True
      
    2. 如果服务公开暴露,请通过运行以下命令验证它是否可用
      curl https://<domain-name>
      
      如果证书是自签名的,请通过将 -k 标志添加到 curl 命令来跳过验证。

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享,以用于该目的。 了解更多。