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
c3656c97
Commit
c3656c97
authored
Feb 28, 2022
by
黎博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增redis5
parent
0d6c24f0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
129 additions
and
2 deletions
+129
-2
K8sController.java
src/main/java/cn/qg/holmes/controller/k8s/K8sController.java
+6
-2
K8sService.java
src/main/java/cn/qg/holmes/service/k8s/K8sService.java
+123
-0
No files found.
src/main/java/cn/qg/holmes/controller/k8s/K8sController.java
View file @
c3656c97
...
...
@@ -129,9 +129,11 @@ public class K8sController {
k8sService
.
createMysqlService
(
namespace
);
break
;
case
"redis"
:
case
"redis5"
:
k8sService
.
createRedisService
(
namespace
);
break
;
case
"redis5"
:
k8sService
.
createRedis5Service
(
namespace
);
break
;
case
"redis-sentinel"
:
k8sService
.
createRedisSentinelService
(
namespace
);
break
;
...
...
@@ -174,9 +176,11 @@ public class K8sController {
k8sService
.
deleteNamespaceCache
();
break
;
case
"redis"
:
case
"redis5"
:
k8sService
.
createRedisDeployment
(
namespace
,
image
);
break
;
case
"redis5"
:
k8sService
.
createRedis5Deployment
(
namespace
,
image
);
break
;
case
"redis-sentinel"
:
k8sService
.
createRedisSentinelDeployment
(
namespace
,
image
);
break
;
...
...
src/main/java/cn/qg/holmes/service/k8s/K8sService.java
View file @
c3656c97
...
...
@@ -991,6 +991,53 @@ public class K8sService {
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
*
...
...
@@ -1174,6 +1221,82 @@ public class K8sService {
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
* @param namespace
...
...
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