Commit 2da84211 authored by 智勇's avatar 智勇

Merge branch 'master' of http://git.quantgroup.cn/QA/tke-eos

parents 7fc08eaa b66bc2d3
const Router = require('koa-router')
const yaml = require('js-yaml')
const _ = require('lodash')
const logger = require('koa-log4').getLogger()
const templates = require('../serviceTemplate')
const lruCache = require('../services/lruCache.service')
const { ingressCreate, ingressDelete } = require('../kubeService/ingress')
const router = new Router()
module.exports = router
router.get('/', async (ctx) => {
// 取节点列表的第一个作为服务的访问ip
const cacheKey = 'k8s.nodes.first'
let c = lruCache.get(cacheKey)
let wanIp = lruCache.get(cacheKey)
if (!c) {
const res = await ctx.cluster.node_list()
wanIp = _.get(res, 'nodes[0].wanIp', '')
lruCache.set(cacheKey, wanIp)
}
const data = await ctx.cluster.service_list(ctx.query.namespace)
const getDetail = async (item) => {
const detaildata = await ctx.cluster.service_get(item.serviceName, ctx.query.namespace)
return detaildata
let resData = await ctx.cluster.service_get(item.serviceName, ctx.query.namespace)
item.portMappings = resData.service.portMappings
item.image = resData.service.containers[0].image
item.wanIp = wanIp
return
}
const task = []
for (let i = 0; i < data.services.length; i += 1) {
......@@ -20,15 +35,7 @@ router.get('/', async (ctx) => {
task.push(getDetail(data.services[i]))
}
}
const result = await Promise.all(task)
for (let i = 0; i < data.services.length; i += 1) {
for (let j = 0; j < result.length; j += 1) {
if (data.services[i].serviceName === result[j].service.serviceName) {
data.services[i].portMappings = result[j].service.portMappings
data.services[i].image = result[j].service.containers[0].image
}
}
}
await Promise.all(task)
ctx.body = ctx.ok(data)
})
......
......@@ -670,6 +670,24 @@
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
},
"dependencies": {
"lru-cache": {
"version": "4.1.5",
"resolved": "http://npmprivate.quantgroups.com/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"yallist": {
"version": "2.1.2",
"resolved": "http://npmprivate.quantgroups.com/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
}
}
},
"crypto-random-string": {
......@@ -2955,12 +2973,11 @@
"integrity": "sha1-b54wtHCE2XGnyCD/FabFFnt0wm8="
},
"lru-cache": {
"version": "4.1.5",
"resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
"integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
"version": "5.1.1",
"resolved": "http://npmprivate.quantgroups.com/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
"yallist": "^3.0.2"
}
},
"make-dir": {
......@@ -3402,6 +3419,15 @@
"url-to-options": "^1.0.1"
}
},
"lru-cache": {
"version": "4.1.5",
"resolved": "http://npmprivate.quantgroups.com/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"prepend-http": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/prepend-http/-/prepend-http-2.0.0.tgz",
......@@ -3414,6 +3440,11 @@
"requires": {
"prepend-http": "^2.0.0"
}
},
"yallist": {
"version": "2.1.2",
"resolved": "http://npmprivate.quantgroups.com/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
}
}
},
......@@ -3652,7 +3683,7 @@
},
"pseudomap": {
"version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
"resolved": "http://npmprivate.quantgroups.com/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
"psl": {
......@@ -4827,9 +4858,9 @@
"dev": true
},
"yallist": {
"version": "2.1.2",
"resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
"version": "3.0.3",
"resolved": "http://npmprivate.quantgroups.com/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A=="
},
"ylru": {
"version": "1.2.1",
......
......@@ -12,6 +12,7 @@
"kubernetes-client": "^6.3.2",
"lodash": "^4.17.11",
"log4js": "^4.0.2",
"lru-cache": "^5.1.1",
"request": "^2.88.0"
},
"devDependencies": {
......
const LRU = require('lru-cache')
const cache = new LRU(50)
module.exports = cache
......@@ -90,6 +90,10 @@ class Cluster extends Client {
rules.clusterId = this.clusterId
return this.post('MosifyIngress', rules)
}
node_list(limit = 1) {
return this.post('DescribeClusterInstances', { limit, clusterId: this.clusterId })
}
}
exports.create = function () {
......
apiVersion: v1
kind: Service
metadata:
name: mongodb
namespace: test1
labels:
qcloud-app: mongodb
type: base
spec:
type: NodePort
ports:
- port: 27017
targetPort: 27017
selector:
qcloud-app: mongodb
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: mongodb
namespace: test1
labels:
qcloud-app: mongodb
spec:
serviceName: mongodb
replicas: 1
revisionHistoryLimit: 1
template:
metadata:
labels:
qcloud-app: mongodb
spec:
terminationGracePeriodSeconds: 10
imagePullSecrets:
- name: qcloudregistrykey
- name: tencenthubkey
containers:
- name: mongodb
image: ccr.ccs.tencentyun.com/qa-base/mongodb:3.6
ports:
- containerPort: 27017
env:
- name: MONGO_INITDB_ROOT_USERNAME
value: qa
- name: MONGO_INITDB_ROOT_PASSWORD
value: qatest
volumeMounts:
- name: mongodb-ps
mountPath: /data/db
volumeClaimTemplates: # 自动创建pvc,进而自动创建pv
- metadata:
name: mongodb-ps
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: cbs
resources:
requests:
storage: 10Gi
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
qcloud-app: {{app}}
name: {{app}}
namespace: {{namespace}}
spec:
replicas: 1
revisionHistoryLimit: 1
selector:
matchLabels:
qcloud-app: {{app}}
strategy:
type: Recreate
template:
metadata:
labels:
qcloud-app: {{app}}
spec:
containers:
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: {{app}}
resources:
requests:
memory: 400Mi
cpu: 100m
limits:
memory: 1024Mi
cpu: 500m
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
- name: tencenthubkey
restartPolicy: Always
terminationGracePeriodSeconds: 30
status: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
type: base
qcloud-app: {{app}}
name: {{app}}
namespace: {{namespace}}
spec:
type: NodePort
ports:
- name: 3306
nodePort: 0
port: 3306
protocol: TCP
targetPort: 3306
selector:
qcloud-app: {{app}}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
qcloud-app: rabbitmq
name: rabbitmq
namespace: test1
spec:
replicas: 1
revisionHistoryLimit: 1
selector:
matchLabels:
qcloud-app: rabbitmq
strategy:
type: Recreate
template:
metadata:
labels:
qcloud-app: rabbitmq
spec:
containers:
- image: ccr.ccs.tencentyun.com/qa-base/rabbitmq:3.6
imagePullPolicy: Always
name: rabbitmq
resources:
requests:
memory: 100Mi
cpu: 100m
limits:
memory: 500Mi
cpu: 500m
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
env:
- name: RABBITMQ_DEFAULT_USER
value: qa
- name: RABBITMQ_DEFAULT_PASS
value: qatest
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
- name: tencenthubkey
restartPolicy: Always
terminationGracePeriodSeconds: 30
status: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
type: base
qcloud-app: rabbitmq
name: rabbitmq
namespace: test1
spec:
type: NodePort
ports:
- name: tcp-5672-5672
nodePort: 0
port: 5672
protocol: TCP
targetPort: 5672
- name: tcp-15672-15672
nodePort: 0
port: 15672
protocol: TCP
targetPort: 15672
selector:
qcloud-app: rabbitmq
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
qcloud-app: redis
name: redis
namespace: {{namespace}}
spec:
replicas: 1
revisionHistoryLimit: 1
selector:
matchLabels:
qcloud-app: redis
strategy:
type: Recreate
template:
metadata:
labels:
qcloud-app: redis
spec:
containers:
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: redis
resources:
requests:
memory: 40Mi
cpu: 100m
limits:
memory: 128Mi
cpu: 500m
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
- name: tencenthubkey
restartPolicy: Always
terminationGracePeriodSeconds: 30
status: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
type: base
qcloud-app: redis
name: redis
namespace: {{namespace}}
spec:
type: NodePort
ports:
- name: tcp-6379-6379
nodePort: 0
port: 6379
protocol: TCP
targetPort: 6379
- name: tcp-6380-6380
nodePort: 0
port: 6380
protocol: TCP
targetPort: 6380
- name: tcp-6381-6381
nodePort: 0
port: 6381
protocol: TCP
targetPort: 6381
- name: tcp-6382-6382
nodePort: 0
port: 6382
protocol: TCP
targetPort: 6382
- name: tcp-6383-6383
nodePort: 0
port: 6383
protocol: TCP
targetPort: 6383
selector:
qcloud-app: redis
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: mongodb.test1
namespace: test1
spec:
rules:
- host: mongodb-test1.liangkebang.net
http:
paths:
- path: /
backend:
serviceName: mongodb
servicePort: 27017
\ No newline at end of file
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
qcloud-app: zookeeper
name: zookeeper
namespace: {{namespace}}
spec:
replicas: 1
revisionHistoryLimit: 1
selector:
matchLabels:
qcloud-app: zookeeper
strategy:
type: Recreate
template:
metadata:
labels:
qcloud-app: zookeeper
spec:
containers:
- image: ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy: Always
name: zookeeper
resources:
requests:
memory: 40Mi
cpu: 100m
limits:
memory: 128Mi
cpu: 500m
securityContext:
privileged: false
terminationMessagePath: /dev/termination-log
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
- name: tencenthubkey
restartPolicy: Always
terminationGracePeriodSeconds: 30
status: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
type: base
qcloud-app: zookeeper
name: zookeeper
namespace: {{namespace}}
spec:
type: NodePort
ports:
- name: tcp-2181-2181
nodePort: 0
port: 2181
protocol: TCP
targetPort: 2181
- name: tcp-9090-9090
nodePort: 0
port: 9090
protocol: TCP
targetPort: 9090
selector:
qcloud-app: zookeeper
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