devops学习(一) 搭建gitlab代码仓库

网友投稿 367 2022-08-23

devops学习(一) 搭建gitlab代码仓库

关于devops的理论知识网上很多,这里就简单概括一下devops这张图吧( •̀ ω •́ )✧

一、devops流程图

devops过程说明

1、PLAN 开发团队根据客户的目标指定开发计划2、CODE 根据"PLAN(开发计划)" 开始编写代码,需要将不同版本("稳定"/"最新")的代码存储在一个库中3、Build 代码编写完成后,需要将代码构建打包并且运行4、Test 成功构建项目后,需要测试代码是否存在BUG或者错误5、DEPLOY 代码经过"手动调试"和"自动化测试"后,认为可以部署了,选一个稳定版本部署6、OPERATE 运维团队将代码部署到生产环境中7、MONITOR 项目部署上线后,需要持续的监控产品8、INTEGRATE 然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DEVOPS的核心(ci/cd)

二、如何实现devops流程

我们现在实现devops 通常使用的是jenkins的工具,使用流程如下

1、开发人员将编写好的代码上传到gitlab代码仓库2、我们通过手动/自动的形式通过Jenkins将代码拉取下来3、jenkins会通过maven工具开始对代码构建4、如果编译没问题,jenkins会将打好的jar包封装成镜像发给harbor镜像仓库5、jenkins再去通知服务器端通过docker/k8s拉取镜像并运行服务

三、部署gitlab代码仓库

0、环境说明

Centos7.6 操作系统内核版本4.4K8S集群1.22.2单台 8C16G

1、创建devops命名空间

kubectl create ns devops

2、添加固定节点标签

//这里的vm-16-16-centos主机名换成你要运行的ip地址kubectl label node vm-16-16-centos app=jenkins

3、创建devops安装目录

//登陆master节点创建devops部署目录(存放各种yaml)mkdir -p /apps/devops_setupcd /apps/devops_setup

vi gitlab-dev.yaml

apiVersion: apps/v1kind: Deploymentmetadata: name: gitlab-ds namespace: devopsspec: selector: matchLabels: app: my-gitlab template: metadata: labels: app: my-gitlab spec: nodeSelector: app: jenkins volumes: - name: gitlab-config hostPath: path: /apps/devops_setup/data/gitlab/config type: DirectoryOrCreate - name: gitlab-logs hostPath: path: /apps/devops_setup/data/gitlab/logs type: DirectoryOrCreate - name: gitlab-data hostPath: path: /apps/devops_setup/data/gitlab/data type: DirectoryOrCreate containers: - name: gitlab image: gitlab/gitlab-ce:latest ports: - name: containerPort: 80 volumeMounts: - name: gitlab-config mountPath: /etc/gitlab - name: gitlab-logs mountPath: /var/log/gitlab - name: gitlab-data mountPath: /var/opt/gitlab---apiVersion: v1kind: Servicemetadata: name: gitlab-svc namespace: devopsspec: ports: - port: 80 targetPort: nodePort: 30001 # 拥有此标签的pod都属于该服务 selector: app: my-gitlab # 默认ClusterIp 改为NodePort 暴露外部端口 type: NodePort

部署

kubectl apply -f gitlab-dev.yaml

查看pod状态

kubectl -n devops get pod

我们上面暴露的nodePort端口是30001,我这里是云服务器直接访问即可

/apps/devops_setup/data/gitlab/config/initial_root_password | grep Password | grep -vE '^$|#' | awk '{print $2}'

返回

//每个人都不一样,别直接黏贴eMe0oq4PQqGGEA4Y0UUbamE4hPyvSyY53Lm1tnnxMoc=

5、登陆gitlab

#默认登陆用户root#获取的密码eMe0oq4PQqGGEA4Y0UUbamE4hPyvSyY53Lm1tnnxMoc=

6、修改默认密码

//我这里将密码修改成这个12345678qq

7、新建项目

创建一个mytest 的项目,属于公开项目所有人都可以拉取

新建项目发现克隆项目的地址很奇怪,他这里实际上是pod的名称​​git@gitlab-ds-7dcb446f4c-b8kqd:root/mytest.git我们无法通过这样的地址去克隆关联项目,所以要做一些修改

8、修改gitlab配置重新指定地址

//切换到gitlab代码仓库挂载的配置目录cd /apps/devops_setup/data/gitlab/config/

vi gitlab.rb

33 external_url ' //修改66 gitlab_rails['gitlab_ssh_host'] = '101.43.4.210' //修改

说明

当然,也可以不用30001端口,外部暴露80也能用,不过我80端口有服务在跑

9、重载gitlab配置

//登陆podkubectl -n devops exec -it gitlab-ds-7dcb446f4c-b8kqd -- bash//重载配置并重启gitlab-ctl reconfigure && gitlab-ctl restart

上面有说,我们这里改完配置重启后,容器内部提供服务的端口就变成30001此时我们外部暴露的30001端口就无法访问了,要再修改一下gitlab的yaml文件

cd /apps/devops_setup

vi gitlab-dev.yaml

apiVersion: apps/v1kind: Deploymentmetadata: name: gitlab-ds namespace: devopsspec: selector: matchLabels: app: my-gitlab template: metadata: labels: app: my-gitlab spec: nodeSelector: app: jenkins volumes: - name: gitlab-config hostPath: path: /apps/devops_setup/data/gitlab/config type: DirectoryOrCreate - name: gitlab-logs hostPath: path: /apps/devops_setup/data/gitlab/logs type: DirectoryOrCreate - name: gitlab-data hostPath: path: /apps/devops_setup/data/gitlab/data type: DirectoryOrCreate containers: - name: gitlab image: gitlab/gitlab-ce:latest ports: - name: containerPort: 30001 #修改这里 volumeMounts: - name: gitlab-config mountPath: /etc/gitlab - name: gitlab-logs mountPath: /var/log/gitlab - name: gitlab-data mountPath: /var/opt/gitlab---apiVersion: v1kind: Servicemetadata: name: gitlab-svc namespace: devopsspec: ports: - port: 30001 #修改这里 targetPort: nodePort: 30001 selector: app: my-gitlab type: NodePort

更新

kubectl apply -f gitlab-dev.yaml

9、访问gitlab

10、测试克隆项目

cd /apps/devops_setup/cd mytest/touch 11git add .git commit -m "test"git config --global credential.helper storegit push#输入密码root 12345678qq

因为添加了上面的配置,所以后续再push就不用输入账户信息了

如果不想用上面的记录git信息的话删除 以下信息即可

vi ~/.gitconfig

说明

因为我这里用的云主机只有一台,后续不同的主机就以不同的标签进行识别上面为了方便都使用的hostPath来做挂载,实际上可以改成pv卷,修改时登陆容器即可

gitlab环境准备完毕♪(^∇^*)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:新常态下房地产企业的网络营销策略研究!(房地产网络营销的发展和创新)
下一篇:STL之string学习
相关文章

 发表评论

暂时没有评论,来抢沙发吧~