码农庄园

docker与CI/CD

2020-08-14  本文已影响0人  小马过河R

本文为学习总结笔记,作为日后复盘回顾,感谢原作者分享,文末已注明出处,侵删。

关键词:CI/CD(持续集成/持续交付),DevOps(开发运维),构建,容器编排。

DevOps是一种思想,是一种文化,主要强调软件开发测试运维的一体化,目标是减少各个部门之间的沟通成本从而实现软件的快速高质量的发布。CICD是指持续集成发布部署,是一套流程实现软件的构建测试部署的自动化

DevOps与CICD紧密相关,是理论与实践的结合,DevOps要实现人员一体化,必须要借助CICD工具来自动化整个流程。

容器,提供轻量化打包应用的方式,是任何DevOps的重要组成部分。但是你准备如何管理这些容器?现有的容器编排程序--KubernetesMesosphere MarathonDocker Swarm mode,很好地帮助你管理容器,避免你焦头烂额。

容器的设计主要是为了使进程或应用程序与底层系统彼此隔离。 创建和部署单个容器很容易。 但是,如果您要将多个容器(例如数据库,Web前端,计算后端)组装到可以作为一个整体进行管理的大型应用程序中,而不必担心部署,连接,管理,并分别缩放每个容器? 您需要一种将所有部分编排为功能整体的方法。这就是Kubernetes要做的工作。 如果集装箱是邮轮上的乘客,那么Kubernetes就是邮轮主管。

Kubernetes基于Google创建的项目,提供了一种方法,可以跨多个主机自动进行多容器应用程序的部署和管理,而不必直接管理每个容器。 开发人员描述了跨多个容器的应用程序布局,包括每个容器如何使用网络和存储的详细信息。Kubernetes在运行时处理其余部分。 它还处理诸如机密和应用程序配置之类的细微细节的管理。

综上,k8s和docker Swarm是平级的工具(下面将列出两者的区别),都是管理容器集群的。

代码集成,准备docker镜像 docker集群部署

CICD总结:

开发者提交代码;

触发镜像构建;

构建镜像上传至私有仓库;

镜像下载至执行机器;

镜像运行。

容器编排:k8s和docker Swarm区别

实现DevOps需要什么?

硬性要求:工具上的准备

上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下:

代码管理(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)

参考文献:

Docker与CI持续集成/CD

上一篇 下一篇

猜你喜欢

热点阅读