Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tke-eos
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
tke-eos
Commits
60464d13
Commit
60464d13
authored
May 16, 2019
by
智勇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
暂存
parent
adce3387
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
119 additions
and
13 deletions
+119
-13
service.js
app/service.js
+11
-8
service.js
kubeService/service.js
+27
-0
index.js
yamls/index.js
+7
-0
mysql.yaml
yamls/mysql.yaml
+31
-5
ui.yaml
yamls/ui.yaml
+43
-0
No files found.
app/service.js
View file @
60464d13
...
...
@@ -6,8 +6,8 @@ const logger = require('koa-log4').getLogger()
const
templates
=
require
(
'
../serviceTemplate
'
)
const
lruCache
=
require
(
'
../services/lruCache.service
'
)
const
{
ingressCreate
,
ingressDelete
}
=
require
(
'
../kubeService/ingress
'
)
const
{
p
odGet
}
=
require
(
'
../kubeService/service
'
)
const
{
projectConfig
,
defaultConfig
}
=
require
(
'
../serviceTemplate/resourceLimit
'
)
const
{
p
rojectConfig
,
defaultConfig
}
=
require
(
'
../serviceTemplate/resourceLimit
'
)
const
{
podGet
,
serviceCreate
}
=
require
(
'
../kubeService/service
'
)
const
router
=
new
Router
()
module
.
exports
=
router
...
...
@@ -50,6 +50,11 @@ const createService = async (ctx) => {
type
,
serviceName
,
namespace
,
image
,
system_name
,
domain
,
label
,
}
=
ctx
.
request
.
body
logger
.
info
(
'
创建服务
'
,
ctx
.
request
.
body
)
if
(
serviceName
===
'
mysql
'
)
{
serviceCreate
(
namespace
,
serviceName
,
image
)
ctx
.
body
=
ctx
.
ok
(
'
创建成功
'
)
return
}
const
data
=
{
serviceName
,
namespace
,
...
...
@@ -62,7 +67,7 @@ const createService = async (ctx) => {
}
// 资源限制
le
t
resources
=
projectConfig
[
data
.
system_name
]
||
defaultConfig
[
type
]
cons
t
resources
=
projectConfig
[
data
.
system_name
]
||
defaultConfig
[
type
]
logger
.
info
(
'
资源限制
'
,
JSON
.
stringify
(
resources
))
data
.
resources
=
resources
...
...
@@ -76,10 +81,8 @@ const createService = async (ctx) => {
// todo: 放开限制,暂时只更新了clotho的镜像
// java项目的就绪检查需要定制
if
(
type
===
'
java
'
&&
data
.
system_name
!==
'
clotho
'
)
{
params
=
_
.
omitBy
(
params
,
function
(
value
,
key
)
{
return
key
.
indexOf
(
'
healthCheck
'
)
!==
-
1
})
if
(
type
===
'
java
'
&&
data
.
system_name
!==
'
clotho
'
)
{
params
=
_
.
omitBy
(
params
,
(
value
,
key
)
=>
key
.
indexOf
(
'
healthCheck
'
)
!==
-
1
)
}
logger
.
info
(
params
)
...
...
@@ -112,7 +115,7 @@ router.post('/details', async (ctx) => {
router
.
post
(
'
/delete
'
,
async
(
ctx
)
=>
{
await
ctx
.
cluster
.
service_delete
(
ctx
.
request
.
body
.
serviceName
,
ctx
.
request
.
body
.
namespace
)
if
(
ctx
.
request
.
body
.
serviceName
===
'
xyqb-user2
'
)
{
await
ingressDelete
(
ctx
.
request
.
body
.
namespace
,
'
xyqb-user2-2
'
)
await
ingressDelete
(
ctx
.
request
.
body
.
namespace
,
'
xyqb-user2-2
'
)
}
await
ingressDelete
(
ctx
.
request
.
body
.
namespace
,
ctx
.
request
.
body
.
serviceName
)
ctx
.
body
=
ctx
.
ok
(
'
删除成功
'
)
...
...
kubeService/service.js
View file @
60464d13
const
path
=
require
(
'
path
'
)
const
Client
=
require
(
'
kubernetes-client
'
).
Client
const
config
=
require
(
'
kubernetes-client
'
).
config
const
_
=
require
(
'
lodash
'
)
const
YAML
=
require
(
'
yamljs
'
);
const
yamls
=
require
(
'
../yamls
'
)
const
client
=
new
Client
({
config
:
config
.
fromKubeconfig
(
...
...
@@ -12,7 +15,31 @@ const client = new Client({
const
serviceGet
=
async
(
namespace
,
serviceName
)
=>
client
.
api
.
v1
.
namespaces
(
namespace
).
services
(
serviceName
).
get
()
const
podGet
=
async
namespace
=>
client
.
api
.
v1
.
namespaces
(
namespace
).
pods
.
get
()
const
serviceCreate
=
async
(
namespace
,
serviceName
,
image
)
=>
{
const
data
=
{
namespace
,
app
:
serviceName
,
image
,
}
const
yamlManifest
=
yamls
[
serviceName
].
replace
(
/{{
([
A-Za-z0-9_
\.]
+
)
}}/g
,
function
()
{
if
(
_
.
get
(
data
,
arguments
[
1
],
null
)
===
null
)
{
throw
new
Error
(
`缺少模板所需变量:
${
arguments
[
1
]}
`
)
}
return
_
.
get
(
data
,
arguments
[
1
])
})
const
nativeObject
=
YAML
.
load
(
yamlManifest
);
// console.log(1, nativeObject)
const
jsonstr
=
JSON
.
stringify
(
nativeObject
);
const
jsonTemp
=
JSON
.
parse
(
jsonstr
,
null
);
// jsonstr = JSON.parse(jsonstr, null);
client
.
api
.
v1
.
namespaces
(
namespace
).
services
.
post
({
body
:
jsonTemp
})
}
module
.
exports
=
{
serviceGet
,
podGet
,
serviceCreate
,
}
yamls/index.js
0 → 100644
View file @
60464d13
const
fs
=
require
(
'
fs
'
)
const
mysql
=
fs
.
readFileSync
(
'
yamls/mysql.yaml
'
,
'
utf8
'
)
module
.
exports
=
{
mysql
,
}
yamls/mysql.yaml
View file @
60464d13
kind
:
PersistentVolumeClaim
apiVersion
:
v1
metadata
:
name
:
{{
app
}}
namespace
:
{{
namespace
}}
spec
:
storageClassName
:
cbs
accessModes
:
-
ReadWriteOnce
resources
:
requests
:
storage
:
20Gi
---
apiVersion
:
extensions/v1beta1
kind
:
Deployment
metadata
:
...
...
@@ -29,10 +44,22 @@ spec:
limits
:
memory
:
1024Mi
cpu
:
500m
securityContext
:
privileged
:
false
terminationMessagePath
:
/dev/termination-log
dnsPolicy
:
ClusterFirst
env
:
-
name
:
MYSQL_DATABASE
value
:
db
-
name
:
MYSQL_PASSWORD
value
:
qatest
-
name
:
MYSQL_ROOT_PASSWORD
value
:
Quantgroup2017
-
name
:
MYSQL_USER
value
:
qa
volumeMounts
:
-
mountPath
:
"
/data/mysql"
name
:
mysql
volumes
:
-
name
:
mysql
persistentVolumeClaim
:
claimName
:
pvc-mysql-default
imagePullSecrets
:
-
name
:
qcloudregistrykey
-
name
:
tencenthubkey
...
...
@@ -59,4 +86,3 @@ spec:
targetPort
:
3306
selector
:
qcloud-app
:
{{
app
}}
yamls/ui.yaml
0 → 100644
View file @
60464d13
apiVersion
:
extensions/v1beta1
kind
:
Deployment
metadata
:
name
:
{{
app
}}
namespace
:
{{
namespace
}}
labels
:
qcloud-app
:
{{
app
}}
spec
:
replicas
:
1
selector
:
matchLabels
:
qcloud-app
:
{{
app
}}
strategy
:
type
:
Recreate
template
:
metadata
:
labels
:
qcloud-app
:
{{
app
}}
spec
:
revisionHistoryLimit
:
2
containers
:
-
image
:
ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy
:
Always
name
:
{{
app
}}
resources
:
requests
:
memory
:
64Mi
limits
:
memory
:
256Mi
securityContext
:
privileged
:
false
terminationMessagePath
:
/dev/termination-log
-
name
:
NAMESPACE
valueFrom
:
fieldRef
:
fieldPath
:
metadata.namespace
ports
:
-
containerPort
:
80
restartPolicy
:
Always
dnsPolicy
:
ClusterFirst
volumes
:
-
name
:
logs-vol
emptyDir
:
{}
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