KubeSphere使用DevOps功能

DevOps & KubeSphere

1 DevOps

1.1 概念

DevOps是Development和Operations两个词的组合。
DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
敏捷管理的流程是“设计--开发-测试-开发-测试...--部署”
而DevOps的流程是“设计--开发-测试-部署-开发-测试-部署...”,就是CI(Continuous Integration)/CD(Continuous Deployment)的一个过程

2 DevOps与容器技术

容器技术,微服务为DevOps提供了很好的前提条件,可以把大的项目分成多个划分为多个模块独立地进行开发测试,更迭,而容器技术可以把不同模块之间进行隔离,不会互相影响

3 KubeSphere

3.1 概念

4 KubeSphere部署DevOps

4.1 开启DevOps功能

不同方法开启DevOps功能

4.2 准备工作

4.2.1 创建企业空间、项目、帐户和角色

出于安全考虑,强烈建议给不同的租户授予不同的权限在企业空间中进行协作

4.2.1.1 创建账户

users-manager--用户管理员,管理平台所有用户
步骤
登录控制台后,点击左上角的平台管理,然后选择访问控制

image.png

在帐户管理中,点击创建。在弹出窗口中,提供所有必要信息(带有*标记),然后在角色字段选择 users-manager
image.png

切换帐户使用 user-manager 重新登录,创建如下四个新帐户,这些帐户将在其他的教程中使用


image.png

image.png

4.2.1.2 创建企业空间

需要使用上一个步骤中创建的帐户 ws-manager 创建一个企业空间。作为管理项目、DevOps 工程和组织成员的基本逻辑单元,企业空间是 KubeSphere 多租户系统的基础
步骤
以 ws-manager 身份登录 KubeSphere,它具有管理平台上所有企业空间的权限。点击左上角的平台管理,选择访问控制,点击右侧的创建,将新企业空间命名为 demo-workspace,并将用户 ws-admin 设置为企业空间管理员

image.png

image.png

登出控制台,然后以 ws-admin 身份重新登录。在企业空间设置中,选择企业成员,然后点击邀请成员


image.png

邀请 project-admin 和 project-regular 进入企业空间,分别授予他们 workspace-self-provisioner 和 workspace-viewer 角色
image.png

4.2.1.3 创建项目

需要使用在上一步骤中创建的帐户 project-admin 来创建项目。KubeSphere 中的项目与 Kubernetes 中的命名空间相同,为资源提供了虚拟隔离
步骤
以 project-admin 身份登录 KubeSphere,在项目管理中,点击创建

image.png

邀请 project-regular 至该项目,并授予该用户 operator 角色
image.png

4.2.2 将 SonarQube 集成到流水线

SonarQube 是一种主流的代码质量持续检测工具。您可以将其用于代码库的静态和动态分析。SonarQube 集成到 KubeSphere 流水线后,如果在运行的流水线中检测到问题,您可以直接在仪表板上查看常见代码问题,例如 Bug 和漏洞

4.2.2.1 安装 SonarQube 服务器

步骤
请先安装 Helm,以便后续使用该工具安装 SonarQube。例如,运行以下命令安装 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"}

执行以下命令安装 SonarQube 服务器

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 服务器

步骤

4.2.2.2.1 访问 SonarQube 控制台

在浏览器中访问 SonarQube 控制台 http://{Node IP}:{NodePort}


image.png

点击右上角的 Log in,然后使用默认帐户 admin/admin 登录

4.2.2.2.2 创建 SonarQube 管理员令牌 (Token)

点击右上角字母 A,然后从菜单中选择 My Account 以转到 Profile 页面
image.png

点击 Security 并输入令牌名称,例如 kubesphere

image.png

点击 Generate 并复制此令牌
image.png
4.2.2.2.3 创建 Webhook 服务器

执行以下命令获取 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/

依次点击 Administration、Configuration 和 Webhooks 创建一个 Webhook
image.png

点击 Create
image.png

在弹出对话框中输入 Name 和 Jenkins Console URL(即 SonarQube Webhook 地址)。点击 Create 完成操作


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

执行以下命令编辑 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 服务器添加至 Jenkins

执行以下命令获取 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 时,默认情况下也会安装 Jenkins 仪表板。此外,Jenkins 还配置有 KubeSphere LDAP,这意味着您可以直接使用 KubeSphere 帐户(例如 admin/P@88w0rd)登录 Jenkins


image.png

点击左侧的系统管理


image.png

向下翻页找到并点击系统配置
image.png

搜寻到 SonarQube servers,然后点击 Add SonarQube
image.png

输入 Name 和 Server URL (http://{Node IP}:{NodePort})。点击添加,选择 Jenkins,然后在弹出对话框中用 SonarQube 管理员令牌创建凭证(如下方第二张截图所示)。创建凭证后,从 Server authentication token 旁边的下拉列表中选择该凭证。点击应用完成操作
image.png

image.png

点击apply应用

4.2.2.2.6 将 sonarqubeURL 添加到 KubeSphere 控制台

需要指定 sonarqubeURL,以便可以直接从 KubeSphere 控制台访问 SonarQube
执行以下命令

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 重启服务

执行以下命令

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

4.2.2.3 为新工程创建 SonarQube Token

需要一个 SonarQube 令牌,以便您的流水线可以在运行时与 SonarQube 通信

在 SonarQube 控制台上,点击 Create new project
image.png

输入工程密钥,例如 java-demo,然后点击 Set Up


image.png

输入工程名称,例如 java-sample,然后点击 Generate
image.png

创建令牌后,点击 Continue
image.png

分别选择 Java 和 Maven。复制下图所示绿色框中的序列号,如果要在流水线中使用,则需要在凭证中添加此序列号
image.png

4.3 创建DevOps工程

步骤
以 project-admin 身份登录控制台,在 DevOps 工程中,点击创建

image.png

在 DevOps 工程中,点击刚创建的工程查看其详细信息
image.png

转到工程管理,然后选择工程成员。点击邀请成员授予 project-regular 用户 operator 的角色,允许其创建流水线和凭证
image.png

4.4 使用DevOps

4.4.1 使用图形编辑面板创建流水线

在 KubeSphere 中使用图形编辑面板创建流水线。KubeSphere 在整个过程中将根据您在编辑面板上的设置自动生成 Jenkinsfile,您无需手动创建 Jenkinsfile。待流水线成功运行,它会相应地在您的开发环境中创建一个部署 (Deployment) 和一个服务 (Service),并将镜像推送至 Docker Hub

4.4.1.1 步骤

详细步骤

5 示例

5.1 go项目

链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容