首页 > 其他分享 >基于k8s构建持续集成

基于k8s构建持续集成

时间:2023-06-14 11:33:46浏览次数:35  
标签:集成 springcloud gitlab 构建 jenkins master docker k8s root

一、实施准备

登录 OpenStack 平台,使用提供的 CentOS_7.5_x86_64_XD.qcow2 镜像创建两台云主机,并使用提供的软件包部署好双节点 Kubernetes 集群。

项目目标:jenkins的离线安装步骤、gitlab的使用和管理、CICD的配置步骤和方法。

二、案例实施

1、安装Jenkins环境

# 查看k8s集群状态
[root@master jenkins]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
etcd-0               Healthy   {"health":"true","reason":""}   
scheduler            Healthy   ok                              
controller-manager   Healthy   ok  

# 查看k8s集群节点信息
[root@master jenkins]# kubectl get nodes
NAME     STATUS     ROLES           AGE   VERSION
master   Ready      control-plane   9d    v1.25.0
node     NotReady   <none>          9d    v1.25.0

# 创建 Jenkins 目录
[root@master ~]# mkdir -p /root/cicd/jenkins && cd /root/cicd/jenkins

# 上传离线包到master节点 jenkins 目录,然后解压文件
[root@master jenkins]# tar -zxvf CICD_Offline.tar -C /opt/

# 导入镜像
[root@master jenkins]# cd /opt/
[root@master opt]# ls
apache-maven-3.6.3-bin.tar.gz  cni  containerd  jenkins.tar  plugins  repository  springcloud
[root@master opt]# docker load -i jenkins.tar
...略
Loaded image: jenkins/jenkins:2.262-centos
...略
Loaded image: gitlab/gitlab-ce:12.9.2-ce.0
...略
Loaded image: java:8-jre

# 编写jenkins编排文件
[root@master jenkins]# vi docker-compose.yml
version: '3.3'
services:
  jenkins:
    image: 'jenkins/jenkins:2.262-centos'
    volumes:
      - /home/jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /usr/bin/kubectl:/usr/local/bin/kubectl
      - /root/.kube:/root/.kube
    ports:
      - "8080:8080"
    expose:
      - "8080"
      - "50000"
    privileged: true
    user: root
    restart: always
    container_name: jenkins

# 启动jenkins
[root@master jenkins]# docker-compose -f docker-compose.yml up -d
[+] Running 2/2
 ⠿ Network jenkins_default  Created                                                                               0.1s
 ⠿ Container jenkins        Started                                                                               0.6s
[root@master jenkins]# docker-compose up -d
[+] Running 1/0
 ⠿ Container jenkins  Running                                                                                     0.0s
[root@master jenkins]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
jenkins             "/sbin/tini -- /usr/…"   jenkins             running             0.0.0.0:8080->8080/tcp, :::8080->8080/tcp

# 安装插件
[root@master jenkins]# cp -rfv /opt/plugins/* /home/jenkins_home/plugins/
[root@master jenkins]# docker restart jenkins
jenkins

在 web 端通过 http://10.104.43.110:8080 访问 Jenkins
解锁jenkins

根据上面的信息查看密码:

[root@master jenkins]# docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
9dcd074ea5d645618314a5f68085a45e

输入密码并点击“继续”,进入jenkins欢迎页面。
依次点击“系统管理”、“管理用户”按钮进入用户列表界面,如图所示:
用户管理

再点击“新建用户”,输入用户信息:

  • 用户名:springcloud
  • 密码/确认密码:1234
  • 全名:springcloud-guo
  • 电子邮箱:[email protected]

创建用户后,退出admin用户登录,使用新建用户'springcloud'登录Jenkins,依次点击“系统管理”——“系统配置”按钮进入系统配置界面,在 “Resource root URL”处配置 jenkins URL 为:http://10.104.43.110:8080/,然后点击“保存”。

系统配置

2、部署Gitlab

GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。与 Github 类似,GitLab 能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库,团队成员可以利用内置的简单聊天程序(Wall)进行交流。Gitlab 还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

(1)启动gitlab

[root@master cicd]# mkdir gitlab && cd gitlab/
[root@master gitlab]# pwd
/root/cicd/gitlab
# 编写gitlab编排文件
[root@master gitlab]# vi docker-compose.yml
version: '3.3'
services:
  gitlab:
    image: "gitlab/gitlab-ce:12.9.2-ce.0"
    container_name: gitlab
    restart: always
    hostname: '10.104.43.110'
    privileged: true
    environment:
      TZ: 'Asia/Shanghai'
    ports:
      - '81:80'
      - '443:443'
      - '1022:22'
    volumes:
      - /srv/gitlab/config:/etc/gitlab
      - /srv/gitlab/gitlab/logs:/var/log/gitlab
      - /srv/gitlab/gitlab/data:/var/opt/gitlab

# 启动gitlab
[root@master gitlab]# docker-compose up -d
[+] Running 2/2
 ⠿ Network gitlab_default  Created                                                                                0.1s
 ⠿ Container gitlab        Started                                                                                0.6s
[root@master gitlab]# docker-compose ps
NAME                COMMAND             SERVICE             STATUS               PORTS
gitlab              "/assets/wrapper"   gitlab              running (starting)   0.0.0.0:1022->22/tcp, 0.0.0.0:81->80/tcp, 0.0.0.0:443->443/tcp, :::1022->22/tcp, :::81->80/tcp, :::443->443/tcp

启动完成后,在 web 端访问 Gitlab(http://10.104.43.110:81)。
设置 root 用户信息(密码:12345678),并使用 root 用户登录 Gitlab .
Gitlab首页

(2)创建项目

点击 “Create a project”,创建项目 springcloud ,可见等级选择 “public”,如下所示:
创建项目

点击“创建项目”按钮后,进入项目页面。
push 源代码到 gitlab 的 springcloud 项目:

[root@master ~]# cd /opt/springcloud/
[root@master springcloud]# ls
account-service  docker-compose.dev.yml  LICENCE     notification-service  registry
auth-service     docker-compose.yml      mongodb     pom.xml               statistics-service
config           gateway                 monitoring  README.md             yaml
[root@master springcloud]# yum install -y git

[root@master springcloud]# git config --global user.name "administrator"
[root@master springcloud]# git config --global user.email "[email protected]"
[root@master springcloud]# git remote remove origin
[root@master springcloud]# git remote add origin http://10.104.43.110:81/root/springcloud.git
[root@master springcloud]# git add .
[root@master springcloud]# git commit -m "initial commit"
# On branch master
nothing to commit, working directory clean

[root@master springcloud]# git push -u origin master
Username for 'http://10.104.43.110:81': root     《————git用户名
Password for 'http://[email protected]:81':     《————git密码:12345678
Counting objects: 3192, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (1428/1428), done.
Writing objects: 100% (3192/3192), 1.40 MiB | 1.48 MiB/s, done.
Total 3192 (delta 1233), reused 3010 (delta 1207)
remote: Resolving deltas: 100% (1233/1233), done.
To http://10.104.43.110:81/root/springcloud.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

刷新网页(http://10.104.43.110:81/root/springcloud),springcloud项目中文件已经更新了。

3、配置 Jenkins 连接Gitlab

标签:集成,springcloud,gitlab,构建,jenkins,master,docker,k8s,root
From: https://www.cnblogs.com/xiugeng/p/17479720.html

相关文章

  • 面试算法:在整形数组中构建元素之和能整除数组长度的子集
    更详细的讲解和代码调试演示过程,请参看视频如何进入google,算法面试技能全面提升指南假设A是一个整数数组,长度为n,数组中的元素可能是重复的。设计一个算法,找到一系列下标的集合I={i(0),i(1),i(2)….i(n)}.使得(A[i(0)]+A[i(1)]+…A[i(n)])modn=0.例如假定A={711......
  • Bitmovin首席执行官Stefan:开发者正在构建视频产品的未来
    像许多早期创业团队的CEO一样,Stefan也曾彻夜难眠,他与一名大学的同学和老师共同创立了MPEG-DASH标准,并以此为契机创立了Bitmovin——旨在通过易用的API来协助开发者创造更好的视频服务。他看好AI在视频交付过程中各个阶段发挥价值,他也惊叹国内的开发者的聪明才智与勤奋。文/Stefan......
  • APP自动化-ATX集成到代码中
    把atx的框架集成到代码中把ATX-API的脚本复制到已有项目中1#!/usr/bin/envpython2#-*-coding:utf-8-*-3#@Time:2023/6/1310:294#@Author:gezirui5#@File:package_atx_api.py6#@Software:PyCharm7fromrequestsimportget......
  • GO语言集成开发工具环境-JetBrains GoLand 2023
    Go是一种开源编程语言,适用于开发高效、可扩展的软件。由于其高效性和可扩展性,Go已经成为了一种流行的编程语言。为了更好地开发Go应用程序,JetBrains公司开发了一款Go语言集成开发工具环境——GoLand。→→↓↓载GoLand2023mac/win版 GoLand提供了一系列功能和工具,帮助开发......
  • 博睿数据应邀出席第五届双态IT北京用户大会,分享《如何帮助用户构建高级可观测性》
    6月10日,第五届双态IT北京用户大会在北京召开,来自IT行业的各位专家齐聚一堂,分享行业理念、发展趋势、运维方法以及最佳实践。博睿数据应邀出席大会,作《如何帮助用户构建高级可观测性》主题演讲,从云原生带来的挑战和思考、一体化平台以及智能高级可观测性等四方面介绍了博睿数据如何......
  • 开源互联网医院系统源码开发:构建个性化、精准化医疗服务新模式
    时下,许多行业已经跟互联网有了非常深入的结合,今天我们要讲的医疗行业同样不例外。构建个性化、精准化医疗服务的新模式势在必行,而开源互联网医院系统源码开发则为实现这一目标提供了技术支持。一、开源互联网医院系统源码开发开源互联网医院系统源码开发是一种基于开源技术的医疗服......
  • 基于.NET的Web Service技术的分布式异构数据库的集成
    摘要:本文分析了WebService的特点,提出了一种基于Microsoft.NET的WebService技术访问分布异构数据库的体系结构,并采用.NET技术实现了原型系统。在原型系统中,使用WebService将分布于Internet上的不同的数据库系统中的数据集成,向访问数据库的应用程序提供统一的数据操作接口,实现......
  • K8S集群中开启firewalld 防火墙,防火墙策略配置
    在所有节点上执行#确保开启防火墙服务systemctlrestartfirewalld#将集群内所有的节点IP配置到防火墙可信区中firewall-cmd--permanent--zone=trusted--add-source=172.17.185.91firewall-cmd--permanent--zone=trusted--add-source=172.17.185.92firewall-cmd-......
  • 如何使用开源SFU构建RTC云服务
    编者按:本文由百度智能云RTC产品技术负责人李永兴LiveVideoStack线上分享的内容整理而成,从系统架构角度,分析了常见的开源SFU在分布式部署以及高可用、高并发方面的不足,并提出相应的解决方案。大家好,我是来自百度智能云的李永兴,在百度智能云媒体云团队主要负责RTC产品的研发工作。01......
  • rke高可用k8s集群安装和实现手册
    一、环境基础要求软件环境:下表为rke安装k8s集群需要的软件环境软件版本操作系统systemCentos7.9Docker20.10.20k8s1.25.9rke1.4.5DockerComposev2.18.1 主机、ip、角色主机名称ip地址角色master01......