为容器化应用构建持续交付管道非常容易,根据我们对 Docker 和Kubernetes 的了解,然后将它们循序渐进地组织到持续交付管道中。假设我们已经完成了代码开发并拥有 Dockerfile和对应的 Kubernetes模板,要将它们部署到集群,可以通过以下的步骤。
① docker build: 生成可执行的不可变工件。
② docker run: 通过简单测试验证构建。
③ docker tag: 如果通过测试,对构建进行版本标记。
④ docker push: 将构建放置到工件存储库以进行分发。
⑤ kubectl apply: 将构建部署到所需的环境。
⑥ kubectl rollout status: 跟踪部署任务的进度。
这就是一个简单可行的交付管道。
工具选择 为了使管道可以持续构建,我们至少需要3种工具:版本控制系统、构建服务器和用于存储容器工件的存储库。我们需要配置一个持续交付管道,需要使用到的工具是 GitLab、GitLab-CI和Docker Registry,它们都是免费开源的项目,并且都有很多替代方案,例如持续集成工具Jenkins。下图是基于这三个工具的持续交付流程:

整个工作流程从代码提交到GitLab开始,然后调用GitLab-CI上的构建作业,在这个阶段完成Docker镜像的创建。建议在CI服务器上运行多种级别的测试,以确保构建的质量。此外,由于Docker Compose或Kubernetes运行应用程序比以往更加方便,因此我们能够在构建作业中运行多个组件的测试。之后,经过验证的镜像会被标记,并推送到私有的Docker Registry服务上。
管道中没有专门用于部署任务的部分,我们依靠GitLab-CI来进行部署,事实上,部署任务仅仅是在镜像推送后在某些构建上应用Kubernetes模板。最后,在Kubernetes的滚动更新过程结束后,整个交付过程结束。