KubeSphere使用DevOps功能

DevOps & KubeSphere

1 DevOps

1.1 概念

DevOps是Development和Operations兩個詞的組合。
DevOps是一組過程蔓纠、方法與系統(tǒng)的統(tǒng)稱辑畦,用于促進(jìn)開發(fā)、技術(shù)運(yùn)營和質(zhì)量保障(QA)部門之間的溝通腿倚、協(xié)作與整合纯出。
敏捷管理的流程是“設(shè)計--開發(fā)-測試-開發(fā)-測試...--部署”
而DevOps的流程是“設(shè)計--開發(fā)-測試-部署-開發(fā)-測試-部署...”,就是CI(Continuous Integration)/CD(Continuous Deployment)的一個過程

2 DevOps與容器技術(shù)

容器技術(shù)敷燎,微服務(wù)為DevOps提供了很好的前提條件暂筝,可以把大的項(xiàng)目分成多個劃分為多個模塊獨(dú)立地進(jìn)行開發(fā)測試,更迭硬贯,而容器技術(shù)可以把不同模塊之間進(jìn)行隔離焕襟,不會互相影響

3 KubeSphere

3.1 概念

4 KubeSphere部署DevOps

4.1 開啟DevOps功能

不同方法開啟DevOps功能

4.2 準(zhǔn)備工作

4.2.1 創(chuàng)建企業(yè)空間、項(xiàng)目饭豹、帳戶和角色

出于安全考慮鸵赖,強(qiáng)烈建議給不同的租戶授予不同的權(quán)限在企業(yè)空間中進(jìn)行協(xié)作

4.2.1.1 創(chuàng)建賬戶

users-manager--用戶管理員,管理平臺所有用戶
步驟
登錄控制臺后拄衰,點(diǎn)擊左上角的平臺管理它褪,然后選擇訪問控制

image.png

在帳戶管理中,點(diǎn)擊創(chuàng)建肾砂。在彈出窗口中,提供所有必要信息(帶有*標(biāo)記)宏悦,然后在角色字段選擇 users-manager
image.png

切換帳戶使用 user-manager 重新登錄镐确,創(chuàng)建如下四個新帳戶,這些帳戶將在其他的教程中使用


image.png

image.png

4.2.1.2 創(chuàng)建企業(yè)空間

需要使用上一個步驟中創(chuàng)建的帳戶 ws-manager 創(chuàng)建一個企業(yè)空間饼煞。作為管理項(xiàng)目源葫、DevOps 工程和組織成員的基本邏輯單元,企業(yè)空間是 KubeSphere 多租戶系統(tǒng)的基礎(chǔ)
步驟
以 ws-manager 身份登錄 KubeSphere砖瞧,它具有管理平臺上所有企業(yè)空間的權(quán)限息堂。點(diǎn)擊左上角的平臺管理,選擇訪問控制,點(diǎn)擊右側(cè)的創(chuàng)建荣堰,將新企業(yè)空間命名為 demo-workspace床未,并將用戶 ws-admin 設(shè)置為企業(yè)空間管理員

image.png

image.png

登出控制臺,然后以 ws-admin 身份重新登錄振坚。在企業(yè)空間設(shè)置中薇搁,選擇企業(yè)成員,然后點(diǎn)擊邀請成員


image.png

邀請 project-admin 和 project-regular 進(jìn)入企業(yè)空間渡八,分別授予他們 workspace-self-provisioner 和 workspace-viewer 角色
image.png

4.2.1.3 創(chuàng)建項(xiàng)目

需要使用在上一步驟中創(chuàng)建的帳戶 project-admin 來創(chuàng)建項(xiàng)目啃洋。KubeSphere 中的項(xiàng)目與 Kubernetes 中的命名空間相同,為資源提供了虛擬隔離
步驟
以 project-admin 身份登錄 KubeSphere屎鳍,在項(xiàng)目管理中宏娄,點(diǎn)擊創(chuàng)建

image.png

邀請 project-regular 至該項(xiàng)目,并授予該用戶 operator 角色
image.png

4.2.2 將 SonarQube 集成到流水線

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

4.2.2.1 安裝 SonarQube 服務(wù)器

步驟
請先安裝 Helm,以便后續(xù)使用該工具安裝 SonarQube祖乳。例如逗堵,運(yùn)行以下命令安裝 Helm 3

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

查看helm version

helm version

version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"clean", GoVersion:"go1.14.11"}

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

helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n kubesphere-devops-system  --create-namespace --set service.type=NodePort

root@ubuntu:~# helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n kubesphere-devops-system  --create-namespace --set service.type=NodePort
Release "sonarqube" does not exist. Installing it now.
NAME: sonarqube
LAST DEPLOYED: Wed Jun  9 14:45:39 2021
NAMESPACE: kubesphere-devops-system
STATUS: deployed
REVISION: 1
NOTES:
1\. Get the application URL by running these commands:
  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
root@ubuntu:~# 

4.2.2.2 配置 SonarQube 服務(wù)器

步驟

4.2.2.2.1 訪問 SonarQube 控制臺

在瀏覽器中訪問 SonarQube 控制臺 http://{Node IP}:{NodePort}


image.png

點(diǎn)擊右上角的 Log in,然后使用默認(rèn)帳戶 admin/admin 登錄

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

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

點(diǎn)擊 Security 并輸入令牌名稱蜒秤,例如 kubesphere

image.png

點(diǎn)擊 Generate 并復(fù)制此令牌
image.png
4.2.2.2.3 創(chuàng)建 Webhook 服務(wù)器

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

export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services ks-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/

依次點(diǎn)擊 Administration、Configuration 和 Webhooks 創(chuàng)建一個 Webhook
image.png

點(diǎn)擊 Create
image.png

在彈出對話框中輸入 Name 和 Jenkins Console URL(即 SonarQube Webhook 地址)亚斋。點(diǎn)擊 Create 完成操作


image.png
4.2.2.2.4 將 SonarQube 配置添加到 ks-installer

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

kubectl edit cc -n kubesphere-system ks-installer

搜尋至 devops嘁字。添加字段 sonarqube 并在其下方指定 externalSonarUrl 和 externalSonarToken

devops:
  enabled: true
  jenkinsJavaOpts_MaxRAM: 2g
  jenkinsJavaOpts_Xms: 512m
  jenkinsJavaOpts_Xmx: 512m
  jenkinsMemoryLim: 2Gi
  jenkinsMemoryReq: 1500Mi
  jenkinsVolumeSize: 8Gi
  sonarqube: # Add this field manually.
    externalSonarUrl: http://10.77.1.201:31377 # The SonarQube IP address.
    externalSonarToken: 00ee4c512fc987d3ec3251fdd7493193cdd3b91d # The SonarQube admin token created above.

完成操作后保存此文件

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

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

export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services ks-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

請使用地址 http://{Public IP}:30180 訪問 Jenkins拗窃。安裝 KubeSphere 時,默認(rèn)情況下也會安裝 Jenkins 儀表板。此外窗看,Jenkins 還配置有 KubeSphere LDAP,這意味著您可以直接使用 KubeSphere 帳戶(例如 admin/P@88w0rd)登錄 Jenkins


image.png

點(diǎn)擊左側(cè)的系統(tǒng)管理


image.png

向下翻頁找到并點(diǎn)擊系統(tǒng)配置
image.png

搜尋到 SonarQube servers翁逞,然后點(diǎn)擊 Add SonarQube
image.png

輸入 Name 和 Server URL (http://{Node IP}:{NodePort})录肯。點(diǎn)擊添加,選擇 Jenkins栏饮,然后在彈出對話框中用 SonarQube 管理員令牌創(chuàng)建憑證(如下方第二張截圖所示)吧兔。創(chuàng)建憑證后,從 Server authentication token 旁邊的下拉列表中選擇該憑證袍嬉。點(diǎn)擊應(yīng)用完成操作
image.png

image.png

點(diǎn)擊apply應(yīng)用

4.2.2.2.6 將 sonarqubeURL 添加到 KubeSphere 控制臺

需要指定 sonarqubeURL境蔼,以便可以直接從 KubeSphere 控制臺訪問 SonarQube
執(zhí)行以下命令

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

搜尋到 client灶平,添加 devops 字段并指定 sonarqubeURL

client:
  version:
    kubesphere: v3.0.0
    kubernetes: v1.17.9
    openpitrix: v0.3.5
  enableKubeConfig: true
  devops: # Add this field manually.
    sonarqubeURL: http://10.77.1.201:31377 # The SonarQube IP address.

保存

4.2.2.2.7 重啟服務(wù)

執(zhí)行以下命令

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

4.2.2.3 為新工程創(chuàng)建 SonarQube Token

需要一個 SonarQube 令牌,以便您的流水線可以在運(yùn)行時與 SonarQube 通信

在 SonarQube 控制臺上箍土,點(diǎn)擊 Create new project
image.png

輸入工程密鑰逢享,例如 java-demo,然后點(diǎn)擊 Set Up


image.png

輸入工程名稱涮帘,例如 java-sample拼苍,然后點(diǎn)擊 Generate
image.png

創(chuàng)建令牌后,點(diǎn)擊 Continue
image.png

分別選擇 Java 和 Maven调缨。復(fù)制下圖所示綠色框中的序列號疮鲫,如果要在流水線中使用,則需要在憑證中添加此序列號
image.png

4.3 創(chuàng)建DevOps工程

步驟
以 project-admin 身份登錄控制臺弦叶,在 DevOps 工程中俊犯,點(diǎn)擊創(chuàng)建

image.png

在 DevOps 工程中,點(diǎn)擊剛創(chuàng)建的工程查看其詳細(xì)信息
image.png

轉(zhuǎn)到工程管理伤哺,然后選擇工程成員燕侠。點(diǎn)擊邀請成員授予 project-regular 用戶 operator 的角色,允許其創(chuàng)建流水線和憑證
image.png

4.4 使用DevOps

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

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

4.4.1.1 步驟

詳細(xì)步驟

5 示例

5.1 go項(xiàng)目

鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市刹淌,隨后出現(xiàn)的幾起案子饶氏,更是在濱河造成了極大的恐慌,老刑警劉巖有勾,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疹启,死亡現(xiàn)場離奇詭異,居然都是意外死亡蔼卡,警方通過查閱死者的電腦和手機(jī)喊崖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雇逞,“玉大人荤懂,你說我怎么就攤上這事『嚷停” “怎么了势誊?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵呜达,是天一觀的道長谣蠢。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么眉踱? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任挤忙,我火速辦了婚禮,結(jié)果婚禮上谈喳,老公的妹妹穿的比我還像新娘册烈。我一直安慰自己,他們只是感情好婿禽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布赏僧。 她就那樣靜靜地躺著,像睡著了一般扭倾。 火紅的嫁衣襯著肌膚如雪淀零。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天膛壹,我揣著相機(jī)與錄音驾中,去河邊找鬼。 笑死模聋,一個胖子當(dāng)著我的面吹牛肩民,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播链方,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼持痰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侄柔?” 一聲冷哼從身側(cè)響起共啃,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暂题,沒想到半個月后移剪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薪者,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年纵苛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片言津。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡攻人,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悬槽,到底是詐尸還是另有隱情怀吻,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布初婆,位于F島的核電站蓬坡,受9級特大地震影響猿棉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屑咳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一萨赁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兆龙,春花似錦杖爽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至聪铺,卻和暖如春泻帮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背计寇。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工锣杂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人番宁。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓元莫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝶押。 傳聞我的和親對象是個殘疾皇子踱蠢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容