本文介绍下"代码提交自动部署到云原生并实时查看服务的运行状态"运行环境的搭建过程
k8s方式安装gitlab
下载gitlab yaml文件
git clone https://gitee.com/pingfanrenbiji/gitlab
安装postgresql、redis、gitlab
-
镜像下载
docker pull sameersbn/postgresql:10
docker pull sameersbn/redis
docker pull sameersbn/gitlab:11.8.1
-
k8s部署
kubectl apply -f .
![](https://i-blog.csdnimg.cn/blog_migrate/4bca33fefcfcbc0ca3ffd102e4e28d60.png)
gitlab还在启动中
![](https://i-blog.csdnimg.cn/blog_migrate/6606252c3a998bc1f380faeef7e5ab28.png)
查看启动情况
kubectl logs -f gitlab-7cc4bd85ff-459lf -n kube-ops
![](https://i-blog.csdnimg.cn/blog_migrate/a6a55bc2028951b0cfce6aaa452750d8.png)
查看启动情况
![](https://i-blog.csdnimg.cn/blog_migrate/7e724e2f97532dd632380f389c8d2d47.png)
截止目前都启动成功了
gitlab的ingress域名是gitlab.demo.com
暴露的http.nodePort端口是30003
所以可以通过
http://gitlab.demo.com:30003
访问
![](https://i-blog.csdnimg.cn/blog_migrate/6b4c992399726d33c94eb9a8429c5b87.png)
账号:root/admin321
域名配置
sudo vim /etc/hosts
172.16.0.114 gitlab.demo.com
访问url是http://gitlab.demo.com:30003
是否可以直接通过域名访问呢即http://gitlab.demo.com
那么就需要通过nginx做下代理转发
docker run --name=nginx --volume=/opt/docker/nginx03/html:/usr/share/nginx/html --volume=/opt/docker/nginx03/conf/nginx.conf:/etc/nginx/nginx.conf --volume=/opt/docker/nginx03/conf/conf.d:/etc/nginx/conf.d --volume=/opt/docker/nginx03/logs:/var/log/nginx -p 443:443 -p 81:81 -d nginx
![](https://i-blog.csdnimg.cn/blog_migrate/044ef309e18717a28a762bbccb5292e7.png)
mengfaniaodeMBP:nginx03 mengfanxiao$ cat conf/conf.d/gitlab.conf
server{
server_name gitlab.demo.com ;
access_log /var/log/nginx/gitlab.access.log main;
error_log /var/log/nginx/gitlab.error.log notice;
location / {
proxy_pass http://gitlab.demo.com:30003/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
这样就可以通过http://gitlab.demo.com/域名直接访问了
查看gitlab-runner所需的配置信息
![](https://i-blog.csdnimg.cn/blog_migrate/91f36977864d97e9bbd31862065afeb4.png)
-
gitlab地址 http://gitlab.demo.com/ -
token BZncyg6pxxN6ugtKzFnm
二进制方式部署gitlab-runner
官方部署文档
https://docs.gitlab.com/runner/install/osx.html
我是在本地mac环境部署的 其他操作系统请自行选择安装版本
# 下载二进制文件
sudo curl --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64"
# 设置执行权限
sudo chmod +x /usr/local/bin/gitlab-runner
# 启动
gitlab-runner install
gitlab-runner start
查看启动情况
![](https://i-blog.csdnimg.cn/blog_migrate/a0fb2dfd262cdf18acc849f6e2575f9b.png)
在gitlab-runner注册gitlab
gitlab-runner register
![](https://i-blog.csdnimg.cn/blog_migrate/2c6319450b970514beb386a485351ff5.png)
这里需要注意 如果gitlab地址写成http://gitlab.demo.com/
那么就说明 gitlab-runner访问gitlab是通过nginx访问的
这里建议直接访问gitlab不经过nginx即gitlab地址写成
http://gitlab.demo.com:30003/
注册成功之后就可以在gitlab上看到gitlab-runner这个执行器了
![](https://i-blog.csdnimg.cn/blog_migrate/a43d0d94cd544f25e82d0c594d0c9d17.png)
创建新的仓库
比较简单具体就不演示了
这里需要说一点就是
本地代码可以直接上传到gitlab
而不经过nginx
因为nginx对于http请求的限制可能会影响代码的提交
# 在项目跟目录下
git config -e
![](https://i-blog.csdnimg.cn/blog_migrate/d30fe0aac572e27997bfeb6448ba684c.png)
安装docker镜像仓库
docker run --name=registry --volume=/opt/docker/registry:/var/lib/registry -p 5000:5000 -d --restart=always registry
编写gitlab-ci.yaml文件
https://gitee.com/pingfanrenbiji/gitlab/blob/master/.gitlab-ci.yml
配置maven环境变量
![](https://i-blog.csdnimg.cn/blog_migrate/79b653d7f1138e8675e75ec46d2447d2.png)
定义自动化部署的四个阶段
![](https://i-blog.csdnimg.cn/blog_migrate/ad5b33ad0fca7e7387a4ec7aeb26ac1d.png)
-
源码maven编译
![](https://i-blog.csdnimg.cn/blog_migrate/1aa411d58574069987c76cc740e49cd4.png)
通过mvn clean pacakge命令对源码进行编译打包
-
docker镜像生成
![](https://i-blog.csdnimg.cn/blog_migrate/fcdc5d5bbd130027b0ec68eb2117742f.png)
通过docker build 生成docker镜像文件
-
将docker镜像推送到镜像仓库
![](https://i-blog.csdnimg.cn/blog_migrate/2ccb773c244ed5295be69bb27201b3c4.png)
将镜像文件推送到镜像仓库
-
k8s部署
![](https://i-blog.csdnimg.cn/blog_migrate/a09489f1b41c0ee5099569cc1c8294ec.png)
通过k8s部署服务
这里指定的是提交到release分支 会自动触发gitlab-ci部署
![](https://i-blog.csdnimg.cn/blog_migrate/127d43796f0f08c1fe2ae3f2d01b7d4e.png)
一个流程包含4个阶段或4个任务
![](https://i-blog.csdnimg.cn/blog_migrate/b0f9642b6c4265fa7898b1d0c17f823e.png)
安装kuboard
https://gitee.com/pingfanrenbiji/gitlab/blob/master/kuboard-v3.yaml
下载镜像并上传到本地仓库
docker pull eipwork/etcd-host:3.4.16-1
docker pull eipwork/kuboard:v3
docker tag eipwork/etcd-host:3.4.16-1 127.0.0.1:5000/eipwork/etcd-host:3.4.16-1
docker push 127.0.0.1:5000/eipwork/etcd-host:3.4.16-1
docker tag eipwork/kuboard:v3 127.0.0.1:5000/eipwork/kuboard:v3
docker push 127.0.0.1:5000/eipwork/kuboard:v3
启动kuboard
kubectl apply -f kuboard-v3.yaml
查看启动结果
kubectl get pod -n kuboard
![](https://i-blog.csdnimg.cn/blog_migrate/54063c2dfdbc1756c883b1fcfa81f70b.png)
访问kuboard
http://localhost:30080/
admin/Kuboard123
![](https://i-blog.csdnimg.cn/blog_migrate/0d04155cdf3d2452569c7948db3780d1.png)
导入现有的k8s集群
-
查看k8s集群配置
cat ~/.kube/config
-
查看集群所在node的ip
kubectl get node
kubectl describe node docker-desktop|grep InternalIP
![](https://i-blog.csdnimg.cn/blog_migrate/222c51bd625c70c636d33c2c3824c081.png)
-
将上面获取的信息配置到页面中
![](https://i-blog.csdnimg.cn/blog_migrate/b15a5c519b805aac4fb29c3af854ca4d.png)
集群导入成功之后 就可以查看集群内容了
-
选择一个身份进去集群
![](https://i-blog.csdnimg.cn/blog_migrate/b1eb9cbec53fcc0d4036f5d8efee0535.png)
-
选择一个命名空间
![](https://i-blog.csdnimg.cn/blog_migrate/ad5c8ee034dc984c44721c9342623628.png)
-
就可以看到这个命名空间下的集群运行情况了
![](https://i-blog.csdnimg.cn/blog_migrate/47d008a3fbcda02bddb24b1b1ec14bb5.png)
-
可以查看某一个pod的运行日志
![](https://i-blog.csdnimg.cn/blog_migrate/68e1325b06a7563740f8c55c5f739abf.png)
-
以及工作负载情况
![](https://i-blog.csdnimg.cn/blog_migrate/45d610441e6a0504f62d938fbc1c13d3.png)