Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
holmes
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
holmes
Commits
44f52017
Commit
44f52017
authored
Mar 03, 2022
by
黎博
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into k8s
parents
718daf2f
c3656c97
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
155 additions
and
17 deletions
+155
-17
K8sController.java
src/main/java/cn/qg/holmes/controller/k8s/K8sController.java
+6
-0
K8sService.java
src/main/java/cn/qg/holmes/service/k8s/K8sService.java
+123
-0
DingdingUtils.java
src/main/java/cn/qg/holmes/utils/DingdingUtils.java
+26
-17
No files found.
src/main/java/cn/qg/holmes/controller/k8s/K8sController.java
View file @
44f52017
...
@@ -131,6 +131,9 @@ public class K8sController {
...
@@ -131,6 +131,9 @@ public class K8sController {
case
"redis"
:
case
"redis"
:
k8sService
.
createRedisService
(
namespace
);
k8sService
.
createRedisService
(
namespace
);
break
;
break
;
case
"redis5"
:
k8sService
.
createRedis5Service
(
namespace
);
break
;
case
"redis-sentinel"
:
case
"redis-sentinel"
:
k8sService
.
createRedisSentinelService
(
namespace
);
k8sService
.
createRedisSentinelService
(
namespace
);
break
;
break
;
...
@@ -175,6 +178,9 @@ public class K8sController {
...
@@ -175,6 +178,9 @@ public class K8sController {
case
"redis"
:
case
"redis"
:
k8sService
.
createRedisDeployment
(
namespace
,
image
);
k8sService
.
createRedisDeployment
(
namespace
,
image
);
break
;
break
;
case
"redis5"
:
k8sService
.
createRedis5Deployment
(
namespace
,
image
);
break
;
case
"redis-sentinel"
:
case
"redis-sentinel"
:
k8sService
.
createRedisSentinelDeployment
(
namespace
,
image
);
k8sService
.
createRedisSentinelDeployment
(
namespace
,
image
);
break
;
break
;
...
...
src/main/java/cn/qg/holmes/service/k8s/K8sService.java
View file @
44f52017
...
@@ -991,6 +991,53 @@ public class K8sService {
...
@@ -991,6 +991,53 @@ public class K8sService {
return
kubernetesClient
.
services
().
inNamespace
(
namespace
).
create
(
redisService
);
return
kubernetesClient
.
services
().
inNamespace
(
namespace
).
create
(
redisService
);
}
}
public
Service
createRedis5Service
(
String
namespace
)
{
Service
redisService
=
new
Service
();
ObjectMeta
objectMeta
=
buildObjectMeta
(
namespace
,
"redis5"
,
"base"
);
ServiceSpec
serviceSpec
=
new
ServiceSpec
();
// 设置spec
List
<
ServicePort
>
portList
=
new
ArrayList
<>();
ServicePort
servicePort1
=
new
ServicePort
();
ServicePort
servicePort2
=
new
ServicePort
();
ServicePort
servicePort3
=
new
ServicePort
();
ServicePort
servicePort4
=
new
ServicePort
();
ServicePort
servicePort5
=
new
ServicePort
();
servicePort1
.
setName
(
"6379"
);
servicePort1
.
setPort
(
6379
);
servicePort2
.
setName
(
"6380"
);
servicePort2
.
setPort
(
6380
);
servicePort3
.
setName
(
"6381"
);
servicePort3
.
setPort
(
6381
);
servicePort4
.
setName
(
"6382"
);
servicePort4
.
setPort
(
6382
);
servicePort5
.
setName
(
"6383"
);
servicePort5
.
setPort
(
6383
);
portList
.
add
(
servicePort1
);
portList
.
add
(
servicePort2
);
portList
.
add
(
servicePort3
);
portList
.
add
(
servicePort4
);
portList
.
add
(
servicePort5
);
Map
<
String
,
String
>
selector
=
new
HashMap
<>();
selector
.
put
(
"qcloud-app"
,
"redis5"
);
// 设置serviceSpec
serviceSpec
.
setType
(
"NodePort"
);
serviceSpec
.
setPorts
(
portList
);
serviceSpec
.
setSelector
(
selector
);
// 设置service
redisService
.
setApiVersion
(
"v1"
);
redisService
.
setKind
(
"Service"
);
redisService
.
setMetadata
(
objectMeta
);
redisService
.
setSpec
(
serviceSpec
);
log
.
info
(
"开始创建redis5 Service: {}"
,
redisService
.
toString
());
return
kubernetesClient
.
services
().
inNamespace
(
namespace
).
create
(
redisService
);
}
/**
/**
* 创建redis container
* 创建redis container
*
*
...
@@ -1174,6 +1221,82 @@ public class K8sService {
...
@@ -1174,6 +1221,82 @@ public class K8sService {
return
kubernetesClient
.
apps
().
deployments
().
inNamespace
(
namespace
).
create
(
redisSentinelDeployment
);
return
kubernetesClient
.
apps
().
deployments
().
inNamespace
(
namespace
).
create
(
redisSentinelDeployment
);
}
}
/**
* 创建redis5 deployment
*
* @param namespace
* @param image
* @return
*/
public
Deployment
createRedis5Deployment
(
String
namespace
,
String
image
)
{
Deployment
redisDeployment
=
new
Deployment
();
// 设置meta
ObjectMeta
objectMeta
=
buildObjectMeta
(
namespace
,
"redis5"
,
"base"
);
// 设置spec
DeploymentSpec
deploymentSpec
=
new
DeploymentSpec
();
// 设置labelSelector
LabelSelector
labelSelector
=
new
LabelSelector
();
Map
<
String
,
String
>
matchLabels
=
new
HashMap
<>();
matchLabels
.
put
(
"qcloud-app"
,
"redis5"
);
labelSelector
.
setMatchLabels
(
matchLabels
);
// 设置strategy
DeploymentStrategy
deploymentStrategy
=
new
DeploymentStrategy
();
deploymentStrategy
.
setType
(
"Recreate"
);
// 设置pod Template
PodTemplateSpec
podTemplateSpec
=
new
PodTemplateSpec
();
PodSpec
podSpec
=
new
PodSpec
();
List
<
Container
>
containerList
=
new
ArrayList
<>();
Container
container1
=
createRedisContainer
(
image
,
"6379"
);
Container
container2
=
createRedisContainer
(
image
,
"6380"
);
Container
container3
=
createRedisContainer
(
image
,
"6381"
);
Container
container4
=
createRedisContainer
(
image
,
"6382"
);
Container
container5
=
createRedisContainer
(
image
,
"6383"
);
containerList
.
add
(
container1
);
containerList
.
add
(
container2
);
containerList
.
add
(
container3
);
containerList
.
add
(
container4
);
containerList
.
add
(
container5
);
// imagePullSecrets
List
<
LocalObjectReference
>
imagePullSecrets
=
buildImagePullSecrets
();
podSpec
.
setContainers
(
containerList
);
podSpec
.
setDnsPolicy
(
"ClusterFirst"
);
podSpec
.
setImagePullSecrets
(
imagePullSecrets
);
podSpec
.
setRestartPolicy
(
"Always"
);
podSpec
.
setTerminationGracePeriodSeconds
(
30L
);
// 设置PodTemplateSpec
podTemplateSpec
.
setMetadata
(
objectMeta
);
podTemplateSpec
.
setSpec
(
podSpec
);
// 设置Deployment Spec
deploymentSpec
.
setReplicas
(
1
);
deploymentSpec
.
setRevisionHistoryLimit
(
1
);
deploymentSpec
.
setStrategy
(
deploymentStrategy
);
deploymentSpec
.
setTemplate
(
podTemplateSpec
);
deploymentSpec
.
setSelector
(
labelSelector
);
DeploymentStatus
deploymentStatus
=
new
DeploymentStatus
();
// deployment设置
redisDeployment
.
setApiVersion
(
"apps/v1"
);
redisDeployment
.
setKind
(
"Deployment"
);
redisDeployment
.
setMetadata
(
objectMeta
);
redisDeployment
.
setSpec
(
deploymentSpec
);
redisDeployment
.
setStatus
(
deploymentStatus
);
log
.
info
(
"创建redis5 Deployment:{}"
,
redisDeployment
);
return
kubernetesClient
.
apps
().
deployments
().
inNamespace
(
namespace
).
create
(
redisDeployment
);
}
/**
/**
* redis哨兵模式 Service
* redis哨兵模式 Service
* @param namespace
* @param namespace
...
...
src/main/java/cn/qg/holmes/utils/DingdingUtils.java
View file @
44f52017
...
@@ -317,8 +317,13 @@ public class DingdingUtils {
...
@@ -317,8 +317,13 @@ public class DingdingUtils {
public
static
String
buildDailyProdBugNotifyMsg
(
Iterable
<
Issue
>
issues
)
{
public
static
String
buildDailyProdBugNotifyMsg
(
Iterable
<
Issue
>
issues
)
{
String
title
=
"线上未解决工单统计"
;
String
title
=
"线上未解决工单统计"
;
String
content
=
"📣线上未解决工单统计:"
+
"\n\n"
;
String
content
=
"📣线上未解决工单统计:"
+
"\n\n"
;
int
count
=
0
;
List
<
Issue
>
issueList
=
new
ArrayList
<>()
;
for
(
Issue
issue:
issues
)
{
for
(
Issue
issue:
issues
)
{
issueList
.
add
(
issue
);
}
if
(
issueList
.
size
()
>
0
)
{
int
count
=
0
;
for
(
Issue
issue:
issueList
)
{
count
=
count
+
1
;
count
=
count
+
1
;
String
issueUrl
=
"http://jira2.quantgroup.cn/browse/"
+
issue
.
getKey
();
String
issueUrl
=
"http://jira2.quantgroup.cn/browse/"
+
issue
.
getKey
();
content
=
content
+
count
+
"、["
+
issue
.
getSummary
().
replace
(
"\""
,
""
)
+
"]("
+
issueUrl
+
")\n"
;
content
=
content
+
count
+
"、["
+
issue
.
getSummary
().
replace
(
"\""
,
""
)
+
"]("
+
issueUrl
+
")\n"
;
...
@@ -337,6 +342,10 @@ public class DingdingUtils {
...
@@ -337,6 +342,10 @@ public class DingdingUtils {
content
+=
"- 持续时间:"
+
duration
+
"小时\n\n"
;
content
+=
"- 持续时间:"
+
duration
+
"小时\n\n"
;
}
}
content
+=
"**截止当前,共有"
+
String
.
valueOf
(
count
)
+
"个工单未解决,请对应经办人尽快跟进解决**"
;
content
+=
"**截止当前,共有"
+
String
.
valueOf
(
count
)
+
"个工单未解决,请对应经办人尽快跟进解决**"
;
}
if
(
issueList
.
size
()
==
0
)
{
content
+=
"**截止当前,所有工单都已经解决完毕,产研小伙伴最给力了👍🏻**"
;
}
return
buildMarkdownMsg
(
title
,
content
,
true
);
return
buildMarkdownMsg
(
title
,
content
,
true
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment