You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何本地调试Kubebuilder Webhook?证书配置求最简方案

本地调试Kubebuilder Webhook最简方案

方案一:用Kubebuilder自带工具生成证书(最省事)

  • 执行命令生成证书到默认路径:
    make certs
    
    这个命令会自动在Kubebuilder期望的临时目录(即你报错里的/var/folders/.../serving-certs)生成tls.crt和tls.key,直接解决文件找不到的问题。
  • 修改Webhook配置,让集群apiserver能访问本地服务:
    打开config/webhook/manifests.yaml,找到MutatingWebhookConfiguration或ValidatingWebhookConfiguration,把clientConfig里的service块注释掉,换成url指向本地Webhook端口(默认9443):
    clientConfig:
      # service:
      #   name: webhook-service
      #   namespace: default
      #   path: /mutate-xxx-xxx-v1-xxx
      url: "https://localhost:9443/mutate-xxx-xxx-v1-xxx"
    
    注意替换路径里的xxx为你的API组和资源名称。
  • 应用修改后的配置并启动控制器:
    kubectl apply -f config/webhook/manifests.yaml
    make run
    

方案二:手动生成自签证书(灵活可控)

  • 用openssl生成自签证书,CN要和Webhook服务的域名一致(默认是webhook-service.default.svc):
    openssl req -x509 -newkey rsa:4096 -nodes -keyout tls.key -out tls.crt -days 365 -subj "/CN=webhook-service.default.svc"
    
  • 启动控制器时指定证书目录:
    make run ENABLE_WEBHOOKS=true WEBHOOK_CERT_DIR=/path/to/your/certs
    
    替换/path/to/your/certs为你存放tls.crt和tls.key的目录。
  • 同样需要修改Webhook配置为url指向localhost,步骤同方案一。

方案三:配合cert-manager使用

  • 导出cert-manager生成的证书Secret到本地:
    假设你的证书对应的Secret是webhook-server-cert,执行:
    kubectl get secret webhook-server-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > tls.crt
    kubectl get secret webhook-server-cert -o jsonpath='{.data.tls\.key}' | base64 -d > tls.key
    
  • 将证书放到Kubebuilder默认临时目录,或者启动时指定WEBHOOK_CERT_DIR路径,后续步骤同前两个方案。

内容的提问来源于stack exchange,提问作者JME

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:30:59