k8s 快速部署 sonarqube 详解

sonarqube

https://blog.csdn.net/li81562/article/details/139255900

https://www.jindouyun.cn/document/industry/details/184076

复制代码
apiVersion: v1
kind: Namespace
metadata:
  name: sonar-ns

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
  namespace: sonar-ns
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: 10.0.2.11
    path: "/root/share/pg"

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-data 
  namespace: sonar-ns
spec:
  accessModes:
    - ReadWriteOnce  #访问模式为RWO
  resources:
    requests:
      storage: 5Gi

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv2
  namespace: sonar-ns
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: 10.0.2.11
    path: "/root/share/sonar"

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sonarqube-data
  namespace: sonar-ns
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-sonar
  namespace: sonar-ns
  labels:
    app: postgres-sonar
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres-sonar
  template:
    metadata:
      labels:
        app: postgres-sonar
    spec:
      containers:
      - name: postgres-sonar
        image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/postgresql:16
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5432
        env:
        - name: POSTGRES_DB
          value: "sonarDB"  #数据库
        - name: POSTGRES_USER
          value: "sonar" #登录数据库的用户
        - name: POSTGRES_PASSWORD 
          value: "123456" #数据库密码
        resources:
          limits:
            cpu: 1000m
            memory: 2Gi
          requests:
            cpu: 500m
            memory: 1Gi
        volumeMounts:
          - name: data
            mountPath: /var/lib/postgresql/data
            subPath: data
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: postgres-data

apiVersion: v1
kind: Service
metadata:
  name: postgres-sonar
  namespace: sonar-ns
  labels:
    app: postgres-sonar
spec:
  type: NodePort
  ports:
  - port: 5432
    protocol: TCP
    targetPort: 5432
    nodePort: 31000
  selector:
    app: postgres-sonar

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sonarqube
  namespace: sonar-ns
  labels:
    app: sonarqube
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sonarqube
  template:
    metadata:
      labels:
        app: sonarqube
    spec:
      initContainers:
      - name: init-sysctl
        image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/gcr.io/google-containers/busybox:1.27.2
        imagePullPolicy: IfNotPresent
        command: ["sysctl", "-w", "vm.max_map_count=262144"]
        securityContext:
          privileged: true
      containers:
      - name: sonarqube
        image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/sonarqube:lts-community
        ports:
        - containerPort: 9000
        env:
        - name: SONARQUBE_JDBC_USERNAME
          value: "sonar"
        - 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: 2Gi
          requests:
            cpu: 1000m
            memory: 2Gi
        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: sonarqube-data

apiVersion: v1
kind: Service
metadata:
  labels:
    app: sonarqube
  name: sonarqube
  namespace: sonar-ns
spec:
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: sonarqube
      port: 9000
      protocol: TCP
      targetPort: 19000
  selector:
    app: sonarqube
  sessionAffinity: None
  type: NodePort

consul

下载consul

https://developer.hashicorp.com/consul/install#windows

启动

复制代码
consul agent -dev

访问

复制代码
http://localhost:8500 

参考:

复制代码
https://zhuanlan.zhihu.com/p/715754843
https://www.cnblogs.com/jruing/p/17434858.html
相关推荐
虎头金猫16 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS16 小时前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
codeejun17 小时前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
赵文宇(温玉)19 小时前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang19 小时前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren19 小时前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
忆~遂愿1 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器
Thneonl1 天前
你的 Pod 为什么 Pending:调度器两阶段
后端·kubernetes
不吃香菜kkk、1 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
ChaITSimpleLove1 天前
云原生性能对决:JDK21虚拟线程+GraalVM vs .NET10/11 技术栈深度对比
微服务·云原生·serverless·graalvm native·native aot·runtime async·.net11/java21