Commit d73d5abd authored by 智勇's avatar 智勇

增加更新镜像接口

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