rancher的使用


一 CICD的意思

1 持續集成(CI)

持續集成指在和向遠程倉庫 push 代碼后,在這次提交合並入主分支前進行一系列測試,構建等流程。假設現在有個應用的代碼存儲在 gitlab 上,每天開發者都 push 很多次提交,針對每次 push,你可以創建一系列腳本進行自動測試,降低往應用里引入錯誤的概率。這就是持續集成,它可應用在包括開發分支在內的多個分支上。

2 持續交付(CD)

持續交付的英文全稱是:Continuous delivery,縮寫也是CD,它是一種軟件工程手法。

它可以讓軟件產品的產出過程在一個短周期內完成,以保證軟件可以穩定、持續的保持在隨時可以釋出的狀況。它的目標在於讓軟件的建置、測試與釋出變得更快以及更頻繁。這種方式可以減少軟件開發的成本與時間,減少風險。

3 持續部署(CD)

持續部署在持續集成的基礎上更進一步,指將推送指倉庫默認分支的部署至產品環境。如果這部分需要手動觸發,這就是一個持續交付(Continuous Delivery)環節。

二 常用的CICD軟件對比

所以這次主要介紹rancher的使用,它的官網文檔為https://rancher2.docs.rancher.cn/,詳情請查看官方文檔

三 rancher的安裝和使用

1 安裝(這里我用的是單節點容器安裝)


docker run -d --restart=unless-stopped \
    -p 80:80 -p 443:443 \
    rancher/rancher:latest

單節點安裝很方便。然后等待一會,可以去瀏覽器訪問即可。如下圖:需要自己設置一下密碼

2 導入k8s集群

點擊web頁面導入集群,然后出現兩行命令(都是自動生成的,只需要去master節點執行一下即可)

在主節點上面執行,綁定一個用戶 --user 后面的用戶,去你.kube/cofig里面查看
kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user kubernetes-admin

然后再在主節點運行下面命令


curl --insecure -sfL https://192.168.0.211/v3/import/7kgj6rwfg88c7pttkzp7w7ztdsf77wcfwgtr84sh6dw482zr58lm5s.yaml | kubectl apply -f -

然后等待一會,集群就導入成功了

3 設置流水線

3.1 前提

設置流水線之前,需要安裝gitlab代碼倉庫和harbor鏡像倉庫,這里我的gitlab是用容器安裝的,harbor倉庫是用的官方的倉庫,自己注冊一個就行

安裝gitlab,可以先下載鏡像,在運行,然后更改一下gitlab配置文件里面的host

docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

3.2 rancher設置

認證harbor鏡像倉庫:


然后添加harbor倉庫

gitlab生成需要的ID和Key

認證gitlab代碼倉庫:


然后就可以自動同步代碼,設置流水線了

第一步克隆是默認的(是認證倉庫的時候自動生成的),不能更改,我這里是一個java項目,然后打包

然后構建鏡像,需要提交認證鏡像倉庫地址

最后發布

deploy.yml文件內容如下:(這個文件也要放到gitlab倉庫里面)

---
apiVersion: extensions/v1beta1 
kind: Deployment
metadata:
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: java-demo
  template:
    metadata:
      labels:
        app: java-demo 
    spec:
      containers:
      - name: tomcat 
        image: huningfei/rancher:docker_tag
        ports:
        - containerPort: 8080
          name: web
        livenessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 5
          failureThreshold: 12
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 5
          failureThreshold: 12


---
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  type: NodePort
  selector:
    app: java-demo 
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30002

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: web 
spec:
  rules:
  - host: www.hu.com
    http:
      paths:
      - path: /
        backend:
          serviceName: web 
          servicePort: 80

最后發布完成之后,可以去資源---工作負載里面查看
也可以通過命令查看
查看pod

查看svc

最終去瀏覽器訪問www.hu.com

4 用rancher部署pod

找到工作負載

創建成功之后顯示

然后就可以利用nodeport端口去瀏覽器訪問了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM