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云服务器一台,数量有限先到先得。申领步骤:注册→登录→控制台右上角发工单回复“本文文章网址+文章标题+申请奖励

审核编辑 黄宇

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

    关注

    13

    文章

    10094

    浏览量

    90874
  • devops
    +关注

    关注

    0

    文章

    130

    浏览量

    12776
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何快速云服务器上部署Web环境?

    如何快速云服务器上部署Web环境
    的头像 发表于 10-14 14:16 308次阅读

    Keil 项目构建目标 software 时,FCARM 工具报错

    使用工具搜索问题,Keil 项目 构建目标 software 时,FCARM 工具报错,搜索是未指定输出文件名。 根据网上提供的解决办法,魔法棒OUTPUT中点击Create H
    发表于 08-27 10:12

    Ansible代码上线项目实战案例

    DevOps浪潮,自动化部署已经成为每个运维工程师的必备技能。今天我将分享一个完整的Ansible代码上线项目实战案例,让你的
    的头像 发表于 07-24 14:03 368次阅读

    如何使用Docker部署大模型

    随着深度学习和大模型的快速发展,如何高效地部署这些模型成为了一个重要的挑战。Docker 作为一种轻量级的容器化技术,能够将模型及其依赖环境打包成一个可移植的容器,极大地简化了
    的头像 发表于 05-24 16:39 795次阅读

    树莓派上构建部署 Node.js 项目

    探索RaspberryPi上构建部署Node.js项目的最佳实践。通过我们的专业提示和技巧,克服常见挑战,使您的项目顺利运行。去年圣诞节
    的头像 发表于 03-25 09:44 510次阅读
    <b class='flag-5'>在</b>树莓派上<b class='flag-5'>构建</b>和<b class='flag-5'>部署</b> Node.js <b class='flag-5'>项目</b>

    《AI Agent 应用与项目实战》阅读心得3——RAG架构与部署本地知识库

    系统整体性能。实际应用,还需要考虑文档更新的增量处理、查询结果的质量评估、系统可扩展性等问题。这些工程实践的经验对于构建高性能的RAG应用系统具有重要的指导意义。在此分享一个重要的调试技巧:通过
    发表于 03-07 19:49

    技术解析 | 适用于TeamCity的Unreal Engine支持插件,提升游戏构建效率

    TeamCity 是一款强大的持续集成和部署服务器,面向以 DevOps 为中心的团队提供开箱即用的测试智能、构建问题的实时报告以及无与伦比的可扩展性。安装和部署 TeamCity,几
    的头像 发表于 02-19 16:12 999次阅读
    技术解析 | 适用于TeamCity的Unreal Engine支持插件,提升游戏<b class='flag-5'>构建</b>效率

    华为云 Flexus X 实例:极速搭建个人代码仓库 GitLab 平台

     GitLab 镜像下载 5 3.2 GitLab 部署安装 5 3.3 GitLab 配置 6 3.4 GitLab 登录账号重置 7 四
    的头像 发表于 01-23 18:29 695次阅读
    华为云 Flexus X 实例:极速搭建个人代码仓库 <b class='flag-5'>GitLab</b> 平台

    Kubernetes:构建高效的容器化应用平台

    Kubernetes 作为容器编排的事实标准,容器化应用部署中发挥着关键作用。 搭建 Kubernetes 集群是应用的基础。可以使用kubeadm工具
    的头像 发表于 01-23 15:22 575次阅读

    Flexus X实例GitLab部署构建流水线-私人一体化代码仓库

    828 B2B 企业节盛大启幕,GitLab 赋能自动化流程,引领创新部署新时代!在这个瞬息万变的数字时代,我们激动地推出整合 GitLab、Docker 的顶尖解决方案,为您的软件开发项目
    的头像 发表于 01-18 11:09 697次阅读
    Flexus X实例<b class='flag-5'>GitLab</b><b class='flag-5'>部署</b>和<b class='flag-5'>构建</b>流水线-私人一体化代码仓库

    微服务容器部署好处多吗?

    微服务容器部署好处有很多,包括环境一致性、资源高效利用、快速部署与启动、隔离性与安全性、版本控制与回滚以及持续集成与持续部署。这些优势助力
    的头像 发表于 01-17 10:22 542次阅读

    解锁高效项目管理,Zentao 在华为云 Flexusx 容器部署与应用指南

    前言 在当今快速迭代的商业环境,高效且灵活的项目管理成为企业竞争力的关键。华为云 Flexusx 实例,以其灵活的 vCPU 内存配比、热变配功能及按需计费模式 ,为项目管理软件如
    的头像 发表于 01-13 15:54 1043次阅读
    解锁高效<b class='flag-5'>项目</b>管理,Zentao 在华为云 Flexusx <b class='flag-5'>容器</b>化<b class='flag-5'>部署</b>与应用指南

    云端代码管理新体验,华为云 Flexus X 实例上 GitLab 部署与使用的实战指南云端代码管理新体验

    /CD 等功能,为企业打造高效、安全的研发环境。正值 828 华为云企业上云节,我们一同体验这一强强联合的云端解决方案。Flexus X 的高性价比与 GitLab 的先进项目管理工具,将助您实现快速上云
    的头像 发表于 01-07 17:05 1379次阅读
    云端代码管理新体验,华为云 Flexus X 实例上 <b class='flag-5'>GitLab</b> <b class='flag-5'>部署</b>与使用的实战指南云端代码管理新体验

    Flexus X 实例 C#/.Net Core 结合(git 代码管理、docker 自定义镜像)快速发布部署 - 让你的项目飞起来~

    通过 Docker 技术自定义构建镜像,从而实现项目从代码到应用的快速构建、打包与部署流程。
    的头像 发表于 12-25 21:15 1014次阅读
    Flexus X 实例 C#/.Net Core 结合(git 代码管理、docker 自定义镜像)<b class='flag-5'>快速</b>发布<b class='flag-5'>部署</b> - 让你的<b class='flag-5'>项目</b>飞起来~

    亚马逊云科技与GitLab发布AI集成产品,加速DevSecOps

    近日,2024年re:Invent全球大会上,亚马逊云科技与GitLab Inc.,这一功能全面的AI驱动DevSecOps平台,携手推出了GitLab Duo与Amazon Q的集成产品。这一
    的头像 发表于 12-25 14:15 937次阅读