本文为学习总结笔记,作为日后复盘回顾,感谢原作者分享,文末已注明出处,侵删。
关键词:CI/CD(持续集成/持续交付),DevOps(开发运维),构建,容器编排。
DevOps是一种思想,是一种文化,主要强调软件开发测试运维的一体化,目标是减少各个部门之间的沟通成本从而实现软件的快速高质量的发布。CICD是指持续集成发布部署,是一套流程实现软件的构建测试部署的自动化。
DevOps与CICD紧密相关,是理论与实践的结合,DevOps要实现人员一体化,必须要借助CICD工具来自动化整个流程。
容器,提供轻量化打包应用的方式,是任何DevOps的重要组成部分。但是你准备如何管理这些容器?现有的容器编排程序--Kubernetes、Mesosphere Marathon和Docker Swarm mode,很好地帮助你管理容器,避免你焦头烂额。
容器的设计主要是为了使进程或应用程序与底层系统彼此隔离。 创建和部署单个容器很容易。 但是,如果您要将多个容器(例如数据库,Web前端,计算后端)组装到可以作为一个整体进行管理的大型应用程序中,而不必担心部署,连接,管理,并分别缩放每个容器? 您需要一种将所有部分编排为功能整体的方法。这就是Kubernetes要做的工作。 如果集装箱是邮轮上的乘客,那么Kubernetes就是邮轮主管。
Kubernetes基于Google创建的项目,提供了一种方法,可以跨多个主机自动进行多容器应用程序的部署和管理,而不必直接管理每个容器。 开发人员描述了跨多个容器的应用程序布局,包括每个容器如何使用网络和存储的详细信息。Kubernetes在运行时处理其余部分。 它还处理诸如机密和应用程序配置之类的细微细节的管理。
综上,k8s和docker Swarm是平级的工具(下面将列出两者的区别),都是管理容器集群的。
![](https://img.haomeiwen.com/i1430582/c6b6b8eb66454ff0.png)
![](https://img.haomeiwen.com/i1430582/0fba41934c0ff3a5.png)
![](https://img.haomeiwen.com/i1430582/ae179085dd3d8941.png)
CICD总结:
开发者提交代码;
触发镜像构建;
构建镜像上传至私有仓库;
镜像下载至执行机器;
镜像运行。
![](https://img.haomeiwen.com/i1430582/d992da9a7af9da0f.png)
![](https://img.haomeiwen.com/i1430582/624fa793bdc484c4.png)
![](https://img.haomeiwen.com/i1430582/070a29623c9e33fd.png)
![](https://img.haomeiwen.com/i1430582/be21f2ebf5240211.png)
![](https://img.haomeiwen.com/i1430582/80ed74b696dfeb58.png)
![](https://img.haomeiwen.com/i1430582/adb1b813eb05ec3c.png)
![](https://img.haomeiwen.com/i1430582/ee70e2fbc420e405.png)
硬性要求:工具上的准备
上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下:
代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion
构建工具:Ant、Gradle、maven
自动部署:Capistrano、CodeDeploy
持续集成(CI):Bamboo、Hudson、Jenkins
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
容器:Docker、LXC、第三方厂商如AWS
编排:Kubernetes、Core、Apache Mesos、DC/OS
服务注册与发现:Zookeeper、etcd、Consul
脚本语言:python、ruby、shell
日志管理:ELK、Logentries
系统监控:Datadog、Graphite、Icinga、Nagios
性能监控:AppDynamics、New Relic、Splunk
压力测试:JMeter、Blaze Meter、loader.io
预警:PagerDuty、pingdom、厂商自带如AWS SNS
HTTP加速器:Varnish
消息总线:ActiveMQ、SQS
应用服务器:Tomcat、JBoss
Web服务器:Apache、Nginx、IIS
数据库:MySQL、Oracle、PostgreSQL等关系型数据库;cassandra、mongoDB、redis等NoSQL数据库
项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker
在工具的选择上,需要结合公司业务需求和技术团队情况而定。(注:更多关于工具的详细介绍可以参见此文:51 Best DevOps Tools for #DevOps Engineers)
参考文献:
网友评论