Commit d73d5abd authored by 智勇's avatar 智勇

增加更新镜像接口

parent 9d5972c1
......@@ -4,7 +4,7 @@ const logger = require('koa-log4').getLogger()
const { ingressCreate, ingressDelete } = require('../kubeService/ingress')
const { projectConfig, defaultConfig } = require('../serviceTemplate/resourceLimit')
const {
getPods, serviceCreate, getServices, getServiceDetail, serviceUpdate, serviceRestart, serviceDelete,
getPods, serviceCreate, getServices, getServiceDetail, serviceRestart, serviceDelete, imageUpdate,
} = require('../kubeService/service')
const router = new Router()
......@@ -71,14 +71,17 @@ router.post('/modifyImage', async (ctx) => {
list = list.map(item => (item.metadata.labels && item.metadata.labels['qcloud-app']) || item.metadata.name)
if (list.includes(ctx.request.body.serviceName)) {
const data = ctx.request.body
if (!data.label) {
data.label = data.type
}
const resources = makeResouce(data.serviceName, data.label)
data.resources = resources
logger.info('更新服务', data)
await serviceUpdate(data)
logger.info('更新服务', ctx.request.body)
await imageUpdate(ctx.request.body)
// const data = ctx.request.body
// if (!data.label) {
// data.label = data.type
// }
// const resources = makeResouce(data.serviceName, data.label)
// data.resources = resources
// logger.info('更新服务', data)
// await serviceUpdate(data)
} else {
await createService(ctx)
}
......
......@@ -19,6 +19,11 @@ const makeManifest = (data) => {
if (!data.debug) {
data.debug = '"0"'
}
if (data.label === 'java') {
data.serviceType = data.debug === '"0"' ? 'ClusterIP' : 'NodePort'
}
const yamlManifest = yamls[data.type].replace(/{{([A-Za-z0-9_\.]+)}}/g, function () {
if (_.get(data, arguments[1], null) === null) {
throw new Error(`缺少模板所需变量: ${arguments[1]}`)
......@@ -42,6 +47,7 @@ const serviceCreate = async (data) => {
switch (jsonObj.kind) {
case 'Service':
logger.info('service:', JSON.stringify(jsonObj))
await client.api.v1.namespaces(namespace).services.post({ body: jsonObj })
break;
......@@ -65,6 +71,13 @@ const serviceCreate = async (data) => {
}
}
const imageUpdate = async (data) => {
const { namespace, serviceName } = data
const image = `ccr.ccs.tencentyun.com/${data.image}`
const updateObj = { spec: { template: { spec: { containers: [{ name: serviceName, image }] } } } }
await client.apis.apps.v1beta1.namespaces(namespace).deployments(serviceName).patch({ body: updateObj })
}
const serviceUpdate = async (data) => {
const { namespace, serviceName } = data
const yamlArray = makeManifest(data)
......@@ -86,6 +99,7 @@ const formatServiceInfo = (obj) => {
return _.assign(portObj, {
clusterIp: obj.spec.clusterIP,
serviceType: obj.spec.type,
portMappings: obj.spec.ports,
// labels: obj.metadata.labels,
})
......@@ -222,4 +236,5 @@ module.exports = {
serviceUpdate,
serviceRestart,
serviceDelete,
imageUpdate,
}
......@@ -64,7 +64,7 @@ metadata:
name: {{serviceName}}
namespace: {{namespace}}
spec:
type: NodePort
type: {{serviceType}}
ports:
- name: '80'
port: 80
......
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