准备

基本yum源

  1. yum install -y epel-release
  2. yum install -y wget bash-com* git
  3. yum update -y
yum -y install  gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel flex* bison* autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake  pcre pcre-devel openssl openssl-devel   jemalloc-devel tlc libtool vim unzip wget lrzsz bash-comp* ipvsadm ipset jq sysstat conntrack libseccomp conntrack-tools socat curl wget git conntrack-tools psmisc nfs-utils tree bash-completion conntrack libseccomp net-tools crontabs sysstat iftop nload strace bind-utils tcpdump htop telnet lsof

关闭防火墙,swap,selinux

#关闭防火墙
systemctl disable --now firewalld

#关闭swap
swapoff -a
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

#关闭selinux
setenforce 0
sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config

主机

hostname ip
t-sonar-01 10.10.0.7

安装jdk

官方文档需要jdk11
image.png

yum install -y java-11-openjdk java-11-openjdk-devel

image.png

设置系统变量

cat <<EOF > /etc/sysctl.d/sonar.conf
fs.file-max = 52706963
vm.max_map_count=524288
EOF

sysctl --system
vim /etc/security/limits.conf
sonarqube   -   nofile   131072
sonarqube   -   nproc    8192

image.png

添加用户

adduser sonarqube

安装pg

这边pg跑在一个k8s集群中
image.png

准备local pv

local pv前提条件

  • 节点上需要打上调度需要的label
  • 节点上手动创建目录
    mkdir -p /data/pg_data
    
    kubectl label  nodes t-k8s-node1  pg=true
    
    创建db名称空间
    kubectl create ns db
    
    编写local-pv yaml ``` cat > local-pv.yaml << EOF kind: StorageClass apiVersion: storage.k8s.io/v1
    metadata: name: local-storage namespace: db provisioner: kubernetes.io/no-provisioner

apiVersion: v1 kind: PersistentVolume metadata: name: local-pv namespace: db spec: capacity: storage: 20Gi accessModes:

  • ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /data/pg_data nodeAffinity: required: nodeSelectorTerms:
    • matchExpressions:
      • key: pg operator: Exists EOF
        ![image.png](https://cdn.nlark.com/yuque/0/2020/png/1176682/1599017346900-215935a2-15aa-485b-8b01-a5bb41be7e61.png#align=left&display=inline&height=163&margin=%5Bobject%20Object%5D&name=image.png&originHeight=163&originWidth=769&size=15736&status=done&style=none&width=769)
        <a name="3HrKs"></a>
        ### 部署pg
        创建docker私有库的secret
        
        kubectl create secret docker-registry hz-registry-secret —namespace=db —docker-server=registry.cn-hangzhou.aliyuncs.com —docker-username=杭州艾麦科技 —docker-password=xxxxxxx cat > pg-statefulset.yaml << EOF apiVersion: apps/v1 kind: StatefulSet metadata: name: pg namespace: db spec: serviceName: “pg” replicas: 1 selector: matchLabels: app: pg template: metadata: labels: app: pg spec: terminationGracePeriodSeconds: 10 imagePullSecrets:
      • name: hz-registry-secret containers:
      • name: pg image: registry.cn-hangzhou.aliyuncs.com/hz-imile/hz:pg-12.4 imagePullPolicy: IfNotPresent readinessProbe: tcpSocket:
        port: 5432
        
        initialDelaySeconds: 20 timeoutSeconds: 5 periodSeconds: 3 livenessProbe: tcpSocket:
        port: 5432
        
        initialDelaySeconds: 30 timeoutSeconds: 5 periodSeconds: 3 env:
        • name: POSTGRES_PASSWORD value: pgsql@123 ports:
        • containerPort: 5432 volumeMounts:
        • name: datadir mountPath: /var/lib/postgresql/data volumeClaimTemplates:
  • metadata: name: datadir spec: accessModes: [ “ReadWriteOnce” ] storageClassName: local-storage resources:
    requests:
      storage: 20Gi
    

apiVersion: v1 kind: Service metadata: name: pg namespace: db spec: type: NodePort ports:

  • port: 5432 targetPort: 5432 nodePort: 30002 selector: app: pg EOF ```
kubectl apply -f pg-statefulset.yaml

image.png

访问pg

安装pg客户端

 yum install postgresql -y

利用service连接pg

 psql -U postgres -h xxxxx -p 5432

image.png

利用nodeport访问

 psql -U postgres -h 10.10.0.4 -p 30002

image.png

配置pg

cd /data/pg_data

image.png

vim pg_hba.conf
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5

image.png

重启pg

kubectl delete pod -n db pg-0

为SonarQube创建PostgeSQL 数据库

CREATE DATABASE sonarqube;

CREATE USER sonarqube WITH ENCRYPTED PASSWORD 'sonarqube@123';

GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;

ALTER DATABASE sonarqube OWNER TO sonarqube;

\q

image.png

安装 SonarQube

下载安装包

wget -P /opt http://hk-imile-static.oss-cn-hongkong.aliyuncs.com/app/software/sonarqube-8.4.2.36762.zip

image.png
解压到/opt目录下

cd /opt
unzip sonarqube-8.4.2.36762.zip
mv sonarqube-8.4.2.36762 sonarqube

image.png
修改目录权限

chown -R sonarqube:sonarqube  /opt/sonarqube

修改配置文件

vim /opt/sonarqube/conf/sonar.properties
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube@123
sonar.jdbc.url=jdbc:postgresql://10.10.0.4:30002/sonarqube
sonar.jdbc.maxActive=60
sonar.jdbc.maxIdle=5
sonar.jdbc.minIdle=2
sonar.jdbc.maxWait=5000
sonar.jdbc.minEvictableIdleTimeMillis=600000
sonar.jdbc.timeBetweenEvictionRunsMillis=30000
sonar.jdbc.removeAbandoned=true
sonar.jdbc.removeAbandonedTimeout=60

sonar.web.host=10.10.0.7
sonar.web.port=9000
sonar.web.javaOpts=-server -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-server -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-server -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError

image.png

vim /etc/systemd/system/sonar.service
[Unit]
Description=SonarQube Server
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=131072
LimitNPROC=8192
User=sonarqube
Group=sonarqube
Restart=on-failure
[Install]
WantedBy=multi-user.target

启用sonar并设置开机自启

chown -R sonarqube:sonarqube  /opt/sonarqube
systemctl enable sonar.service --now

image.png

安装sonar-scanner

下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.4.0.2170-linux.zip

wget -P /opt  https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.4.0.2170-linux.zip
unzip sonar-scanner-cli-4.4.0.2170-linux.zip

image.png

cd /opt
mv sonar-scanner-4.4.0.2170-linux/   sonar-scanner
chown -R sonarqube:sonarqube  sonar-scanner

image.png

修改配置文件

vim /opt/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://10.10.0.7:9000

sonar.sourceEncoding=UTF-8

image.png

配置环境变量

cat > /etc/profile.d/sonar-scanner.sh << EOF
export SONAR_SCANNER_OPTS="-Xmx512m"
export SONARRUNNER_HOME=/opt/sonar-scanner/
export PATH=$SONARRUNNER_HOME/bin:$PATH
EOF
source /etc/profile

image.png