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
45eff20d
Commit
45eff20d
authored
Oct 31, 2019
by
智勇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
自动部署master
parent
e7a773fe
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
172 additions
and
162 deletions
+172
-162
dailySyncDB.js
app/dailySyncDB.js
+60
-0
index.js
app/index.js
+2
-0
namespace.js
app/namespace.js
+0
-64
restartLatest.js
app/restartLatest.js
+32
-11
schedule.js
app/schedule.js
+4
-10
service.js
app/service.js
+7
-30
index.js
middleware/client/index.js
+5
-29
getClient.js
resource/getClient.js
+28
-3
makeResouce.js
resource/makeResouce.js
+18
-0
resourceLimit.js
resource/resourceLimit.js
+15
-15
awaitRequest.js
utils/awaitRequest.js
+1
-0
No files found.
app/dailySyncDB.js
0 → 100644
View file @
45eff20d
const
schedule
=
require
(
'
node-schedule
'
)
const
sleep
=
require
(
'
sleep
'
)
const
logger
=
require
(
'
koa-log4
'
).
getLogger
(
'
dailySyncDB
'
)
const
{
getServicesFormat
,
getAllNamespace
,
}
=
require
(
'
../kubeService/service
'
)
const
getClient
=
require
(
'
../resource/getClient
'
)
const
awaitRequest
=
require
(
'
../utils/awaitRequest
'
)
const
syncDB
=
async
(
cluster
)
=>
{
logger
.
info
(
'
dailySyncDB start
'
)
const
client
=
(
await
getClient
(
cluster
)).
clientInfo
const
ns
=
await
getAllNamespace
(
client
)
// for test
const
testNamespace
=
[
'
fis
'
,
'
arch
'
]
const
nsTest
=
ns
.
namespaces
&&
ns
.
namespaces
.
filter
(
item
=>
testNamespace
.
includes
(
item
.
name
))
for
(
const
namespace
of
nsTest
)
{
// for (const namespace of ns.namespaces) {
const
svcs
=
await
getServicesFormat
(
client
,
namespace
.
name
)
for
(
const
svc
of
svcs
)
{
if
(
svc
.
serviceName
===
'
mysql
'
)
{
const
data
=
{
dbname
:
'
all(no_mall)
'
,
mysqlName
:
'
mysql
'
,
namespace
:
namespace
.
name
,
not_delete_business_data
:
true
,
use_cache
:
true
,
}
const
res
=
await
awaitRequest
({
url
:
'
http://qaapi.liangkebang.com/dbsync/tke
'
,
method
:
'
post
'
,
body
:
JSON
.
stringify
(
data
),
})
if
(
JSON
.
parse
(
res
.
body
).
code
===
'
0000
'
)
{
logger
.
info
(
'
开始同步ns:
'
,
namespace
.
name
)
}
else
{
logger
.
info
(
'
同步ns失败:
'
,
namespace
.
name
,
JSON
.
parse
(
res
.
body
).
data
)
}
sleep
.
msleep
(
2
*
1000
)
break
}
}
}
logger
.
info
(
'
dailySyncDB end
'
)
}
module
.
exports
=
()
=>
{
schedule
.
scheduleJob
(
'
*/2 * * * *
'
,
async
()
=>
{
// schedule.scheduleJob('0 2 * * *', async () => {
try
{
await
syncDB
(
'
qa
'
)
}
catch
(
e
)
{
logger
.
info
(
'
dailySyncDB
'
,
e
)
}
});
}
app/index.js
View file @
45eff20d
...
@@ -15,6 +15,7 @@ const tag = require('./tag')
...
@@ -15,6 +15,7 @@ const tag = require('./tag')
const
cluster
=
require
(
'
./cluster
'
)
const
cluster
=
require
(
'
./cluster
'
)
const
ingressRoute
=
require
(
'
./ingress
'
)
const
ingressRoute
=
require
(
'
./ingress
'
)
const
deploy
=
require
(
'
./restartLatest
'
)
const
deploy
=
require
(
'
./restartLatest
'
)
// const dailySyncDB = require('./dailySyncDB')
const
client
=
require
(
'
../middleware/client
'
)
const
client
=
require
(
'
../middleware/client
'
)
const
logFormat
=
'
:req[x-real-ip] :req[x-forwarded-for] - -
'
const
logFormat
=
'
:req[x-real-ip] :req[x-forwarded-for] - -
'
...
@@ -58,6 +59,7 @@ exports.start = function (port) {
...
@@ -58,6 +59,7 @@ exports.start = function (port) {
// 加载所有路由
// 加载所有路由
loadRoutes
(
router
)
loadRoutes
(
router
)
deploy
()
deploy
()
// dailySyncDB()
app
.
use
(
log4js
.
koaLogger
(
log4js
.
getLogger
(
'
http
'
),
{
level
:
'
auto
'
,
format
:
logFormat
}))
app
.
use
(
log4js
.
koaLogger
(
log4js
.
getLogger
(
'
http
'
),
{
level
:
'
auto
'
,
format
:
logFormat
}))
app
.
use
(
router
.
routes
())
app
.
use
(
router
.
routes
())
app
.
listen
(
port
)
app
.
listen
(
port
)
...
...
app/namespace.js
View file @
45eff20d
...
@@ -31,70 +31,6 @@ router.post('/create', async (ctx) => {
...
@@ -31,70 +31,6 @@ router.post('/create', async (ctx) => {
ctx
.
body
=
ctx
.
ok
()
ctx
.
body
=
ctx
.
ok
()
})
})
// const IMAGES = {
// zookeeper: 'zookeeper:3.4.10',
// rabbitmq: 'rabbitmq:3.6-management',
// mysql: 'mysql:5.7',
// redis: 'ccr.ccs.tencentyun.com/qa-db/redis:v4',
// }
//
// router.post('/init', async (ctx) => {
// const body = ctx.request.body
// await ctx.cluster.namespace_create(body.namespace)
// await ctx.cluster.ingress_create(body.namespace)
//
// async function serviceCreate(element, index) {
// if (index !== 'common') {
// const data = {
// namespace: body.namespace,
// image: `ccr.ccs.tencentyun.com/qa-${index}/${element}:latest`,
// type: index,
// serviceName: element,
// system_name: element,
// }
// const template = templates[index].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
// if (data[arguments[1]] === undefined) {
// throw new Error('缺少模板所需变量')
// }
// return data[arguments[1]]
// })
// const params = yaml.load(template)
// await ctx.cluster.service_create(params, index)
// }
// if (index === 'common') {
// const data = {
// namespace: body.namespace,
// image: IMAGES[element],
// }
// const template = templates[element].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
// if (data[arguments[1]] === undefined) {
// throw new Error('缺少模板所需变量')
// }
// return data[arguments[1]]
// })
// const params = yaml.load(template)
// await ctx.cluster.service_create(params)
// }
// }
//
// for (const index in body.systems) {
// if ({}.hasOwnProperty.call(body.systems, index)) {
// for (const item in body.systems[index]) {
// if ({}.hasOwnProperty.call(body.systems[index], item)) {
// serviceCreate(body.systems[index][item], index)
// }
// }
// }
// }
//
// ctx.body = ctx.ok('正在创建')
// })
//
// router.post('/delete', async (ctx) => {
// await ctx.cluster.namespace_delete(ctx.request.body.name)
// ctx.body = ctx.ok()
// })
//
// function generateUUID() {
// function generateUUID() {
// let d = new Date().getTime();
// let d = new Date().getTime();
// const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
// const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
...
...
app/restartLatest.js
View file @
45eff20d
...
@@ -2,28 +2,28 @@ const schedule = require('node-schedule')
...
@@ -2,28 +2,28 @@ const schedule = require('node-schedule')
const
_
=
require
(
'
lodash
'
)
const
_
=
require
(
'
lodash
'
)
const
sleep
=
require
(
'
sleep
'
)
const
sleep
=
require
(
'
sleep
'
)
const
logger
=
require
(
'
koa-log4
'
).
getLogger
(
'
deployLatest
'
)
const
logger
=
require
(
'
koa-log4
'
).
getLogger
(
'
deployLatest
'
)
const
{
serviceRestart
,
getServicesFormat
,
getAllNamespace
}
=
require
(
'
../kubeService/service
'
)
const
{
serviceRestart
,
getServicesFormat
,
getAllNamespace
,
deployUpdate
,
}
=
require
(
'
../kubeService/service
'
)
const
container
=
require
(
'
../services/tke.containerService
'
).
create
()
const
container
=
require
(
'
../services/tke.containerService
'
).
create
()
const
getClient
=
require
(
'
../resource/getClient
'
)
const
getClient
=
require
(
'
../resource/getClient
'
)
const
makeResouce
=
require
(
'
./../resource/makeResouce
'
)
const
clientNew
=
{}
const
deploy
=
async
(
cluster
)
=>
{
const
deploy
=
async
(
cluster
)
=>
{
if
(
!
clientNew
[
cluster
])
{
clientNew
[
cluster
]
=
await
getClient
(
cluster
)
}
logger
.
info
(
'
deployLatest start
'
)
logger
.
info
(
'
deployLatest start
'
)
const
client
=
(
await
getClient
(
cluster
)).
clientInfo
const
ns
=
await
getAllNamespace
(
client
)
const
ns
=
await
getAllNamespace
(
clientNew
[
cluster
])
// // for test
// for test
// const testNamespace = ['fis']
// const testNamespace = ['fis', 'xyqb2']
// const nsTest = ns.namespaces && ns.namespaces.filter(item => testNamespace.includes(item.name))
// const nsTest = ns.namespaces && ns.namespaces.filter(item => testNamespace.includes(item.name))
// for (const namespace of nsTest) {
// for (const namespace of nsTest) {
for
(
const
namespace
of
ns
.
namespaces
)
{
for
(
const
namespace
of
ns
.
namespaces
)
{
logger
.
info
(
'
开始检查ns:
'
,
namespace
.
name
)
logger
.
info
(
'
开始检查ns:
'
,
namespace
.
name
)
const
svcs
=
await
getServicesFormat
(
client
New
[
cluster
]
,
namespace
.
name
)
const
svcs
=
await
getServicesFormat
(
client
,
namespace
.
name
)
for
(
const
svc
of
svcs
)
{
for
(
const
svc
of
svcs
)
{
// 重启latest
if
(
svc
.
image
.
indexOf
(
'
latest
'
)
!==
-
1
)
{
if
(
svc
.
image
.
indexOf
(
'
latest
'
)
!==
-
1
)
{
logger
.
info
(
'
检查项目
'
,
svc
.
image
)
logger
.
info
(
'
检查项目
'
,
svc
.
image
)
const
repoName
=
svc
.
image
.
split
(
'
:
'
)[
0
].
split
(
'
/
'
).
slice
(
1
).
join
(
'
/
'
)
const
repoName
=
svc
.
image
.
split
(
'
:
'
)[
0
].
split
(
'
/
'
).
slice
(
1
).
join
(
'
/
'
)
...
@@ -31,8 +31,29 @@ const deploy = async (cluster) => {
...
@@ -31,8 +31,29 @@ const deploy = async (cluster) => {
const
latestImageID
=
_
.
get
(
latest
.
tagInfo
,
'
[0].tagId
'
,
''
)
const
latestImageID
=
_
.
get
(
latest
.
tagInfo
,
'
[0].tagId
'
,
''
)
if
(
svc
.
imageID
.
split
(
'
@
'
)[
1
]
!==
latestImageID
)
{
if
(
svc
.
imageID
.
split
(
'
@
'
)[
1
]
!==
latestImageID
)
{
logger
.
info
(
'
latest不一致,部署项目
'
,
namespace
.
name
,
svc
.
podName
)
logger
.
info
(
'
latest不一致,部署项目
'
,
namespace
.
name
,
svc
.
podName
)
await
serviceRestart
(
clientNew
[
cluster
],
namespace
.
name
,
svc
.
podName
)
await
serviceRestart
(
client
,
namespace
.
name
,
svc
.
podName
)
}
sleep
.
msleep
(
1000
)
}
// 把master更新部署成lastet
if
(
svc
.
image
.
indexOf
(
'
:master-
'
)
!==
-
1
)
{
logger
.
info
(
'
将master分支
'
,
svc
.
image
,
'
部署成latest
'
)
const
repoName
=
svc
.
image
.
split
(
'
:
'
)[
0
].
split
(
'
/
'
).
slice
(
1
).
join
(
'
/
'
)
let
mock
if
(
svc
.
labels
.
mock
)
{
mock
=
`'
${
svc
.
labels
.
mock
}
'`
}
const
data
=
{
image
:
`
${
repoName
}
:latest`
,
namespace
:
namespace
.
name
,
serviceName
:
repoName
.
split
(
'
/
'
)[
1
],
type
:
svc
.
labels
.
type
,
label
:
svc
.
labels
.
type
,
mock
,
}
}
const
resources
=
await
makeResouce
(
data
.
serviceName
,
data
.
label
)
data
.
resources
=
resources
await
deployUpdate
(
client
.
clusterInfo
,
client
,
data
)
sleep
.
msleep
(
1000
)
sleep
.
msleep
(
1000
)
}
}
}
}
...
...
app/schedule.js
View file @
45eff20d
...
@@ -6,8 +6,6 @@ const Redis = require('ioredis')
...
@@ -6,8 +6,6 @@ const Redis = require('ioredis')
const
{
podGetstatus
,
getPods
}
=
require
(
'
../kubeService/service
'
)
const
{
podGetstatus
,
getPods
}
=
require
(
'
../kubeService/service
'
)
const
getClient
=
require
(
'
../resource/getClient
'
)
const
getClient
=
require
(
'
../resource/getClient
'
)
const
clientNew
=
{}
const
redis
=
new
Redis
(
6380
,
'
172.30.220.22
'
)
const
redis
=
new
Redis
(
6380
,
'
172.30.220.22
'
)
const
awaitRequest
=
function
(
options
)
{
const
awaitRequest
=
function
(
options
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
...
@@ -89,10 +87,8 @@ const checkRecoverPod = async () => {
...
@@ -89,10 +87,8 @@ const checkRecoverPod = async () => {
const
podname
=
resKeys
[
i
].
split
(
'
#
'
)[
1
]
const
podname
=
resKeys
[
i
].
split
(
'
#
'
)[
1
]
// 获取新的状态
// 获取新的状态
if
(
podname
.
indexOf
(
resKeys
[
i
].
split
(
'
#
'
)[
1
])
>
-
1
)
{
if
(
podname
.
indexOf
(
resKeys
[
i
].
split
(
'
#
'
)[
1
])
>
-
1
)
{
if
(
!
clientNew
.
qa
)
{
const
client
=
(
await
getClient
(
'
qa
'
)).
clientInfo
clientNew
.
qa
=
await
getClient
(
'
qa
'
)
const
Pod
=
await
getPods
(
client
,
namespace
)
}
const
Pod
=
await
getPods
(
clientNew
.
qa
,
namespace
)
Pod
.
body
.
items
.
forEach
(
async
(
item
)
=>
{
Pod
.
body
.
items
.
forEach
(
async
(
item
)
=>
{
if
(
item
.
metadata
.
name
.
indexOf
(
podname
)
>
-
1
)
{
if
(
item
.
metadata
.
name
.
indexOf
(
podname
)
>
-
1
)
{
if
(
item
.
status
.
conditions
.
length
===
3
)
{
if
(
item
.
status
.
conditions
.
length
===
3
)
{
...
@@ -124,10 +120,8 @@ const checkRecoverPod = async () => {
...
@@ -124,10 +120,8 @@ const checkRecoverPod = async () => {
});
});
}
}
const
checkErrorPod
=
async
()
=>
{
const
checkErrorPod
=
async
()
=>
{
if
(
!
clientNew
.
qa
)
{
const
client
=
(
await
getClient
(
'
qa
'
)).
clientInfo
clientNew
.
qa
=
await
getClient
(
'
qa
'
)
const
listPods
=
await
podGetstatus
(
client
)
}
const
listPods
=
await
podGetstatus
(
clientNew
.
qa
)
listPods
.
body
.
items
.
forEach
((
item
)
=>
{
listPods
.
body
.
items
.
forEach
((
item
)
=>
{
const
key
=
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
#
${
item
.
metadata
.
labels
[
'
qcloud-app
'
]}
`
const
key
=
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
#
${
item
.
metadata
.
labels
[
'
qcloud-app
'
]}
`
item
.
status
.
conditions
.
forEach
(
async
(
value
)
=>
{
item
.
status
.
conditions
.
forEach
(
async
(
value
)
=>
{
...
...
app/service.js
View file @
45eff20d
...
@@ -6,7 +6,6 @@ const Redis = require('ioredis')
...
@@ -6,7 +6,6 @@ const Redis = require('ioredis')
const
redis
=
new
Redis
(
6380
,
'
172.30.220.22
'
)
const
redis
=
new
Redis
(
6380
,
'
172.30.220.22
'
)
const
{
ingressCreate
,
ingressDelete
}
=
require
(
'
../kubeService/ingress
'
)
const
{
ingressCreate
,
ingressDelete
}
=
require
(
'
../kubeService/ingress
'
)
const
{
defaultConfig
}
=
require
(
'
../resource/resourceLimit
'
)
const
{
const
{
getPods
,
getPods
,
serviceCreate
,
serviceCreate
,
...
@@ -21,11 +20,10 @@ const {
...
@@ -21,11 +20,10 @@ const {
pvcDelete
,
pvcDelete
,
}
=
require
(
'
../kubeService/service
'
)
}
=
require
(
'
../kubeService/service
'
)
const
getClient
=
require
(
'
./../resource/getClient
'
)
const
getClient
=
require
(
'
./../resource/getClient
'
)
const
awaitRequest
=
require
(
'
../utils/awaitRequest
'
)
const
makeResouce
=
require
(
'
./../resource/makeResouce
'
)
const
router
=
new
Router
()
const
router
=
new
Router
()
module
.
exports
=
router
module
.
exports
=
router
const
clientNew
=
{}
router
.
get
(
'
/
'
,
async
(
ctx
)
=>
{
router
.
get
(
'
/
'
,
async
(
ctx
)
=>
{
const
data
=
await
getServicesFormat
(
ctx
.
client
,
ctx
.
query
.
namespace
)
const
data
=
await
getServicesFormat
(
ctx
.
client
,
ctx
.
query
.
namespace
)
ctx
.
body
=
ctx
.
ok
({
ctx
.
body
=
ctx
.
ok
({
...
@@ -34,22 +32,6 @@ router.get('/', async (ctx) => {
...
@@ -34,22 +32,6 @@ router.get('/', async (ctx) => {
})
})
})
})
// 资源限制
const
makeResouce
=
async
(
serviceName
,
type
)
=>
{
let
resources
=
defaultConfig
[
type
]
const
res
=
await
awaitRequest
({
url
:
`http://127.0.0.1:3003/proconfig/getK8sConf?project_name=
${
serviceName
}
`
,
method
:
'
get
'
,
})
const
mongoResouces
=
JSON
.
parse
(
res
.
body
).
data
if
(
mongoResouces
&&
mongoResouces
.
memLimit
)
{
resources
=
mongoResouces
}
return
resources
}
// // 用于刷 mongo 库
// // 用于刷 mongo 库
// router.get('/insertData', async (ctx) => {
// router.get('/insertData', async (ctx) => {
// const res = await awaitRequest({
// const res = await awaitRequest({
...
@@ -190,12 +172,10 @@ router.get('/listEnvVars', async (ctx) => {
...
@@ -190,12 +172,10 @@ router.get('/listEnvVars', async (ctx) => {
namespace
=
parmars
.
split
(
'
@
'
)[
0
];
namespace
=
parmars
.
split
(
'
@
'
)[
0
];
cluster
=
parmars
.
split
(
'
@
'
)[
1
]
cluster
=
parmars
.
split
(
'
@
'
)[
1
]
}
}
if
(
!
clientNew
[
cluster
])
{
const
client
=
(
await
getClient
(
cluster
)).
clientInfo
clientNew
[
cluster
]
=
await
getClient
(
cluster
)
}
const
res
=
await
Promise
.
all
([
const
res
=
await
Promise
.
all
([
getPods
(
client
New
[
cluster
]
,
namespace
),
getPods
(
client
,
namespace
),
getServices
(
client
New
[
cluster
]
,
namespace
),
getServices
(
client
,
namespace
),
])
])
res
[
0
].
body
.
items
.
forEach
(
async
(
item
)
=>
{
res
[
0
].
body
.
items
.
forEach
(
async
(
item
)
=>
{
...
@@ -225,7 +205,6 @@ router.get('/listEnvVars', async (ctx) => {
...
@@ -225,7 +205,6 @@ router.get('/listEnvVars', async (ctx) => {
})
})
// for container
// for container
router
.
get
(
'
/listEnvVarsNew
'
,
async
(
ctx
)
=>
{
router
.
get
(
'
/listEnvVarsNew
'
,
async
(
ctx
)
=>
{
const
envVars
=
{}
const
envVars
=
{}
let
cluster
;
let
cluster
;
...
@@ -238,12 +217,10 @@ router.get('/listEnvVarsNew', async (ctx) => {
...
@@ -238,12 +217,10 @@ router.get('/listEnvVarsNew', async (ctx) => {
namespace
=
parmars
.
split
(
'
@
'
)[
0
];
namespace
=
parmars
.
split
(
'
@
'
)[
0
];
cluster
=
parmars
.
split
(
'
@
'
)[
1
]
cluster
=
parmars
.
split
(
'
@
'
)[
1
]
}
}
if
(
!
clientNew
[
cluster
])
{
const
client
=
(
await
getClient
(
cluster
)).
clientInfo
clientNew
[
cluster
]
=
await
getClient
(
cluster
)
}
const
res
=
await
Promise
.
all
([
const
res
=
await
Promise
.
all
([
getPods
(
client
New
[
cluster
]
,
namespace
),
getPods
(
client
,
namespace
),
getServices
(
client
New
[
cluster
]
,
namespace
),
getServices
(
client
,
namespace
),
])
])
res
[
0
].
body
.
items
.
forEach
(
async
(
item
)
=>
{
res
[
0
].
body
.
items
.
forEach
(
async
(
item
)
=>
{
...
...
middleware/client/index.js
View file @
45eff20d
const
Client
=
require
(
'
kubernetes-client
'
).
Client
const
getClient
=
require
(
'
../../resource/getClient
'
)
const
config
=
require
(
'
kubernetes-client
'
).
config
const
awaitRequest
=
require
(
'
../../utils/awaitRequest
'
)
module
.
exports
=
function
client
()
{
module
.
exports
=
function
client
()
{
const
client
=
{}
const
domain
=
{}
return
async
function
(
ctx
,
next
)
{
return
async
function
(
ctx
,
next
)
{
const
exclude
=
[
const
exclude
=
[
'
/service/listEnvVarsNew
'
,
'
/service/listEnvVarsNew
'
,
'
/service/listEnvVars
'
,
'
/service/listEnvVars
'
,
'
/service/
insertData
'
,
'
/service/
test
'
,
'
/cluster
'
,
'
/cluster
'
,
'
/repository
'
,
'
/repository
'
,
'
/repository/getTags
'
,
'
/repository/getTags
'
,
...
@@ -19,29 +15,9 @@ module.exports = function client() {
...
@@ -19,29 +15,9 @@ module.exports = function client() {
await
next
()
await
next
()
}
else
{
}
else
{
const
cluster
=
ctx
.
request
.
headers
.
cluster
const
cluster
=
ctx
.
request
.
headers
.
cluster
if
(
!
client
[
cluster
])
{
const
client
=
await
getClient
(
cluster
)
// 请求qa-api
ctx
.
client
=
client
.
clientInfo
const
res
=
await
awaitRequest
({
ctx
.
cluterParams
=
client
.
clusterInfo
url
:
`http://qaapi.liangkebang.com/cluster/list?clusterName=
${
cluster
}
`
,
method
:
'
get
'
,
})
const
ca
=
JSON
.
parse
(
res
.
body
).
data
[
0
]
client
[
cluster
]
=
new
Client
({
config
:
config
.
fromKubeconfig
(
ca
.
clusterCA
),
version
:
'
1.10
'
,
})
let
hosts
=
''
ca
.
hosts
.
forEach
((
item
)
=>
{
hosts
+=
`
${
item
.
value
}
&`
})
domain
[
`
${
cluster
}
domain`
]
=
{
clusterDomain
:
ca
.
clusterDomain
,
cluster
:
ca
.
clusterName
,
hosts
,
}
}
ctx
.
client
=
client
[
cluster
]
ctx
.
cluterParams
=
domain
[
`
${
cluster
}
domain`
]
await
next
()
await
next
()
}
}
}
}
...
...
resource/getClient.js
View file @
45eff20d
...
@@ -2,14 +2,39 @@ const Client = require('kubernetes-client').Client
...
@@ -2,14 +2,39 @@ const Client = require('kubernetes-client').Client
const
config
=
require
(
'
kubernetes-client
'
).
config
const
config
=
require
(
'
kubernetes-client
'
).
config
const
awaitRequest
=
require
(
'
../utils/awaitRequest
'
)
const
awaitRequest
=
require
(
'
../utils/awaitRequest
'
)
module
.
exports
=
async
function
getClient
(
cluster
)
{
const
getClient
=
async
function
(
cluster
)
{
const
res
=
await
awaitRequest
({
const
res
=
await
awaitRequest
({
url
:
`http://
127.0.0.1:3003
/cluster/list?clusterName=
${
cluster
}
`
,
url
:
`http://
qaapi.liangkebang.com
/cluster/list?clusterName=
${
cluster
}
`
,
method
:
'
get
'
,
method
:
'
get
'
,
})
})
const
ca
=
JSON
.
parse
(
res
.
body
).
data
[
0
]
const
ca
=
JSON
.
parse
(
res
.
body
).
data
[
0
]
return
new
Client
({
const
clientInfo
=
new
Client
({
config
:
config
.
fromKubeconfig
(
ca
.
clusterCA
),
config
:
config
.
fromKubeconfig
(
ca
.
clusterCA
),
version
:
'
1.10
'
,
version
:
'
1.10
'
,
})
})
let
hosts
=
''
ca
.
hosts
.
forEach
((
item
)
=>
{
hosts
+=
`
${
item
.
value
}
&`
})
const
clusterInfo
=
{
clusterDomain
:
ca
.
clusterDomain
,
cluster
:
ca
.
clusterName
,
hosts
,
}
return
{
clientInfo
,
clusterInfo
,
}
}
const
client
=
{}
module
.
exports
=
async
function
(
cluster
)
{
if
(
!
client
[
cluster
])
{
client
[
cluster
]
=
await
getClient
(
cluster
)
}
return
client
[
cluster
]
}
}
resource/makeResouce.js
0 → 100644
View file @
45eff20d
const
{
defaultConfig
}
=
require
(
'
../resource/resourceLimit
'
)
const
awaitRequest
=
require
(
'
../utils/awaitRequest
'
)
// 资源限制
module
.
exports
=
async
(
serviceName
,
type
)
=>
{
let
resources
=
defaultConfig
[
type
]
const
res
=
await
awaitRequest
({
url
:
`http://qaapi.liangkebang.com/proconfig/getK8sConf?project_name=
${
serviceName
}
`
,
method
:
'
get
'
,
})
const
mongoResouces
=
JSON
.
parse
(
res
.
body
).
data
if
(
mongoResouces
&&
mongoResouces
.
memLimit
)
{
resources
=
mongoResouces
}
return
resources
}
resource/resourceLimit.js
View file @
45eff20d
...
@@ -43,31 +43,31 @@ const defaultRedis = {
...
@@ -43,31 +43,31 @@ const defaultRedis = {
}
}
const
defaultUI
=
{
const
defaultUI
=
{
cpuLimit
:
10
,
cpuRequest
:
10
,
cpuRequest
:
100
,
cpuLimit
:
100
,
memLimit
:
50
,
memRequest
:
50
,
memRequest
:
50
,
memLimit
:
50
,
}
}
const
defaultNodejs
=
{
const
defaultNodejs
=
{
cpu
Limi
t
:
20
,
cpu
Reques
t
:
20
,
cpu
Reques
t
:
200
,
cpu
Limi
t
:
200
,
mem
Limi
t
:
200
,
mem
Reques
t
:
200
,
mem
Reques
t
:
240
,
mem
Limi
t
:
240
,
}
}
const
defaultPython
=
{
const
defaultPython
=
{
cpu
Limi
t
:
20
,
cpu
Reques
t
:
20
,
cpu
Reques
t
:
200
,
cpu
Limi
t
:
200
,
mem
Limi
t
:
200
,
mem
Reques
t
:
200
,
mem
Reques
t
:
240
,
mem
Limi
t
:
240
,
}
}
const
defaultJava
=
{
const
defaultJava
=
{
cpu
Limi
t
:
100
,
cpu
Reques
t
:
100
,
cpu
Reques
t
:
1000
,
cpu
Limi
t
:
1000
,
mem
Limi
t
:
500
,
mem
Reques
t
:
500
,
mem
Reques
t
:
600
,
mem
Limi
t
:
600
,
}
}
exports
.
defaultConfig
=
{
exports
.
defaultConfig
=
{
...
...
utils/awaitRequest
→
utils/awaitRequest
.js
View file @
45eff20d
...
@@ -5,6 +5,7 @@ module.exports = function (options) {
...
@@ -5,6 +5,7 @@ module.exports = function (options) {
request
(
Object
.
assign
(
options
,
{
request
(
Object
.
assign
(
options
,
{
headers
:
{
headers
:
{
'
Content-Type
'
:
'
application/json;charset=utf-8
'
,
'
Content-Type
'
:
'
application/json;charset=utf-8
'
,
cluster
:
'
qa
'
,
},
},
}),
(
error
,
res
)
=>
{
}),
(
error
,
res
)
=>
{
if
(
error
)
{
if
(
error
)
{
...
...
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