共计 2561 个字符,预计需要花费 7 分钟才能阅读完成。
1.WGCLOUD 介绍
WGCLOUD 属于极简及高效的主机监控零碎,反对主机各种指标监测,并且反对故障告警信息推送,开源零碎足以满足咱们对测试环境机器的监控,所以用起来。
2.WGCLOUD 基于 K8S 部署
2.1. 官网下载 v3.4.6 版本 tar.gz 安装包
wgcloud-v3.4.6.tar.gz
2.2. 新建数据库,导入数据
(1) 解压 wgcloud-v3.4.6.tar.gz 安装包
(2) 在解压目录下会发现 wgcloud-MySQL.sql、wgcloud-Oracle.sql 和 wgcloud-PostgreSQL.sql 三份 sql 文件
(3) 依据本人的须要抉择对应的 sql 文件导入, 笔者这里以 mysql 为主
(4) 批改 server/config/application.yml 文件的数据库连贯信息,更新为本人的数据库连贯信息及对应的驱动即可
2.3. 编写 server 端 Dockerfile
# 根底镜像
FROM java:8
#作者
MAINTAINER xxx <xxx@xxx.com>
#切换镜像目录,进入 usr 目录
WORKDIR /wgcloud
RUN mkdir wgcloud
ADD . /wgcloud/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
CMD ["/wgcloud/wgcloud/server/start.sh"]
2.4. 制作镜像
docker buld -t harbor.xxx.xxx/qa-dev/wgcloud/wgcloud:v1 .
2.5. 将镜像推送至 harbor 仓库
docker push harbor.xxx.xxx/qa-dev/wgcloud/wgcloud:v1
2.6. 编写 k8s yaml 文件
kind: Deployment
metadata:
name: wgcloud-deployment
labels:
app: wgcloud
namespace: k8s-jenkins #这里依据本人的 namespace 做调整
spec:
replicas: 1 #管制治理运行的 pod 个数
selector:
matchLabels: #标签
app: wgcloud
template:
metadata:
labels:
app: wgcloud
spec:
containers:
- name: wgcloud
image: harbor.xxx.xxx/qa-dev/wgcloud/wgcloud:v1
imagePullPolicy: Always
ports:
- containerPort: 9997 #容器裸露的端口号 -1
- containerPort: 9998 #容器裸露的端口号 -2
- containerPort: 9999 #容器裸露的端口号 -3
imagePullSecrets:
- name: docker-harbor-slave
---
apiVersion: v1
kind: Service
metadata:
name: wgcloud-service
spec:
selector:
app: wgcloud
ports:
- name: http-test1
port: 9997
protocol: TCP
nodePort: xxx-1 #依据本人的 nodePort 做调整
- name: http-test2
port: 9998
protocol: TCP
nodePort: xxx-2
- name: http-test3
port: 9999
protocol: TCP
nodePort: xxx-3 #指定节点凋谢的端口
type: NodePort
selector:
app: wgcloud
2.7. 接入 jenkins,pipeline
def label = "slave-${UUID.randomUUID().toString()}"
podTemplate(label: label, serviceAccount: "xxx,领有某某个角色的账号",imagePullSecrets: [ 'xxx' 拉取镜像的明码], containers: [containerTemplate(name: 'kubectl', image: 'harbor.pwesports.net/qa-dev/kubectl:v1', command: 'cat', ttyEnabled: true)
], volumes: [hostPathVolume(mountPath: '/home/jenkins/.kube', hostPath: '/root/.kube'),
],yaml: '''
spec:
containers:
- name: kaniko
image: harbor.pwesports.net/qa-dev/kaniko:v2
command:
- /busybox/cat
tty: true
volumeMounts:
- name: docker-config
mountPath: /kaniko/.docker
restartPolicy: Never
volumes:
- name: docker-config
secret:
secretName: docker-harbor-slave
items:
- key: .dockerconfigjson
path: config.json
hostAliases:
- ip: "172.16.xxx.xxx"
hostnames: #代码仓库地址
- "gitlab.xxx.xxx"
- ip: "172.16.xxx.xxx" ###harbor 地址
hostnames:
- "harbor.xxx.xxx"
''') {node(label) {stage('运行 Kubectl') {
git credentialsId: 'xxxx-4c16-479c-8cd3-2b29f828e71b', url: 'http://gitlab.xxx.xxx/QA/xxx.git', branch: 'master'
container('kubectl') {sh """kubectl apply -f ${workspace}/k8s-config/wgcloud.yaml"""
}
}
}
}
3. 拜访
http://nodeIP:nodePort/wgcloud/login/toLogin
正文完