Commit b0801338 authored by 智勇's avatar 智勇

增加 k8s conf

parent eb6823e7
...@@ -59,9 +59,9 @@ const dingTalkPush = async function (item, is_recover) { ...@@ -59,9 +59,9 @@ const dingTalkPush = async function (item, is_recover) {
msgtype: 'markdown', msgtype: 'markdown',
markdown: { markdown: {
title: 'pipeline项目添加信息如下', title: 'pipeline项目添加信息如下',
text: '> <font color=#FF0000> 描述信息 : 腾讯云服务---异常提醒通知\n\n' text: '> 描述信息 : 腾讯云服务---异常提醒通知\n\n'
+ `> 项目名称 : ${item.metadata.labels['qcloud-app']}\n\n` + `> 项目名称 : ${item.metadata.labels['qcloud-app']}\n\n`
+ `> <font color=#FF0000> 项目分支 : ${image}\n\n` + `> 项目分支 : ${image}\n\n`
+ `> 项目类型 : ${item.metadata.labels.type}\n\n` + `> 项目类型 : ${item.metadata.labels.type}\n\n`
+ `> 命名空间 : ${item.metadata.namespace}\n\n` + `> 命名空间 : ${item.metadata.namespace}\n\n`
+ `> 异常原因 : ${message}\n\n` + `> 异常原因 : ${message}\n\n`
......
...@@ -6,7 +6,7 @@ const Redis = require('ioredis') ...@@ -6,7 +6,7 @@ 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 { projectConfig, defaultConfig } = require('../resource/resourceLimit') const { defaultConfig } = require('../resource/resourceLimit')
const { const {
getPods, getPods,
serviceCreate, serviceCreate,
...@@ -21,6 +21,7 @@ const { ...@@ -21,6 +21,7 @@ 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 router = new Router() const router = new Router()
module.exports = router module.exports = router
...@@ -33,20 +34,55 @@ router.get('/', async (ctx) => { ...@@ -33,20 +34,55 @@ router.get('/', async (ctx) => {
}) })
}) })
const makeResouce = (serviceName, type) => { // 资源限制
// 资源限制 const makeResouce = async (serviceName, type) => {
const resources = projectConfig[serviceName] || defaultConfig[type] let resources = defaultConfig[type]
logger.info('资源限制', JSON.stringify(resources))
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 return resources
} }
// // 用于刷 mongo 库
// router.get('/insertData', async (ctx) => {
// const res = await awaitRequest({
// url: 'http://127.0.0.1:3003/proconfig/get_project?is_active=true',
// method: 'get',
// })
// const data = JSON.parse(res.body).data
// let ret
// for (const item of data) {
// const resources = projectConfig[item.project_name] || defaultConfig[item.type]
// item.memRequest = resources.memory.request
// item.memLimit = resources.memory.limit
// item.cpuRequest = resources.cpu.request
// item.cpuLimit = resources.cpu.limit
// ret = await awaitRequest({
// url: 'http://127.0.0.1:3003/proconfig/save',
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json;charset=utf-8',
// },
// body: JSON.stringify(item),
// })
// }
// ctx.body = ctx.ok(ret.body)
// })
const createService = async (ctx) => { const createService = async (ctx) => {
const { const {
type, serviceName, namespace, domain, label, type, serviceName, namespace, domain, label,
} = ctx.request.body } = ctx.request.body
const data = ctx.request.body const data = ctx.request.body
const resources = makeResouce(serviceName, type) const resources = await makeResouce(serviceName, type)
data.resources = resources data.resources = resources
logger.info('创建服务', data) logger.info('创建服务', data)
......
...@@ -9,6 +9,7 @@ module.exports = function client() { ...@@ -9,6 +9,7 @@ module.exports = function client() {
const exclude = [ const exclude = [
'/service/listEnvVarsNew', '/service/listEnvVarsNew',
'/service/listEnvVars', '/service/listEnvVars',
'/service/insertData',
'/cluster', '/cluster',
'/repository', '/repository',
'/repository/getTags', '/repository/getTags',
...@@ -21,7 +22,7 @@ module.exports = function client() { ...@@ -21,7 +22,7 @@ module.exports = function client() {
if (!client[cluster]) { if (!client[cluster]) {
// 请求qa-api // 请求qa-api
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]
......
/* eslint-disable no-multi-assign */
const defaultMysql = { const defaultMysql = {
memory: { memory: {
request: 1024, request: 1024,
...@@ -43,114 +42,42 @@ const defaultRedis = { ...@@ -43,114 +42,42 @@ const defaultRedis = {
}, },
} }
const projectConfig = {}
const memoryV1 = {
request: 50,
limit: 50,
}
const memoryV2 = {
request: 200,
limit: 240,
}
const memoryV2P = {
request: 500,
limit: 600,
}
const memoryV3 = {
request: 800,
limit: 1000,
}
const memoryV4 = {
request: 1200,
limit: 1500,
}
const cpuV1 = {
request: 10,
limit: 100,
}
const cpuV2 = {
request: 20,
limit: 200,
}
const cpuV3 = {
request: 100,
limit: 1000,
}
const cpuV4 = {
request: 200,
limit: 2000,
}
const defaultUI = { const defaultUI = {
memory: memoryV1, cpuLimit: 10,
cpu: cpuV1, cpuRequest: 100,
} memLimit: 50,
memRequest: 50,
projectConfig['quantcube-ui'] = {
memory: memoryV1,
cpu: cpuV3,
} }
const defaultNodejs = { const defaultNodejs = {
memory: memoryV2, cpuLimit: 20,
cpu: cpuV2, cpuRequest: 200,
memLimit: 200,
memRequest: 240,
} }
const defaultPython = { const defaultPython = {
memory: memoryV2, cpuLimit: 20,
cpu: cpuV2, cpuRequest: 200,
memLimit: 200,
memRequest: 240,
} }
const defaultJava = { const defaultJava = {
memory: memoryV2P, cpuLimit: 100,
cpu: cpuV3, cpuRequest: 1000,
} memLimit: 500,
memRequest: 600,
projectConfig.baitiao = projectConfig['smart-recruitment'] = {
memory: memoryV3,
cpu: cpuV3,
}
projectConfig['cash-loan-flow'] = projectConfig['gu-bei'] = projectConfig['merchant-backend'] = projectConfig['xyqb-mall'] = projectConfig.xyqb = {
memory: memoryV3,
cpu: cpuV4,
}
// vcc项目
projectConfig.talos = projectConfig['acs-service'] = projectConfig['acs-quartz'] = {
memory: memoryV3,
cpu: cpuV4,
}
// clotho启动比较耗时
projectConfig['urge-dispatcher'] = projectConfig.clotho = {
memory: memoryV4,
cpu: cpuV4,
} }
projectConfig['smart-recruitment-spyder'] = {
memory: memoryV4,
cpu: cpuV3,
}
exports.projectConfig = projectConfig
exports.defaultConfig = { exports.defaultConfig = {
java: defaultJava,
ui: defaultUI,
node: defaultNodejs,
redis: defaultRedis, redis: defaultRedis,
'redis-sentinel': defaultRedis, 'redis-sentinel': defaultRedis,
zookeeper: defaultZookeeper, zookeeper: defaultZookeeper,
mysql: defaultMysql, mysql: defaultMysql,
rabbitmq: defaultRabbitmq, rabbitmq: defaultRabbitmq,
java: defaultJava,
ui: defaultUI,
node: defaultNodejs,
python: defaultPython, python: defaultPython,
} }
...@@ -66,11 +66,11 @@ spec: ...@@ -66,11 +66,11 @@ spec:
value: {{mock}} value: {{mock}}
resources: resources:
requests: requests:
cpu: {{resources.cpu.request}}m cpu: {{resources.cpuRequest}}m
memory: {{resources.memory.request}}Mi memory: {{resources.memRequest}}Mi
limits: limits:
cpu: {{resources.cpu.limit}}m cpu: {{resources.cpuLimit}}m
memory: {{resources.memory.limit}}Mi memory: {{resources.memLimit}}Mi
livenessProbe: livenessProbe:
exec: exec:
command: command:
......
...@@ -33,11 +33,11 @@ spec: ...@@ -33,11 +33,11 @@ spec:
value: {{debug}} value: {{debug}}
resources: resources:
requests: requests:
cpu: {{resources.cpu.request}}m cpu: {{resources.cpuRequest}}m
memory: {{resources.memory.request}}Mi memory: {{resources.memRequest}}Mi
limits: limits:
cpu: {{resources.cpu.limit}}m cpu: {{resources.cpuLimit}}m
memory: {{resources.memory.limit}}Mi memory: {{resources.memLimit}}Mi
restartPolicy: Always restartPolicy: Always
dnsPolicy: ClusterFirst dnsPolicy: ClusterFirst
imagePullSecrets: imagePullSecrets:
......
...@@ -60,11 +60,11 @@ spec: ...@@ -60,11 +60,11 @@ spec:
value: {{cluster}} value: {{cluster}}
resources: resources:
requests: requests:
cpu: {{resources.cpu.request}}m cpu: {{resources.cpuRequest}}m
memory: {{resources.memory.request}}Mi memory: {{resources.memRequest}}Mi
limits: limits:
cpu: {{resources.cpu.limit}}m cpu: {{resources.cpuLimit}}m
memory: {{resources.memory.limit}}Mi memory: {{resources.memLimit}}Mi
livenessProbe: livenessProbe:
exec: exec:
command: command:
......
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