Commit 92b2c389 authored by xuezj's avatar xuezj

增加rabbitmq

parent 8bb13b47
const Router = require('koa-router')
const bodyParser = require('koa-bodyparser');
const yaml = require('js-yaml')
const templates = require('../serviceTemplate')
const client = require('../services/tke.service').create({
secretId: 'AKID4rY7wwNphsUcaFsy1pRtKhQvDj4CA3Ac',
secretKey: 'YBduRnjgVRGzmagZJbss3Vo58wWCyhgc',
clusterId: 'cls-acfx4pvj',
region: 'ap-beijing'
})
const TYPES = ['rabbitmq']
const IMAGES = {
rabbitmq: ['rabbitmq:3.6-management']
}
const router = new Router();
module.exports = router
router.use(async (ctx, next) => {
ctx.k8s = client
await next()
}, bodyParser())
router.post('/rabbitmq/create', async ctx => {
try {
let svc = await client.service_get(serviceName, namespace)
if (svc) {
return ctx.body = ctx.fail('服务已经存在')
}
} catch (e) {
}
let data = {
namespace: ctx.request.body.namespace,
image: IMAGES.rabbitmq[0]
}
let template = templates['rabbitmq'].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
let params = yaml.load(template)
console.log(params)
await client.service_create(params)
ctx.body = ctx.ok('创建成功')
})
router.post('/rabbitmq/delete', async ctx => {
await client.service_delete('rabbitmq', ctx.request.body.namespace)
ctx.body = ctx.ok('删除成功')
})
...@@ -6,6 +6,7 @@ const result = require('../middleware/result') ...@@ -6,6 +6,7 @@ const result = require('../middleware/result')
const namespaceRoute = require('./namespace') const namespaceRoute = require('./namespace')
const serviceRoute = require('./service') const serviceRoute = require('./service')
const baseServiceRoute = require('./baseService')
function loadRoutes (router) { function loadRoutes (router) {
router router
...@@ -13,6 +14,7 @@ function loadRoutes (router) { ...@@ -13,6 +14,7 @@ function loadRoutes (router) {
.use(result()) .use(result())
.use('/namespace', namespaceRoute.routes()) .use('/namespace', namespaceRoute.routes())
.use('/service', serviceRoute.routes()) .use('/service', serviceRoute.routes())
.use('/baseService', baseServiceRoute.routes())
} }
exports.start = function () { exports.start = function () {
......
...@@ -56,18 +56,17 @@ router.post('/create', async ctx => { ...@@ -56,18 +56,17 @@ router.post('/create', async ctx => {
return data[arguments[1]] return data[arguments[1]]
}) })
let params = yaml.load(template) let params = yaml.load(template)
console.log(params)
await client.service_create(params) await client.service_create(params)
ctx.body = ctx.ok(params) ctx.body = ctx.ok('创建成功')
}) })
router.post('/delete', async ctx => { router.post('/delete', async ctx => {
let data = await client.service_delete(ctx.request.body.serviceName, ctx.request.body.namespace) await client.service_delete(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok(data) ctx.body = ctx.ok('删除成功')
}) })
router.post('/modifyImage', async ctx => { router.post('/modifyImage', async ctx => {
let data = await client.service_modifyImage(ctx.request.body.serviceName, ctx.request.body.image, ctx.request.body.namespace) await client.service_modifyImage(ctx.request.body.serviceName, ctx.request.body.image, ctx.request.body.namespace)
ctx.body = ctx.ok(data) ctx.body = ctx.ok('更新成功')
}) })
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
"devDependencies": {}, "devDependencies": {},
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"start": "NODE_DEBUG nodemon" "start": "NODE_DEBUG=request nodemon"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
......
const fs = require('fs') const fs = require('fs')
console.log(process.cwd())
const ui = fs.readFileSync('serviceTemplate/ui.template.txt', 'utf8') const ui = fs.readFileSync('serviceTemplate/ui.template.txt', 'utf8')
const rabbitmq = fs.readFileSync('serviceTemplate/rabbitmq.template.txt', 'utf8')
module.exports = { module.exports = {
ui ui,
rabbitmq
} }
\ No newline at end of file
serviceName: rabbitmq
namespace: {{namespace}}
replicas: 1
accessType: ClusterIP
portMappings.0.protocol: TCP
portMappings.0.lbPort: 5672
portMappings.0.containerPort: 5672
portMappings.1.protocol: TCP
portMappings.1.lbPort: 15672
portMappings.1.containerPort: 15672
containers.0.containerName: rabbitmq
containers.0.image: {{image}}
containers.0.volumeMounts.0.volumeName: rabbitmq-vol
containers.0.volumeMounts.0.mountPath: /var/lib/rabbitmq
containers.0.volumeMounts.0.mode: rw
containers.0.envs.0.name: RABBITMQ_DEFAULT_USER
containers.0.envs.0.value: qa
containers.0.envs.1.name: RABBITMQ_DEFAULT_PASS
containers.0.envs.1.value: qatest
volumes.0.name: rabbitmq-vol
volumes.0.volumeType: hostPath
volumes.0.hostPath: /var/lib/data/rabbitmq/{{namespace}}
\ No newline at end of file
serviceName: {{serviceName}} serviceName: {{serviceName}}
namespace: {{namespace}} namespace: {{namespace}}
replicas: 1 replicas: 1
revisionHistoryLimit: 2
accessType: ClusterIP accessType: ClusterIP
portMappings.0.protocol: TCP portMappings.0.protocol: TCP
......
...@@ -80,35 +80,6 @@ class Client { ...@@ -80,35 +80,6 @@ class Client {
}) })
} }
doGet (action, params = {}) {
if (params.namespace && this.ReservedNamespace.includes(params.namespace)) {
return Promise.reject(new Error('未授权的namespace'))
}
this.formatRequestData(action, params)
let url = this.protocal + this.endpoint + this.path
let self = this
return new Promise(function (resolve, reject) {
request({
method: 'GET',
url,
json: true,
qs: params
}, function (err, res, body) {
if (err) {
console.error(err)
reject(err)
} else {
if (body.code === 0) {
resolve(body.data)
} else {
reject(body)
}
}
})
})
}
namespace_get () { namespace_get () {
return this.post('DescribeClusterNameSpaces', {clusterId: this.clusterId}) return this.post('DescribeClusterNameSpaces', {clusterId: this.clusterId})
} }
...@@ -130,14 +101,12 @@ class Client { ...@@ -130,14 +101,12 @@ class Client {
} }
async service_create (params) { async service_create (params) {
await this.post('CreateClusterService', {clusterId: this.clusterId, ...params}) params.clusterId = this.clusterId
let str = JSON.stringify(params)
await this.post('CreateClusterService', params)
// 腾讯云api暂只能通过修改服务来改成Recreate策略 // 腾讯云api暂只能通过修改服务来改成Recreate策略
let modifyParams = { let modifyParams = JSON.parse(str)
clusterId: this.clusterId, modifyParams.strategy = 'Recreate'
serviceName: params.serviceName,
namespace: params.namespace,
strategy: 'Reacreate'
}
return this.post('ModifyClusterService', modifyParams) return this.post('ModifyClusterService', modifyParams)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment