跳到内容

为 DomainMapping 使用自定义 TLS 证书

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

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

先决条件

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

步骤

  1. 假设您已从 CA 提供商处获得了 certkey 文件或拥有自签名证书,请运行以下命令创建一个普通的 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 对象的名称。

  2. 按如下所示更新您的 DomainMapping YAML 文件以使用新创建的 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> 是包含 DomainMappingService 对象的命名空间。
    • <service-name> 是将被映射到该域的服务名称。
  3. 验证 DomainMapping 状态

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

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。