2024广东省职业技能大赛云计算赛项实战——集群部署GitLab

集群部署GitLab

前言

题目是这样的:

在Kubernetes集群中新建命名空间gitlab-ci,将GitLab部署到该命名空间下,Deployment和Service名称均为gitlab,以NodePort方式将80端口对外暴露为30880,设置GitLab服务root用户的密码为admin@123,将项目包demo-2048.tar.gz导入到GitLab中并命名为demo-2048。

GitLab是一个功能强大且灵活的 DevOps 平台,为开发团队和企业提供了从代码管理到持续集成、交付和部署的一整套解决方案。无论是小型团队还是大型企业,都可以从中受益,提高开发效率和软件质量。

使用的环境是之前搭建的容器云平台:2024广东省职业技能大赛云计算赛项实战——容器云平台搭建-CSDN博客
不过我嫌麻烦搭了台allinone的,只有master节点,使用的IP是192.168.200.15/24

操作过程

环境准备

#解压需要用到的软件包
[root@k8s-master-node1 ~]# tar -zxf CICD-Runners-demo2048.tar.gz
[root@k8s-master-node1 ~]# ls 
anaconda-ks.cfg  chinaskills_cloud_paas_v2.0.2.iso  CICD-Runners-demo2048.tar.gz  gitlab-ci
#使用ctr命令将镜像导入到当前使用的容器运行时的镜像存储中
[root@k8s-master-node1 ~]# docker load -i gitlab-ci/images/images.tar 
#根据题目要求创建命名空间gitlab-ci
[root@k8s-master-node1 ~]# kubectl create ns gitlab-ci
namespace/gitlab-ci created
#切换到到gitlab-ci目录
[root@k8s-master-node1 ~]# cd gitlab-ci/
#编写部署gitlab的yaml文件
[root@k8s-master-node1 gitlab-ci]# vi gitlab-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: gitlab			#根据题目要求定义名称为gitlab
  namespace: gitlab-ci	#根据题目要求部署于gitlab-ci命名空间内
  labels:
    app: gitlab
spec:
  selector:
    matchLabels:
      app: gitlab
  template:
    metadata:
      name: gitlab
      labels:
        app: gitlab
    spec:
      containers:
      - name: gitlab
        image: gitlab/gitlab-ce:latest
        imagePullPolicy: IfNotPresent
        env:
        - name: GITLAB_ROOT_PASSWORD
          value: "admin@123"	#根据题目要求,设置root用户密码为admin@123
        - name: GITLAB_ROOT_EMAIL
          value: "1234567890@qq.com"
        ports:
        - name: http
          containerPort: 80
        volumeMounts:
        - name: gitlab-config
          mountPath: /etc/gitlab
        - name: gitlab-logs
          mountPath: /var/log/gitlab
        - name: gitlab-data
          mountPath: /var/opt/gitlab
      volumes:
      - name: gitlab-config
        hostPath:
          path: /home/gitlab/conf
      - name: gitlab-logs
        hostPath:
          path: /home/gitlab/logs
      - name: gitlab-data
        hostPath:
          path: /home/gitlab/data

部署GitLab

#部署gitlab
[root@k8s-master-node1 gitlab-ci]# kubectl apply -f gitlab-deploy.yaml 
deployment.apps/gitlab created
#创建一个NodePort类型的Service,根据题目要求,定义名称为gitlab,部署于gitlab-ci命名空间,且将80端口对外暴露为30880
[root@k8s-master-node1 gitlab-ci]# kubectl create svc nodeport gitlab --tcp=80 --node-port=30880 -n gitlab-ci
service/gitlab created
#查看Pod的名字和IP
[root@k8s-master-node1 gitlab-ci]# kubectl get pods -n gitlab-ci -owide
NAME                      READY   STATUS    RESTARTS   AGE     IP           NODE               NOMINATED NODE   READINESS GATES
gitlab-755b55bf96-2xffp   1/1     Running   0          5m54s   10.244.0.12  k8s-master-node1   <none>           <none>
#查看Service的信息,着重注意Endpoints得关联到pod的地址,否则我们无法访问GitLab的web界面
[root@k8s-master-node1 gitlab-cicd]# kubectl describe service gitlab -n gitlab-ci 
Name:                     gitlab
Namespace:                gitlab-ci
Labels:                   app=gitlab
Annotations:              <none>
Selector:                 app=gitlab
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.96.125.173
IPs:                      10.96.125.173
Port:                     80  80/TCP
TargetPort:               80/TCP
NodePort:                 80  30880/TCP
Endpoints:                10.244.0.12:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

配置环境

#进入CoreDNS的ConfigMap并添加以下段落
[root@k8s-master-node1 gitlab-ci]# kubectl edit configmap coredns -n kube-system
#添加一条静态的DNS解析规则,无法匹配时,再继续查询其他配置
...
        hosts {
            10.244.0.12 gitlab-755b55bf96-2xffp
            fallthrough
        }
        prometheus :9153
...
#重新启动集群中CoreDNS的部署,使得CoreDNS的Deployment重新加载配置
[root@k8s-master-node1 gitlab-ci]# kubectl -n kube-system rollout restart deploy coredns
deployment.apps/coredns restarted
#进入gitlab的shell中
[root@k8s-master-node1 gitlab-ci]# kubectl exec -ti -n gitlab-ci gitlab-755b55bf96-2xffp bash
#修改gitlab的外部访问URL
root@gitlab-755b55bf96-2xffp:/# vi /etc/gitlab/gitlab.rb 
external_url 'http://10.244.0.16:80'  
#重启让配置生效
root@gitlab-755b55bf96-2xffp:/# reboot
root@gitlab-755b55bf96-2xffp:/# exit

上传项目包

这题要求将项目包demo-2048.tar.gz导入到GitLab中并命名为demo-2048。但我在提供的软件包里并没有找到demo-2048.tar.gz,只有demo-2048的目录,应该是提前给我们解压好了,指的就是这个目录。

我们打开浏览器,输入192.168.200.15:30880访问gitlab的web界面,使用用户名/密码:root/admin@123进行登录
进入主页,点击Create blank project创建项目

在这里插入图片描述

根据题目要求,设置项目名称为demo-2048。位置放在/root目录,并将项目设为公开

这样就创建好了

回到宿主机进行操作

#切换至项目包目录
[root@k8s-master-node1 gitlab-ci]# cd demo-2048/
[root@k8s-master-node1 demo-2048]# ls
Dockerfile  pom.xml  README.md  src  template
#设置全局用户信息,待会我们提交代码的时候会使用这些信息
[root@k8s-master-node1 demo-2048]# git config --global user.name "administrator"
[root@k8s-master-node1 demo-2048]# git config --global user.email "admin@example.com"
#删除旧的远程仓库配置
[root@k8s-master-node1 demo-2048]# git remote remove origin
#添加新的远程仓库配置
[root@k8s-master-node1 demo-2048]# git remote add origin http://192.168.200.15:30880/root/demo-2048.git
#将当前目录下所有修改过的文件添加到Git的暂存区
[root@k8s-master-node1 demo-2048]# git add .
#将暂存区的文件提交到本地仓库,并附加提交信息
[root@k8s-master-node1 demo-2048]# git commit -m "initial commit"
#将本地仓库的代码推送给远程仓库的drone分支
[root@k8s-master-node1 demo-2048]# git push -u origin drone
Username for 'http://192.168.200.15:30880': root
Password for 'http://root@192.168.200.15:30880': #输入设置的密码admin@123
Counting objects: 585, done.
Delta compression using up to 6 threads.
Compressing objects: 100% (257/257), done.
Writing objects: 100% (585/585), 140.39 KiB | 0 bytes/s, done.
Total 585 (delta 303), reused 576 (delta 295)
remote: Resolving deltas: 100% (303/303), done.
remote: 
remote: To create a merge request for drone, visit:
remote:   http://10.244.0.12/root/demo-2048/-/merge_requests/new?merge_request%5Bsource_branch%5D=drone
remote: 
To http://192.168.200.15:30880/root/demo-2048.git
 * [new branch]      drone -> drone
分支 drone 设置为跟踪来自 origin 的远程分支 drone。

重新刷新一下页面,我们就可以看到上传成功了

在这里插入图片描述

后语

就这样,这道题的要求都满足了,算做完了。但它后面还有连着的几道题,包括部署GitLab-Runner、部署GitLab-Agent(实际上是连接k8s集群)还有编写流水线脚本构建2048。也就是说这道题不过是整个项目的一部分。后续的那些我也会继续写的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/747622.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 高级编程:文件操作与错误处理

在前几篇文章中&#xff0c;我们介绍了Python的基本语法、函数和模块以及面向对象编程。这些知识对于大部分日常编程问题已经足够&#xff0c;但对于需要分析大数据的人来说&#xff0c;这些还不够。本章将介绍Python的文件操作以及错误处理与调试。 目录 文件操作读文件写文…

制造业采购堡垒机的四大必要性看这里!

制造业包括的行业广泛&#xff0c;与大家的生活息息相关&#xff0c;例如食品制造业、汽车制造业、纺织业、服装制造业等等。但大家对于制造业不是很了解&#xff0c;不知道制造业也是需要采购堡垒机的&#xff0c;今天我们就来聊聊制造业采购堡垒机的必要性。 制造业采购堡垒机…

node mySql 实现数据的导入导出,以及导入批量插入的sql语句

node 实现导出, 在导出excel中包含图片&#xff08;附件&#xff09; node 实现导出, 在导出excel中包含图片&#xff08;附件&#xff09;-CSDN博客https://blog.csdn.net/snows_l/article/details/139999392?spm1001.2014.3001.5502 一、效果 如图&#xff1a; 二、导入 …

AI商品图生成企业定制服务,广州这家公司走在了行业前头

&#x1f680; 最强AI绘图设计企业定制服务出炉 —— 触站A&#xff0c;智能艺术的革新者 &#x1f31f; &#x1f3a8; 触站AI&#xff0c;绘制未来的智能艺术 &#x1f3a8;在AI技术的浪潮中&#xff0c;触站AI以其前沿技术&#xff0c;为艺术与设计领域注入了新的活力。 &a…

【SkiaSharp绘图11】SKCanvas属性详解

文章目录 SKCanvas构造SKCanvas构造光栅 Surface构造GPU Surface构造PDF文档构造XPS文档构造SVG文档SKNoDrawCanvas 变换剪裁和状态构造函数相关属性DeviceClipBounds获取裁切边界(设备坐标系)ClipRect修改裁切区域IsClipEmpty当前裁切区域是否为空IsClipRect裁切区域是否为矩形…

C3P0数据库连接池

目录 一&#xff1a;连接池介绍 1.1连接池解决的问题 2.常用的数据库连接池 二&#xff1a;c3p0介绍 2.1C3P0介绍&#xff1a; 2.2C3P0快速入门 1.常用参数说明 2.API介绍 3.使用步骤 1.导入jar包c3p0-0.9.1.2.jar 2.编写c3p0-config.xml配置文件&#xff0c;配置对…

深入探索:大型语言模型消除幻觉的解决之道

随着人工智能技术的飞速发展&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经成为自然语言处理领域的明星。它们以其庞大的知识库和生成连贯、上下文相关文本的能力&#xff0c;极大地推动了研究、工业和社会的进步。然而&#xff0c;这些模型在生成文本时可能会产生…

27. 高级特性(下)

目录 一、为了类型安全和抽象而使用 newtype 模式二、使用类型别名创建类型同义词2.1 使用type关键赋予现有类型一个别名2.2 减少重复2.3 与Result<T, E>结合使用2.4 从不返回的 never type 三、高级函数和闭包3.1 函数指针3.2 返回闭包 四、宏4.1 宏和函数的区别4.2 mac…

2024 最新推广服务 API 推荐,助力业务腾飞

在数字化营销的浪潮中&#xff0c;API 服务正以其强大的功能和高效的特性&#xff0c;成为企业和开发者们实现精准推广、优化营销效果的得力助手。2024 年的今天&#xff0c;各种创新的 API 服务层出不穷&#xff0c;为广告投放、数据洞察等领域带来了前所未有的机遇。在接下来…

echarts隔行背景色

看了下使用说明&#xff0c;试了半天终于搞对了 参考文档&#xff1a;Documentation - Apache ECharts option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [120, 200, 150, 80, 70, 110, 130],type: bar,mar…

视频共享融合赋能平台LntonCVS视频监控业务平台建设安全煤矿矿井应用方案

随着我国经济的飞速增长&#xff0c;煤炭作为主要的能源之一&#xff0c;在我国的能源结构中扮演着至关重要的角色。然而&#xff0c;煤矿事故的频繁发生&#xff0c;不仅造成了巨大的人员伤亡和财产损失&#xff0c;也对社会产生了深远的负面影响。因此&#xff0c;实现煤矿的…

多家国产大模型提供OpenAI API服务替代方案,谷歌将推出明星网红AI聊天机器人

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 1、OpenAI终止对中国提供服务 6月25日凌晨&#xff0c;多个用户收到OpenAI的推送邮件&#xff0c;信中称&#xff0c;自今年7月9日起&#xff0c;将开始阻止来自非支持国家和地区的API&#xff08;应…

华为od-C卷200分题目3 - 两个字符串间的最短路径问题

华为od-C卷200分题目3 - 两个字符串间的最短路径问题 题目描述 给定两个字符串&#xff0c;分别为字符串A与字符串B。 例如A字符串为ABCABBA&#xff0c;B字符串为CBABAC可以得到下图m*n的二维数组&#xff0c;定义原点为(0, 0)&#xff0c;终点为(m, n)&#xff0c;水平与垂…

python自动化系列:自动将工作簿下的所有工作表合并到新工作表

作品介绍 作品名称&#xff1a;自动将工作簿下的所有工作表合并到新工作表 开发环境&#xff1a;PyCharm 2023.3.4 python3.7 用到的库&#xff1a;os、xlwings 作品简介&#xff1a;该实例使用xlwings库来操作Excel文件&#xff0c;其主要功能是将一个工作簿中所有工作表…

玩机进阶教程----MTK芯片使用Maui META修复基带 改写参数详细教程步骤解析

目前mtk芯片与高通芯片在主流机型 上使用比较普遍。但有时候版本更新或者误檫除分区等等原因会导致手机基带和串码丢失的故障。mtk芯片区别与高通。在早期mtk芯片中可以使用工具SN_Writer_Tool读写参数。但一些新版本机型兼容性不太好。今天使用另外一款工具来演示mtk芯片改写参…

打破数据分析壁垒:SPSS复习必备(十)

Means过程 统计学上的定义和计算公式 定义&#xff1a;Means过程是SPSS计算各种基本描述统计量的过程&#xff0c;其实就是按照用户指定条件&#xff0c;对样本进行分组计算均数和标准差&#xff0c;如按性别计算各组的均数和标准差。 用户可以指定一个或多个变量作为分组变…

上古世纪台服注册账号+下载客户端全方位图文教程

又一款新的MMRPG游戏即将上线啦&#xff0c;游戏名称叫做《上古世纪》游戏采用传统MMO类型游戏的玩法&#xff0c;但是开发商采用了先进的游戏引擎&#xff0c;让玩家们可以享受到极致的视觉体验。同时游戏的背景是建立在大陆分崩离析的基础上。各个部落因为领地的原因纷纷开战…

【大数据】—量化交易实战案例双均线策略(移动平均线)

声明&#xff1a;股市有风险&#xff0c;投资需谨慎&#xff01;本人没有系统学过金融知识&#xff0c;对股票有敬畏之心没有踏入其大门&#xff0c;今天用另外一种方法模拟炒股&#xff0c;后面的模拟的实战全部用同样的数据&#xff0c;最后比较哪种方法赚的钱多。 量化交易…

解决问题:浏览器中使用必应时提示“cn.bing.com将您的重定向的次数过多“

目录 一、问题分析二、关闭代理三、更新配置文件 一、问题分析 专业问题分析见其它博主的博文&#xff1a;重定向次数过多。 看了其它博文有一定启发&#xff0c;我自己尝试后发现两种解决办法。 二、关闭代理 我自己用的梯子是Clash&#xff0c;参考其他博主的分析&#x…

亚马逊运营专词(二)

1. A页面&#xff1a;亚马逊A页面即图文版商品详情页面&#xff0c;可以通过A页面使用不同的方式来描述商品特征&#xff0c;例如在页面中添加品牌故事、产品图片、产品文字介绍等&#xff0c;进一步完善页面。但目前A页面只对在亚马逊上注册了品牌的商家开放。 2. 跟卖&#x…