Commit 60464d13 authored by 智勇's avatar 智勇

暂存

parent adce3387
......@@ -6,8 +6,8 @@ const logger = require('koa-log4').getLogger()
const templates = require('../serviceTemplate')
const lruCache = require('../services/lruCache.service')
const { ingressCreate, ingressDelete } = require('../kubeService/ingress')
const { podGet } = require('../kubeService/service')
const {projectConfig, defaultConfig} = require('../serviceTemplate/resourceLimit')
const { projectConfig, defaultConfig } = require('../serviceTemplate/resourceLimit')
const { podGet, serviceCreate } = require('../kubeService/service')
const router = new Router()
module.exports = router
......@@ -50,6 +50,11 @@ const createService = async (ctx) => {
type, serviceName, namespace, image, system_name, domain, label,
} = ctx.request.body
logger.info('创建服务', ctx.request.body)
if (serviceName === 'mysql') {
serviceCreate(namespace, serviceName, image)
ctx.body = ctx.ok('创建成功')
return
}
const data = {
serviceName,
namespace,
......@@ -62,7 +67,7 @@ const createService = async (ctx) => {
}
// 资源限制
let resources = projectConfig[data.system_name] || defaultConfig[type]
const resources = projectConfig[data.system_name] || defaultConfig[type]
logger.info('资源限制', JSON.stringify(resources))
data.resources = resources
......@@ -76,10 +81,8 @@ const createService = async (ctx) => {
// todo: 放开限制,暂时只更新了clotho的镜像
// java项目的就绪检查需要定制
if (type === 'java' && data.system_name !== 'clotho' ) {
params = _.omitBy(params, function (value, key) {
return key.indexOf('healthCheck') !== -1
})
if (type === 'java' && data.system_name !== 'clotho') {
params = _.omitBy(params, (value, key) => key.indexOf('healthCheck') !== -1)
}
logger.info(params)
......@@ -112,7 +115,7 @@ router.post('/details', async (ctx) => {
router.post('/delete', async (ctx) => {
await ctx.cluster.service_delete(ctx.request.body.serviceName, ctx.request.body.namespace)
if (ctx.request.body.serviceName === 'xyqb-user2') {
await ingressDelete(ctx.request.body.namespace, 'xyqb-user2-2')
await ingressDelete(ctx.request.body.namespace, 'xyqb-user2-2')
}
await ingressDelete(ctx.request.body.namespace, ctx.request.body.serviceName)
ctx.body = ctx.ok('删除成功')
......
const path = require('path')
const Client = require('kubernetes-client').Client
const config = require('kubernetes-client').config
const _ = require('lodash')
const YAML = require('yamljs');
const yamls = require('../yamls')
const client = new Client({
config: config.fromKubeconfig(
......@@ -12,7 +15,31 @@ const client = new Client({
const serviceGet = async (namespace, serviceName) => client.api.v1.namespaces(namespace).services(serviceName).get()
const podGet = async namespace => client.api.v1.namespaces(namespace).pods.get()
const serviceCreate = async (namespace, serviceName, image) => {
const data = {
namespace,
app: serviceName,
image,
}
const yamlManifest = yamls[serviceName].replace(/{{([A-Za-z0-9_\.]+)}}/g, function () {
if (_.get(data, arguments[1], null) === null) {
throw new Error(`缺少模板所需变量: ${arguments[1]}`)
}
return _.get(data, arguments[1])
})
const nativeObject = YAML.load(yamlManifest);
// console.log(1, nativeObject)
const jsonstr = JSON.stringify(nativeObject);
const jsonTemp = JSON.parse(jsonstr, null);
// jsonstr = JSON.parse(jsonstr, null);
client.api.v1.namespaces(namespace).services.post({ body: jsonTemp })
}
module.exports = {
serviceGet,
podGet,
serviceCreate,
}
const fs = require('fs')
const mysql = fs.readFileSync('yamls/mysql.yaml', 'utf8')
module.exports = {
mysql,
}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{app}}
namespace: {{namespace}}
spec:
storageClassName: cbs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
......@@ -29,10 +44,22 @@ spec:
limits:
memory: 1024Mi
cpu: 500m
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
dnsPolicy: ClusterFirst
env:
- name: MYSQL_DATABASE
value: db
- name: MYSQL_PASSWORD
value: qatest
- name: MYSQL_ROOT_PASSWORD
value: Quantgroup2017
- name: MYSQL_USER
value: qa
volumeMounts:
- mountPath: "/data/mysql"
name: mysql
volumes:
- name: mysql
persistentVolumeClaim:
claimName: pvc-mysql-default
imagePullSecrets:
- name: qcloudregistrykey
- name: tencenthubkey
......@@ -59,4 +86,3 @@ spec:
targetPort: 3306
selector:
qcloud-app: {{app}}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{app}}
namespace: {{namespace}}
labels:
qcloud-app: {{app}}
spec:
replicas: 1
selector:
matchLabels:
qcloud-app: {{app}}
strategy:
type: Recreate
template:
metadata:
labels:
qcloud-app: {{app}}
spec:
revisionHistoryLimit: 2
containers:
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{app}}
resources:
requests:
memory: 64Mi
limits:
memory: 256Mi
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- containerPort: 80
restartPolicy: Always
dnsPolicy: ClusterFirst
volumes:
- name: logs-vol
emptyDir: {}
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