如何在20分钟或更短的时间内建立CI / CD管道
使用GitLab的Auto DevOps功能,将您的管道部署到Kubernetes只是一个“麻烦事”。
在软件开发中,时间确实是金钱。GitLab用户知道,通过使用我们的Auto DevOps功能,您只需两个简单的步骤即可将代码从生产转移到生产。
Digital Ocean的Eddie Zaneski参加了我们在首届用户大会GitLab Commit上的布鲁克林。在内容丰富而轻松的演讲中,Eddie演示了如何在20分钟内从头开始或使用GitLab的Auto DevOps工具来构建和部署CI / CD管道并将其部署到Kubernetes集群。
在演示中,Eddie和他的联合创始人在为他用于演示的“创业公司”应用程序“ Screaming Chicken Club”开发时确实发挥了作用。
“我现在正试图筹集资金,而风险投资家正在关注我的技术,”埃迪在他的假设性初创企业中说道。“通过拥有超级安全且经过深思熟虑的DevOps管道,可以轻松获得VC的信誉,这就是GitLab真正发挥作用的地方。”
Auto DevOps是一种开箱即用的解决方案,它通过自动化构建CI / CD管道的复杂组件来帮助将代码更快地投入生产,例如:检查是否存在漏洞;检查它的依赖关系,检查它的许可证;将其部署到Kubernetes集群; 设置主机名;DNS,TLS证书;自动为您更新它们并进行性能测试。”
那你会从哪里开始?
启动您的Kubernetes集群
GitLab Commit London加入10月9日的用户会议!现在注册
GitLab与Kubernetes进行了气密性集成,这使得可以通过使用Auto DevOps或自行构建管道将软件从GitLab的CI / CD管道部署到Kubernetes。无论哪种方式,第一步都是配置一个新的Kubernetes集群以部署您的应用程序。
切换到GitLab的左侧边栏,然后单击Kubernetes>操作>添加集群,非常简单。此过程适用于GCP或GKE用户以及非Google Cloud或使用本地解决方案的用户。在演示中,Eddie使用Digital Ocean的托管Kubernetes服务创建了集群,选择了数据中心,然后选择了节点的大小。埃迪(Eddie)估计此过程将花费三到五分钟的时间。
下一步是将Kubernetes集群集成到项目中,这需要许多手动任务,包括获取Kubernetes API服务器的URL,创建服务帐户并将其绑定到集群管理员,以及获取所生成的服务令牌。 。本着创新捷径的精神,Eddie创建了一个kubectl插件,使将Kubernetes集群添加到相关的GitLab项目变得更加容易。
“实际上,这将自动将Kubernetes集群引导到您的GitLab项目中,创建所有服务帐户,发出所有GitLab API请求,并处理所有事务。”谢谢,Eddie!
接下来,只需获取GitLab项目ID,然后运行:
kubectl gitlab-bootstrap gitlab-project-id
结果是一个URL。遵循URL,以在GitLab项目中查看有关Kubernetes集群的更多信息。
由GitLab管理的应用程序使您的生活更轻松
到达那里后,您将看到一个由GitLab管理的应用程序的列表。一键安装这些应用程序即可帮助管理新的Kubernetes集群。
-
Helm:首先安装Helm,因为它是Kubernetes的软件包管理器,并且需要安装其他应用程序。
-
Ingress:安装Helm后,您可以安装Ingress控制器,该控制器将处理集群中的所有路由和映射,并在后台创建负载均衡器。复制显示的IP地址;您稍后需要它。
-
Prometheus:监视您已部署的应用程序的开源工具。
-
Cert-Manager:它将处理所有证书,并确保所有内容都是最新的。
-
GitLab Runner:允许您在自己的主机上或Kubernetes集群中运行GitLab CI / CD。
其中的超级明星是GitLab Runner,它是一个开放源代码项目,用于运行CI / CD作业并将结果发送回GitLab。
更改包括:
创建Kubernetes集群并安装所需的应用程序后,只需单击一下按钮即可启动Auto DevOps流程。
通过启用Auto DevOps并选择您的部署策略(在这里需要Ingress IP地址),您就可以启动CI / CD管道。
或启动您自己的Auto DevOps流程
不想使用我们现成的Auto DevOps功能吗?不用了 好消息是,您可以在部署过程的每个组件中使用基础源代码,从而使您轻松解析要运行的作业。
“ GitLab开源的伟大之处在于,没有什么是魔术,对吗?所有这些都是源代码,我们都可以查找和阅读。” Eddie说。
整个现成的Auto DevOps流程的源代码位于GitLab存储库中的一个YAML文件中。GitLab用户只需将基础源代码复制/粘贴到正确配置的终端中,就可以在Auto DevOps流程中从构建到清理的每个阶段分别运行作业。
YAML文件中包含每个Auto DevOps阶段中重要作业的各个模板和组件。您可以选择要使用的组件。请注意,不需要导入任何内容,因为所有内容都随您的GitLab安装一起提供。
在演示中,Eddie作为示例运行了构建和部署阶段的作业。
记住要回到负载平衡器,并获取为配置DNS而创建的IP地址入口
git push
,然后,中提琴!您的CI / CD管道正在运行。
管道内窥视
在演示过程中,埃迪(Eddie)到幕后解释了管道中为他开始的构建和部署工作所发生的情况。
建立
埃迪说:“它将为我们处理很多事情。” 该管道使用Docker在Docker内部构建容器,该容器将登录到我们的Kubernetes集群的容器注册表。
“因此GitLab会自动为您的项目提供一个容器注册表,” Eddie说。“它将替换一大堆环境变量,并处理所有登录并生成令牌,以及所有这些。因此,我们实际上不必考虑任何事情。”
接下来,将加载Docker基本映像。Eddie详细介绍了如何编写Docker设置,但是GitLab构建组件可以自动确定您正在运行的项目的类型,并生成具有构建容器的最佳实践的Docker文件。
“所以我的项目正在构建,编译,将我的各层推入到容器注册表中,然后我的构建工作应该很快完成,然后我的部署工作就会开始,” Eddie解释说。
部署
通过展开Helm图表开始部署作业,该Helm图表会自动将所需信息(例如容器ID,主机名,名称空间等)填充到模板中。然后,它将创建Ingress ID,然后部署应用程序。
使用GitLab和Kubernetes将您的CI / CD管道置于自动驾驶仪上
在短短的几分钟内,Eddie通过使用GitLab和Kubernetes演示了两种不同的方式来构建CI / CD管道。尽管我们的Auto DevOps功能实现了它,所以您不必从头开始创建一堆YAML(因为面对现实,如果您正在运行Kubernetes,您已经在运行大量的YAML),我们的开源Auto DevOps通过该过程,可以选择要运行的组件或作业。