持续集成概念
持续集成Continuous Integration
持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并进程自动化测试
持续交付Continuous Delivery
持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境
持续部署Continuous Deployment
在持续交付的基础上,把部署到生产环境的过程自动化,持续部署和持续交付的区别就是最终部署到生产环境是自动化的
环境准备
k8s集群环境,三台服务器,IP分别为:192.168.1.70(master)、50(node01)、40(node02)
Jenkins+GitLab部署在一台Docker服务器上(192.168.1.30),主要用于向仓库上传私有镜像
环境一共4台服务器,全部指向一个私有仓库,共享Docker镜像
实验所用到的软件都可以在网盘下载: 下载地址
提取码:trv8
验证k8s集群没有问题
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 64d v1.15.0
node01 Ready <none> 64d v1.15.0
node02 Ready <none> 64d v1.15.0
首先我们需要做一个registry私有仓库,可以选择任意一台服务器都可以,这里我们选择kubernetes-master作为registry私有仓库
Harbor也是可以的
[root@master ~]# docker run -d --restart=always -p 5000:5000 registry:2
[root@master ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.70:5000
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
#将nginx镜像上传到私有仓库
[root@master ~]# docker pull nginx
[root@master ~]# docker tag nginx:latest 192.168.1.70:5000/nginx:v1
[root@master ~]# docker push 192.168.1.70:5000/nginx:v1
node01、node02加入私有仓库,并拉去镜像
#注意实在那台机器上操作
[root@master ~]# scp /usr/lib/systemd/system/docker.service node01:/usr/lib/systemd/system/docker.service
[root@master ~]# scp /usr/lib/systemd/system/docker.service node02:/usr/lib/systemd/system
[root@node01 ~]# systemctl daemon-reload
[root@node01 ~]# systemctl restart docker
[root@node02 ~]# systemctl daemon-reload
[root@node02 ~]# systemctl restart docker
[root@node01 ~]# docker pull 192.168.1.70:5000/nginx:v1
[root@node02 ~]# docker pull 192.168.1.70:5000/nginx:v1
建立yaml配置文件让k8s自己控制容器集群,用来模拟我们部署的服务
[root@master ~]# vim nginx.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: 192.168.1.70:5000/nginx:v1
imagePullPolicy: Always
ports:
- containerPort: 80
[root@master ~]# kubectl apply -f nginx.yaml
deployment.extensions/nginx created
[root@master ~]# kubectl get deployments.
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 61s
[root@master ~

本文详细介绍了持续集成、持续交付和持续部署的概念,通过具体步骤展示了如何在k8s集群环境中利用Jenkins和GitLab实现自动化构建、测试及部署流程,涵盖了私有仓库搭建、服务配置、插件安装及webhook设置等关键环节。
最低0.47元/天 解锁文章
1588

被折叠的 条评论
为什么被折叠?



