当前位置: 首页 > news >正文

成都网站建设科技公知名设计网站公司

成都网站建设科技公,知名设计网站公司,工程公司会计分录,php儿童摄影网站源码本文搭建的 SonarQube 版本是 7.4.9-community#xff0c;由于在官方文档中声明 7.9 版本之后就不再支持使用 MySQL 数据库。所以此次搭建使用的数据库是 PostgreSQL 11.4 版本。 一、部署 PostgreSQL 服务 1. 创建命名空间 将 PostgreSQL 和 SonarQube 放在同一个命名空间…本文搭建的 SonarQube 版本是 7.4.9-community由于在官方文档中声明 7.9 版本之后就不再支持使用 MySQL 数据库。所以此次搭建使用的数据库是 PostgreSQL 11.4 版本。 一、部署 PostgreSQL 服务 1. 创建命名空间 将 PostgreSQL 和 SonarQube 放在同一个命名空间 ns-sonar 中创建命名空间的 yaml 文件如下 --- apiVersion: v1 kind: Namespace metadata:name: ns-sonarlabels:name: ns-sonar 2. 创建 PostgreSQL 使用的 PV 和 PVC 为了实现 PostgreSQL 数据的持久化存储需要将数据存放在本地存储中。首先在宿主机的 /opt/ops_ceph_data 目录下创建如下目录 mkdir -p /opt/ops_ceph_data/sonarqube/{PostgreSQL_data,sonar}在我的机器环境中/opt/ops_ceph_data 是挂载的 cephfs 文件系统所以在任意节点上创建目录后其他节点上都会存在。这也保证了 PostgreSQL 容器可以在任意节点上进行漂移。 同时由于我是将 cephfs 直接挂载到物理机上所以在下面创建 pv 的时候指定的存储类型是 local。 创建 PV 和 PVC 的 yaml 文件内容如下 --- apiVersion: v1 kind: PersistentVolume metadata:name: postgresql-pvnamespace: ns-sonar spec:accessModes:- ReadWriteOncecapacity:storage: 5Gilocal:path: /opt/ops_ceph_data/sonarqube/PostgreSQL_datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: sonar-nodeoperator: Invalues:- truepersistentVolumeReclaimPolicy: Retain --- kind: PersistentVolumeClaim apiVersion: v1 metadata:name: postgresql-pvcnamespace: ns-sonar spec:accessModes:- ReadWriteOnceresources:requests:storage: 5Gi 3. 配置 labels 由于上面配置的 PV 存储类型是 local所以需要在允许运行 PostgreSQL 容器的 Node 上设置 labelslabels 为 sonar-nodetrue这里我是将所有的 Node 节点上都添加了这个 label命令如下 for i in 1 2 3 4 5 dokubectl label nodes k8s-node${i} sonar-nodetrue done 注意PV 中配置的 matchExpressions 一定要与 labels 一致不然会无法匹配。  4. 创建 Service 接下来需要配置用于映射 PostgreSQL 容器端口的 Service 文件这里我使用 NodePort 类型yaml 文件内容如下 --- apiVersion: v1 kind: Service metadata:name: postgresql-servicenamespace: ns-sonarlabels:app: postgresql spec:type: NodePortports:- port: 5432targetPort: 5432nodePort: 30543protocol: TCPselector:app: postgresql 5. 创建 PostgreSQL 的 Pod 因为我搭建的环境中PostgreSQL 使用的单点模式所以直接使用 Deployment 类型来创建 Podyaml 文件内容如下 --- apiVersion: apps/v1 kind: Deployment metadata:name: postgresqlnamespace: ns-sonarlabels:app: postgresql spec:replicas: 1selector:matchLabels:app: postgresqltemplate:metadata:labels:app: postgresqlspec:containers:- name: postgresql-for-sonarimage: postgres:11.4imagePullPolicy: IfNotPresentports:- containerPort: 5432env: # 这里设置 PostgreSQL 启动时候所需要的环境变量- name: POSTGRES_DB # 定义要创建的数据库名称value: sonarDB- name: POSTGRES_USER # 定义要创建访问数据库的用户value: sonarUser- name: POSTGRES_PASSWORD # 定义数据库的密码value: sonar_adminresources:limits:cpu: 1000mmemory: 2048Mirequests:cpu: 500mmemory: 1024MivolumeMounts:- mountPath: /var/lib/postgresql/data # 这个目录是 PostgreSQL 容器内默认的数据存储路径name: postgredbvolumes:- name: postgredbpersistentVolumeClaim:claimName: postgresql-pvc # 将上面创建的 PVC 挂载到 PostgreSQL 的数据目录下 在环境变量设置的部分我一开始使用的是引用 Secret 的方式但是在容器启动后没有正确创建用户和密码。所以还是使用了直接指定 value 的方式。具体为什么 Secret 没有生效现在还不清楚后续查出原因后再补充。 6. 验证数据库连接 使用容器搭建 PostgreSQL 服务默认会在容器内监听 0.0.0.0 地址所以像传统方式部署那样去手动修改监听地址。 在其他机器中验证连接 PostgreSQLIP 地址为任意 Node 节点 IP。用户名密码和数据库名称参考上面的 yaml 文件。测试是否可以正常连接即可。 二、部署 SonarQube 服务 1. 创建 SonarQube 使用的 PV 和 PVC 用于 SonarQube 的持久化存储目录已经在前面创建好了下面直接编写 yaml 文件内容如下 --- apiVersion: v1 kind: PersistentVolume metadata:name: sonar-pvnamespace: ns-sonar spec:accessModes:- ReadWriteOncecapacity:storage: 20Gilocal:path: /opt/ops_ceph_data/sonarqube/sonar_datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: sonar-nodeoperator: Invalues:- truepersistentVolumeReclaimPolicy: Retain --- kind: PersistentVolumeClaim apiVersion: v1 metadata:name: sonar-pvcnamespace: ns-sonar spec:accessModes:- ReadWriteOnceresources:requests:storage: 20Gi 需要注意的是PV 中匹配的 labels 已经在前面创建好了所以此处不需要重复设置 labels。 另外 SonarQube 容器运行的时候不是以 root 用户运行的所以需要确保挂载的目录要允许其他用户读写否则容器启动会失败。 chmod -R 777 /opt/ops_ceph_data/sonarqube/sonar_data2. 创建 Service 使用 NodePort 类型将 SonarQube 端口映射出来yaml 文件内容如下 --- apiVersion: v1 kind: Service metadata:name: sonarqube-servicelabels:app: sonarqube-service spec:type: NodePortports:- port: 9000targetPort: 9000nodePort: 30900protocol: TCPselector:app: sonarqube 3. 创建 SonarQube 的 Pod SonarQube 的 Pod 使用 Deployment 来创建yaml 文件内容如下 --- apiVersion: apps/v1 kind: Deployment metadata:name: sonarqubenamespace: ns-sonarlabels:app: sonarqube spec:replicas: 1selector:matchLabels:app: sonarqubetemplate:metadata:labels:app: sonarqubespec:initContainers: # 设置初始化镜像用于执行 system 命令此处的配置在下文会有说明- name: init-sysctlimage: busyboximagePullPolicy: IfNotPresentcommand: [sysctl, -w, vm.max_map_count262144] # 设置vm.max_map_count这个值调整内存权限否则启动可能报错securityContext:privileged: true # 设置可以以 root 权限执行命令containers:- name: sonarqubeimage: sonarqube:7.9.4-communityports:- containerPort: 9000env:- name: SONARQUBE_JDBC_USERNAME # 设置 SonarQube 连接数据库使用的用户名value: sonarUser- name: SONARQUBE_JDBC_PASSWORD # 设置 SonarQube 连接数据库使用的密码value: sonar_admin- name: SONARQUBE_JDBC_URL # 设置 SonarQube 连接数据库使用的地址value: jdbc:postgresql://10.16.12.206:30543/sonarDB # 这里可以指定 Node 节点的 IP 地址和 PostgreSQL 映射出来的端口livenessProbe: # 设置容器存活检查策略如果失败将杀死容器然后根据 Pod 的 restartPolicy 来决定是否进行重启操作httpGet:path: /sessions/newport: 9000initialDelaySeconds: 60 # 设置在容器启动多长时间后开始探针检测此处设置为 60speriodSeconds: 30 # 设置探针检查的频率此处设置为每 30s 检查一次readinessProbe: # 设置容器的就绪检查策略查看容器是否准备好接受 HTTP 请求httpGet:path: /sessions/newport: 9000initialDelaySeconds: 60 # 设置在容器启动多长时间后开始探针检测此处设置为 60speriodSeconds: 30 # 设置探针检查的频率此处设置为每 30s 检查一次failureThreshold: 6 # 在检查失败的情况下重复检查的次数此处设置为 6resources:limits:cpu: 2000mmemory: 2048Mirequests:cpu: 1000mmemory: 1024MivolumeMounts:- mountPath: /opt/sonarqube/confname: sonarqubesubPath: conf # 使用 subPath 在宿主机的挂载目录上设置一个子目录用于存放上面指定目录的数据- mountPath: /opt/sonarqube/dataname: sonarqubesubPath: data- mountPath: /opt/sonarqube/extensionsname: sonarqubesubPath: extensionsvolumes:- name: sonarqubepersistentVolumeClaim:claimName: sonar-pvc #绑定上面创建的 PVC 对于上面的 yaml 文件有些配置需要进行说明。 3.1 initContainers initContainers 就是初始化容器也就是在主容器启动之前首先启动初始化容器。如果有多个初始化容器会按照定义的顺序依次启动。只有在初始化容器启动完成后主容器才会启动。 使用初始化容器有如下几个作用 为主容器初始化环境例如本文中的例子由于 SonarQube 在启动服务的时候要确保已经设置了 vm.max_map_count 这个值但是由于 SonarQube 镜像本身不能执行这个命令所以可以使用一个初始化容器来执行该命令同一个Pod下的容器是共享文件系统的并且保证该命令已经执行完成的情况下主容器才会启动。或者另一种情况是主容器启动的时候需要安装一些依赖包为了避免安装依赖包时间过长影响健康检查策略可以选择将这个安装的任务交给初始化容器去执行。 等待其他服务 Ready例如一个 web 服务的 Pod 启动时需要确保另一个数据库服务的 Pod 已经启动了并且可以接受连接不然 web 服务可能会报错或者启动失败所以可以在 web 服务的 Pod 中部署一个初始化容器去检查数据库服务是否已经准备好直到数据库可以开始连接初始化容器才会推出。 初始化集群配置例如可以使用初始化容器检测当前业务集群中已经存在的节点信息并为主容器准备好集群的配置信息这样集群启动时就可以根据这个配置信息加入到集群中。 需要注意的是initContainers 是以 sideCar 模式运行在 Pod 中的。 3.2 健康检查策略 关于健康检查策略上面的 yaml 文件中已经给出了一些注释。其他的配置项可以参考官网文档配置存活探针和就绪探针 3.3 subPath 配置 上面的 yaml 文件中在存储挂载的部分使用了 subPath 配置这是因为 SonarQube 中一共有三个需要挂载的目录 /opt/sonarqube/conf /opt/sonarqube/data /opt/sonarqube/extensions 而宿主机上的存储目录只提供了一个 /opt/ops_ceph_data/sonarqube/sonar_data默认情况下以上三个目录的数据都会存储在宿主机这一个目录下这样就会造成数据混乱没有办法区分某个数据文件或目录具体是哪个父目录下的。可以使用 subPath 配置解决这个问题这个配置的功能就是在宿主机的挂载目录下创建一个子目录来存放对应目录的数据。 例如上面的 subPath 配置项分别创建了三个子目录conf、data、extensions那么在宿主机的挂载目录下显示的就是如下形式 这三个子目录的名称可以随意指定上面的 yaml 文件中 subPath 指定的子目录名称与容器中的目录名称一致是为了更方便的区分。如果将 subPath 的配置分别改为sonar_conf、sonar_data、sonar_extensions那么在宿主机挂载目录下显示的就会是如下形式 4. 访问 SonarQube 并安装插件 SonarQube 部署完成后可以通过任意 Node 节点的 IP 地址加上映射的端口访问。 默认的登录用户名和密码均为 admin。登录完成后首先点击 Administration -- Marketplace 在 Plugin 部分查找 chinese 插件和 Codehawk Java 进行安装。chinese 插件用于汉化界面安装完成后需要重启服务在页面上方会有提示。 #mkdir -p /data/sonarqube/{PostgreSQL_data,sonar_data} #chmod -R 777 /data/sonarqube/sonar_data--- --- apiVersion: v1 kind: Service metadata:name: postgres-sonarlabels:app: postgres-sonar spec:clusterIP: Noneports:- port: 5432protocol: TCPtargetPort: 5432selector:app: postgres-sonar--- apiVersion: apps/v1 kind: StatefulSet metadata:name: postgres-sonarlabels:app: postgres-sonar spec:replicas: 1selector:matchLabels:app: postgres-sonartemplate:metadata:labels:app: postgres-sonarspec:containers:- name: postgres-sonarimage: postgres:11.4imagePullPolicy: IfNotPresentports:- containerPort: 5432env: # 这里设置 PostgreSQL 启动时候所需要的环境变量- name: POSTGRES_DB # 定义要创建的数据库名称value: sonarDB- name: POSTGRES_USER # 定义要创建访问数据库的用户value: sonarUser- name: POSTGRES_PASSWORD # 定义数据库的密码value: sonar_adminresources:limits:cpu: 1000mmemory: 2048Mirequests:cpu: 500mmemory: 1024MivolumeMounts:- mountPath: /var/lib/postgresql/data # 这个目录是 PostgreSQL 容器内默认的数据存储路径name: postgredbvolumes:- name: postgredbhostPath:type: DirectoryOrCreate path: /data/sonarqube/PostgreSQL_datanodeName: gem-yxyw-t-c03 --- --- apiVersion: v1 kind: Service metadata:name: sonarqube-servicelabels:app: sonarqube-service spec:type: NodePortports:- port: 9000targetPort: 9000nodePort: 30900protocol: TCPselector:app: sonarqube --- apiVersion: apps/v1 kind: StatefulSet metadata:name: sonarqubelabels:app: sonarqube spec:replicas: 1selector:matchLabels:app: sonarqubetemplate:metadata:labels:app: sonarqubespec:initContainers: # 设置初始化镜像用于执行 system 命令此处的配置在下文会有说明- name: init-sysctlimage: busyboximagePullPolicy: IfNotPresentcommand: [sysctl, -w, vm.max_map_count262144] # 设置vm.max_map_count这个值调整内存权限否则启动可能报错securityContext:privileged: true # 设置可以以 root 权限执行命令containers:- name: sonarqubeimage: sonarqube:7.9.4-communityports:- containerPort: 9000env:- name: SONARQUBE_JDBC_USERNAME # 设置 SonarQube 连接数据库使用的用户名value: sonarUser- name: SONARQUBE_JDBC_PASSWORD # 设置 SonarQube 连接数据库使用的密码value: sonar_admin- name: SONARQUBE_JDBC_URL # 设置 SonarQube 连接数据库使用的地址value: jdbc:postgresql://postgres-sonar:5432/sonarDB # 这里可以指定 Node 节点的 IP 地址和 PostgreSQL 映射出来的端口livenessProbe: # 设置容器存活检查策略如果失败将杀死容器然后根据 Pod 的 restartPolicy 来决定是否进行重启操作httpGet:path: /sessions/newport: 9000initialDelaySeconds: 60 # 设置在容器启动多长时间后开始探针检测此处设置为 60speriodSeconds: 30 # 设置探针检查的频率此处设置为每 30s 检查一次readinessProbe: # 设置容器的就绪检查策略查看容器是否准备好接受 HTTP 请求httpGet:path: /sessions/newport: 9000initialDelaySeconds: 60 # 设置在容器启动多长时间后开始探针检测此处设置为 60speriodSeconds: 30 # 设置探针检查的频率此处设置为每 30s 检查一次failureThreshold: 6 # 在检查失败的情况下重复检查的次数此处设置为 6resources:limits:cpu: 2000mmemory: 2048Mirequests:cpu: 1000mmemory: 1024MivolumeMounts:- mountPath: /opt/sonarqube/confname: sonarqubesubPath: conf # 使用 subPath 在宿主机的挂载目录上设置一个子目录用于存放上面指定目录的数据- mountPath: /opt/sonarqube/dataname: sonarqubesubPath: data- mountPath: /opt/sonarqube/extensionsname: sonarqubesubPath: extensionsvolumes:- name: sonarqubehostPath:type: DirectoryOrCreate path: /data/sonarqube/sonar_datanodeName: gem-yxyw-t-c03
文章转载自:
http://www.morning.nwzcf.cn.gov.cn.nwzcf.cn
http://www.morning.tcsdlbt.cn.gov.cn.tcsdlbt.cn
http://www.morning.tgfsr.cn.gov.cn.tgfsr.cn
http://www.morning.ctfwl.cn.gov.cn.ctfwl.cn
http://www.morning.pqqzd.cn.gov.cn.pqqzd.cn
http://www.morning.zzgtdz.cn.gov.cn.zzgtdz.cn
http://www.morning.jwpcj.cn.gov.cn.jwpcj.cn
http://www.morning.jkbqs.cn.gov.cn.jkbqs.cn
http://www.morning.ltbwq.cn.gov.cn.ltbwq.cn
http://www.morning.nckjk.cn.gov.cn.nckjk.cn
http://www.morning.qqnp.cn.gov.cn.qqnp.cn
http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn
http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn
http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn
http://www.morning.kzhgy.cn.gov.cn.kzhgy.cn
http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn
http://www.morning.zrmxp.cn.gov.cn.zrmxp.cn
http://www.morning.njhyk.cn.gov.cn.njhyk.cn
http://www.morning.grbp.cn.gov.cn.grbp.cn
http://www.morning.lhjmq.cn.gov.cn.lhjmq.cn
http://www.morning.bklhx.cn.gov.cn.bklhx.cn
http://www.morning.fhghy.cn.gov.cn.fhghy.cn
http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn
http://www.morning.xtdtt.cn.gov.cn.xtdtt.cn
http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn
http://www.morning.lfpdc.cn.gov.cn.lfpdc.cn
http://www.morning.zdxss.cn.gov.cn.zdxss.cn
http://www.morning.chrbp.cn.gov.cn.chrbp.cn
http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn
http://www.morning.yqpck.cn.gov.cn.yqpck.cn
http://www.morning.hxpsp.cn.gov.cn.hxpsp.cn
http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn
http://www.morning.jwncx.cn.gov.cn.jwncx.cn
http://www.morning.sxfnf.cn.gov.cn.sxfnf.cn
http://www.morning.zrlms.cn.gov.cn.zrlms.cn
http://www.morning.nxbkw.cn.gov.cn.nxbkw.cn
http://www.morning.rrwgh.cn.gov.cn.rrwgh.cn
http://www.morning.rkqkb.cn.gov.cn.rkqkb.cn
http://www.morning.pftjj.cn.gov.cn.pftjj.cn
http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn
http://www.morning.hxbps.cn.gov.cn.hxbps.cn
http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn
http://www.morning.pjbhk.cn.gov.cn.pjbhk.cn
http://www.morning.qcbhb.cn.gov.cn.qcbhb.cn
http://www.morning.kgltb.cn.gov.cn.kgltb.cn
http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn
http://www.morning.lggng.cn.gov.cn.lggng.cn
http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn
http://www.morning.hmnhp.cn.gov.cn.hmnhp.cn
http://www.morning.zbnkt.cn.gov.cn.zbnkt.cn
http://www.morning.drpbc.cn.gov.cn.drpbc.cn
http://www.morning.qpsdq.cn.gov.cn.qpsdq.cn
http://www.morning.mhlsx.cn.gov.cn.mhlsx.cn
http://www.morning.kcnjz.cn.gov.cn.kcnjz.cn
http://www.morning.mrxgm.cn.gov.cn.mrxgm.cn
http://www.morning.bmtkp.cn.gov.cn.bmtkp.cn
http://www.morning.kjnfs.cn.gov.cn.kjnfs.cn
http://www.morning.hpdpp.cn.gov.cn.hpdpp.cn
http://www.morning.nrwr.cn.gov.cn.nrwr.cn
http://www.morning.jqswf.cn.gov.cn.jqswf.cn
http://www.morning.hnhgb.cn.gov.cn.hnhgb.cn
http://www.morning.pctql.cn.gov.cn.pctql.cn
http://www.morning.ghxzd.cn.gov.cn.ghxzd.cn
http://www.morning.fqmbt.cn.gov.cn.fqmbt.cn
http://www.morning.tjjkn.cn.gov.cn.tjjkn.cn
http://www.morning.rnribht.cn.gov.cn.rnribht.cn
http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn
http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn
http://www.morning.demoux.com.gov.cn.demoux.com
http://www.morning.dtrzw.cn.gov.cn.dtrzw.cn
http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn
http://www.morning.frtt.cn.gov.cn.frtt.cn
http://www.morning.qichetc.com.gov.cn.qichetc.com
http://www.morning.rgxcd.cn.gov.cn.rgxcd.cn
http://www.morning.bdsyu.cn.gov.cn.bdsyu.cn
http://www.morning.cwjxg.cn.gov.cn.cwjxg.cn
http://www.morning.xpzgg.cn.gov.cn.xpzgg.cn
http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn
http://www.morning.rgzc.cn.gov.cn.rgzc.cn
http://www.morning.pwxkn.cn.gov.cn.pwxkn.cn
http://www.tj-hxxt.cn/news/277669.html

相关文章:

  • 网站路径网页美工设计的工作流程?
  • 网站安装百度商桥wordpress 微信打赏
  • 郴州网站建设哪个好杂志媒体网站建设方案
  • 好看的网站色彩搭配做网站一定要会ps么
  • 网站换代理网站建站公司哪家价钱合理
  • wordpress建站教程jiuyou营销型企业网站建设的功能
  • 什么网站做广告效果好百度文章收录提交入口
  • 网站设计需求模板网 公司
  • 桐柏网站建设网站建设 服务承诺
  • 高埗仿做网站做网站费用 会计分录
  • 网站水军怎么做免费微网站平台那个好
  • 精品网站免费宜昌建网站
  • 5 网站建设进度表公司建网站公司
  • 机关 网站 建设方案公司官网怎么注册流程
  • 网站推广效果的评估指标主要包括seo排名优化课程
  • 瑞金市网站建设推广网络营销案例
  • 旅游景点网站建设方案芜湖推广公司
  • 网站源码php网络规划设计师是副高
  • 上海云建站模板建设银行网站修改手机号
  • 专业论坛网站有哪些佛山市桂城建设局网站
  • 公司网站制作专业公司中级经济师考试科目
  • wordpress建哪些网站wordpress安装超时
  • 南阳网站seo推广公司织梦修改网站背景颜色
  • 做网站退款怎么做会计分录亿赐客网站
  • 建一个论坛网站怎么建齐鲁泰安人才网
  • 赣州网站建设怎么样外贸网站建设 双语网站建设
  • 音乐网站设计规划书广西住房城乡和建设厅网站首页
  • 网站建设柒首先金手指9医药招商网站大全免费
  • 棋牌类网站怎么做推广产品的方法
  • 演示网站怎么做乐清网站优化