首页 > 其他分享 >sonarqube搭建超级完整版

sonarqube搭建超级完整版

时间:2023-12-22 14:23:42浏览次数:27  
标签:完整版 postgres sonarqube yaml k8s data 搭建 name

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
编写postgres.yaml文件
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
编写sonarqube.yaml

查看状态

 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

 

标签:完整版,postgres,sonarqube,yaml,k8s,data,搭建,name
From: https://www.cnblogs.com/nb-blog/p/17921485.html

相关文章

  • All in One, 快速搭建端到端可观测体系
    本文分享自华为云社区《AllinOne,快速搭建端到端可观测体系》,作者:王磊。随着云原生技术的应用,可观测成为云服务的主角,应用程序的部署密度及变化频率较传统环境有着巨大的变化,需要可观测性来清晰地发现和记录主机快速变化的应用行为,可观测性对于IT治理水平、业务在线化以及用户......
  • 搭建springcloud注册中心eureka以及admin监控
    现在springcloud微服务是当下盛行的主流框架,我们可以通过eureka实现服务监控和预警。接下来是项目搭建的主要步骤一、搭建eureka-server注册中心注意点有三个,分别是1.pom导入依赖(下面是完整的pom文件):springboot、eureka-server、springcloud<?xmlversion="1.0"encoding="UTF-......
  • Hive和Spark生产集群搭建
    1.环境准备1.1版本选择序号bigdata-001bigdata-002bigdata-003bigdata-004bigdata-005MySQL-8.0.31mysqlDataxDataxDataxDataxDataxDataxSpark-3.3.1SparkSparkSparkSparkSparkHive-3.1.3HiveHive1.2主要组件官网hive官网:htt......
  • 开发医疗陪诊系统源码:搭建安全高效的医患互动平台
    本文将深入探讨开发医疗陪诊系统的源码,以及如何搭建一个安全高效的医患互动平台。一、引言医疗陪诊系统旨在通过技术手段,缩短患者与医生之间的距离,提供更快速、便捷的医疗服务。二、技术选型2.1前端技术在搭建医疗陪诊系统的前端时,我们可以选择使用现代化的前端框架,如Vue.js或React......
  • 0开始搭建laravel框架
    一.1.安装最新版本的Composer:(php配置了环境变量以后可以在cmd运行php命令)php-r"copy('https://install.phpcomposer.com/installer','composer-setup.php');"  //下载安装脚本- composer-setup.php -到当前目录phpcomposer-setup.php//执行安装过程php-r"unlin......
  • 《Java架构师的第一性原理》32分布式计算之分布式缓存第1篇如何使用Redis搭建玩家排行
    今天我们用Redis搭建一个玩家的排行榜,假设一个服务器存储了10万名玩家的数据,我们想给这个区(这台服务器)上的玩家做个全区的排名,该如何用Redis实现呢?不妨一起来思考下面几个问题:MySQL是如何实现玩家排行榜的?有哪些难题需要解决?如何用Redis模拟10万名玩家数据?Redis里......
  • 最新Docker搭建DVWA和SQLi-LABS漏洞练习平台
    搭建DVWADVWA是一款开源的渗透测试漏洞练习平台,内含XSS、SQL注入、文件上传、文件包含、CSRF和暴力破解等漏洞的测试环境。可以在Docker Hub上搜索DVWA,有多个用户共享了搭建好的DVWA镜像(注意,有些镜像可能存在后门),此处选择镜像——sagikazarmark/dvwa,安装命令如下:docker pull......
  • Typora+PicGo 搭建免费图床
    前言对于经常写文章的人来说图片的管理一直是一个比较头疼的问题,最好的解决方案就是搭建一个图床,写文章的时候直接把图片上传上去,只要拿到链接在哪都能访问。如果还是免费的,是不是爽飞了。来试一下吧极力推荐:Typora+PicGo+SM.MS为什么选SM.MS:七牛云https收费、又拍云需要......
  • 如何用MyEclipse搭建JSF/Primefaces和Spring(一)
    本教程将引导大家完成为JavaServerFaces(JSF)生成软件组件的过程,在本文中您将学习到如何:从数据库表到现有项目搭建配置支持JSF2.0的服务器部署搭建的应用程序自定义Spring代码生成需要MyEclipse Spring或Bling授权。MyEclipsev2023.1.2离线版下载MyEclipse技术交流群......
  • 研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库
    沉淀,成长,突破,帮助他人,成就自我。大家好,我是冰河~~在研发的过程中,很多企业都会针对自身业务特点来定制研发一些工具类库,但是这些工具类库又不会对外公开,那如何在组织内部共享这些类库呢?一种很好的方式就是在公司内部搭建一套Maven私服仓库。一、背景知识搭建Maven私服仓库可......