Derrick辅助应用容器化
目录
概述
一般公司开始开始实践 Kubernetes 以及容器等技术栈和基础设施,免不了就是将当前处于虚拟机/物理机的服务迁移到容器中。而这个过程中,首要遇到的问题就是如何将原来的应用进行容器化。
应用容器化
在大部分的场景下,应用容器化都会有下面的过程。
- 提供基础镜像,一般由运维或者SRE提供最基础的依赖镜像
- 开发编写Dockerfile
- 构建镜像进行交付
可以看到这个流程中,开发和运维之间是耦合的,而实际上,这也是很难解耦的,假设基础运维的团队提出要修改基础镜像的版本,那么开发原来写的 Dockerfile 就要修改了。当然这里有很多方法去解决,比如说把基础镜像作为参数,在镜像构建的时候再由 CI 流水线传入,还可以通过 Buildpack 这样的工具,通过 Buildpack 的方式在无 Dockerfile 的情况下进行应用的容器化。
Derrick
上面提到的一些问题是可以解决的,只是殊途同归,下面再介绍另一种方法,就是通过 Derrick 来给应用容器化,同时提供了像 Helm,Kustomize 等辅助部署的资源文件,具体的命令行操作就不写在文档了,Derrick 非常简单,可以参考快速上手。
Derrick的扩展
Derrick 是通过 Go 程序以及一些模板语言框架来实现的,因此可以通过修改源码或者模板的方式来实现更丰富的功能,比如说默认提供的 Dockerfile 模板希望引入一些公司或者部门内部的环境变量,二进制文件或者是修改默认的 Entrypoint,只要通过修改 Derrick 提供的模板或者是源码重新编译,就可以达到目的,因此 Derrick 是非常容易进行二开的,也很适合一些小团队,人力有限的条件下,对 Dockerfile 做更严格的标准化。
从上图可以看到,如果想要定制你的模板文件,只要修改这个静态的 Dockerfile 模板重新编译就好了。
参考资料
警告
本文最后更新于 2021年12月12日,文中内容可能已过时,请谨慎参考。