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

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

相关文章:

  • 将图形可视化工具的 Python 脚本打包为 Windows 应用程序
  • MyBatis之测试添加功能
  • Oracle 的 SEC_CASE_SENSITIVE_LOGON 参数
  • Ntfs!ReadIndexBuffer函数分析之nt!CcGetVirtualAddress函数之nt!CcGetVacbMiss
  • DBSyncer:开源数据库同步利器,MySQL/Oracle/ES/SqlServer/PG/
  • Selenium 和playwright 使用场景优缺点对比
  • 【Linux】可重入函数 volatile SIGHLD信号
  • 打卡Day45
  • 渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
  • 2025年渗透测试面试题总结-ali 春招内推电话1面(题目+回答)
  • RKNN3588上部署 RTDETRV2
  • 全球IP归属地查询接口如何用C#进行调用?
  • 使用SSH tunnel访问内网的MySQL
  • 【JS进阶】ES5 实现继承的几种方式
  • python项目如何创建docker环境
  • OpenCV 图像像素的逻辑操作
  • React Hooks 指南:何时使用 useEffect ?
  • OPenCV CUDA模块目标检测----- HOG 特征提取和目标检测类cv::cuda::HOG
  • 阿里云域名怎么绑定
  • 概述侧边导航的作用与价值
  • 专业微信网站建设多少钱/长春百度seo排名
  • wordpress d压缩/免费网站排名优化软件
  • 罗湖网站建设报价/免费好用的网站
  • 在哪个网站上可以找兼职做/谷歌官方网站登录入口
  • 网站域名怎么取/品牌推广方案范文
  • 网站外链建设可以提升网站权重对还是错/未来网络营销的发展趋势