目录

Derrick辅助应用容器化

概述

一般公司开始开始实践 Kubernetes 以及容器等技术栈和基础设施,免不了就是将当前处于虚拟机/物理机的服务迁移到容器中。而这个过程中,首要遇到的问题就是如何将原来的应用进行容器化。

应用容器化

在大部分的场景下,应用容器化都会有下面的过程。

  1. 提供基础镜像,一般由运维或者SRE提供最基础的依赖镜像
  2. 开发编写Dockerfile
  3. 构建镜像进行交付

可以看到这个流程中,开发和运维之间是耦合的,而实际上,这也是很难解耦的,假设基础运维的团队提出要修改基础镜像的版本,那么开发原来写的 Dockerfile 就要修改了。当然这里有很多方法去解决,比如说把基础镜像作为参数,在镜像构建的时候再由 CI 流水线传入,还可以通过 Buildpack 这样的工具,通过 Buildpack 的方式在无 Dockerfile 的情况下进行应用的容器化。

Derrick

上面提到的一些问题是可以解决的,只是殊途同归,下面再介绍另一种方法,就是通过 Derrick 来给应用容器化,同时提供了像 Helm,Kustomize 等辅助部署的资源文件,具体的命令行操作就不写在文档了,Derrick 非常简单,可以参考快速上手

Derrick的扩展

Derrick 是通过 Go 程序以及一些模板语言框架来实现的,因此可以通过修改源码或者模板的方式来实现更丰富的功能,比如说默认提供的 Dockerfile 模板希望引入一些公司或者部门内部的环境变量,二进制文件或者是修改默认的 Entrypoint,只要通过修改 Derrick 提供的模板或者是源码重新编译,就可以达到目的,因此 Derrick 是非常容易进行二开的,也很适合一些小团队,人力有限的条件下,对 Dockerfile 做更严格的标准化。

/derrick%E8%BE%85%E5%8A%A9%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E5%8C%96/img.png

从上图可以看到,如果想要定制你的模板文件,只要修改这个静态的 Dockerfile 模板重新编译就好了。

参考资料

  1. Derrick
警告
本文最后更新于 2021年12月12日,文中内容可能已过时,请谨慎参考。