sonarqube搭建超级完整版
sonarqube搭建超级完整版
sonarqube搭建超级完整版
参考文章
https://www.jianshu.com/p/b35674bd2fad
Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。 Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, JavaScrip, Scala 等等二十几种编程语言的代码质量管理与检测。 SonarQube®是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。
1创建nfs存储
机器选择 10.0.8.16
root@debian:~# apt install nfs-common nfs-kernel-server 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 nfs-common 已经是最新版 (1:1.3.4-2.5+deb10u1)。 nfs-kernel-server 已经是最新版 (1:1.3.4-2.5+deb10u1)。 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 77 个软件包未被升级。 root@debian:~# ls kuboard-data root@debian:~# mkdir /data/sonarqube -p mkdir /data/postgres -p #数据库目录 mkdir /data/sonarqube -p /data/sonarqube *(rw,sync,root_squash,no_subtree_check) /data/postgres *(rw,sync,root_squash,no_subtree_check) systemctl status nfs-kernel-server showmount -e 10.0.8.16 root@aike:~# showmount -e 10.0.8.16 Export list for 10.0.8.16: /data/sonarqube * root@aike:~#
1)创建名称空间
kubectl create namespace sonarqube-k8s
2)创建 postgres—pv
pv.yaml 文件内容如下:
more pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: sonarqube-k8s-pv spec: capacity: storage: 50Gi accessModes: - ReadWriteMany nfs: server: 10.0.8.16 path: /data/k8s
kubectl apply -f pv.yaml
persistentvolume/sonarqube-k8s-pv unchanged
get pv -n sonarqube-k8s|grep sonarqube-k8s sonarqube-k8s-pv 50Gi RWX Retain Bound sonarqube-k8s/postgres-pvc 3h15m
4)创建一个 sa 账号
kubectl create sa sonarqube-k8s-sa -n sonarqube-k8s
5)把上面的 sa 账号做 rbac 授权
kubectl create clusterrolebinding sonarqube-k8s-sa-cluster -n \
sonarqube-k8s --clusterrole=cluster-admin --serviceaccount=sonarqube-k8s:sonarqube-k8s-sa
3)创建 postgres—pvc
pvc.yaml 文件内容如下:
more pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: postgres-pvc namespace: sonarqube-k8s spec: resources: requests: storage: 20Gi accessModes: - ReadWriteMany
#更新资源清单文件
kubectl apply -f pvc.yaml
#查看 pvc 是否创建成功
kubectl get pvc -n sonarqube-k8s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE postgres-pvc Bound sonarqube-k8s-pv 50Gi RWX 3h17m
已经搭建好k8s环境并生成存储类
1,搭建postgres数据库
提前拉取镜像
docker pull postgres:latest
编写postgres.yaml文件

apiVersion: apps/v1 kind: Deployment metadata: name: postgres-sonar namespace: sonarqube-k8s labels: app: postgres-sonar k8s.eip.work/name: postgres-sonar k8s.eip.work/layer: db spec: replicas: 1 selector: matchLabels: app: postgres-sonar template: metadata: labels: app: postgres-sonar spec: containers: - name: postgres-sonar image: docker.io/library/postgres:latest #这里注意 imagePullPolicy: Always ports: - containerPort: 5432 env: - name: POSTGRES_DB value: sonar - name: POSTGRES_USER value: sonar - name: POSTGRES_PASSWORD value: sonar resources: limits: cpu: 1000m memory: 2048Mi requests: cpu: 500m memory: 1024Mi volumeMounts: - name: data mountPath: /var/lib/postgresql volumes: - name: data persistentVolumeClaim: claimName: postgres-pvc
kubectl get pods -n sonarqube-k8s NAME READY STATUS RESTARTS AGE postgres-sonar-8648d79496-pwfhl 1/1 Running 0 3h12m
7)把 postgres. 前端加上 service,提供外部网络访问
#更新资源清单文件
postgres-service.yaml 文件内容如下:
cat postgres-service.yaml --- apiVersion: v1 kind: Service metadata: name: postgres-service namespace: sonarqube-k8s labels: app: postgres-sonar spec: type: NodePort ports: - port: 5432 targetPort: 5432 nodePort: 32333 selector: app: postgres-sonar
2,安装sonarqube服务
创建 sonarqube—pv
sonarqube-pv.yaml 文件内容如下:
cat sonarqube-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: sonarqube2-k8s-pv spec: capacity: storage: 50Gi accessModes: - ReadWriteMany nfs: server: 10.0.8.16 path: /data/k8s
创建 sonarqube—pvc
sonarqube-pvc.yaml 文件内容如下:
cat sonarqube-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: sonarqube2-pvc namespace: sonarqube-k8s spec: resources: requests: storage: 20Gi accessModes: - ReadWriteMany
#更新资源清单文件
先拉取镜像
docker.io/library/busybox 这个
docker pull sonarqube:latest
编写sonarqube.yaml

apiVersion: apps/v1 kind: Deployment metadata: name: postgres-sonar namespace: sonarqube-k8s labels: app: postgres-sonar k8s.eip.work/name: postgres-sonar k8s.eip.work/layer: db spec: replicas: 1 selector: [root@master sonarqube]# cat sonarqube.yaml apiVersion: apps/v1 kind: Deployment metadata: name: sonarqube namespace: sonarqube-k8s labels: app: sonarqube spec: replicas: 1 selector: matchLabels: app: sonarqube template: metadata: labels: app: sonarqube spec: initContainers: - name: init-sysctl image: docker.io/library/busybox:latest imagePullPolicy: IfNotPresent command: ["sysctl", "-w", "vm.max_map_count=262144"] securityContext: privileged: true containers: - name: sonarqube image: docker.io/library/sonarqube:latest imagePullPolicy: IfNotPresent ports: - containerPort: 9000 env: - name: SONARQUBE_JDBC_USERNAME value: "sonarUser" - name: SONARQUBE_JDBC_PASSWORD value: "123456" - name: SONARQUBE_JDBC_URL # value: "jdbc:postgresql://postgres-sonar:5432/sonarDB" value: "jdbc:postgresql://10.103.133.146:5432/sonarDB" livenessProbe: httpGet: path: /sessions/new port: 9000 initialDelaySeconds: 60 periodSeconds: 30 readinessProbe: httpGet: path: /sessions/new port: 9000 initialDelaySeconds: 60 periodSeconds: 30 failureThreshold: 6 resources: limits: cpu: 2000m memory: 2048Mi requests: cpu: 1000m memory: 1024Mi volumeMounts: - mountPath: /opt/sonarqube/conf name: data subPath: conf - mountPath: /opt/sonarqube/data name: data subPath: data - mountPath: /opt/sonarqube/extensions name: data subPath: extensions volumes: - name: data persistentVolumeClaim: claimName: sonarqube2-pvc --- apiVersion: v1 kind: Service metadata: name: sonarqube labels: app: sonarqube spec: type: NodePort ports: - name: sonarqube port: 9000 targetPort: 9000 nodePort: 30003 protocol: TCP selector: app: sonarqube
查看状态
7)把 postgres. 前端加上 service,提供外部网络访问
#更新资源清单文件
postgres-service.yaml 文件内容如下:
cat sonarqube-service.yaml --- apiVersion: v1 kind: Service metadata: name: sonarqube namespace: sonarqube-k8s labels: app: sonarqube spec: type: NodePort ports: - name: sonarqube port: 9000 targetPort: 9000 nodePort: 30103 protocol: TCP selector: app: sonarqube
访问测试
kubectl get svc -n sonarqube-k8s
ip+端口访问sonarqube主页,默认用户名密码都为admin
本文来自博客园,作者:IT老登,转载请注明原文链接:https://www.cnblogs.com/nb-blog/p/17921485.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~