搭建自己的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上发布项目流程就完成了

 
 
posted @ 2022-01-26 14:13  童话述说我的结局  阅读(323)  评论(0编辑  收藏  举报