当前位置: 首页 > article >正文

k8s开发webhook使用certmanager生成证书

1.创建 Issuer

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:name: selfsigned-issuernamespace: default
spec:selfSigned: {}

2.Certificate(自动生成 TLS 证书)

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:name: webhook-certnamespace: default
spec:secretName: webhook-server-certduration: 8760h # 1 yearrenewBefore: 360hsubject:organizations:- example.comcommonName: webhook-service.default.svcdnsNames:- webhook-service.default.svc- webhook-service.default.svc.cluster.localissuerRef:name: selfsigned-issuerkind: Issuer

3. 对以上yaml执行apply,然后查看生成的证书

kubectl get webhook-server-cert

4. 在deploy中挂载证书

volumeMounts:- name: tlsmountPath: /tlsreadOnly: true
volumes:- name: tlssecret:secretName: webhook-server-cert

4.根据证书获取ca

kubectl get secret webhook-server-tls -o jsonpath='{.data.ca\.crt}'

或者

kubectl get secret webhook-server-tls -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt

然后把这个值 粘贴进 MutatingWebhookConfiguration 的 caBundle 字段中。

本地开发时,可以导出tls.crt和tls.key

# 导出 tls.crt
kubectl get secret webhook-server-cert  -n default -o jsonpath='{.data.tls\.crt}' | base64 -d > tls.crt# 导出 tls.key
kubectl get secret webhook-server-cert  -n default -o jsonpath='{.data.tls\.key}' | base64 -d > tls.key

5. 创建MutatingWebhookConfiguration webhook(设置 caBundle)

apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:name: pod-mutator
webhooks:- name: mpod.kb.ioclientConfig:service:name: webhook-servicenamespace: defaultpath: /mutateport: 443caBundle: <填入 webhook-server-cert 中的 ca.crt 内容(Base64)>rules:- apiGroups: [""]apiVersions: ["v1"]operations: ["CREATE"]resources: ["pods"]admissionReviewVersions: ["v1"]sideEffects: None

6.创建deploy

apiVersion: apps/v1
kind: Deployment
metadata:name: webhook-servernamespace: defaultlabels:app: webhook-server
spec:replicas: 1selector:matchLabels:app: webhook-servertemplate:metadata:labels:app: webhook-serverspec:containers:- name: webhook-serverimage: mesh-webhook:v0.0.1imagePullPolicy: Alwaysports:- containerPort: 8443name: httpsvolumeMounts:- name: webhook-tlsmountPath: /tlsreadOnly: trueargs:- "--tls-cert=/tls/tls.crt"- "--tls-key=/tls/tls.key"volumes:- name: webhook-tlssecret:secretName: webhook-server-cert  # cert-manager 生成的 Secret 名称
---
apiVersion: v1
kind: Service
metadata:name: webhook-servicenamespace: default
spec:selector:app: webhook-serverports:- port: 443targetPort: 8443protocol: TCPname: https
http://www.lryc.cn/news/2401574.html

相关文章:

  • 时序预测模型测试总结
  • 第四十五天打卡
  • springboot mysql/mariadb迁移成oceanbase
  • npm install 报错:npm error: ...node_modules\deasync npm error command failed
  • Filebeat收集nginx日志到elasticsearch,最终在kibana做展示(二)
  • halcon c# 自带examples报错 Matching
  • 服务器重启后配置丢失怎么办?
  • Postgresql常用函数操作
  • 用 NGINX 搭建高效 IMAP 代理`ngx_mail_imap_module`
  • 湖北理元理律所债务优化实践:法律技术与人文关怀的双轨服务
  • Springboot——整合websocket并根据type区别处理
  • Qiskit:量子计算模拟器
  • 龙虎榜——20250605
  • PDF 转 HTML5 —— HTML5 填充图形不支持 Even-Odd 奇偶规则?(第二部分)
  • 大数据离线同步工具 DataX 深度实践与 DataX Web 可视化指南
  • 记一个判决书查询API接口的开发文档
  • 残月个人拟态主页
  • 热门消息中间件汇总
  • AiPy实战:10分钟用AI造了个音乐游戏!
  • Python Rio 【图像处理】库简介
  • 贪心算法应用:分数背包问题详解
  • PHP舆情监控分析系统(9个平台)
  • 金孚媒重磅推出德国顶级媒体原生广告整合服务,覆盖12家主流媒体
  • Mnist手写数字
  • 《一生一芯》数字实验三:加法器与ALU
  • Go 语言并发编程基础:Goroutine 的创建与调度
  • 三甲医院“AI平台+专家系统”双轮驱动模式的最新编程方向分析
  • 第12期_网站搭建_几时网络验证1.3二改源码包2024 软件卡密系统 虚拟主机搭建笔记
  • [论文阅读] (38)基于大模型的威胁情报分析与知识图谱构建论文总结(读书笔记)
  • SpringBoot EhCache 缓存