搭建自己的GitLab+jenkins并在kubernetes中拉取镜像运行(九)
官网:https://about.gitlab.com/install/#centos-7;官网说明安装gitlab的机器至少要有4G的内存,因为gitlab比较消耗内存;这个要搭建的朋友要注意
一、安装必要的依赖
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
二、如果想要发送邮件,就跑一下下面的内容
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
三、添加gitlab的仓库地址
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
注意:这个下载仓库可能速度会很慢,此时可以用国内的仓库地址
新建文件 /etc/yum.repos.d/gitlab-ce.repo
内容为
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
四、设置gitlab的域名和安装gitlab
sudo EXTERNAL_URL="https://gitlab.ghy.com" yum install -y gitlab-ee
如果用的是国内仓库地址,则执行以下命令,其实区别就是ee和ce版
sudo EXTERNAL_URL="https://gitlab.ghy.com" yum install -y gitlab-ce
此时要么买一个域名,要么在本地的hosts文件中设置一下
安装gitlab服务器的ip地址 gitlab.ghy.com
假如不想设置域名,可以直接安装 yum install -y gitlab-ee
五、重新configure
如果没有成功,可以运行gitlab-ctl reconfigure
六、查看gitlab运行的情况
gitlab-ctl status可以看到运行gitlab服务所需要的进程
七、访问
浏览器输入gitlab.ghy.com,此时需要修改root账号的密码
八、配置已经安装好的gitlab
vim /etc/gitlab/gitlab.rb
修改完成之后一定要gitlab-ctl reconfigure
九、jenkins的搭建及流水线脚本
jenkins的搭建及各种脚本我在我的jenkins的篇幅中都有写和说明,这里我就不再重复说明了,好像我的jenkins篇幅中没有分享流水线的搭建方式,后面我看下,如果没写我到时候再把流水线发布流程在jenkins篇幅中分享下。
十、Kubernetes拉取镜像运行
通过git+jenkins+docker就可以构建一个镜像,并将镜像推送到镜像仓库中。下面的操作就是基于已经把镜像推送到镜像仓库后的操作
1)编写springboot-demo.yaml文件
在/root/.jenkins/workspace/scripts/目录下创建springboot-demo.yaml
# 以Deployment部署Pod apiVersion: apps/v1 kind: Deployment metadata: name: springboot-demo spec: selector: matchLabels: app: springboot-demo replicas: 1 template: metadata: labels: app: springboot-demo spec: containers: - name: springboot-demo image: ghy/springboot-demo:v1.0 ports: - containerPort: 8080 --- # 创建Pod的Service apiVersion: v1 kind: Service metadata: name: springboot-demo spec: ports: - port: 80 protocol: TCP targetPort: 8080 selector: app: springboot-demo --- # 创建Ingress,定义访问规则 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: springboot-demo spec: rules: - host: springboot.ghy.com http: paths: - path: / backend: serviceName: springboot-demo servicePort: 80
2)编写k8s-deploy-springboot-demo.sh文件
vi /root/.jenkins/workspace/scripts/k8s-deploy-springboot-demo.sh
kubectl delete -f springboot-demo.yaml
kubectl apply -f /root/.jenkins/workspace/scripts/springboot-demo.yaml
echo "k8s deploy success!"
3)编写pipeline;我这里面没详细写,原因是我默认看这文章的朋友有jenkins流水线发布项目基础的朋友看的;在流水线脚本下追加下面一句话
stage('K8S Deploy') {
sh "/root/.jenkins/workspace/scripts/k8s-deploy-springboot-demo.sh"
}
这样一来,全流水线在k8s上发布项目流程就完成了
这短短的一生我们最终都会失去,不妨大胆一点,爱一个人,攀一座山,追一个梦