当前位置:   article > 正文

devops学习(一) 搭建gitlab代码仓库_volumemounts: - name: gitlab-log mountpath: /var/l

volumemounts: - name: gitlab-log mountpath: /var/log/gitlab subpath: mysql-n

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

一、devops流程图

 devops过程说明

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

二、如何实现devops流程

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

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

三、部署gitlab代码仓库 

0、环境说明

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

1、创建devops命名空间

kubectl create ns devops

2、添加固定节点标签

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

3、创建devops安装目录

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

 vi gitlab-dev.yaml

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: gitlab-ds
  5. namespace: devops
  6. spec:
  7. selector:
  8. matchLabels:
  9. app: my-gitlab
  10. template:
  11. metadata:
  12. labels:
  13. app: my-gitlab
  14. spec:
  15. nodeSelector:
  16. app: jenkins
  17. volumes:
  18. - name: gitlab-config
  19. hostPath:
  20. path: /apps/devops_setup/data/gitlab/config
  21. type: DirectoryOrCreate
  22. - name: gitlab-logs
  23. hostPath:
  24. path: /apps/devops_setup/data/gitlab/logs
  25. type: DirectoryOrCreate
  26. - name: gitlab-data
  27. hostPath:
  28. path: /apps/devops_setup/data/gitlab/data
  29. type: DirectoryOrCreate
  30. containers:
  31. - name: gitlab
  32. image: gitlab/gitlab-ce:latest
  33. ports:
  34. - name: http
  35. containerPort: 80
  36. volumeMounts:
  37. - name: gitlab-config
  38. mountPath: /etc/gitlab
  39. - name: gitlab-logs
  40. mountPath: /var/log/gitlab
  41. - name: gitlab-data
  42. mountPath: /var/opt/gitlab
  43. ---
  44. apiVersion: v1
  45. kind: Service
  46. metadata:
  47. name: gitlab-svc
  48. namespace: devops
  49. spec:
  50. ports:
  51. - port: 80
  52. targetPort: http
  53. nodePort: 30001
  54. # 拥有此标签的pod都属于该服务
  55. selector:
  56. app: my-gitlab
  57. # 默认ClusterIp 改为NodePort 暴露外部端口
  58. type: NodePort

部署

kubectl apply -f gitlab-dev.yaml

 查看pod状态

kubectl -n devops get pod

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

http://101.43.4.210:30001/users/sign_in

 等一会~

4、查看密码

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

返回

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

 5、登陆gitlab

  1. #默认登陆用户
  2. root
  3. #获取的密码
  4. eMe0oq4PQqGGEA4Y0UUbamE4hPyvSyY53Lm1tnnxMoc=

 6、修改默认密码

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

7、新建项目

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

 

 新建项目发现克隆项目的地址很奇怪,他这里实际上是pod的名称

http://gitlab-ds-7dcb446f4c-b8kqd/root/mytest.git
git@gitlab-ds-7dcb446f4c-b8kqd:root/mytest.git

我们无法通过这样的地址去克隆关联项目,所以要做一些修改

 

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

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

 vi gitlab.rb

  1. 33 external_url 'http://101.43.4.210:30001' //修改
  2. 66 gitlab_rails['gitlab_ssh_host'] = '101.43.4.210' //修改

说明

  1. 这里说一下为什么要设置成30001端口
  2. 30001是我们nodePort模式对外暴露gitlab服务的端口
  3. 用户通过链接外部暴露的30001拉取代码
  4. (git clone http://101.43.4.210:30001/root/mytest)
  5. 但是我们如果在gitlab中没有配置端口,则会使用默认的80端口
  6. 在拉取的时候就发现变成了,如下模式
  7. (git clone http://101.43.4.210/root/mytest)
  8. 我们宿主机的80端口并没有提供服务,所以必然拉取失败
  9. 这里我们声明gitlab的端口是30001,那么容器内部的端口也会变成30001
  10. 我们需要修改一下gitlab的yaml文件,将内部暴露的端口修改为30001才可以使用

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

 9、重载gitlab配置

  1. //登陆pod
  2. kubectl -n devops exec -it gitlab-ds-7dcb446f4c-b8kqd -- bash
  3. //重载配置并重启
  4. gitlab-ctl reconfigure && gitlab-ctl restart

上面有说,我们这里改完配置重启后,容器内部提供服务的端口就变成30001

此时我们外部暴露的30001端口就无法访问了,要再修改一下gitlab的yaml文件

cd /apps/devops_setup

vi gitlab-dev.yaml

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: gitlab-ds
  5. namespace: devops
  6. spec:
  7. selector:
  8. matchLabels:
  9. app: my-gitlab
  10. template:
  11. metadata:
  12. labels:
  13. app: my-gitlab
  14. spec:
  15. nodeSelector:
  16. app: jenkins
  17. volumes:
  18. - name: gitlab-config
  19. hostPath:
  20. path: /apps/devops_setup/data/gitlab/config
  21. type: DirectoryOrCreate
  22. - name: gitlab-logs
  23. hostPath:
  24. path: /apps/devops_setup/data/gitlab/logs
  25. type: DirectoryOrCreate
  26. - name: gitlab-data
  27. hostPath:
  28. path: /apps/devops_setup/data/gitlab/data
  29. type: DirectoryOrCreate
  30. containers:
  31. - name: gitlab
  32. image: gitlab/gitlab-ce:latest
  33. ports:
  34. - name: http
  35. containerPort: 30001 #修改这里
  36. volumeMounts:
  37. - name: gitlab-config
  38. mountPath: /etc/gitlab
  39. - name: gitlab-logs
  40. mountPath: /var/log/gitlab
  41. - name: gitlab-data
  42. mountPath: /var/opt/gitlab
  43. ---
  44. apiVersion: v1
  45. kind: Service
  46. metadata:
  47. name: gitlab-svc
  48. namespace: devops
  49. spec:
  50. ports:
  51. - port: 30001 #修改这里
  52. targetPort: http
  53. nodePort: 30001
  54. selector:
  55. app: my-gitlab
  56. type: NodePort

更新

kubectl apply -f gitlab-dev.yaml

9、访问gitlab

10、测试克隆项目

  1. cd /apps/devops_setup/
  2. cd mytest/
  3. touch 11
  4. git add .
  5. git commit -m "test"
  6. git config --global credential.helper store
  7. git push
  8. #输入密码root 12345678qq

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

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

vi ~/.gitconfig

 

说明

因为我这里用的云主机只有一台,后续不同的主机就以不同的标签进行识别

上面为了方便都使用的hostPath来做挂载,实际上可以改成pv卷,修改时登陆容器即可

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/88081
推荐阅读
相关标签
  

闽ICP备14008679号