国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【業(yè)務(wù)功能115】微服務(wù)-springcloud-springboot-Kubernetes-k8s集群-Kubesphere實現(xiàn)DevOps流水線-CI/CD-SonarQube- Jenkins

這篇具有很好參考價值的文章主要介紹了【業(yè)務(wù)功能115】微服務(wù)-springcloud-springboot-Kubernetes-k8s集群-Kubesphere實現(xiàn)DevOps流水線-CI/CD-SonarQube- Jenkins。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基于Kubesphere實現(xiàn)DevOps

一、DevOps介紹

1.1 項目開發(fā)需要考慮的維度

  • dev 怎么開發(fā)

  • ops 怎么運維

參考項目鏈接:https://github.com/kubesphere/devops-maven-sample

1.2 DevOps是什么

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

二、CI/CD介紹

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

2.1 持續(xù)集成(Continuous Integration)

持續(xù)集成是指軟件個人的部分向軟件整體部分交付,頻繁進行集成以便更快地發(fā)現(xiàn)其中錯誤。

CI需要具備這些:

  • 全面的自動化測試

這是實踐持續(xù)集成&持續(xù)部署的基礎(chǔ),同時,選擇合適的自動化測試工具也很重要

  • 靈活的基礎(chǔ)設(shè)施

容器、虛擬機的存在讓開發(fā)人員和QA人員不必再大費周張去做IT基礎(chǔ)設(shè)施環(huán)境的準備

  • 版本控制工具

如:Git、SNV、Gitlab等

  • 自動化的構(gòu)建和軟件發(fā)布流程工具

如:Jenkins Gitlab Tekton等

  • 反饋機制

如果構(gòu)建/測試失敗,可以快速地反饋到相關(guān)負責(zé)人,以盡快速度解決問題,實現(xiàn)軟件開發(fā)穩(wěn)定版本推出。

2.2 持續(xù)交付(Continuous Delivery )

持續(xù)交付在持續(xù)集成的基礎(chǔ)上,將集成后的代碼部署到更貼近真實運行環(huán)境的類生產(chǎn)環(huán)境中,持續(xù)交付優(yōu)先于整個產(chǎn)品生命周期的軟件部署,建立在高水平自動化持續(xù)集成之上。

  • 快速發(fā)布

能夠應(yīng)對業(yè)務(wù)需求,并更快地實現(xiàn)軟件價值,實現(xiàn)編碼、測試、上線、交付的頻繁迭代周期縮短,同時獲得迅速反饋

  • 高質(zhì)量軟件發(fā)布標準

整個交付過程標準化、可重復(fù)、可靠

  • 整個交付過程進度可視化

方便團隊成員了解項目成熟度

  • 更先進的團隊協(xié)作方式

從需求分析、產(chǎn)品的用戶體驗到交互設(shè)計、開發(fā)、測試、運維等角色密切協(xié)作,相比于傳統(tǒng)的的開發(fā)模式,減少浪費

2.3 持續(xù)部署(Continuous Deployment)

持續(xù)部署是指當(dāng)交付的代碼通過評審之后,自動部署到生產(chǎn)環(huán)境中。

持續(xù)部署是持續(xù)交付的最高階段。這就意味著,所有通過了一系列的自動化測試的發(fā)動都將自動部署到生產(chǎn)環(huán)境。它也可以被稱為Continuous Release

持續(xù)部署主要好處是,可以相對獨立地部署新的功能,并能快速地收集真實用戶的反饋。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

三、KubeSphere DevOps憑證管理

3.1 憑證介紹

憑證是包含敏感信息的對象,例如用戶名和密碼、SSH 密鑰和令牌 (Token)。當(dāng) KubeSphere DevOps 流水線運行時,會與外部環(huán)境中的對象進行交互,以執(zhí)行一系列任務(wù),包括拉取代碼、推送和拉取鏡像以及運行腳本等。此過程中需要提供相應(yīng)的憑證,而這些憑證不會明文出現(xiàn)在流水線中。

具有必要權(quán)限的 DevOps 項目用戶可以為 Jenkins 流水線配置憑證。用戶在 DevOps 項目中添加或配置這些憑證后,便可以在 DevOps 項目中使用這些憑證與第三方應(yīng)用程序進行交互。

目前,您可以在 DevOps 項目中創(chuàng)建以下 4 種類型的憑證:

  • 用戶名和密碼:用戶名和密碼,可以作為單獨的組件處理,或者作為用冒號分隔的字符串(格式為 username:password)處理,例如 GitHub、GitLab 和 Docker Hub 的帳戶。
  • SSH 密鑰:帶有私鑰的用戶名,SSH 公鑰/私鑰對。
  • 訪問令牌:具有訪問權(quán)限的令牌。
  • kubeconfig:用于配置跨集群認證。如果選擇此類型,將自動獲取當(dāng)前 Kubernetes 集群的 kubeconfig 文件內(nèi)容,并自動填充在當(dāng)前頁面對話框中。

本教程演示如何在 DevOps 項目中創(chuàng)建和管理憑證。有關(guān)如何使用憑證的更多信息,請參見使用 Jenkinsfile 創(chuàng)建流水線和使用圖形編輯面板創(chuàng)建流水線。

3.2 準備工作

  • 您已啟用 KubeSphere DevOps 系統(tǒng)。
  • 您需要有一個企業(yè)空間、一個 DevOps 項目和一個用戶 (project-regular),并已邀請此帳戶至 DevOps 項目中且授予 operator 角色。如果尚未準備好,請參見創(chuàng)建企業(yè)空間、項目、用戶和角色。

3.3 創(chuàng)建憑證

project-regular 身份登錄 KubeSphere 控制臺。進入您的 DevOps 項目,選擇憑證,然后點擊創(chuàng)建。

3.3.1 創(chuàng)建 Docker Hub 憑證

  • 首先需要在Docker Hub官網(wǎng)注冊賬號,需要關(guān)聯(lián)dockerhub上傳拉做鏡像取等
  1. 在彈出的對話框中輸入以下信息。
    • 名稱:設(shè)置可以在流水線中使用的 ID,例如 dockerhub-id
    • 類型:選擇用戶名和密碼。
    • 用戶名:您的 Docker Hub 帳戶(即 Docker ID)。
    • 密碼/令牌:您的 Docker Hub 密碼。
    • 描述信息:憑證的簡介。
  2. 完成操作后點擊確定
    kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

3.3.2 創(chuàng)建 GitHub 憑證

  • 首先要注冊github賬號

同樣地,按照上述相同步驟創(chuàng)建 GitHub 憑證。設(shè)置不同的名稱(例如 github-id),類型同樣選擇用戶名和密碼。分別在用戶名密碼/令牌中輸入您的 GitHub 用戶名和令牌。

  • 自 2021 年 8 月起,GitHub 要求使用基于令牌的身份驗證,此處需要輸入令牌,而非 GitHub 密碼。關(guān)于如如何生成令牌,請參閱創(chuàng)建個人訪問令牌。
  • 如果您的帳戶或密碼中包含任何特殊字符,例如 @$,可能會因為無法識別而在流水線運行時導(dǎo)致錯誤。在這種情況下,您需要先在一些第三方網(wǎng)站(例如 urlencoder)上對帳戶或密碼進行編碼,然后將輸出結(jié)果復(fù)制粘貼作為您的憑證信息。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

3.3.3 創(chuàng)建 kubeconfig 憑證

同樣地,按照上述相同步驟創(chuàng)建 kubeconfig 憑證。設(shè)置不同的憑證 ID(例如 demo-kubeconfig)并選擇 kubeconfig。

用于配置集群訪問的文件稱為 kubeconfig 文件。這是引用配置文件的通用方法。有關(guān)更多信息,請參見 Kubernetes 官方文檔。您可以創(chuàng)建 kubeconfig 憑證來訪問當(dāng)前 Kubernetes 集群,該憑證將在流水線中使用。您不需要更改該文件,因為 KubeSphere 會自動使用當(dāng)前 Kubernetes 集群的 kubeconfig 填充該字段。訪問其他集群時,您可能需要更改 kubeconfig。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

3.3.4 查看和管理憑證

  1. 憑證創(chuàng)建后,會在列表中顯示。
  2. 點擊任意一個憑證,進入其詳情頁面,您可以查看帳戶詳情和與此憑證相關(guān)的所有事件。
  3. 您也可以在此頁面上編輯或刪除憑證。請注意,編輯憑證時,KubeSphere 不會顯示現(xiàn)有用戶名或密碼信息。如果輸入新的用戶名和密碼,則前一個將被覆蓋。

四、將SonarQube集成到流水線

SonarQube 是一種主流的代碼質(zhì)量持續(xù)檢測工具。您可以將其用于代碼庫的靜態(tài)和動態(tài)分析。SonarQube 集成到 KubeSphere 流水線后,如果在運行的流水線中檢測到問題,您可以直接在儀表板上查看常見代碼問題,例如 Bug 和漏洞。

4.1 準備工作

您需要啟用 KubeSphere DevOps 系統(tǒng)。

4.2 安裝 SonarQube 服務(wù)器

要將 SonarQube 集成到您的流水線,必須先安裝 SonarQube 服務(wù)器。

1.請先安裝 Helm,以便后續(xù)使用該工具安裝 SonarQube。例如,運行以下命令安裝 Helm 3:

  • master節(jié)點運行
# curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

2.查看helm版本

# helm version

version.BuildInfo{Version:"v3.10.1", GitCommit:"9f88ccb6aee40b9a0535fcc7efea6055e1ef72c9", GitTreeState:"clean", GoVersion:"go1.18.7"}

3.執(zhí)行以下命令安裝 SonarQube 服務(wù)器

# helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n kubesphere-devops-system  --create-namespace --set service.type=NodePort
  • 查看服務(wù)是否運行起來了:# kubectl get pods -n kubesphere-devops-system

4.您會獲取以下提示內(nèi)容

[root@k8s-master01 ~]# kubectl get svc -n kubesphere-devops-system
NAME                            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
devops-apiserver                ClusterIP   10.96.2.56    <none>        9090/TCP         5d16h
devops-jenkins                  NodePort    10.96.1.111   <none>        80:30180/TCP     5d16h
devops-jenkins-agent            ClusterIP   10.96.2.94    <none>        50000/TCP        5d16h
s2ioperator-metrics-service     ClusterIP   10.96.2.41    <none>        8080/TCP         5d16h
s2ioperator-trigger-service     ClusterIP   10.96.2.217   <none>        8081/TCP         5d16h
sonarqube-postgresql            ClusterIP   10.96.2.172   <none>        5432/TCP         3m38s
sonarqube-postgresql-headless   ClusterIP   None          <none>        5432/TCP         3m38s
sonarqube-sonarqube             NodePort    10.96.0.120   <none>        9000:30058/TCP   3m38s
webhook-server-service          ClusterIP   10.96.3.74    <none>        443/TCP          5d16h

4.3 獲取 SonarQube 控制臺地址

1.執(zhí)行以下命令以獲取 SonarQube NodePort

# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
# echo http://$NODE_IP:$NODE_PORT

2.您可以獲得如下輸出(本示例中端口號為 30058,可能與您的端口號不同)

http://192.168.10.141:30058

4.4 配置 SonarQube 服務(wù)器

4.4.1 訪問 SonarQube 控制臺

1.執(zhí)行以下命令查看 SonarQube 的狀態(tài)。請注意,只有在 SonarQube 啟動并運行后才能訪問 SonarQube 控制臺。

[root@k8s-master01 ~]# kubectl get pods -n kubesphere-devops-system
NAME                                  READY   STATUS      RESTARTS         AGE
sonarqube-postgresql-0                1/1     Running     0                37m
sonarqube-sonarqube-df8d79d5c-hxxbx   1/1     Running     10 (2m34s ago)   37m

2.在瀏覽器中訪問 SonarQube 控制臺 http://<Node IP>:<NodePort>。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

3.點擊右上角的 Log in,然后使用默認帳戶 admin/admin 登錄。

取決于您的實例的部署位置,您可能需要設(shè)置必要的端口轉(zhuǎn)發(fā)規(guī)則,并在您的安全組中放行該端口,以便訪問 SonarQube。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

4.4.2 創(chuàng)建 SonarQube 管理員令牌 (Token)

1.點擊右上角字母 A,然后從菜單中選擇 My Account 以轉(zhuǎn)到 Profile 頁面。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

2.點擊 Security 并輸入令牌名稱,例如 kubesphere

3.點擊 Generate 并復(fù)制此令牌。
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

c3ee79a4c4b25bd03867db735dc439e3bb726426

如提示所示,您無法再次查看此令牌,因此請確保復(fù)制成功。

4.4.3 創(chuàng)建 Webhook 服務(wù)器

1.執(zhí)行以下命令獲取 SonarQube Webhook 的地址

# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
# echo http://$NODE_IP:$NODE_PORT/sonarqube-webhook/

2.輸出結(jié)果

http://192.168.10.141:30180/sonarqube-webhook/

3.依次點擊 Administration、ConfigurationWebhooks 創(chuàng)建一個 Webhook

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

4.點擊 Create

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

5.在彈出的對話框中輸入 NameJenkins Console URL(即 SonarQube Webhook 地址)。點擊 Create 完成操作。
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

4.4.4 將 SonarQube 配置添加到 ks-installer

1.執(zhí)行以下命令編輯 ks-installer

# kubectl edit cc -n kubesphere-system ks-installer

2.搜尋至 devops。添加字段 sonarqube 并在其下方指定 externalSonarUrlexternalSonarToken。

devops:
    enabled: true
    jenkinsJavaOpts_MaxRAM: 2g
    jenkinsJavaOpts_Xms: 512m
    jenkinsJavaOpts_Xmx: 512m
    jenkinsMemoryLim: 2Gi
    jenkinsMemoryReq: 1500Mi
    jenkinsVolumeSize: 8Gi
    sonarqube:
      externalSonarUrl: http://192.168.10.141:30058
      externalSonarToken: c3ee79a4c4b25bd03867db735dc439e3bb726426

3.完成操作后保存此文件

4.4.5 將 SonarQube 服務(wù)器添加至 Jenkins

1.執(zhí)行以下命令獲取 Jenkins 的地址

# export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
# export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
# echo http://$NODE_IP:$NODE_PORT

2.可以獲得以下輸出,獲取 Jenkins 的端口號

http://192.168.10.141:30180

3.請使用地址 http://<Node IP>:30180 訪問 Jenkins。安裝 KubeSphere 時,默認情況下也會安裝 Jenkins 儀表板。此外,Jenkins 還配置有 KubeSphere LDAP,這意味著您可以直接使用 KubeSphere 帳戶(例如 admin/P@88w0rd)登錄 Jenkins。有關(guān)配置 Jenkins 的更多信息,請參見 Jenkins 系統(tǒng)設(shè)置。

取決于您的實例的部署位置,您可能需要設(shè)置必要的端口轉(zhuǎn)發(fā)規(guī)則,并在您的安全組中放行端口 30180,以便訪問 Jenkins。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

4.可以前往系統(tǒng)管理下的 Manage Credentials 并點擊 Stores scoped to Jenkins 下的 Jenkins,再點擊全局憑據(jù) (unrestricted),然后點擊左側(cè)導(dǎo)航欄的添加憑據(jù),參考上方第二張截圖用 SonarQube 管理員令牌添加憑證。添加憑證后,從 Server authentication token 旁邊的下拉列表中選擇該憑證。
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

5.點擊左側(cè)導(dǎo)航欄中的系統(tǒng)管理

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

6.向下翻頁找到并點擊系統(tǒng)配置

6.搜尋到SonarQube Server,然后點擊Add SonarQube

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

7.輸入 NameServer URL (http://<Node IP>:<NodePort>)。點擊添加,選擇 Jenkins,然后在彈出的對話框中用 SonarQube 管理員令牌創(chuàng)建憑證(如下方第二張截圖所示)。創(chuàng)建憑證后,從 Server authentication token 旁邊的下拉列表中選擇該憑證。點擊應(yīng)用完成操作。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

4.4.6 將 sonarqubeURL 添加到 KubeSphere 控制臺

您需要指定 sonarqubeURL,以便可以直接從 KubeSphere 控制臺訪問 SonarQube

1.執(zhí)行以下命令

# kubectl edit  cm -n kubesphere-system  ks-console-config

2.搜尋到 data.client.enableKubeConfig,在下方添加 devops 字段并指定 sonarqubeURL

apiVersion: v1
data:
  local_config.yaml: |
    server:
      http:
        hostname: localhost
        port: 8000
        static:
          production:
            /public: server/public
            /assets: dist/assets
            /dist: dist
      redis:
        port: 6379
        host: redis.kubesphere-system.svc
      redisTimeout: 5000
      sessionTimeout: 7200000
    client:
      version:
        kubesphere: v3.1.0
        kubernetes: v1.24.0
        openpitrix: v3.1.0
      enableKubeConfig: true
      devops: 手動添加
        sonarqubeURL: http://192.168.10.141:30058
    defaultClusterName: default

3.保存該文件

4.4.7 重啟服務(wù)

# kubectl -n kubesphere-devops-system rollout restart deploy devops-apiserver
# kubectl -n kubesphere-system rollout restart deploy ks-console

4.4.8 為新項目創(chuàng)建 SonarQube Token

需要一個 SonarQube 令牌,以便您的流水線可以在運行時與 SonarQube 通信。

1.在 SonarQube 控制臺上,點擊 Create new project。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

4c5c650e18a80f699d5301773230773ad6e17924

2.創(chuàng)建令牌后,點擊 Continue

3.分別選擇 JavaMaven。

復(fù)制下圖所示綠色框中的序列號,如果要在流水線中使用,則需要在憑證中添加此序列號。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkinskubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

mvn sonar:sonar \
  -Dsonar.projectKey=java-demo \
  -Dsonar.host.url=http://192.168.10.141:30058 \
  -Dsonar.login=4c5c650e18a80f699d5301773230773ad6e17924

五、為 KubeSphere 流水線設(shè)置電子郵件服務(wù)器

內(nèi)置 Jenkins 無法與平臺通知系統(tǒng)共享相同的電子郵件配置。因此,您需要單獨為 KubeSphere DevOps 流水線配置電子郵件服務(wù)器設(shè)置。

5.1 準備工作

  • 您需要啟用 KubeSphere DevOps 系統(tǒng)。
  • 您需要一個具有集群管理權(quán)限的帳戶。例如,您可以直接以 admin 身份登錄控制臺或者創(chuàng)建具有該權(quán)限的新角色并將該角色分配給一個用戶。

5.2 設(shè)置電子郵件服務(wù)器

1.點擊左上角的平臺管理,然后選擇集群管理。

2.如果您已經(jīng)啟用多集群功能并已導(dǎo)入成員集群,那么您可以選擇一個特定集群以查看其節(jié)點。如果尚未啟用該功能,請直接參考下一步。

3.轉(zhuǎn)到應(yīng)用負載下的工作負載,然后從下拉列表中選擇 kubesphere-devops-system 項目。點擊 devops-jenkins 右側(cè)的 kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins 并選擇編輯 YAML 以編輯其 YAML 配置文件。
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

4.向下滾動到下圖所示的需要指定的字段。完成修改后,點擊確定以保存。

devops-jenkins 部署 (Deployment) 中修改電子郵件服務(wù)器后,它會重新啟動。因此,DevOps 系統(tǒng)將在幾分鐘內(nèi)不可用,請在適當(dāng)?shù)臅r候進行此類修改。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

環(huán)境變量名稱 描述信息
EMAIL_SMTP_HOST SMTP 服務(wù)器地址
EMAIL_SMTP_PORT SMTP 服務(wù)器端口(如:25)
EMAIL_FROM_ADDR 電子郵件發(fā)件人地址
EMAIL_FROM_NAME 電子郵件發(fā)件人姓名
EMAIL_FROM_PASS 電子郵件發(fā)件人密碼
EMAIL_USE_SSL 是否啟用 SSL 配置

實際配置:

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

六、使用圖形編輯面板創(chuàng)建流水線

KubeSphere 中的圖形編輯面板包含用于 Jenkins 階段 (Stage) 和步驟 (Step) 的所有必要操作。您可以直接在交互式面板上定義這些階段和步驟,無需創(chuàng)建任何 Jenkinsfile。

本教程演示如何在 KubeSphere 中使用圖形編輯面板創(chuàng)建流水線。KubeSphere 在整個過程中將根據(jù)您在編輯面板上的設(shè)置自動生成 Jenkinsfile,您無需手動創(chuàng)建 Jenkinsfile。待流水線成功運行,它會相應(yīng)地在您的開發(fā)環(huán)境中創(chuàng)建一個部署 (Deployment) 和一個服務(wù) (Service),并將鏡像推送至 Docker Hub。

6.1 準備工作

  • 您需要啟用 KubeSphere DevOps 系統(tǒng)。
  • 您需要有一個 Docker Hub 帳戶。
  • 您需要創(chuàng)建一個企業(yè)空間、一個 DevOps 項目和一個用戶 (project-regular),必須邀請該用戶至 DevOps 項目中并賦予 operator 角色。如果尚未創(chuàng)建,請參見創(chuàng)建企業(yè)空間、項目、用戶和角色。
  • 設(shè)置 CI 專用節(jié)點來運行流水線(可選)。有關(guān)更多信息,請參見為緩存依賴項設(shè)置 CI 節(jié)點。
  • 配置您的電子郵件服務(wù)器用于接收流水線通知(可選)。有關(guān)更多信息,請參見為 KubeSphere 流水線設(shè)置電子郵件服務(wù)器。
  • 配置 SonarQube 將代碼分析納入流水線中(可選)。有關(guān)更多信息,請參見將 SonarQube 集成到流水線。

6.2 流水線概述

本示例流水線包括以下六個階段。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

  • 階段 1:Checkout SCM:從 GitHub 倉庫拉取源代碼。
  • 階段 2:單元測試:待該測試通過后才會進行下一階段。
  • 階段 3:代碼分析:配置 SonarQube 用于靜態(tài)代碼分析。
  • 階段 4:構(gòu)建并推送:構(gòu)建鏡像并附上標簽 snapshot-$BUILD_NUMBER 推送至 Docker Hub,其中 $BUILD_NUMBER 是流水線活動列表中的記錄的序列號。
  • 階段 5:制品:生成一個制品(JAR 文件包)并保存。
  • 階段 6:部署至開發(fā)環(huán)境:在開發(fā)環(huán)境中創(chuàng)建一個部署和一個服務(wù)。該階段需要進行審核,部署成功運行后,會發(fā)送電子郵件通知。

6.3 流水線設(shè)置

6.3.1 創(chuàng)建憑證

1.以 project-regular 身份登錄 KubeSphere 控制臺。轉(zhuǎn)到您的 DevOps 項目,在 DevOps 項目設(shè)置下的憑證頁面創(chuàng)建以下憑證。有關(guān)如何創(chuàng)建憑證的更多信息,請參見憑證管理。

如果您的帳戶或密碼中有任何特殊字符,例如 @$,可能會因為無法識別而在流水線運行時導(dǎo)致錯誤。在這種情況下,您需要先在一些第三方網(wǎng)站(例如 urlencoder)上對帳戶或密碼進行編碼,然后將輸出結(jié)果復(fù)制粘貼作為您的憑證信息。

憑證 ID 類型 用途
dockerhub-id 用戶名和密碼 Docker Hub
demo-kubeconfig kubeconfig Kubernetes

2.您還需要為 SonarQube 創(chuàng)建一個憑證 ID (sonar-token),用于上述的階段 3(代碼分析)。請參閱為新項目創(chuàng)建 SonarQube 令牌 (Token),在訪問令牌類型的憑證的令牌字段中輸入 SonarQube 令牌。點擊確定完成操作。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkinskubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

3.你在列表中可以看到4個憑證

6.3.2 創(chuàng)建項目

在本教程中,示例流水線會將 sample 應(yīng)用部署至一個項目。因此,您必須先創(chuàng)建一個項目(例如 kubesphere-sample-dev)。待流水線成功運行,會在該項目中自動創(chuàng)建該應(yīng)用的部署和服務(wù)。

您可以使用 project-admin 帳戶創(chuàng)建項目。此外,該用戶也是 CI/CD 流水線的審核員。請確保將 project-regular 帳戶邀請至該項目并授予 operator 角色。有關(guān)更多信息,請參見創(chuàng)建企業(yè)空間、項目、用戶和角色。

6.3.3 創(chuàng)建流水線

1.請確保以 project-regular 身份登錄 KubeSphere 控制臺,轉(zhuǎn)到您的 DevOps 項目。在流水線頁面點擊創(chuàng)建。

2.在彈出的對話框中,將它命名為 graphical-pipeline,點擊下一步

3.在高級設(shè)置頁面,點擊添加,添加以下三個字符串參數(shù)。這些參數(shù)將用于流水線的 Docker 命令。添加完成后,點擊創(chuàng)建

參數(shù)類型 名稱 描述信息
字符串 REGISTRY docker.io 鏡像倉庫地址。本示例使用 docker.io。
字符串 DOCKERHUB_NAMESPACE Docker ID 您的 Docker Hub 帳戶或該帳戶下的組織名稱。
字符串 APP_NAME devops-sample 應(yīng)用名稱。

有關(guān)其他字段,請直接使用默認值或者參考流水線設(shè)置以自定義配置。

4.創(chuàng)建的流水線會顯示在列表中

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

6.3.4 編輯流水線

  • 點擊流水線進入其詳情頁面。要使用圖形編輯面板,請點擊任務(wù)狀態(tài)選項卡下的編輯流水線。在彈出的對話框中,點擊自定義流水線。該流水線包括六個階段,請按照以下步驟設(shè)置每個階段。
  • 您也可以點擊持續(xù)集成 (CI)持續(xù)集成&交付 (CI/CD) 來使用 KubeSphere 提供的內(nèi)置流水線模板。
    kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

流水線詳情頁面會顯示同步狀態(tài),它是 KubeSphere 和 Jenkins 之間的同步結(jié)果。若同步成功,您會看到成功圖標。您也可以點擊編輯 Jenkinsfile 手動為流水線創(chuàng)建一個 Jenkinsfile。

6.3.4.1 階段 1:拉取源代碼 (Checkout SCM)

圖形編輯面板包括兩個區(qū)域:左側(cè)的畫布和右側(cè)的內(nèi)容。它會根據(jù)您對不同階段和步驟的配置自動生成一個 Jenkinsfile,為開發(fā)者提供更加用戶友好的操作體驗。

流水線包括聲明式流水線和腳本化流水線。目前,您可以使用該面板創(chuàng)建聲明式流水線。有關(guān)流水線語法的更多信息,請參見 Jenkins 文檔。

1.在圖形編輯面板上,從類型下拉列表中選擇 node,從 Label 下拉列表中選擇 maven。
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

agent 用于定義執(zhí)行環(huán)境。agent 指令指定 Jenkins 執(zhí)行流水線的位置和方式。有關(guān)更多信息,請參見選擇 Jenkins Agent。

2.請點擊左側(cè)的加號圖標來添加階段。點擊添加步驟上方的文本框,然后在右側(cè)的名稱字段中為該階段設(shè)置名稱(例如 Checkout SCM)。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

3.點擊添加步驟。在列表中選擇 git,以從 GitHub 拉取示例代碼。在彈出的對話框中,填寫必需的字段。點擊確定完成操作。

  • URL:輸入 GitHub 倉庫地址 https://github.com/kubesphere/devops-maven-sample.git。請注意,這里是示例地址,您需要使用您自己的倉庫地址。
  • 憑證 ID:本教程中無需輸入憑證 ID。
  • 分支:如果您將其留空,則默認為 master 分支。請輸入 sonarqube,或者如果您不需要代碼分析階段,請將其留空。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

https://github.com/nextgomsb/devops-maven-sample.git

后續(xù)執(zhí)行過程中有問題時,可以嘗試修改容器基礎(chǔ)鏡像

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

創(chuàng)建流水線

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

4.第一階段設(shè)置完成

6.3.4.2 階段 2:單元測試

1.點擊階段 1 右側(cè)的加號圖標添加新的階段,以在容器中執(zhí)行單元測試。將它命名為 Unit Test

2.點擊添加步驟,在列表中選擇指定容器。將其命名為 maven 然后點擊確定。

3.點擊添加嵌套步驟,在 maven 容器下添加一個嵌套步驟。在列表中選擇 shell 并在命令行中輸入以下命令。點擊確定保存操作。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

mvn clean package

您可以在圖形編輯面板上指定在給定階段指令中執(zhí)行的一系列步驟。

6.3.4.3 階段 3:代碼分析(可選)

本階段使用 SonarQube 來測試您的代碼。如果您不需要代碼分析,可以跳過該階段。

1.點擊 Unit Test 階段右側(cè)的加號圖標添加一個階段,以在容器中進行 SonarQube 代碼分析。將它命名為 Code Analysis。

2.在 Code Analysis 中,點擊任務(wù)下的添加步驟,選擇指定容器。將其命名為 maven 然后點擊確定。

3.點擊 maven 容器下的添加嵌套步驟,以添加一個嵌套步驟。點擊添加憑證并從憑證 ID 列表中選擇 SonarQube 令牌 (sonar-token)。在文本變量中輸入 SONAR_TOKEN,然后點擊確定。

4.在添加憑證步驟下,點擊添加嵌套步驟為其添加一個嵌套步驟。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

5.點擊 Sonarqube 配置,在彈出的對話框中保持默認名稱 sonar 不變,點擊確定保存操作

6.在 Sonarqube 配置步驟下,點擊添加嵌套步驟為其添加一個嵌套步驟。

7.點擊 shell 并在命令行中輸入以下命令,用于 sonarqube 分支和認證,點擊確定完成操作。

mvn sonar:sonar -Dsonar.login=$SONAR_TOKEN

8.點擊指定容器步驟下的添加嵌套步驟(第三個),選擇超時。在時間中輸入 1 并將單位選擇為小時,點擊確定完成操作。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

9.點擊超時步驟下的添加嵌套步驟,選擇代碼質(zhì)量檢查 (SonarQube)。在彈出的對話框中選擇檢查通過后開始后續(xù)任務(wù)。點擊確定保存操作。

6.3.4.4 階段 4:構(gòu)建并推送鏡像

點擊前一個階段右側(cè)的加號圖標添加一個新的階段,以構(gòu)建并推送鏡像至 Docker Hub。將其命名為 Build and Push

2.點擊任務(wù)下的添加步驟,選擇指定容器,將其命名為 maven,然后點擊確定。

3.點擊 maven 容器下的添加嵌套步驟添加一個嵌套步驟。在列表中選擇 shell 并在彈出窗口中輸入以下命令,點擊確定完成操作。

mvn -Dmaven.test.skip=true clean package

4.再次點擊添加嵌套步驟,選擇 shell。在命令行中輸入以下命令,以根據(jù) Dockerfile 構(gòu)建 Docker 鏡像。點擊確定確認操作。

請勿遺漏命令末尾的點 .

docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER .
  • 這里構(gòu)建的鏡像文件格如果是第一次即為: SNAPSHOT-1,第二次則是SNAPSHOT-2
  • 注意如果構(gòu)建失敗,把可以SNAPSHOT- 改成 v
docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:v$BUILD_NUMBER .

5.再次點擊添加嵌套步驟,選擇添加憑證。在彈出的對話框中填寫以下字段,點擊確定確認操作。

  • 憑證名稱:選擇您創(chuàng)建的 Docker Hub 憑證,例如 dockerhub-id
  • 密碼變量:輸入 DOCKER_PASSWORD。
  • 用戶名變量:輸入 DOCKER_USERNAME。

出于安全原因,帳戶信息在腳本中顯示為變量。

6.在添加憑證步驟中點擊添加嵌套步驟(第一個)。選擇 shell 并在彈出窗口中輸入以下命令,用于登錄 Docker Hub。點擊確定確認操作。

echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin

7.在添加憑證步驟中點擊添加嵌套步驟。選擇 shell 并輸入以下命令,將 SNAPSHOT 鏡像推送至 Docker Hub。點擊確定完成操作。

docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER
  • 注意如果構(gòu)建失敗,把可以SNAPSHOT- 改成 v
docker build -f Dockerfile-online -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:v$BUILD_NUMBER .
6.3.4.5 階段 5:生成制品

1.點擊 Build and Push 階段右側(cè)的加號圖標添加一個新的階段,以保存制品,將其命名為 Artifacts。本示例使用 JAR 文件包。

2.選中 Artifacts 階段,點擊任務(wù)下的添加步驟,選擇保存制品。在彈出的對話框中輸入 target/*.jar,用于設(shè)置 Jenkins 中制品的保存路徑。點擊確定完成操作。

target/*.jar
6.3.4.6 階段 6:部署至開發(fā)環(huán)境

1.點擊 Artifacts 階段右側(cè)的加號圖標添加最后一個階段,將其命名為 Deploy to Dev。該階段用于將資源部署至您的開發(fā)環(huán)境(即 kubesphere-sample-dev 項目)。

2.點擊 Deploy to Dev 階段下的添加步驟,在列表中選擇審核,然后在消息字段中填入 @project-admin,即 project-admin 帳戶在流水線運行到該階段時會進行審核。點擊確定保存操作。

在 KubeSphere 3.2.x 中,能夠運行流水線的帳戶也能夠繼續(xù)或終止該流水線。此外,流水線創(chuàng)建者、擁有該項目管理員角色的用戶或者您指定的帳戶也有權(quán)限繼續(xù)或終止流水線。

3.再次點擊 Deploy to Dev 階段下的添加步驟。在列表中選擇指定容器,將其命名為 maven 然后點擊確定

4.點擊 maven 容器步驟下的添加嵌套步驟。在列表中選擇添加憑證,在彈出的對話框中填寫以下字段,然后點擊確定。

  • 憑證名稱:選擇您創(chuàng)建的 kubeconfig 憑證,例如 demo-kubeconfig。
  • kubeconfig 變量:輸入 KUBECONFIG_CONTENT

5.點擊添加憑證步驟下的添加嵌套步驟。在列表中選擇 shell,在彈出的對話框中輸入以下命令,然后點擊確定。

mkdir ~/.kube
echo "$KUBECONFIG_CONTENT" > ~/.kube/config
envsubst < deploy/dev-ol/devops-sample-svc.yaml | kubectl apply -f -
envsubst < deploy/dev-ol/devops-sample.yaml | kubectl apply -f -
  • 注意:devops-sample.yaml中的鏡像值要與前面配置的一致
spec.container.image: $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:v$BUILD_NUMBER

6.如果您想在流水線成功運行時接收電子郵件通知,請點擊添加步驟,選擇郵件,以添加電子郵件信息。請注意,配置電子郵件服務(wù)器是可選操作,如果您跳過該步驟,依然可以運行流水線。

7.待您完成上述步驟,請在右下角點擊保存。隨后,您可以看到該流水線有完整的工作流,并且每個階段也清晰列示。當(dāng)您用圖形編輯面板定義流水線時,KubeSphere 會自動創(chuàng)建相應(yīng)的 Jenkinsfile。點擊編輯 Jenkinsfile 查看該 Jenkinsfile。

流水線頁面,您可以點擊該流水線右側(cè)的 kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins,然后選擇復(fù)制來創(chuàng)建該流水線的副本。如果您需要同時運行多個不包含多分支的流水線,您可以全部選中這些流水線,然后點擊運行來批量運行它們。

6.4 運行流水線

1.您需要手動運行使用圖形編輯面板創(chuàng)建的流水線。點擊運行,您可以在彈出的對話框中看到步驟 3 中已定義的三個字符串參數(shù)。點擊確定來運行流水線。

2.要查看流水線的狀態(tài),請轉(zhuǎn)到運行記錄選項卡,點擊您想查看的記錄。

3.稍等片刻,流水線如果成功運行,則會在 Deploy to Dev 階段停止。project-admin 作為流水線的審核員,需要進行審批,然后資源才會部署至開發(fā)環(huán)境。

6.5 下載制品

點擊制品選項卡,然后點擊右側(cè)的圖標下載該制品。

6.6 查看代碼分析結(jié)果

代碼檢查頁面,可以查看由 SonarQube 提供的本示例流水線的代碼分析結(jié)果。如果您沒有事先配置 SonarQube,則該部分不可用。有關(guān)更多信息,請參見將 SonarQube 集成到流水線。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

6.7 驗證 Kubernetes 資源

1.如果流水線的每個階段都成功運行,則會自動構(gòu)建一個 Docker 鏡像并推送至您的 Docker Hub 倉庫。最終,流水線將在您事先設(shè)置的項目中自動創(chuàng)建一個部署和一個服務(wù)。

2.前往該項目(本教程中即 kubesphere-sample-dev),請點擊應(yīng)用負載下的工作負載,您可以看到列表中顯示的部署。

3.在服務(wù)頁面,您可以看到示例服務(wù)通過 NodePort 暴露其端口號。要訪問服務(wù),請訪問 <Node IP>:<NodePort>。

訪問服務(wù)前,您可能需要配置端口轉(zhuǎn)發(fā)規(guī)則并在安全組中放行該端口。

4.現(xiàn)在流水線已成功運行,將會推送一個鏡像至 Docker Hub。登錄 Docker Hub 查看結(jié)果。

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

5.該應(yīng)用的名稱為 devops-sample,即 APP_NAME 的值,標簽即 SNAPSHOT-$BUILD_NUMBER 的值。$BUILD_NUMBER運行記錄選項卡列示的記錄的序列號。

6.如果您在最后一個階段設(shè)置了電子郵件服務(wù)器并添加了電子郵件通知的步驟,您還會收到電子郵件消息。

七、配置流水線把項目發(fā)布到生產(chǎn)環(huán)境

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

7.1 創(chuàng)建GitHub tekens

如需創(chuàng)建 GitHub 個人訪問令牌,請轉(zhuǎn)到您 GitHub 帳戶的 Settings,點擊 Developer settings,選擇 Personal access tokens,然后點擊 Generate new token。
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

以project-regular用戶登錄后創(chuàng)建github訪問憑證

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkinskubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

7.2 GitHub創(chuàng)建代碼倉庫

7.3 創(chuàng)建項目

使用project-admin用戶登錄WEB控制器,創(chuàng)建kubesphere-sample-prod項目,并邀請project-regular用戶成為項目成員,并為operator角色。

7.4 為發(fā)布到生產(chǎn)環(huán)境準備TAG_NAME變量

使用project-regular用戶登錄,并編輯graphical-pipeline,添加TAG_NAME,值為v0.0.1, GITHUB_ACCOUNT,值為nextgomsb
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkinskubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins

7.5 階段7: 提交鏡像和代碼至倉庫(push with tag)

7.5.1 添加階段名稱:push with tag,添加條件 -> expression

scriptBlock   return params.TAG_NAME =~ /v.*/

7.5.2 添加步驟-> 指定容器-> maven

7.5.2.1 添加嵌套步驟-> 審核
release image with tag?
@project-admin
7.5.2.2 容器maven中添加步驟 -> 添加憑證
  • 名稱:github-token 變量: GITHUB_TOKEN
7.5.2.3 憑證中添加嵌套步驟->shell->GitHub配置

-分別添加三次

git config --global user.email "nextgo@126.com" 
git config --global user.name "nextgo" 
git tag -a $TAG_NAME -m "$TAG_NAME" 

提前編輯流水線,添加如下變量

  • 流水線右側(cè)點擊編輯 字符串類型: 名稱:GIT_USERNAME 默認值:nextgomsb

  • 憑證中添加嵌套步驟->shell->命令如下 推送代碼到指定的倉庫devops-java-sample.git

git push http://$GIT_USERNAME:$GITHUB_TOKEN@github.com/$GITHUB_ACCOUNT/devops-java-sample.git --tags --ipv4
7.5.2.4 添加DockerHub配置
  • 容器中添加嵌套步驟-> shell tag標記鏡像
    kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
docker tag  $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:v$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME 
  • 容器中添加嵌套步驟-> shell->推送鏡像
docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$TAG_NAME 

7.6 階段8: 發(fā)布到生產(chǎn)環(huán)境(deploy to production)

7.6.1 添加階段名稱:deploy to production,添加條件 -> expression添加條件

scriptBlock   return params.TAG_NAME =~ /v.*/

7.6.2 添加步驟-審核

deploy to production?
@project-admin 

7.6.3 添加步驟

  • 指定容器 maven
7.6.3.1 添加憑證
  • 添加嵌套步驟-> 添加憑證 名稱: demo-kubeconfig 變量:KUBECONFIG_CONTENT
7.6.3.2 添加執(zhí)行步驟
  • 在憑證下 添加嵌套步驟 -> shell
envsubst < deploy/prod-all-in-one/devops-sample.yaml | kubectl apply -f -

7.7 執(zhí)行流水線

? 執(zhí)行流水線前,可以登錄k8s集群master節(jié)點,將前面執(zhí)行開發(fā)環(huán)境流水線的發(fā)布應(yīng)用刪了,避免有太多歷史的應(yīng)用存放在節(jié)點中
? kubectl get all -n kubesphere-sample-dev //查看該開發(fā)環(huán)境所存在的應(yīng)用
? 我們需要將其deployment和service名稱的資源刪除
? kubectl delete deployment ks-sample-dev -n kubesphere-sample-dev
? kubectl delete svc ks-sample-dev -n kubesphere-sample-dev
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins
kubesphere添加devops,Spring cloud,分布式,Spring boot,微服務(wù),spring cloud,spring boot,Kubernetes,devops,CI/CD,jenkins文章來源地址http://www.zghlxwxcb.cn/news/detail-766075.html

到了這里,關(guān)于【業(yè)務(wù)功能115】微服務(wù)-springcloud-springboot-Kubernetes-k8s集群-Kubesphere實現(xiàn)DevOps流水線-CI/CD-SonarQube- Jenkins的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包