Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tke-eos
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
tke-eos
Commits
22a35a2e
Commit
22a35a2e
authored
Oct 10, 2019
by
kewei.jia
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
change cluster
parent
8bd410e2
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
83 additions
and
85 deletions
+83
-85
restartLatest.js
app/restartLatest.js
+13
-18
schedule.js
app/schedule.js
+12
-13
service.js
app/service.js
+5
-5
service.js
kubeService/service.js
+3
-2
index.js
middleware/client/index.js
+21
-28
getClient.js
resource/getClient.js
+8
-19
awaitRequest
utils/awaitRequest
+17
-0
java.yaml
yamls/java.yaml
+2
-0
ui.node.yaml
yamls/ui.node.yaml
+2
-0
No files found.
app/restartLatest.js
View file @
22a35a2e
...
@@ -2,23 +2,18 @@ const schedule = require('node-schedule')
...
@@ -2,23 +2,18 @@ const schedule = require('node-schedule')
const
_
=
require
(
'
lodash
'
)
const
_
=
require
(
'
lodash
'
)
const
sleep
=
require
(
'
sleep
'
)
const
sleep
=
require
(
'
sleep
'
)
const
logger
=
require
(
'
koa-log4
'
).
getLogger
(
'
deployLatest
'
)
const
logger
=
require
(
'
koa-log4
'
).
getLogger
(
'
deployLatest
'
)
// const cluster = require('../services/tke.clusterService').create()
const
path
=
require
(
'
path
'
)
const
Client
=
require
(
'
kubernetes-client
'
).
Client
const
config
=
require
(
'
kubernetes-client
'
).
config
const
{
serviceRestart
,
getServicesFormat
,
getAllNamespace
}
=
require
(
'
../kubeService/service
'
)
const
{
serviceRestart
,
getServicesFormat
,
getAllNamespace
}
=
require
(
'
../kubeService/service
'
)
const
container
=
require
(
'
../services/tke.containerService
'
).
create
()
const
container
=
require
(
'
../services/tke.containerService
'
).
create
()
const
getClient
=
require
(
'
../resource/getClient
'
)
const
repoNS
=
[
'
qa-java
'
,
'
qa-ui
'
,
'
qa-node
'
,
'
qa-python
'
]
const
repoNS
=
[
'
qa-java
'
,
'
qa-ui
'
,
'
qa-node
'
,
'
qa-python
'
]
// const testNamespace = ['qa', 'fe', 'data', 'fis', 'xyqb2']
const
testNamespace
=
[
'
qa
'
,
'
fe
'
,
'
data
'
,
'
fis
'
,
'
xyqb2
'
]
const
clientNew
=
{}
const
client
=
new
Client
({
const
deploy
=
async
(
cluster
)
=>
{
config
:
config
.
fromKubeconfig
(
if
(
!
clientNew
[
cluster
])
{
path
.
resolve
(
__dirname
,
'
./../kubeService/kubeConfig-qa.yaml
'
),
clientNew
[
cluster
]
=
await
getClient
(
cluster
)
),
}
version
:
'
1.10
'
,
})
const
deploy
=
async
()
=>
{
logger
.
info
(
'
deployLatest start
'
)
logger
.
info
(
'
deployLatest start
'
)
for
(
const
ns
of
repoNS
)
{
for
(
const
ns
of
repoNS
)
{
const
repoNSData
=
await
container
.
repository_get
(
ns
)
const
repoNSData
=
await
container
.
repository_get
(
ns
)
...
@@ -27,15 +22,15 @@ const deploy = async () => {
...
@@ -27,15 +22,15 @@ const deploy = async () => {
const
repoName
=
repo
.
reponame
.
split
(
'
/
'
)[
1
]
const
repoName
=
repo
.
reponame
.
split
(
'
/
'
)[
1
]
const
latest
=
await
container
.
getTagByName
(
repo
.
reponame
,
'
latest
'
)
const
latest
=
await
container
.
getTagByName
(
repo
.
reponame
,
'
latest
'
)
const
latestImageID
=
_
.
get
(
latest
.
tagInfo
,
'
[0].tagId
'
,
''
)
const
latestImageID
=
_
.
get
(
latest
.
tagInfo
,
'
[0].tagId
'
,
''
)
const
ns
=
await
getAllNamespace
(
client
)
let
ns
=
await
getAllNamespace
(
clientNew
[
cluster
]
)
//
ns = ns.namespaces && ns.namespaces.filter(item => testNamespace.includes(item.name))
ns
=
ns
.
namespaces
&&
ns
.
namespaces
.
filter
(
item
=>
testNamespace
.
includes
(
item
.
name
))
for
(
const
namespace
of
ns
.
namespaces
)
{
for
(
const
namespace
of
ns
)
{
const
svcs
=
await
getServicesFormat
(
client
,
namespace
.
name
)
const
svcs
=
await
getServicesFormat
(
client
New
[
cluster
]
,
namespace
.
name
)
for
(
const
svc
of
svcs
)
{
for
(
const
svc
of
svcs
)
{
if
(
svc
.
serviceName
===
repoName
&&
svc
.
image
.
indexOf
(
'
latest
'
)
!==
-
1
)
{
if
(
svc
.
serviceName
===
repoName
&&
svc
.
image
.
indexOf
(
'
latest
'
)
!==
-
1
)
{
if
(
latestImageID
!==
svc
.
imageID
.
split
(
'
@
'
)[
1
])
{
if
(
latestImageID
!==
svc
.
imageID
.
split
(
'
@
'
)[
1
])
{
logger
.
info
(
'
部署项目
'
,
namespace
.
name
,
svc
.
podName
)
logger
.
info
(
'
部署项目
'
,
namespace
.
name
,
svc
.
podName
)
await
serviceRestart
(
client
,
namespace
.
name
,
svc
.
podName
)
await
serviceRestart
(
client
New
[
cluster
]
,
namespace
.
name
,
svc
.
podName
)
sleep
.
msleep
(
500
)
sleep
.
msleep
(
500
)
}
}
}
}
...
@@ -51,7 +46,7 @@ module.exports = () => {
...
@@ -51,7 +46,7 @@ module.exports = () => {
// schedule.scheduleJob('*/2 * * * *', async () => {
// schedule.scheduleJob('*/2 * * * *', async () => {
schedule
.
scheduleJob
(
'
0 2 * * *
'
,
async
()
=>
{
schedule
.
scheduleJob
(
'
0 2 * * *
'
,
async
()
=>
{
try
{
try
{
await
deploy
()
await
deploy
(
'
qa
'
)
}
catch
(
e
)
{
}
catch
(
e
)
{
logger
.
info
(
'
deployLatest
'
,
e
)
logger
.
info
(
'
deployLatest
'
,
e
)
}
}
...
...
app/schedule.js
View file @
22a35a2e
...
@@ -2,17 +2,11 @@ const schedule = require('node-schedule')
...
@@ -2,17 +2,11 @@ const schedule = require('node-schedule')
const
request
=
require
(
'
request
'
)
const
request
=
require
(
'
request
'
)
const
moment
=
require
(
'
moment
'
)
const
moment
=
require
(
'
moment
'
)
const
Redis
=
require
(
'
ioredis
'
)
const
Redis
=
require
(
'
ioredis
'
)
const
path
=
require
(
'
path
'
)
const
Client
=
require
(
'
kubernetes-client
'
).
Client
const
config
=
require
(
'
kubernetes-client
'
).
config
const
{
podGetstatus
,
getPods
}
=
require
(
'
../kubeService/service
'
)
const
{
podGetstatus
,
getPods
}
=
require
(
'
../kubeService/service
'
)
const
getClient
=
require
(
'
../resource/getClient
'
)
const
clientNew
=
{}
const
client
=
new
Client
({
config
:
config
.
fromKubeconfig
(
path
.
resolve
(
__dirname
,
'
./../kubeService/kubeConfig-qa.yaml
'
),
),
version
:
'
1.10
'
,
})
const
redis
=
new
Redis
(
6380
,
'
172.30.220.22
'
)
const
redis
=
new
Redis
(
6380
,
'
172.30.220.22
'
)
const
awaitRequest
=
function
(
options
)
{
const
awaitRequest
=
function
(
options
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
...
@@ -67,8 +61,7 @@ const dingTalkPush = async function (item, is_recover) {
...
@@ -67,8 +61,7 @@ const dingTalkPush = async function (item, is_recover) {
+
`> 命名空间 :
${
item
.
metadata
.
namespace
}
\n\n`
+
`> 命名空间 :
${
item
.
metadata
.
namespace
}
\n\n`
+
`> 异常原因 :
${
message
}
\n\n`
+
`> 异常原因 :
${
message
}
\n\n`
+
`> 异常时间 :
${
moment
()
+
`> 异常时间 :
${
moment
()
.
format
(
'
YYYY-MM-DD HH:mm:ss
'
)}
\n\n`
.
format
(
'
YYYY-MM-DD HH:mm:ss
'
)}
\n\n`
,
+
`[查看详情](http://qa2.liangkebang.com/dockers/runingEnv/
${
item
.
metadata
.
namespace
}
)`
,
},
},
};
};
await
awaitRequest
({
await
awaitRequest
({
...
@@ -90,7 +83,10 @@ const checkRecoverPod = async () => {
...
@@ -90,7 +83,10 @@ const checkRecoverPod = async () => {
const
podname
=
resKeys
[
i
].
split
(
'
#
'
)[
1
]
const
podname
=
resKeys
[
i
].
split
(
'
#
'
)[
1
]
// 获取新的状态
// 获取新的状态
if
(
podname
.
indexOf
(
resKeys
[
i
].
split
(
'
#
'
)[
1
])
>
-
1
)
{
if
(
podname
.
indexOf
(
resKeys
[
i
].
split
(
'
#
'
)[
1
])
>
-
1
)
{
const
Pod
=
await
getPods
(
client
,
namespace
)
if
(
!
clientNew
.
qa
)
{
clientNew
.
qa
=
await
getClient
(
'
qa
'
)
}
const
Pod
=
await
getPods
(
clientNew
.
qa
,
namespace
)
Pod
.
body
.
items
.
forEach
(
async
(
item
)
=>
{
Pod
.
body
.
items
.
forEach
(
async
(
item
)
=>
{
if
(
item
.
metadata
.
name
.
indexOf
(
podname
)
>
-
1
)
{
if
(
item
.
metadata
.
name
.
indexOf
(
podname
)
>
-
1
)
{
if
(
item
.
status
.
conditions
.
length
===
3
)
{
if
(
item
.
status
.
conditions
.
length
===
3
)
{
...
@@ -122,7 +118,10 @@ const checkRecoverPod = async () => {
...
@@ -122,7 +118,10 @@ const checkRecoverPod = async () => {
});
});
}
}
const
checkErrorPod
=
async
()
=>
{
const
checkErrorPod
=
async
()
=>
{
const
listPods
=
await
podGetstatus
(
client
)
if
(
!
clientNew
.
qa
)
{
clientNew
.
qa
=
await
getClient
(
'
qa
'
)
}
const
listPods
=
await
podGetstatus
(
clientNew
.
qa
)
listPods
.
body
.
items
.
forEach
((
item
)
=>
{
listPods
.
body
.
items
.
forEach
((
item
)
=>
{
const
key
=
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
#
${
item
.
metadata
.
labels
[
'
qcloud-app
'
]}
`
const
key
=
`
${
item
.
metadata
.
namespace
}
:
${
item
.
metadata
.
name
}
#
${
item
.
metadata
.
labels
[
'
qcloud-app
'
]}
`
item
.
status
.
conditions
.
forEach
(
async
(
value
)
=>
{
item
.
status
.
conditions
.
forEach
(
async
(
value
)
=>
{
...
...
app/service.js
View file @
22a35a2e
...
@@ -50,12 +50,12 @@ const createService = async (ctx) => {
...
@@ -50,12 +50,12 @@ const createService = async (ctx) => {
data
.
resources
=
resources
data
.
resources
=
resources
logger
.
info
(
'
创建服务
'
,
data
)
logger
.
info
(
'
创建服务
'
,
data
)
await
serviceCreate
(
ctx
.
clu
ster
,
ctx
.
client
,
data
)
await
serviceCreate
(
ctx
.
clu
terParams
,
ctx
.
client
,
data
)
if
(
label
!==
'
base
'
)
{
if
(
label
!==
'
base
'
)
{
if
(
serviceName
===
'
xyqb-user2
'
)
{
if
(
serviceName
===
'
xyqb-user2
'
)
{
await
ingressCreate
(
ctx
.
client
,
namespace
,
'
xyqb-user2-2
'
,
'
passportapi2
'
,
ctx
.
clusterDomain
)
await
ingressCreate
(
ctx
.
client
,
namespace
,
'
xyqb-user2-2
'
,
'
passportapi2
'
,
ctx
.
clu
terParams
.
clu
sterDomain
)
}
}
await
ingressCreate
(
ctx
.
client
,
namespace
,
serviceName
,
domain
,
ctx
.
clusterDomain
)
await
ingressCreate
(
ctx
.
client
,
namespace
,
serviceName
,
domain
,
ctx
.
clu
terParams
.
clu
sterDomain
)
}
}
ctx
.
body
=
ctx
.
ok
(
'
创建成功
'
)
ctx
.
body
=
ctx
.
ok
(
'
创建成功
'
)
}
}
...
@@ -153,7 +153,7 @@ router.get('/listEnvVars', async (ctx) => {
...
@@ -153,7 +153,7 @@ router.get('/listEnvVars', async (ctx) => {
cluster
=
parmars
.
split
(
'
@
'
)[
1
]
cluster
=
parmars
.
split
(
'
@
'
)[
1
]
}
}
if
(
!
clientNew
[
cluster
])
{
if
(
!
clientNew
[
cluster
])
{
clientNew
[
cluster
]
=
getClient
(
cluster
)
clientNew
[
cluster
]
=
await
getClient
(
cluster
)
}
}
const
res
=
await
Promise
.
all
([
const
res
=
await
Promise
.
all
([
getPods
(
clientNew
[
cluster
],
namespace
),
getPods
(
clientNew
[
cluster
],
namespace
),
...
@@ -201,7 +201,7 @@ router.get('/listEnvVarsNew', async (ctx) => {
...
@@ -201,7 +201,7 @@ router.get('/listEnvVarsNew', async (ctx) => {
cluster
=
parmars
.
split
(
'
@
'
)[
1
]
cluster
=
parmars
.
split
(
'
@
'
)[
1
]
}
}
if
(
!
clientNew
[
cluster
])
{
if
(
!
clientNew
[
cluster
])
{
clientNew
[
cluster
]
=
getClient
(
cluster
)
clientNew
[
cluster
]
=
await
getClient
(
cluster
)
}
}
const
res
=
await
Promise
.
all
([
const
res
=
await
Promise
.
all
([
getPods
(
clientNew
[
cluster
],
namespace
),
getPods
(
clientNew
[
cluster
],
namespace
),
...
...
kubeService/service.js
View file @
22a35a2e
...
@@ -85,8 +85,9 @@ const createNamespace = async (client, name, description) => {
...
@@ -85,8 +85,9 @@ const createNamespace = async (client, name, description) => {
}
}
const
serviceCreate
=
async
(
cluster
,
client
,
data
)
=>
{
const
serviceCreate
=
async
(
cluterParams
,
client
,
data
)
=>
{
data
.
cluster
=
cluster
data
.
cluster
=
cluterParams
.
cluster
data
.
hosts
=
cluterParams
.
hosts
const
{
namespace
,
serviceName
}
=
data
const
{
namespace
,
serviceName
}
=
data
const
manifestArray
=
makeManifest
(
data
)
const
manifestArray
=
makeManifest
(
data
)
...
...
middleware/client/index.js
View file @
22a35a2e
const
path
=
require
(
'
path
'
)
const
Client
=
require
(
'
kubernetes-client
'
).
Client
const
Client
=
require
(
'
kubernetes-client
'
).
Client
const
config
=
require
(
'
kubernetes-client
'
).
config
const
config
=
require
(
'
kubernetes-client
'
).
config
const
awaitRequest
=
require
(
'
../../utils/awaitRequest
'
)
module
.
exports
=
function
client
()
{
module
.
exports
=
function
client
()
{
const
client
=
{}
const
client
=
{}
const
domain
=
{}
return
async
function
(
ctx
,
next
)
{
return
async
function
(
ctx
,
next
)
{
const
exclude
=
[
const
exclude
=
[
'
/service/listEnvVarsNew
'
,
'
/service/listEnvVarsNew
'
,
...
@@ -17,39 +18,31 @@ module.exports = function client() {
...
@@ -17,39 +18,31 @@ module.exports = function client() {
await
next
()
await
next
()
}
else
{
}
else
{
const
cluster
=
ctx
.
request
.
headers
.
cluster
const
cluster
=
ctx
.
request
.
headers
.
cluster
let
yaml
=
''
let
clusterDomain
=
''
switch
(
cluster
)
{
case
'
qa
'
:
yaml
=
'
./../../kubeService/kubeConfig-qa.yaml
'
clusterDomain
=
'
liangkebang.net
'
break
case
'
dev-ops
'
:
yaml
=
'
./../../kubeService/kubeConfig-dev-ops.yaml
'
clusterDomain
=
'
liangkebang.net
'
break
case
'
qke
'
:
yaml
=
'
./../../kubeService/kubeConfig-qke.yaml
'
clusterDomain
=
'
liangkebang.com
'
break
default
:
ctx
.
body
=
{
code
:
'
0001
'
,
msg
:
'
请选择集群的名字
'
,
}
return
}
if
(
!
client
[
cluster
])
{
if
(
!
client
[
cluster
])
{
// 请求qa-api
const
res
=
await
awaitRequest
({
url
:
`http://127.0.0.1:3003/cluster/list?clusterName=
${
cluster
}
`
,
method
:
'
get
'
,
})
const
ca
=
JSON
.
parse
(
res
.
body
).
data
[
0
]
client
[
cluster
]
=
new
Client
({
client
[
cluster
]
=
new
Client
({
config
:
config
.
fromKubeconfig
(
config
:
config
.
fromKubeconfig
(
ca
.
clusterCA
),
path
.
resolve
(
__dirname
,
yaml
),
),
version
:
'
1.10
'
,
version
:
'
1.10
'
,
})
})
let
hosts
=
''
ca
.
hosts
.
forEach
((
item
)
=>
{
console
.
log
(
item
)
hosts
+=
`
${
item
.
value
}
&`
})
domain
[
`
${
cluster
}
domain`
]
=
{
clusterDomain
:
ca
.
clusterDomain
,
cluster
:
ca
.
clusterName
,
hosts
,
}
}
}
ctx
.
client
=
client
[
cluster
]
ctx
.
client
=
client
[
cluster
]
ctx
.
clu
ster
=
cluster
ctx
.
clu
terParams
=
domain
[
`
${
cluster
}
domain`
]
c
tx
.
clusterDomain
=
clusterDomain
c
onsole
.
log
(
ctx
.
cluterParams
)
await
next
()
await
next
()
}
}
}
}
...
...
resource/getClient.js
View file @
22a35a2e
const
path
=
require
(
'
path
'
)
const
Client
=
require
(
'
kubernetes-client
'
).
Client
const
Client
=
require
(
'
kubernetes-client
'
).
Client
const
config
=
require
(
'
kubernetes-client
'
).
config
const
config
=
require
(
'
kubernetes-client
'
).
config
const
awaitRequest
=
require
(
'
../utils/awaitRequest
'
)
module
.
exports
=
function
getClient
(
cluster
)
{
module
.
exports
=
async
function
getClient
(
cluster
)
{
let
yaml
=
''
const
res
=
await
awaitRequest
({
switch
(
cluster
)
{
url
:
`http://127.0.0.1:3003/cluster/list?clusterName=
${
cluster
}
`
,
case
'
qa
'
:
method
:
'
get
'
,
yaml
=
'
./../kubeService/kubeConfig-qa.yaml
'
})
break
;
const
ca
=
JSON
.
parse
(
res
.
body
).
data
[
0
]
case
'
dev-ops
'
:
yaml
=
'
./../kubeService/kubeConfig-dev-ops.yaml
'
break
case
'
qke
'
:
yaml
=
'
./../kubeService/kubeConfig-qke.yaml
'
break
default
:
throw
Error
(
'
未获取到Client
'
)
}
return
new
Client
({
return
new
Client
({
config
:
config
.
fromKubeconfig
(
config
:
config
.
fromKubeconfig
(
ca
.
clusterCA
),
path
.
resolve
(
__dirname
,
yaml
),
),
version
:
'
1.10
'
,
version
:
'
1.10
'
,
})
})
}
}
utils/awaitRequest
0 → 100644
View file @
22a35a2e
const request = require('request')
module.exports = function (options) {
return new Promise((resolve, reject) => {
request(Object.assign(options, {
headers: {
'Content-Type': 'application/json;charset=utf-8',
},
}), (error, res) => {
if (error) {
reject(error)
} else {
resolve(res)
}
})
})
}
yamls/java.yaml
View file @
22a35a2e
...
@@ -58,6 +58,8 @@ spec:
...
@@ -58,6 +58,8 @@ spec:
value
:
{{
cluster
}}
value
:
{{
cluster
}}
-
name
:
SYSTEM_NAME
-
name
:
SYSTEM_NAME
value
:
{{
serviceName
}}
value
:
{{
serviceName
}}
-
name
:
HOSTS
value
:
{{
hosts
}}
-
name
:
DEBUG
-
name
:
DEBUG
value
:
{{
debug
}}
value
:
{{
debug
}}
-
name
:
MOCK
-
name
:
MOCK
...
...
yamls/ui.node.yaml
View file @
22a35a2e
...
@@ -52,6 +52,8 @@ spec:
...
@@ -52,6 +52,8 @@ spec:
value
:
{{
serviceName
}}
value
:
{{
serviceName
}}
-
name
:
DEBUG
-
name
:
DEBUG
value
:
{{
debug
}}
value
:
{{
debug
}}
-
name
:
HOSTS
value
:
{{
hosts
}}
-
name
:
NODE_ENV
-
name
:
NODE_ENV
value
:
test
value
:
test
-
name
:
CLUSTER
-
name
:
CLUSTER
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment