0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在KubeSphere 容器中快速部署使用 GitLab 并构建 DevOps 项目

jf_57681485 来源:jf_57681485 作者:jf_57681485 2024-07-26 11:19 次阅读

前提条件

安装KubeSphere,认真阅读全文可免费领取PetaExpress云服务器一台。

在KubeSphere中启用DevOps套件

参考:启用DevOps https://kubesphere.io/zh/docs/v3.4/pluggable-components/devops/

安装GitLabCE

我们先这次的演练创建一个名为devops的企业空间,同时创建一个名为gitlab的项目供GitLabCE部署使用。

通过应用仓库部署GitLab应用

首先我们还是要先在devops企业空间中添加GitLab的官方HelmChart仓库,推荐用这种自管理的方式来保障仓库内容是得到及时同步的。通过「应用管理」下面的「应用仓库」来添加如下的GitLab仓库(仓库URL:https://charts.gitlab.io/)

wKgZomajFbGAKFM8AAAkQAhb3Tc459.jpg

2.接下来进入先前创建的gitlab项目,从「应用负载」下面的「应用」页面创建GitLab应用:选择「从应用模版」创建即可得到如下界面,注意选择红框指示的这个应用。

wKgaomajFbGAD04VAAAuw0Y8-Mo055.jpgwKgZomajFbaALa8iAAA_VOxxJY8793.jpg

点击进入后,点击安装

wKgaomajFbeAZ73zAAAtcwPypBY879.jpg

3.下面这一步十分重要,需要配置HelmChart部署应用的参数。由于GitLab默认的可配置项非常多(有上千行),因此我们这次只挑选可保障基础业务使用的最小功能集的相关参数进行改写,关于每个参数具体代表的含义请参见参数项上一行的注释(并留意【注意】部分)。其它配置项请大家参见极狐

wKgZomajFbiADAerAABpaPms5Mg138.jpgwKgaomajFbiAC8x1AAB6c1Gnc5Q264.jpg



wKgaomajFbmAJ-4NAAB73Hw27f0043.jpg


wKgZomajFbqAGimuAACA3rTa_Vc926.jpg


wKgZomajFbqALY12AABzBWKFU1M686.jpg

虽然已经是最小功能集部署,但由于部署的服务及其资源开销较多,部署过程还是比较长的。部署完成后可以在gitlab应用的「工作负载」部分查看到所有负载都在运行中的状态。

4.确认所有工作负载运行后,如之前您已经配置过集群或项目网关并使能过gitlab.example.com的域名解析,那么您就可以直接访问该域名来打开GitLab的站点页面。

在GitLab中创建一个示例项目

首先让我们来登陆GitLab。GitLab的初始密码被作为Secret保存,我们可以回到项目首页,在「配置」下的「保密字典」中搜索initial可以找到gitlab-initial-root-password的条目。点击该字典条目,并在「数据」区块中点击最右侧的眼睛图标来展示password数据项的内容。

wKgaomajFbuAFsRZAABK3RWh4tE303.jpg

复制该密码,并使用root作为用户名,即可登陆GitLab得到如下图所示的界面。

wKgZomajFb2AB-6dAABJLzFp6KE306.jpg

点击「Createaproject」按钮进入创建项目的页面,通过「CreatefromTemplate」我们可以来创建一个示例项目用于后面的流水线演练。

让我们选择NodeJSExpress这个项目模版来创建应用,所有模版都可以通过Preview按钮来预览其中的内容,使用模版后得到如下创建项目界面。

wKgaomajFb6AXcgtAAA_eLgoRg0997.jpg

填入您偏好的项目名称,并在项目可见度这里选择默认的Private来创建私有项目,以便于后续演示如何访问私有项目。完成导入后可以得到如下的项目页面。

wKgZomajFb6AYa73AABarNmm7q8740.jpg

关闭AutoDevOps并创建Jenkinsfile

由于我们后续要使用KubeSphereDevOps,而GitLab默认开启了AutoDevOps功能(会为无CI配置的项目自动提供流水线支持),为了避免混乱,我们先暂时关闭AutoDevOps。

找到项目页面中间部位的文件及功能快捷入口区域,点击「AutoDevOpsenabled」按钮块,进入配置页面后取消DefaulttoAutoDevOpspipeline的勾选并「Savechanges」,即可完成AutoDevOps功能的关闭。

接下来,我们还需要为这个项目创建一个Jenkinsfile用于后续KubeSphereDevOps流水线的构建。在master分支下直接创建一个名为Jenkinsfile的文件,填入以下内容即可。

wKgaomajFb-ADFuOAAAuxHp-AI0106.jpg

使用KubeSphereDevOps为GitLab提供流水线

我们首先在devops的企业空间中创建一个名为demo的DevOps项目,用于后续演练如何为GitLab创建流水线。

将GitLab与KubeSphereJenkins进行绑定

由于KubeSphereJenkins默认绑定的GitLab服务是官方的gitlab.com,因此在创建流水线前需要先重新绑定到我们创建的私有GitLab服务上。

首先,我们需要打开KubeSphereJenkins的页面,为了操作方便,我们直接为kubesphere-devops-system命名空间下的devops-jenkins开放NodePort。

wKgZomajFb-ACJGkAAA73NQ7aQE592.jpg

使用KubeSphere账号登陆Jenkins(如果登陆失败可能是账号同步问题,可以修改一次KubeSphere的密码再次尝试)。通过「系统管理➡️系统配置」进入系统配置页面,找到GitLabServers配置区,点击「AddGitLabServer」开始添加我们的GitLab服务。

wKgaomajFcCAOJrVAAA6R9hKjvM464.jpg

如上图所示,需要填写或编辑的配置项一共有三项:

ServerURL:这里填入我们刚刚部署完成的GitLab服务的访问方式(如果是域名访问,一定需要是Jenkins也可达的域名)

Crendentials:这里选择或创建一个Jenkins的的凭证项,该凭证需要是GitLab某个用户的PersonalAccessToken(下面我们会继续说明如何创建)

WebHook:这个一定要勾选ManageWebHooks这项,用于我们之后同步JenkinsPipeline的状态到我们的GitLab服务中

创建GitLabPersonalAccessToken的JenkinsCrendential

首先,我们回到GitLab中,可以直接通过/-/profile/personal_access_tokens(例如本文可使用[http://gitlab.example.com/-/profile/personal_access_tokens](http://gitlab.example.com:30433/-/profile/personal_access_tokens))来访问PersonalAccessTokens的创建页面。按Jenkins的要求,我们创建一个名为jenkins且具备api``read_repository``write_repository权限的令牌,复制令牌字符串备用。

wKgZomajFcKAakwuAABbSYSaNjw982.jpg

然后我们回到Jenkins首页,从「系统管理➡️安全➡️ManageCrendentials➡️StoresscopedtoJenkins➡️Jenkins➡️全局➡️全局凭据(unrestricted)」进入凭证创建页面。

wKgaomajFcKAapWbAAAsHoIjOvU283.jpg

点击左侧面板的「添加凭据」即可开始创建凭证,填写完成后点击Ok保存即可完成凭证创建:

Kind选择GitLab个人令牌

Scope选择默认的全局,ID填入任意不产生命名冲突的ID

Token填入刚刚复制备用的GitLab令牌字符串(可忽略字符串长度的提示)

完成这部分配置之后,KubeSphereDevOps流水线的状态也会和我们GitLab中的Pipeline状态形成联动,大家可以参看视频中的效果。

wKgZomajFcOAXgfxAAAZ6e4R0CQ241.png

使用Jenkinsfile创建KubeSphereDevOps流水线

让我们进入之前创建的demoDevOps项目,开始「创建」流水线。

wKgaomajFcOAYhXRAAAic9PrgKo493.jpg

在弹出的「创建流水线」对话框中,我们填入一个流水线「名称」并点击下方「代码仓库(可选)」这个区域来进行代码仓库绑定。

wKgZomajFcSAWhhIAAAn9vcQfvg080.jpg

进入到「选择代码仓库」面板后,我们选择GitLab标签页,然后在「GitLab服务器地址」下拉框中选择我们上一小节在Jenkins中添加到GitLabCE服务器。由于我们演练的是私有仓库访问,下面需要先选择一个凭证用于访问私有代码仓库。在之前没有创建的情况下,这里我们点击绿色的「创建凭证」链接开始创建。

wKgaomajFcWAZAlRAAAxMnEzA2Y201.jpg

在弹出的「创建凭证」对话框中,输入「名称」后选定类型为用户名和密码;然后在「用户名」文本框中输入我们的账号root,在「密码/令牌」中输入之前从保密字典中获取到的初始密码(gitlab-initial-root-password)。

wKgZomajFcaAQU6LAAAq3foppEI375.jpg

通过「确定」按钮保存凭证后回到「选择代码面板」,在「凭证」下拉框中选择刚刚创建的gitlab-root,然后在「项目组/所有者」文本库中填入我们的账号root,点击「代码仓库」下拉框可看到root账号下所有的代码仓库,这里我们可以看到并选择之前创建的示例项目root/rak-test-express。

wKgaomajFciAZIAWAAAxXgRs_q0903.jpg

通过☑️按钮确认并保存配置后会再次回到「创建流水线」面板,此时可以看到「代码仓库」已出现我们选择的root/nodejs-demo项目,点击「下一步」进入「高级设置」标签页,这里我们不做额外的配置,直接点击「确定」来创建流水线。创建成功后,我们可以看到如下一个「分支数量」为0并且健康的流水线。

wKgZomajFciAUZDIAAAk-10AqUw692.jpg

稍后片刻点击进入新建的pipeline-test流水线,可以看到系统已经扫描到带有Jenkinsfile的master分支并已经开始运行流水线。

wKgaomajFcmAOBDJAAAlepsIwio885.jpg

点击master分支进入分支详情页面,不管运行成功还是失败都可以进一步点击「运行ID」一栏中的序号来查看详细的运行日志及制品等。

wKgZomajFcyAN8GOAAAhEvjKTuM980.jpg

等待一段时间后运行成功,进入运行ID为1的运行记录可以看到如下图展示的界面。进一步我们可以点击右上角的「查看日志」按钮来了解详细的流水线执行情况。

wKgaomajFc2APojoAABDJbsC9XE878.jpg

注意:对于多分支流水线,默认会先执行checkoutscm步骤,然后再执行Jenkinsfile中定义的流水线内容。

使用图形编辑器创建KubeSphereDevOps流水线

本小节内容可参考KubeSphere官方文档:DevOps用户指南/使用DevOps/使用图形编辑面板创建流水线。

KubeSphereDevOps流水线也可以通过图形编辑界面来进行创建,让我们重新回到demoDevOps项目首页,「创建」一个新流水线。这次在「创建流水线」面板中我们不绑定代码仓库,直接「下一步」再直接「创建」一个名为gui的流水线。

进入流水线详情页面后,我们可以在右侧面板看到「编辑流水线」的按钮,点击后在弹出的「选择流水线模版」对话框中,我们选择自定义流水线。

wKgZomajFc6AfO3wAAAnzypaIdA473.jpgwKgaomajFdKAL9T2AABEgIwMAoI117.jpg

另两个流水线模版包含了更完整的CI/CD流水线构建示例,但内容相对复杂,欢迎大家线下自行选用进行体验!

下面我们尝试用图形编辑器复现前一小节的两个操作步骤,即拉起代码,并打印一条HelloWorld消息。首先,我们点击左侧面板的+按钮,然后选中添加出来的一个阶段块。

wKgZomajFdOAf9OTAAA5TSaQglo778.jpg

接着我们点击左侧阶段块上的「+添加步骤」,并在右侧刷出的「添加步骤」面板中选则git步骤,在弹出的对话框中填入我们示例代码仓库的地址HTTPGit地址(如),凭证选用之前创建的gitlab-root,分支填写master。

wKgaomajFdWARVJvAAAt05dni0Q093.jpg

完成后我们依样画葫芦,再次添加一个打印消息步骤并填入HelloWorld!作为内容,最后得到如下图所示的整体效果。

wKgZomajFdaAOnhpAAAzVEMS8pg166.jpg

完成编辑后「确定」再「确定」来保存流水线,回到详情页面后,可以通过右上角的「运行」按钮来执行流水线。

wKgaomajFdaAX1K8AAAqbOwNxNk611.jpg

运行成功后可以再次查看流水线运行记录,并查看运行日志,得到如下图所示结果。

wKgZomajFdeASz0kAAA3Xv95KLM139.jpg

【番外】使用SSH访问Kubernetes集群中的GitLab代码仓库

前文介绍的代码仓库的访问方式都是通过HTTP的形式,但现实工作中我们最常用的还是SSH的访问方式,那是否可以直接通过gitclonegit@gitlab.example.com:root/nodejs-demo.git这样的方式来拉取和推送代码呢?

答案是肯定的:可以!但是这里有一个大坑需要注意——默认SSH用的是22端口,但多了一层Kubernetes网络之后,不管是否使用这个默认端口都需要处理好GitLab如何对外暴露SSH服务。

假设我们可以接受重新绑定一个端口来使用GitLabSSH,那么可以这样操作:

首先,我们回到GitLab部署项目中,找到gitlab-shell服务并为它开放NodePort外部访问端口

wKgaomajFdeAXmesAAA-KVulZnY254.jpg

基于这个端口,把Git访问的地址都改为:

wKgZomajFdiAP3T8AAAumHbvxWE473.png

凭此文章可以去PetaExpress官网发工单免费领取2核2G云服务器一台,数量有限先到先得。申领步骤:注册→登录→控制台右上角发工单回复“本文文章网址+文章标题+申请奖励

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9129

    浏览量

    85344
  • devops
    +关注

    关注

    0

    文章

    113

    浏览量

    12015
收藏 人收藏

    评论

    相关推荐

    devops使用最广泛的集成工具盘点

    devops使用最广泛的集成工具包括GitLab(全栈DevOps平台)、Jenkins(CI/CD自动化服务器)、Docker(容器化威廉希尔官方网站 )、Kubernetes(
    的头像 发表于 11-26 13:48 155次阅读

    容器云服务引擎是什么意思?

    容器云服务引擎是什么意思?容器云服务引擎是一种基于云原生架构的容器编排工具,能够帮助用户快速构建部署
    的头像 发表于 10-19 17:08 172次阅读

    常用的devops工具集成方法

    常用的devops工具集成方法涵盖了软件开发和运维的各个方面,从版本控制到自动化构建、测试、部署和监控。这些工具的有效集成可以帮助团队提高协作效率,减少沟通障碍,实现快速、高质量的软件
    的头像 发表于 10-09 11:21 245次阅读

    入门级攻略:如何容器部署微服务?

    第一步理解容器化基础,第二步创建Dockerfile,第三步构建推送镜像,第四步部署微服务,第五步管理微服务、第六步优化更新。容器部署微服
    的头像 发表于 10-09 10:08 149次阅读

    容器云服务引擎是什么?如何使用

    架构的容器编排工具,能够帮助用户快速构建部署和管理容器化应用。通过遵循上述使用方法,用户可以充分利用其提供的各项功能来优化和管理自己的
    的头像 发表于 09-30 10:17 182次阅读

    常见的服务器容器和漏洞类型汇总

    常见的服务器容器包括KubeSphere、Tomcat、Nginx、Apache等,它们提供便捷的服务部署和灵活的网络功能的同时,也可能存在着一定的安全风险。这些
    的头像 发表于 08-29 10:39 214次阅读

    系统集成部署流程图

    系统集成部署流程图 为保证无互联网的情况下,可正常搭建、构建项目自动化部署
    的头像 发表于 08-21 10:24 232次阅读
    系统集成<b class='flag-5'>部署</b>流程图

    ARM平台实现Docker容器威廉希尔官方网站

    。(定制应用镜像来实现集成、持续支付、部署。开发人员可以通过dockerfile来进行镜像构建结合持续集成系统进行集成测试,而运维人员则可直接在生产环境
    发表于 07-25 14:36

    ARM平台实现Docker容器威廉希尔官方网站

    应用镜像来实现集成、持续支付、部署。开发人员可以通过dockerfile来进行镜像构建结合持续集成系统进行集成测试,而运维人员则可直接在生产环境
    发表于 07-17 11:05

    K8S学习教程三:PetaExpress KubeSphere 容器部署 Wiki 系统 wiki.js 启用中文全文检索

    K8S学习教程(三):PetaExpress KubeSphere 容器部署 Wiki 系统 wiki.js 启用中文全文检索  。
    的头像 发表于 07-08 17:03 638次阅读
    K8S学习教程三:<b class='flag-5'>在</b>PetaExpress <b class='flag-5'>KubeSphere</b> <b class='flag-5'>容器</b><b class='flag-5'>部署</b> Wiki 系统 wiki.js <b class='flag-5'>并</b>启用中文全文检索

    K8S学习教程(二): PetaExpress KubeSphere容器平台部署高可用 Redis 集群

    前言 Redis 是开发过程中经常用到的缓存中间件,为了考虑在生产环境稳定性和高可用,Redis通常采用集群模式的部署方式。 制定Redis集群的
    的头像 发表于 07-03 15:30 740次阅读
    K8S学习教程(二):<b class='flag-5'>在</b> PetaExpress <b class='flag-5'>KubeSphere</b><b class='flag-5'>容器</b>平台<b class='flag-5'>部署</b>高可用 Redis 集群

    超级电容器高性能电源应用的优势

    超级电容器高性能电源应用的优势超级电容器(法拉电容)作为一种新型储能威廉希尔官方网站 ,高性能电源应用
    的头像 发表于 06-04 09:31 515次阅读
    超级电<b class='flag-5'>容器</b><b class='flag-5'>在</b>高性能电源应用<b class='flag-5'>中</b>的优势

    如何在DevOps环境实施测试用例管理

    由于DevOps 工作流程使用CI/CD 方法进行软件开发,因此您的测试管理工具还应该能够与GitLab 和Jenkins 等CI/CD 工具集成。
    的头像 发表于 01-29 09:30 1504次阅读
    如何在<b class='flag-5'>DevOps</b>环境<b class='flag-5'>中</b>实施测试用例管理

    深度解析DevOps架构的概念、关键组成部分及其优势

    DevOps(Development和Operations的合并)是一种旨在加速软件开发和部署的方法论。
    的头像 发表于 01-15 09:38 2357次阅读
    深度解析<b class='flag-5'>DevOps</b>架构的概念、关键组成部分及其优势

    什么是DevOps的持续测试?持续测试如何融入DevOps

    持续测试(CT) 是整个软件开发生命周期(SDLC) 自动测试软件应用程序和组件的实践。 DevOps ,持续测试是
    的头像 发表于 01-09 09:10 561次阅读
    什么是<b class='flag-5'>DevOps</b><b class='flag-5'>中</b>的持续测试?持续测试如何融入<b class='flag-5'>DevOps</b>?