废话不多说,直接来干的。这里介绍一套成熟的方案。
gitlab(代码管理)+jenkins(持续集成)+k8s(服务管理)
其中涉及到的技术细节:dockerindockermakefile
gitlab使用介绍
gitlab是一款类似github的开源代码管理软件,可在公司内网,直接搭建一套私有代码仓库,适合团队多人开发,具有完善的分支管理、角色管理、issue、里程碑等。是非常优秀的一款软件。
jeknis使用介绍
这是一款开源持续集成软件,说人话就是使用他可以自动化部署服务。其具有gitlab相关的插件,安装后可直接对接gitlab,当gitlab发生push或者merge代码事件,会通知jeknis去完成最新推送的代码的镜像构建和部署。
推荐上面说的两款技术和jeknis混合使用。
1dockerindocker技术。顾名思义就是docker里面运行docker,简单点直接用dockerfile在jeknis镜像的基础上安装docker客户端或者k8s客户端。这样我们在容器中就可以直接调用宿主机的docker命令或者k8s命令。这对我们使用jenkins执行部署脚本,通知k8s或者docker部署服务,非常方便。
2makefile之所以介绍这款他,是因为其具有一个绝佳的功能,可以检测文件内容是否发生变化,这样对于微服务架构,其配合jenkins,无需指定什么,就可以部署上发生文件变化的微服务。而不会影响到其他服务。
k8s使用介绍
这款当红炸子鸡,相信大家耳闻已久。其实现了对docker的管理和编排。配合上共享存储和其服务自动重启机制,可以让我们的服务无当机。
对于docker内部服务的暴露推荐ingress+service
docker镜像管理推荐harbor。
以上完整的自动化开发部署环境,有兴趣的可以自行学习相关内容,进行搭建测试。
gitlabci构建部署不同环境,它支持预配置的CI环境,并允许多个不同的构建在同一构建VM上运行。。根据查询相关公开信息显示,当不同项目组进行测试环境集成,目前遇到了dev环境在一台单独的云服务器,但是test环境在k8s中,利用gitlabci实现持续集成,简单快速高效上线,特有此记。以下这篇译文清晰明了地揭示了敏捷(Agile),持续集成/持续交付(CI/CD)和 DevOps 三者之间的区别和联系。它们尽管有所不同,但是彼此支持,相互联系。敏捷专注于开发过程,CI/CD 专注于实践,DevOps 专注于文化。3种不同的开发工具可用于建立练习
您无法只用一个工具盖高楼大厦,您也不能一口气进行开发实践。敏捷,DevOps 和 CI/CD 是三个截然不同的工具,每一个工具本身都很重要。当开发团队将这三个功能用于其预期目的时,结果将具有变革性。
敏捷开发
敏捷专注于消除流程障碍,并使关键的利益相关者(如开发人员和客户)能够在加快交付速度方面进行更紧密的协作。敏捷强调了变革的持续性,并承认作为软件生产者,我们并不总是在一开始就了解在整体生命周期中,成功构思、开发和交付高质量软件所需的一切需求和资源。
因此,尽管在过去的二十年中敏捷的意义有所不同,但其基本原则仍然保持不变:消除赋予个人权力的流程障碍,迅速开发可运行的软件,与客户密切协作以及积极应对(而不是抵制)变化。
CI/CD
持续集成(CI)是一种软件工程实践,团队成员以越来越高的频率集成他们的工作。通过长久的 CI 实践,团队至少每天甚至每小时进行集成,以此接近“连续”程度的集成。
从历史上看,集成一直是一项昂贵的工程活动。因此,为避免项目遭受重创,CI 强调了驱动构建和测试的自动化工具。 CI 实现之后,构建和集成工作就会减少,团队也可以尽快检测到集成错误。
持续交付(CD)用于打包和部署 CI 要构建和测试的项目。实践 CD 的团队可以构建,配置和打包软件,并编排其部署方式,以便可以随时以软件定义的方式(低成本,高度自动化)将其发布到生产环境中。
由于软件更改更频繁地投入生产,高功能化的 CI/CD 实践直接促进了敏捷开发。因此,客户有更多机会体验产品变化并提供反馈。
DevOps 文化
DevOps 专注于敏捷开发过程中文化和角色的局限性。 DevOps 的目的是解决组织中过度专业化和不同部门人员沟通不畅导致的一些痛点,例如对生产问题无法快速甚至有效响应。DevOps 组织通过对每个团队进行彼此技能的交叉培训来打破运维和开发之间的障碍。这种方法提高了每个人欣赏和参与彼此任务的能力,并促进了更高质量的协作和更频繁的交流。
什么是 DevOps 中的 CI/CD?它们与敏捷有什么关系?
CI/CD,敏捷和 DevOps 与现实生活中的发展有何关系?工程团队通常从 CI 开始实践。 DevOps 可以帮助组织了解在整体生命周期甚至更长时间内软件所必需的配置,打包和编排--从而创建更有价值的持续交付实践。反过来,DevOps 中 CI/CD 的实践又增强了敏捷开发。
结论
区分敏捷,DevOps 和 CI/CD 最快速简便的方法:
敏捷专注于在加速交付的同时突出变化的过程。
CI/CD 专注于软件生命周期内强调自动化的工具。
DevOps 专注于强调响应能力的文化角色。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)