Commit 9a68e2c1 authored by kewei.jia's avatar kewei.jia Committed by 智勇

qke功能

parent d60ce6db
......@@ -20,6 +20,7 @@ const {
replicaSetDelete,
pvcDelete,
} = require('../kubeService/service')
const newClient = require('./../resource/getClient')
const router = new Router()
module.exports = router
......@@ -49,7 +50,7 @@ const createService = async (ctx) => {
data.resources = resources
logger.info('创建服务', data)
await serviceCreate(ctx.client, data)
await serviceCreate(ctx.cluster, ctx.client, data)
if (label !== 'base') {
if (serviceName === 'xyqb-user2') {
await ingressCreate(ctx.client, namespace, 'xyqb-user2-2', 'passportapi2')
......@@ -175,9 +176,10 @@ router.get('/listEnvVars', async (ctx) => {
// for container
router.get('/listEnvVarsNew', async (ctx) => {
const envVars = {}
const { namespace, client } = newClient(ctx)
const res = await Promise.all([
getPods(ctx.client, ctx.request.query.namespace),
getServices(ctx.client, ctx.request.query.namespace),
getPods(client, namespace),
getServices(client, namespace),
])
res[0].body.items.forEach(async (item) => {
......
......@@ -73,7 +73,8 @@ const makeManifest = (data) => {
return manifestArray
}
const serviceCreate = async (client, data) => {
const serviceCreate = async (cluster, client, data) => {
data.cluster = cluster
const { namespace, serviceName } = data
const manifestArray = makeManifest(data)
......
......@@ -5,34 +5,41 @@ const config = require('kubernetes-client').config
module.exports = function client() {
const client = {}
return async function (ctx, next) {
const cluster = ctx.request.headers.cluster
let yaml = ''
switch (cluster) {
case 'qa':
yaml = './../../kubeService/kubeConfig-qa.yaml'
break
case 'dev-ops':
yaml = './../../kubeService/kubeConfig-dev-ops.yaml'
break
case 'qke':
yaml = './../../kubeService/kubeConfig-qke.yaml'
break
default:
ctx.body = {
code: '0001',
msg: '请选择集群的名字',
}
return
const exclude = ['/service/listEnvVarsNew']
if (exclude.includes(ctx.path)) {
await next()
} else {
const cluster = ctx.request.headers.cluster
let yaml = ''
switch (cluster) {
case 'qa':
yaml = './../../kubeService/kubeConfig-qa.yaml'
break
case 'dev-ops':
yaml = './../../kubeService/kubeConfig-dev-ops.yaml'
break
case 'qke':
yaml = './../../kubeService/kubeConfig-qke.yaml'
break
default:
ctx.body = {
code: '0001',
msg: '请选择集群的名字',
}
return
}
if (!client[cluster]) {
client[cluster] = new Client({
config: config.fromKubeconfig(
path.resolve(__dirname, yaml),
),
version: '1.10',
})
client.clusterName = cluster
}
ctx.client = client[cluster]
ctx.cluster = client.clusterName
await next()
}
if (!client[cluster]) {
client[cluster] = new Client({
config: config.fromKubeconfig(
path.resolve(__dirname, yaml),
),
version: '1.10',
})
}
ctx.client = client[cluster]
await next()
}
}
const path = require('path')
const Client = require('kubernetes-client').Client
const config = require('kubernetes-client').config
const newClient = function client(ctx) {
const parmars = ctx.request.query.namespace || ''
if (parmars.search('@') === -1) {
ctx.body = {
code: '0001',
msg: '参数传入不合法',
}
return false
}
const namespace = parmars.split('@')[0];
const cluster = parmars.split('@')[1]
let yaml = ''
switch (cluster) {
case 'qa':
yaml = './../kubeService/kubeConfig-qa.yaml'
break;
case 'dev-ops':
yaml = './../kubeService/kubeConfig-dev-ops.yaml'
break
case 'qke':
yaml = './../kubeService/kubeConfig-qke.yaml'
break
default:
ctx.body = {
code: '0001',
msg: '请选择集群的名字',
}
}
const client = new Client({
config: config.fromKubeconfig(
path.resolve(__dirname, yaml),
),
version: '1.10',
})
return { namespace, client }
}
module.exports = newClient
......@@ -52,6 +52,10 @@ spec:
env:
- name: NAMESPACE
value: {{namespace}}
- name: NAMESPACECLUSTER
value: {{namespace}}@{{cluster}}
- name: CLUSTER
value: {{cluster}}
- name: SYSTEM_NAME
value: {{serviceName}}
- name: DEBUG
......
......@@ -21,12 +21,12 @@ metadata:
name: {{serviceName}}-{{namespace}}
namespace: {{namespace}}
spec:
storageClassName: cbs-3
storageClassName: cbs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storage: 1Gi
---
......@@ -82,8 +82,6 @@ spec:
volumeMounts:
- mountPath: "/var/lib/mysql"
name: {{serviceName}}
nodeSelector:
zone: "3"
volumes:
- name: {{serviceName}}
persistentVolumeClaim:
......
......@@ -20,99 +20,97 @@ spec:
type: base
qcloud-app: {{serviceName}}
spec:
nodeSelector:
zone: "3"
containers:
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6379
command: ["redis-server", "--port", "6379"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: {{resources.memory.request}}Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: {{resources.memory.limit}}Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6379","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6380
command: ["redis-server", "--port", "6380"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: 200Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: 200Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6380","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6381
command: ["redis-server", "--port", "6381"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: {{resources.memory.request}}Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: {{resources.memory.limit}}Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6381","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6382
command: ["redis-server", "--port", "6382"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: {{resources.memory.request}}Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: {{resources.memory.limit}}Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6382","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6383
command: ["redis-server", "--port", "6383"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: {{resources.memory.request}}Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: {{resources.memory.limit}}Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6383","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6379
command: ["redis-server", "--port", "6379"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: {{resources.memory.request}}Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: {{resources.memory.limit}}Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6379","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6380
command: ["redis-server", "--port", "6380"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: 200Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: 200Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6380","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6381
command: ["redis-server", "--port", "6381"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: {{resources.memory.request}}Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: {{resources.memory.limit}}Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6381","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6382
command: ["redis-server", "--port", "6382"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: {{resources.memory.request}}Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: {{resources.memory.limit}}Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6382","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{serviceName}}-6383
command: ["redis-server", "--port", "6383"]
resources:
requests:
cpu: {{resources.cpu.request}}m
memory: {{resources.memory.request}}Mi
limits:
cpu: {{resources.cpu.limit}}m
memory: {{resources.memory.limit}}Mi
readinessProbe:
exec:
command: ["redis-cli", "-p", "6383","info"]
initialDelaySeconds: 5
periodSeconds: 2
timeoutSeconds: 1
failureThreshold: 40
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
......@@ -133,15 +131,15 @@ metadata:
spec:
type: NodePort
ports:
- name: '6379'
port: 6379
- name: '6380'
port: 6380
- name: '6381'
port: 6381
- name: '6382'
port: 6382
- name: '6383'
port: 6383
- name: '6379'
port: 6379
- name: '6380'
port: 6380
- name: '6381'
port: 6381
- name: '6382'
port: 6382
- name: '6383'
port: 6383
selector:
qcloud-app: {{serviceName}}
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