00:00 / 05:25
连播
清屏
智能
倍速
点赞4070
00:00 / 14:01
连播
清屏
智能
倍速
点赞37
00:00 / 01:25
连播
清屏
智能
倍速
点赞357
00:00 / 01:44
连播
清屏
智能
倍速
点赞4
必须知道的k8s webhook 序员都知道kubernetes功能很强大 webhook机制就是其中之一 你是一名程序员 你们团队开发了商品,订单,用户等k8s服务 为了方便日志查看 现在要实现日志集中式收集功能 我们很容易想到往pod中新增一个容器 专门用于pod日志采集并发往日志聚合服务 日志聚合服务再将日志发往日志检索服务 这样就能很方便地查找各个服务的日志了 但现在有一个问题 你会发现各个pod要新增的日志采集容器是一样的 但各个pod却都要将其定义一遍 明显是浪费劳动力啊! 有没有办法能在开发的时候无需定义日志采集容器 而pod在创建后又包含该容器定义呢? 当然有,没有什么问题是加一个中间层解决不了的 有的话那就再加一层 这次要加的中间层是webhook server k8s webhook 是 k8s 的一种重要的扩展机制 k8s api server会在资源进行指定操作的时候 将资源清单通过HTTP请求发送给webhook server webhook server可以根据自己的需求 校验并修改资源清单 然后把修改后的资源清单返回给api server api server继续执行后续操作 利用k8s webhook机制 我们要做的是新建一个webhook server服务 并将上述修改资源清单逻辑替换为新增日志采集容器 这样虽然我们在pod中只定义了一个容器 但是最终创建的pod会自动注入一个日志采集容器 简直是完美! 不过api server怎么知道webhook server在哪里呢 这就要说说webhook如何配置了 通过MutatingWebhookConfiguration资源 我们可以指定什么资源在进行什么操作的时候 调用哪一个namespace下的哪个服务 出于安全考虑,webhook server须使用HTTPS协议 所以客户端还需要指定CA证书 Webhook 还有另一种类型 叫做Validating Webhook 用于校验资源的合法性,而不修改资源清单 在这种情况下 Webhook Server会在 HTTP 响应中 明确指定校验是否通过 如果校验失败 API Server 会拒绝本次资源操作 并将错误信息返回给客户端 #程序员 #软件开发 #每天学习一点点 #编程 #云原生
00:00 / 02:20
连播
清屏
智能
倍速
点赞358