云原生安全与DevOps保障
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 实现线路图

我们想要用DevOps方式来管理和运营发票应用。为了做到这一点,我们将实现CI、CD及IaaS中的各个步骤,这些步骤可以让我们快速向用户发布和部署软件的新版本。我们的目标是,从补丁提交到生产环境部署的过程基本实现自动化,并将整个过程的时间控制在15分钟之内。图2.1展现的就是将要构建的流水线,它由六个步骤组成:

1.开发人员写好补丁并发布到代码库的一个特性分支上。

2.对应用执行自动化测试。

3.另一个开发人员对补丁进行评审,并将该补丁合并到代码库的master分支中。

4.自动构建新版本应用并打包成容器镜像。

5.容器镜像上传到公共容器镜像库。

6.生产环境中的基础设施从公共容器镜像库中获取镜像并部署。

img

图2.1 托管发票应用的完整CI/CD/IaaS流水线由六个步骤组成,它们将补丁变成部署好的应用。

建立这条流水线需要集成一些组件来互相配合。你需要下面这些环境:

•源代码仓库——管理源代码的开源或者专有解决方案有Bitbucket、Beanstalk、GitHub、GitLab、SourceForge,等等。在编写本书时,一个流行的选择是GitHub,我们要用它来托管发票应用的代码。

•CI平台——同样也有很多选择,如Travis CI、CircleCI、Jenkins、GitLab,等等。总有一个CI平台适合你的需要和环境。在本例中,我们将使用CircleCI,因为它和GitHub的集成很简单,还允许通过SSH访问来构建实例,以便调试构建步骤。

•容器镜像库——容器世界的发展日新月异,而在编写本书时,Docker是标准的选择。我们将要使用Docker Hub提供的镜像库,见链接2.2。

•IaaS提供商——在本书成书之时,Google Cloud Platform和Amazon Web Services(AWS)是两个最受欢迎的IaaS提供商。一些组织更喜欢自己托管IaaS,从而在自己的硬件上使用Kubernetes或者OpenStack来实现管理层(注意Kubernetes也能用在AWS的EC2实例上)。在本书中,我将使用AWS,因为它是市场上最成熟也是最受欢迎的IaaS。

我们来总结一下要用到的工具:GitHub托管源代码,并在补丁发送时调用CircleCI;CircleCI将应用构建到一个容器之中并推送到Docker Hub;AWS运行着基础设施,从Docker Hub取回容器,并将生产环境升级到最新版本。简单,但优雅。

每个环境都不一样

你的组织使用的环境不太可能和书中介绍的一模一样,有一些更细节的安全控制不能直接应用到你所用的工具上。这并不奇怪,我在解释具体的实现之前会先强调安全概念,这样你就能更容易地将它们嫁接到你的环境中。

例如,如果你的组织使用的不是GitHub、Docker或AWS这些工具,那么你可能就会有些担心。我只是把它们当作教学工具来介绍DevOps技术。就把这一章当成实验室来学习和尝试这些概念,然后在最适合你的平台上实现这些概念。

记住,即便是传统的基础设施也能从现代DevOps技术中受益,只要建立起和第三方提供的CI/CD/IaaS流水线完全一样的流水线就行,只不过这条流水线仅供内部使用。当你的技术发生变化时,工具和术语也会发生改变,但整体概念尤其是安全概念不会发生变化。

这条流水线使用的工具和服务都是免费提供的,至少免费套餐的有效时间足够你完成接下来的试验。在构建你自己的流水线时,后续的代码和例子可以复制和重用。在阅读本章的同时搭建自己的环境,使得学习和练习相得益彰。