k8s起个sonarqube集成jenkins扫扫开发的代码
今日事儿一下开发,看看他们的代码质量如何?
搞个最新的sonarqube~先看一下效果~
sonarqube:
点第一个
看一下代码详细
jenkins:
配好了之后多出来一个sonarqube的图标 点击就跳转到sonarqube的网址了
看来问题还是挺多的~~~
环境准备
k8s集群。没有的话看我往期文章 或者用kubeadm弄一个新版本
yaml文件
废话不多说 直接上干货
目录结构
[root@m-1-11 k8syaml]# ls -R sonarqube/
sonarqube/:
pgsql sonar
sonarqube/pgsql:
deploy.yaml
sonarqube/sonar:
deploy.yaml ingress-http.yaml
分别有两个目录 sonar和pgsql 两个目录里边分别对应的yaml文件
sonar配置 (直接复制即可)
[root@m-1-11 ]# cd sonarqube/sonar
[root@m-1-11 sonarqube]# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sonarqube
namespace: devops
labels:
app: sonarqube
spec:
replicas: 1
selector:
matchLabels:
app: sonarqube
template:
metadata:
labels:
app: sonarqube
spec:
nodeSelector: # node选择器 可以让pod创建在固定node
type: mq # 自定义的node label
initContainers:
- name: init-sysctl
image: busybox
imagePullPolicy: IfNotPresent
command: ["sysctl", "-w", "vm.max_map_count=262144"]
securityContext:
privileged: true
containers:
- name: sonarqube
image: sonarqube:lts
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"
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
hostPath: # 存储类型
path: /data/local/sonarqube # 本地映射 相当于docker -v
---
apiVersion: v1
kind: Service
metadata:
name: sonarqube
namespace: devops
labels:
app: sonarqube
spec:
type: NodePort
ports:
- name: sonarqube
port: 9000
targetPort: 9000
# nodePort: 30003
protocol: TCP
selector:
app: sonarqube
sonar ingress
[root@m-1-11 sonarqube]# cat ingress-http.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sonar-http
namespace: devops
spec:
rules:
- host: "sonar.pinuc.tech" # 域名自行修改
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: sonarqube # service名称和上边对应
port:
number: 9000
pgsql配置
[root@m-1-11 ]# cd ../pgsql/
[root@m-1-11 pgsql]# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-sonar
namespace: devops
labels:
app: postgres-sonar
spec:
replicas: 1
selector:
matchLabels:
app: postgres-sonar
template:
metadata:
labels:
app: postgres-sonar
spec:
nodeSelector:
type: db
containers:
- name: postgres-sonar
image: postgres:11.4
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: "sonarDB"
- name: POSTGRES_USER
value: "sonarUser"
- name: POSTGRES_PASSWORD
value: "123456"
resources:
limits:
cpu: 1000m
memory: 2048Mi
requests:
cpu: 500m
memory: 1024Mi
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
volumes:
- name: data
hostPath:
path: /data/local/pgsql
---
apiVersion: v1
kind: Service
metadata:
name: postgres-sonar
namespace: devops
labels:
app: postgres-sonar
spec:
type: NodePort # 如果觉得nodeport不安全 可以用clusterip
ports:
- port: 5432
protocol: TCP
targetPort: 5432
selector:
app: postgres-sonar
创建名称空间然后创建pod,svc,ingress
kubectl create ns devops
kubectl apply -f deploy.yaml
cd ../sonar/
kubectl apply -f deploy.yaml -f ingress-http.yaml
[root@m-1-11 sonar]# kubectl get pod,svc,ing -n devops
NAME READY STATUS RESTARTS AGE
pod/postgres-sonar-6c9bf9d764-tmtwx 1/1 Running 1 10d
pod/sonarqube-5c4448c555-z2mc5 1/1 Running 0 10d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/postgres-sonar NodePort 10.108.250.63 <none> 5432:31564/TCP 10d
service/sonarqube NodePort 10.100.247.93 <none> 9000:31532/TCP 10d
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress.networking.k8s.io/sonar-http nginx sonar.pinuc.tech 192.168.1.10,192.168.1.11,192.168.1.14,192.168.1.15 80 10d
还需要内网dns解析 sonar.pinuc.tech -->192.168.1.10
访问http://sonar.pinuc.tech/ 账号密码 admin admin
配置
两种方式:
第一种:直接去sonarqube创建
把这段直接复制粘贴到jenkins 执行构建前命令
然后构建
第二种:用jenkins集成的sonar插件
配置url
这个令牌我在这里拿的(感觉不对 应该是第一种的那个令牌)
这个配置不重要 (我用这种方式不走这个令牌)
(为了方便以后使用)反正我先配上了
然后继续 仔细看左上角 在哪配置就不教了 用过的都知道
进项目
sonar.projectKey=bi-web # 唯一标识
sonar.projectName=bi-web
sonar.projectVersion=1.0
sonar.sources=$WORKSPACE
sonar.language=java
sonar.login=admin # 登录sonar的账号
sonar.password=xxxxxxx # 登录soanr的密码
sonar.java.binaries=bi-web
试了很多版本的配置 发现只有这个成功了
最后构建之后就会自动扫描了 (它会自动在sonar创建出来项目)
总体来说挺简单的~
个人亲测可用,如果有任何问题可以找我协助~