前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Knative组件镜像制作

Knative组件镜像制作

作者头像
李鹤
发布2023-03-06 11:20:06
1.9K0
发布2023-03-06 11:20:06
举报
文章被收录于专栏:k-cloud-labs

背景

knative 0.14.0

最近在搭建公司级的serverless平台,遇到某些问题,看了源码发现无法通过其扩展机制来解决,遂决定修改源码来解决

过程

源码很快修改完了,本地编译通过,knative的组件是容器化运行的,这就需要我们再制作镜像,但是浏览完官方github项目,并未发现有Dockerfile文件,于是决定使用逆向方法通过image反推出来Dockerfile,于是利用之前保存的的shell脚本进行反向解析,如下

1 2 3 4 5

docker history --no-trunc 8b13dd01e81b | tac | tr -s ' ' | cut -d " " -f 5- | sed 's,^/bin/sh -c #(nop) ,,g' | sed 's,^/bin/sh -c,RUN,g' | sed 's, && ,\n & ,g' | sed 's,\s*[0-9]*[\.]*[0-9]*\s*[kMG]*B\s*$,,g' | head -n -1 bazel build ... ko publish knative.dev/net-istio/cmd/webhook 463kB kodata contents, at $KO_DATA_PATH ko publish knative.dev/net-istio/cmd/webhook 52.9MB go build output, at /ko-app/webhook

WTF?

这和我认知里的Dockerfile完全不是一回事啊,赶紧google,首先google搜索了bazel,然后区项目中查看,并没有发现有啥相关的文件,倒是有个.ko.yaml的文件,里面有一条语句,是个镜像名称,然后google搜索了ko,果然,大公司就是不一样,一个ko解决了从diamante编译,打镜像,上传镜像,部署到k8s集群中的所有步骤(心中暗自感叹google是真的牛),当然也支持只把镜像load到本地,而不进行push,也不在k8s中创建,加个–local就好了。

总结

其实整个过程还是花了较长时间的,主要有两个原因

  1. 欠缺某些知识:这种情况下我们往往无法直接找到正确答案,只能通过踩坑之后逐步排除掉错误答案,才能一步步的找到正确的答案
  2. knative比较新(0.14.0),网上很难找到需要的答案

整个过程虽然花费较多时间,但是收获颇丰。之所以写这一篇内容,也是希望为后来人解决一下此类烦恼,在比较紧急时,为大家节省时间,希望可以帮助到一部分人。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 过程
  • 总结
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档