Commit d4bd082b authored by 智勇's avatar 智勇

listEnvVars

parent a836920d
const Router = require('koa-router')
const logger = require('koa-log4').getLogger()
const _ = require('lodash')
const { ingressCreate, ingressDelete } = require('../kubeService/ingress')
const { projectConfig, defaultConfig } = require('../serviceTemplate/resourceLimit')
const {
getPods,
serviceCreate,
getServicesFormat,
getServices,
getServiceDetail,
serviceRestart,
......@@ -19,7 +21,7 @@ const router = new Router()
module.exports = router
router.get('/', async (ctx) => {
const data = await getServices(ctx.query.namespace)
const data = await getServicesFormat(ctx.query.namespace)
ctx.body = ctx.ok({ services: data })
})
......@@ -68,7 +70,6 @@ router.post('/delete', async (ctx) => {
const { namespace, serviceName } = ctx.request.body
await serviceDelete(namespace, serviceName)
// const rsName = ctx.request.body.podName.slice(0, -6)
let rsData = await getReplicaSet(namespace)
rsData = rsData.map(item => item.metadata.name).filter(item => item.indexOf(serviceName) !== -1)
for (const rs of rsData) {
......@@ -84,7 +85,7 @@ router.post('/delete', async (ctx) => {
router.post('/modifyImage', async (ctx) => {
let list = await getPods(ctx.request.body.namespace)
list = list.map(item => (item.metadata.labels && item.metadata.labels['qcloud-app']) || item.metadata.name)
list = list.body.items.map(item => (item.metadata.labels && item.metadata.labels['qcloud-app']) || item.metadata.name)
if (list.includes(ctx.request.body.serviceName)) {
logger.info('更新服务', ctx.request.body)
......@@ -109,3 +110,31 @@ router.post('/redeploy', async (ctx) => {
await serviceRestart(ctx.request.body.namespace, ctx.request.body.podName)
ctx.body = ctx.ok('重置服务成功')
})
router.get('/listEnvVars', async (ctx) => {
const envVars = {}
const res = await Promise.all([
getPods(ctx.request.query.namespace),
getServices(ctx.request.query.namespace),
])
res[0].body.items.forEach(async (item) => {
const serviceName = (item.metadata.labels && item.metadata.labels['qcloud-app']) || item.metadata.name
const upperCaseName = serviceName.toUpperCase().replace(/-/g, '_')
envVars[`${upperCaseName}_SERVICE_HOST`] = item.status.hostIP
})
res[1].body.items.forEach(async (item) => {
const upperCaseName = item.metadata.name.toUpperCase().replace(/-/g, '_')
envVars[`${upperCaseName}_SERVICE_PORT`] = _.get(item.spec.ports, '[0].nodePort', undefined)
item.spec.ports.forEach((i) => {
envVars[`${upperCaseName}_SERVICE_PORT_${i.port}`] = i.nodePort || i.port
})
})
envVars.DB_SERVICE_HOST = envVars.MYSQL_SERVICE_HOST
envVars.DB_SERVICE_PORT = envVars.MYSQL_SERVICE_PORT
envVars.DB_SERVICE_PORT_3306 = envVars.MYSQL_SERVICE_PORT_3306
ctx.body = { details: envVars, success: 'true' }
})
......@@ -101,7 +101,6 @@ const formatServiceInfo = (obj) => {
clusterIp: obj.spec.clusterIP,
serviceType: obj.spec.type,
portMappings: obj.spec.ports,
// labels: obj.metadata.labels,
})
}
......@@ -157,13 +156,13 @@ const formatPodInfo = (podInfo) => {
const formatIngressInfo = obj => ({ host: _.get(obj.spec, 'rules[0].host', '') })
const getPods = async (namespace) => {
const podData = await client.api.v1.namespaces(namespace).pods.get()
return podData.body.items
const data = await client.api.v1.namespaces(namespace).pods.get()
return data
}
const podGetstatus = async () => client.api.v1.pods.get()
const getServices = async (namespace) => {
const getServicesFormat = async (namespace) => {
const ret = []
const service = {}
......@@ -202,7 +201,7 @@ const getServices = async (namespace) => {
const getServiceDetail = async (namespace, name) => {
const res = await Promise.all([
client.api.v1.namespaces(namespace).pods.get({ qs: { labelSelector: `qcloud-app=${name},tier!=job` } }),
client.api.v1.namespaces(namespace).pods.get(),
client.api.v1.namespaces(namespace).services(name).get(),
])
......@@ -210,11 +209,11 @@ const getServiceDetail = async (namespace, name) => {
res[1] = formatServiceInfo(res[1].body)
if (!dict.commonService.includes(name)) {
res[3] = await client.apis.extensions.v1beta1.namespaces(namespace).ingresses(name).get()
res[3] = formatIngressInfo(res[3].body)
res[2] = await client.apis.extensions.v1beta1.namespaces(namespace).ingresses(name).get()
res[2] = formatIngressInfo(res[2].body)
}
return _.assign({}, res[0], res[3], res[1])
return _.assign({}, res[0], res[1], res[2])
}
const serviceRestart = async (namespace, name) => {
......@@ -235,8 +234,14 @@ const replicaSetDelete = async (namespace, rsName) => {
await client.apis.apps.v1.namespaces(namespace).replicasets(rsName).delete()
}
const getServices = async (namespace) => {
const data = await client.api.v1.namespaces(namespace).services.get()
return data
}
module.exports = {
getServiceDetail,
getServicesFormat,
getServices,
getPods,
podGetstatus,
......
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