KubernetsCI/CD持续集成

kuberntes CI/CD

2019-04-18  本文已影响6人  条子在洗澡
k8s版本 1.11.1
系统 CentOS Linux release 7.6.1810 (Core)
k8s_master 192.168.199.130
k8s_node1 192.168.199.131
k8s_node2 192.168.199.132
gitlab 192.168.199.40
jenkins 192.168.199.41
docker registry 192.168.199.42
dev && docker client 192.168.199.43
CI/CD
1.gitlab搭建及使用教程 :https://www.jianshu.com/p/f1a3d7517572
2.jenkins搭建及使用教程:https://www.jianshu.com/p/bf4518df167f
3.所有机器修改docker私有仓库地址及默认下载镜像地址
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://i70c3eqq.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.199.42:5000"]
}

vim /etc/sysconfig/docker
#添加一行:
ADD_REGISTRY='--add-registry 192.168.199.42:5000'

#重启docker服务
systemctl restart docker

4.jenkins 192.168.199.41 配置docker插件.
#安装docker插件
• Jenkins---> 系统管理--->插件管理
• 安装所有和docker相关插件
docker 插件.png
5.配置gitlab和Jenkins联动,编译在jenkins上编译,也可以指定特定的主机
#jenkins 192.168.199.41的设置
系统管理-->系统设置;ip为需要编译的主机ip,这里我在jenkins的主机上编译所以填写192.168.199.41, 填写后点击test connection验证一下
tcp://192.168.199.41:2376

#jenkins 192.168.199.41 设置,便于jenkins 远程连接构建的主机,这里构建的主机为jenkins所在的主机
vim /etc/sysconfig/docker
OPTIONS后增加
-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock

#重启生效
systemctl restart docker

docker build machine .png docker build cloud.png build machine.png
6.Jenkins 192.168.199.41 的设置
#配置jenkins删除权限
vim /etc/sudoers.d/jenkins
jenkins ALL=(root) NOPASSWD:/usr/bin/rm

系统管理-->全局安全设置
关闭防跨站点请求伪造权限;
打开匿名用户具有可读写权限
全局安全设置.png
7.jenkins 192.168.199.41 加入到root组,同时重启jenkins
#在编译过程中,如果出现Got permission denied while trying to connect to the Docker daemon socket

#创建文件夹并修改所属组和用户为jenkins
mkdir /jenkins-test
chown -R jenkins.jenkins  /jenkins-test
#在把jenkins加入到root组,
gpasswd -a jenkins root
#重启jenkins
/etc/init.d/jenkins restart

8.设置jenkins触发器:项目->配置文件,图中为
Build Triggers setting.png
9.设置gitlab联动:

9.1.添加jenkins的触发器url


image.png

9.2.允许被拉取


image.png
10.在k8s上运行一个deployment nginx,并创建服务
kubectl create namespace ns01
kubectl run nginx --image=nginx --port=80 -n ns01
kubectl expose deployment nginx  --type=NodePort -n ns01

11.jenkins 192.168.199.41 安装kubelet
yum install -y kubernetes-client
12.jenkins 配置构建的shell
cd /jenkins-test/
sudo rm -rf *
git clone http://192.168.199.40/root/hellogitlab.git
version=$(date +"%Y.%m.%d.%H.%M.%S")
name=192.168.199.42:5000/test/hellogitlab:$version
docker build -t $name hellogitlab
docker push $name
kubectl -s="https://192.168.199.130:6443" --insecure-skip-tls-verify=true --username="tom" --password="redhat" set image deployment/nginx nginx="$name" -n ns01

#测试一下jenkins是否能操作k8s
#kubectl -s="https://192.168.199.130:6443" --insecure-skip-tls-verify=true --username="tom" --password="redhat" get pods -n ns01

13. k8s master上配置容器运行用户权
#临时配置权限
kubectl create clusterrolebinding system:anonymous   --clusterrole=cluster-admin   --user=system:anonymous

#为tom设置权限
kubectl create clusterrolebinding myclusterbind1 --clusterrole=cluster-admin --user=tom

14. docker client :192.168.199.43下载项目hellogitlab
git clone http://192.168.199.40/root/hellogitlab.git

######项目中添加Dockerfile和代码
vim Dockerfile

FROM docker.io/nginx
MAINTAINER taotao
ADD index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

vim index.html
hello gitlab by taotao. happy to successful

15. 提交代码,自动构建
git add .
git commit -m "test"
git push

16.自动化构建部署成功,上个图
来之不易.png
image.png
上一篇下一篇

猜你喜欢

热点阅读