Knative Serving 自定义 Service 证书类别(certificate-class)配置指南

📅 发布时间:2026/10/15 3:28:10
Knative Serving 自定义 Service 证书类别(certificate-class)配置指南
文档教程云原生【免费下载链接】docsUser documentation for Knative components.项目地址https://gitcode.com/gh_mirrors/docs1/docs点击查看免费下载在启用external-domain-tls自动签发外部域名 TLS 证书后Knative Serving 会为每个 Service 自动选择一种证书类别certificate-class即负责签发证书的证书提供商类型。本指南讲解该默认类别的选择机制以及如何在多证书提供商场景下通过networking.knative.dev/certificate-class注解为单个 Service 覆盖默认类别。读完本文你将掌握 certificate-class 的默认值、全局生效范围与逐 Service 覆盖的完整配置方法。前置背景external-domain-tls 与自动证书签发certificate-class只在自动证书签发场景下才有意义。Knative Serving 的加密能力分为三部分集群外部域的 HTTPS如myapp-namespace.example.com、集群本地域的 HTTPS、以及 Knative 内部组件间的 HTTPS详见 Serving Encryption Overview。其中外部域加密通过external-domain-tls特性实现启用后Knative 会为 Service 的 external domain 自动申请并续期 TLS 证书证书由 ingress-controller 的外部端点通过 SNI 托管调用方只需信任签发证书的 CA 即可信任分发属于集群管理员职责超出 Knative 范围。启用步骤参见 Configure external domain encryptionkubectl edit configmap config-network -n knative-serving在data段加入apiVersion: v1 kind: ConfigMap metadata: name: config-network namespace: knative-serving data: external-domain-tls: Enabled修改后重启 Serving controller 使集成生效kubectl rollout restart deploy/controller -n knative-servingcertificate-class 的默认选择机制当external-domain-tls已启用且创建 Knative Service 时证书类别会自动根据knative-serving命名空间内config-networkConfigMap 中的值来选定。该 ConfigMap 是 Knative Serving 安装自带的组件对应 Serving 的 network 配置相关修改对新建的 Service生效。如果config-network中未显式指定证书类别默认值为cert-manager.certificate.networking.knative.dev这表示默认由cert-manager作为证书提供商通过 Knative 的 cert-manager 集成来签发外部域证书。配置好certificate-class后它将作为集群级默认值应用于所有 Knative Service除非某个 Service 用certificate-class注解显式覆盖。与 cert-manager 集成的关联默认类别指向 cert-manager因此使用默认配置的前提是集群中已正确安装并配置 cert-manager 及 Knative 集成具体见 Configuring Knative cert-manager integration。该集成通过config-certmanagerConfigMap 引用 cert-manager 的 issuer并且该 ConfigMap 带有识别提供商的关键标签apiVersion: v1 kind: ConfigMap metadata: name: config-certmanager namespace: knative-serving labels: networking.knative.dev/certificate-provider: cert-manager data: issuerRef: | kind: ClusterIssuer name: knative-selfsigned-issuer clusterLocalIssuerRef: | kind: ClusterIssuer name: knative-selfsigned-issuer systemInternalIssuerRef: | kind: ClusterIssuer name: knative-selfsigned-issuer其中issuerRef负责签发外部域证书clusterLocalIssuerRef与systemInternalIssuerRef分别对应集群本地域加密与系统内部加密。需注意并非所有 issuer 类型都适用于每个 Knative 加密特性例如 ACME 的 DNS01/HTTP01 无法用于集群本地域 SAN。多证书提供商场景为何需要逐 Service 覆盖官方建议 Knative Service 优先使用默认的certificate-class。但在集群中存在多个证书提供商时不同 Service 可能需要不同的证书策略。例如部分 Service 使用 cert-manager 自动签发另一些则希望由其他提供商或走手动签发的证书路径处理。此时config-network中的全局默认值显然无法满足差异化需求就需要通过注解为每个 Service 单独指定证书类别这与 Configuring Services custom ingress class 中通过networking.knative.dev/ingress-class注解实现多网络实现的思路同源。使用 certificate-class 注解覆盖单个 Service每个 Service 可通过networking.knative.dev/certificate-class注解使用不同的证书类别。执行如下命令为 Service 添加注解kubectl annotate kservice service-name networking.knative.dev/certificate-classcertificate-provider参数说明参数含义service-name要应用注解的 Service 名称即kservice资源名certificate-provider作为该 Service 证书类别的证书提供商类型例如默认的cert-manager.certificate.networking.knative.dev注解的覆盖语义该注解覆盖config-networkConfigMap 中指定的certificate-class值一旦全局certificate-class配置完成未加注解的 Service 全部使用全局默认值只有显式添加注解的 Service 才会使用注解指定的提供商。因此当集群配置了多个证书提供商时可以混合使用全局默认 逐 Service 注解的策略大多数 Service 保持默认个别有特殊要求的 Service 通过注解切换到其他证书类别。验证与注意事项为 Service 配置证书类别后可通过以下方式确认自动签发的证书是否就绪kubectl get ksvc -n your-namespace当 TLS 证书签发成功并可用时Service 的 URL 应以https://开头例如NAME URL LATEST AGE CONDITIONS READY REASON autoscale-go https://autoscale-go.default.1.example.com autoscale-go-dd42t 8m17s 3 OK / 3 True实操中还需注意以下几点cert-manager 必须先安装若依赖默认的 cert-manager 证书类别而未安装 cert-managerServing controller 可能无法正常启动详见 Installing cert-manager。全局配置仅影响新建 Service在config-network中修改certificate-class与修改 ingress class 类似只对修改后新建的 Service 生效已存在 Service 不会自动切换。信任分发是管理员职责所有调用外部域 HTTPS 的客户端都必须信任签发证书的 CACA 或中间证书轮换期间需要让客户端同时信任新旧链具体操作可参考 Managing trust and rotation without downtime。按需关闭自动签发如果某个 Service 不需要自动 TLS 证书例如要使用自定义证书可参考 Using a custom TLS certificate for DomainMapping 或为 Service 添加networking.knative.dev/disable-external-domain-tls: true注解详见 external-domain-tls 中的说明。小结certificate-class是 Knative Serving 自动证书签发机制中的一个关键配置维度它由knative-serving命名空间下config-networkConfigMap 全局决定默认指向cert-manager.certificate.networking.knative.dev并通过networking.knative.dev/certificate-class注解实现逐 Service 覆盖。掌握全局默认 注解覆盖的组合用法即可在多证书提供商共存的生产集群中为不同 Service 精确选择证书签发策略。赞分享文档教程云原生【免费下载链接】docsUser documentation for Knative components.项目地址https://gitcode.com/gh_mirrors/docs1/docs点击查看免费下载相关推荐Storeon测试最佳实践单元测试与集成测试完整方案Storeon测试最佳实践单元测试与集成测试完整方案 Storeon作为一款轻量级的状态管理库以其185字节的超小体积和Redux like的事件驱动架构Knative Serving 实战使用 Real DNS 配置自定义域名后缀config-domain 指南Knative Serving 实战使用 Real DNS 配置自定义域名后缀config domain 指南 本文面向已通过 YAML 方式完成 Kna文档教程云原生OWASP MASTG 实战Android 自定义证书库与证书固定Certificate Pinning测试指南OWASP MASTG 实战Android 自定义证书库与证书固定Certificate Pinning测试指南 证书固定Certificate Pin文档教程网络安全上一篇HS2-HF Patch 从零上手完整指南Honey Select 2 汉化、去码与插件部署一次搞定下一篇HS2-HF Patch 整合补丁零门槛指南一个安装包解决 Honey Select 2 汉化、去码与插件三大难题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考