自动替换 Kubernetes 镜像
前几天有朋友在问如何在某云上拉取 Tekton 的镜像,这种情况其实比较普遍不只是某云。工作中经常要用到过某些靠运气才能拉取到的镜像,这对工作来说真是极度的不友好。 因此也萌生了个想法,维护一个后网络友好的仓库镜像,在 Pod 创建时将镜像仓库切换到自维护的仓库,从自维护的仓库拉取镜像。 前几天体验了极狐Gitlab 的容器镜像库,便是为这个想法做的准备。当然其他的云厂商也有提供针对个人版的免费镜像仓库和企业版仓库。 正好 Pipy 作为策略引擎,非常适合实现这种策略的执行。 实现思路 Admission Webhook Kubernetes 动态准备控制 的 MutatingWebhookConfiguration 可以 hook Pod 的创建或者更新,然后调用目标服务对 Pod 资源对象进行 patch 操作。 策略引擎 Pipy 作为应用的核心,也就是 MutatingWebhookConfiguration 的目标服务,以策略引擎的角色完成策略的执行。 Pipy 支持从文件或者 HTTP 地址加载脚本,这里为了便于策略的更新,使用了后者。 对于从 HTTP 地址加载脚本,HTTP 地址返回内容的第一行会作为 Pipy 的主脚本,Pipy 启动时会加载主脚本,其他的文件也会被缓存到内存中。