搭建自己的GitLab+jenkins並在kubernetes中拉取映象執行(九)

童話述說我的結局 發表於 2022-01-26
Jenkins Kubernetes Git

官網: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上釋出專案流程就完成了