Commit c9338b4e authored by xuezj's avatar xuezj

增加wanIp

parent e46e9bd9
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: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: redis
type: base
name: redis
spec:
replicas: 1
revisionHistoryLimit: 3
strategy: {}
template:
metadata:
labels:
app: redis
tier: common
spec:
containers:
- image: 192.168.4.4/common/redis:multiport
name: redis
# resources:
# limits:
# memory: 256Mi
# requests:
# memory: 64Mi
ports:
- containerPort: 6379
- containerPort: 6380
- containerPort: 6381
- containerPort: 6382
- containerPort: 6383
restartPolicy: Always
status: {}
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}}
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