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
0ef51ab9
Commit
0ef51ab9
authored
Dec 11, 2019
by
智勇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
go
parent
c671ba7d
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
236 additions
and
11 deletions
+236
-11
restartLatest.js
app/restartLatest.js
+16
-5
service.js
app/service.js
+3
-2
ingress.js
kubeService/ingress.js
+4
-4
resourceLimit.js
resource/resourceLimit.js
+12
-0
dingTalk.js
utils/dingTalk.js
+23
-0
consul.pvc.yaml
yamls/consul.pvc.yaml
+79
-0
go.yaml
yamls/go.yaml
+95
-0
index.js
yamls/index.js
+4
-0
No files found.
app/restartLatest.js
View file @
0ef51ab9
...
@@ -7,19 +7,24 @@ const {
...
@@ -7,19 +7,24 @@ const {
}
=
require
(
'
../kubeService/service
'
)
}
=
require
(
'
../kubeService/service
'
)
const
container
=
require
(
'
../services/tke.containerService
'
).
create
()
const
container
=
require
(
'
../services/tke.containerService
'
).
create
()
const
getClient
=
require
(
'
../resource/getClient
'
)
const
getClient
=
require
(
'
../resource/getClient
'
)
const
dingTalk
=
require
(
'
../utils/dingTalk
'
)
const
makeResouce
=
require
(
'
./../resource/makeResouce
'
)
const
makeResouce
=
require
(
'
./../resource/makeResouce
'
)
const
address
=
'
https://oapi.dingtalk.com/robot/send?access_token=99e801a2cf26680e6ce09cb12f830c21a03ae3df07d18f6a38e1db54c0e95f2c
'
const
deploy
=
async
(
cluster
)
=>
{
const
deploy
=
async
(
cluster
)
=>
{
logger
.
info
(
'
deployLatest start
'
)
logger
.
info
(
'
deployLatest start
'
)
const
client
=
await
getClient
(
cluster
)
const
client
=
await
getClient
(
cluster
)
const
ns
=
await
getAllNamespace
(
client
.
clientInfo
)
const
ns
=
await
getAllNamespace
(
client
.
clientInfo
)
// // for test
// // for test
// const testNamespace = ['
fis
']
// const testNamespace = ['
ka3
']
// const nsTest = ns.namespaces && ns.namespaces.filter(item => testNamespace.includes(item.name))
// const nsTest = ns.namespaces && ns.namespaces.filter(item => testNamespace.includes(item.name))
// for (const namespace of nsTest) {
// for (const namespace of nsTest) {
for
(
const
namespace
of
ns
.
namespaces
)
{
for
(
const
namespace
of
ns
.
namespaces
)
{
logger
.
info
(
'
开始检查ns:
'
,
namespace
.
name
)
logger
.
info
(
'
开始检查ns:
'
,
namespace
.
name
)
const
latestArray
=
[]
const
masterArray
=
[]
const
svcs
=
await
getServicesFormat
(
client
.
clientInfo
,
namespace
.
name
)
const
svcs
=
await
getServicesFormat
(
client
.
clientInfo
,
namespace
.
name
)
for
(
const
svc
of
svcs
)
{
for
(
const
svc
of
svcs
)
{
...
@@ -31,9 +36,10 @@ const deploy = async (cluster) => {
...
@@ -31,9 +36,10 @@ const deploy = async (cluster) => {
const
latestImageID
=
_
.
get
(
latest
.
tagInfo
,
'
[0].tagId
'
,
''
)
const
latestImageID
=
_
.
get
(
latest
.
tagInfo
,
'
[0].tagId
'
,
''
)
if
(
svc
.
imageID
.
split
(
'
@
'
)[
1
]
!==
latestImageID
)
{
if
(
svc
.
imageID
.
split
(
'
@
'
)[
1
]
!==
latestImageID
)
{
logger
.
info
(
'
latest不一致,部署项目
'
,
namespace
.
name
,
svc
.
podName
)
logger
.
info
(
'
latest不一致,部署项目
'
,
namespace
.
name
,
svc
.
podName
)
latestArray
.
push
(
svc
.
image
.
split
(
'
/
'
)[
2
])
await
serviceRestart
(
client
.
clientInfo
,
namespace
.
name
,
svc
.
podName
)
await
serviceRestart
(
client
.
clientInfo
,
namespace
.
name
,
svc
.
podName
)
}
}
sleep
.
msleep
(
1000
)
sleep
.
msleep
(
5
*
1000
)
}
}
// 把master更新部署成lastet
// 把master更新部署成lastet
if
(
~
svc
.
image
.
search
(
'
:master-
'
))
{
if
(
~
svc
.
image
.
search
(
'
:master-
'
))
{
...
@@ -54,17 +60,22 @@ const deploy = async (cluster) => {
...
@@ -54,17 +60,22 @@ const deploy = async (cluster) => {
const
resources
=
await
makeResouce
(
data
.
serviceName
,
data
.
label
)
const
resources
=
await
makeResouce
(
data
.
serviceName
,
data
.
label
)
data
.
resources
=
resources
data
.
resources
=
resources
await
deployUpdate
(
client
.
clusterInfo
,
client
.
clientInfo
,
data
)
await
deployUpdate
(
client
.
clusterInfo
,
client
.
clientInfo
,
data
)
sleep
.
msleep
(
1000
)
masterArray
.
push
(
svc
.
image
.
split
(
'
/
'
)[
2
])
sleep
.
msleep
(
5
*
1000
)
}
}
}
}
const
text
=
`namespace :
${
namespace
.
name
}
\n\n`
+
`重新部署的latest : \n\n
${
latestArray
.
join
(
'
\n\n
'
)}
\n\n`
+
`重新部署的master : \n\n
${
masterArray
.
join
(
'
\n\n
'
)}
`
dingTalk
(
`
${
namespace
.
name
}
latest 部署结果`
,
text
,
address
)
logger
.
info
(
'
ns:
'
,
namespace
.
name
,
'
检查完毕
'
)
logger
.
info
(
'
ns:
'
,
namespace
.
name
,
'
检查完毕
'
)
}
}
logger
.
info
(
'
deployLatest end
'
)
logger
.
info
(
'
deployLatest end
'
)
}
}
module
.
exports
=
()
=>
{
module
.
exports
=
()
=>
{
// schedule.scheduleJob('*/
2
* * * *', async () => {
// schedule.scheduleJob('*/
4
* * * *', async () => {
schedule
.
scheduleJob
(
'
0
2
* * *
'
,
async
()
=>
{
schedule
.
scheduleJob
(
'
0
3
* * *
'
,
async
()
=>
{
try
{
try
{
await
deploy
(
'
qa
'
)
await
deploy
(
'
qa
'
)
}
catch
(
e
)
{
}
catch
(
e
)
{
...
...
app/service.js
View file @
0ef51ab9
...
@@ -70,10 +70,11 @@ const createService = async (ctx) => {
...
@@ -70,10 +70,11 @@ const createService = async (ctx) => {
logger
.
info
(
'
创建服务
'
,
data
)
logger
.
info
(
'
创建服务
'
,
data
)
await
serviceCreate
(
ctx
.
cluterParams
,
ctx
.
client
,
data
)
await
serviceCreate
(
ctx
.
cluterParams
,
ctx
.
client
,
data
)
if
(
label
!==
'
base
'
)
{
if
(
label
!==
'
base
'
)
{
const
port
=
serviceName
===
'
heimdallr
'
?
5555
:
80
if
(
serviceName
===
'
xyqb-user2
'
)
{
if
(
serviceName
===
'
xyqb-user2
'
)
{
await
ingressCreate
(
ctx
.
client
,
namespace
,
'
xyqb-user2-2
'
,
'
passportapi2
'
,
ctx
.
cluterParams
.
clusterDomain
)
await
ingressCreate
(
ctx
.
client
,
namespace
,
'
xyqb-user2-2
'
,
'
passportapi2
'
,
ctx
.
cluterParams
.
clusterDomain
,
port
)
}
}
await
ingressCreate
(
ctx
.
client
,
namespace
,
serviceName
,
domain
,
ctx
.
cluterParams
.
clusterDomain
)
await
ingressCreate
(
ctx
.
client
,
namespace
,
serviceName
,
domain
,
ctx
.
cluterParams
.
clusterDomain
,
port
)
}
}
ctx
.
body
=
ctx
.
ok
(
'
创建成功
'
)
ctx
.
body
=
ctx
.
ok
(
'
创建成功
'
)
}
}
...
...
kubeService/ingress.js
View file @
0ef51ab9
const
logger
=
require
(
'
koa-log4
'
).
getLogger
(
'
ingressHandle
'
)
const
logger
=
require
(
'
koa-log4
'
).
getLogger
(
'
ingressHandle
'
)
const
getManifest
=
(
namespace
,
servicename
,
doamin
,
clusterDomain
)
=>
({
const
getManifest
=
(
namespace
,
servicename
,
doamin
,
clusterDomain
,
port
)
=>
({
apiVersion
:
'
extensions/v1beta1
'
,
apiVersion
:
'
extensions/v1beta1
'
,
kind
:
'
Ingress
'
,
kind
:
'
Ingress
'
,
metadata
:
{
metadata
:
{
...
@@ -20,7 +20,7 @@ const getManifest = (namespace, servicename, doamin, clusterDomain) => ({
...
@@ -20,7 +20,7 @@ const getManifest = (namespace, servicename, doamin, clusterDomain) => ({
path
:
'
/
'
,
path
:
'
/
'
,
backend
:
{
backend
:
{
serviceName
:
`
${
servicename
}
`
.
replace
(
'
-2
'
,
''
),
serviceName
:
`
${
servicename
}
`
.
replace
(
'
-2
'
,
''
),
servicePort
:
80
,
servicePort
:
port
,
},
},
},
},
],
],
...
@@ -32,8 +32,8 @@ const getManifest = (namespace, servicename, doamin, clusterDomain) => ({
...
@@ -32,8 +32,8 @@ const getManifest = (namespace, servicename, doamin, clusterDomain) => ({
const
ingressGet
=
async
(
client
,
namespace
,
servicename
)
=>
client
.
apis
.
extensions
.
v1beta1
.
namespaces
(
namespace
)
const
ingressGet
=
async
(
client
,
namespace
,
servicename
)
=>
client
.
apis
.
extensions
.
v1beta1
.
namespaces
(
namespace
)
.
ingresses
(
servicename
).
get
()
.
ingresses
(
servicename
).
get
()
const
ingressCreate
=
async
(
client
,
namespace
,
servicename
,
doamin
,
clusterDomain
)
=>
{
const
ingressCreate
=
async
(
client
,
namespace
,
servicename
,
doamin
,
clusterDomain
,
port
)
=>
{
const
Manifest
=
getManifest
(
namespace
,
servicename
,
doamin
,
clusterDomain
)
const
Manifest
=
getManifest
(
namespace
,
servicename
,
doamin
,
clusterDomain
,
port
)
logger
.
info
(
'
创建ingress
'
,
JSON
.
stringify
(
Manifest
))
logger
.
info
(
'
创建ingress
'
,
JSON
.
stringify
(
Manifest
))
await
client
.
apis
.
extensions
.
v1beta1
.
namespace
(
namespace
).
ingresses
await
client
.
apis
.
extensions
.
v1beta1
.
namespace
(
namespace
).
ingresses
.
post
({
body
:
Manifest
})
.
post
({
body
:
Manifest
})
...
...
resource/resourceLimit.js
View file @
0ef51ab9
...
@@ -31,6 +31,17 @@ const defaultZookeeper = {
...
@@ -31,6 +31,17 @@ const defaultZookeeper = {
},
},
}
}
const
defaultConsul
=
{
memory
:
{
request
:
300
,
limit
:
300
,
},
cpu
:
{
request
:
100
,
limit
:
200
,
},
}
const
defaultRedis
=
{
const
defaultRedis
=
{
memory
:
{
memory
:
{
request
:
100
,
request
:
100
,
...
@@ -74,6 +85,7 @@ exports.defaultConfig = {
...
@@ -74,6 +85,7 @@ exports.defaultConfig = {
redis
:
defaultRedis
,
redis
:
defaultRedis
,
'
redis-sentinel
'
:
defaultRedis
,
'
redis-sentinel
'
:
defaultRedis
,
zookeeper
:
defaultZookeeper
,
zookeeper
:
defaultZookeeper
,
consul
:
defaultConsul
,
mysql
:
defaultMysql
,
mysql
:
defaultMysql
,
rabbitmq
:
defaultRabbitmq
,
rabbitmq
:
defaultRabbitmq
,
java
:
defaultJava
,
java
:
defaultJava
,
...
...
utils/dingTalk.js
0 → 100644
View file @
0ef51ab9
const
logger
=
require
(
'
koa-log4
'
).
getLogger
(
'
dingtalk
'
)
const
awaitRequest
=
require
(
'
./awaitRequest
'
)
module
.
exports
=
async
(
title
,
text
,
url
)
=>
{
const
dingData
=
{
msgtype
:
'
markdown
'
,
markdown
:
{
title
,
text
,
},
}
if
(
url
)
{
await
awaitRequest
({
url
,
method
:
'
POST
'
,
headers
:
{
'
Content-Type
'
:
'
application/json;charset=utf-8
'
,
},
body
:
JSON
.
stringify
(
dingData
),
})
logger
.
info
(
`发送 dingtalk
${
JSON
.
stringify
(
dingData
)}
`
)
}
}
yamls/consul.pvc.yaml
0 → 100644
View file @
0ef51ab9
apiVersion
:
v1
kind
:
Service
metadata
:
labels
:
type
:
base
qcloud-app
:
{{
serviceName
}}
name
:
{{
serviceName
}}
namespace
:
{{
namespace
}}
spec
:
type
:
NodePort
ports
:
-
port
:
8500
selector
:
qcloud-app
:
{{
serviceName
}}
---
kind
:
PersistentVolumeClaim
apiVersion
:
v1
metadata
:
name
:
{{
serviceName
}}
-{{namespace}}
namespace
:
{{
namespace
}}
spec
:
# storageClassName: cbs-3
accessModes
:
-
ReadWriteOnce
resources
:
requests
:
storage
:
10Gi
---
apiVersion
:
apps/v1beta1
kind
:
Deployment
metadata
:
labels
:
type
:
base
qcloud-app
:
{{
serviceName
}}
name
:
{{
serviceName
}}
namespace
:
{{
namespace
}}
spec
:
replicas
:
1
revisionHistoryLimit
:
1
selector
:
matchLabels
:
qcloud-app
:
{{
serviceName
}}
strategy
:
type
:
Recreate
template
:
metadata
:
labels
:
qcloud-app
:
{{
serviceName
}}
type
:
base
spec
:
containers
:
-
image
:
ccr.ccs.tencentyun.com/{{image}}
imagePullPolicy
:
Always
name
:
{{
serviceName
}}
resources
:
requests
:
cpu
:
{{
resources.cpu.request
}}
m
memory
:
{{
resources.memory.request
}}
Mi
limits
:
cpu
:
{{
resources.cpu.limit
}}
m
memory
:
{{
resources.memory.limit
}}
Mi
env
:
volumeMounts
:
-
mountPath
:
"
/var/lib/mysql"
name
:
{{
serviceName
}}
volumes
:
-
name
:
{{
serviceName
}}
persistentVolumeClaim
:
claimName
:
{{
serviceName
}}
-{{namespace}}
imagePullSecrets
:
-
name
:
qcloudregistrykey
-
name
:
tencenthubkey
restartPolicy
:
Always
terminationGracePeriodSeconds
:
30
status
:
{}
yamls/go.yaml
0 → 100644
View file @
0ef51ab9
apiVersion
:
v1
kind
:
Service
metadata
:
labels
:
type
:
{{
label
}}
qcloud-app
:
{{
serviceName
}}
name
:
{{
serviceName
}}
namespace
:
{{
namespace
}}
spec
:
type
:
NodePort
ports
:
-
name
:
'
5555'
port
:
5555
-
name
:
'
9100'
port
:
9100
-
name
:
'
9999'
port
:
9999
selector
:
qcloud-app
:
{{
serviceName
}}
---
apiVersion
:
apps/v1beta1
kind
:
Deployment
metadata
:
name
:
{{
serviceName
}}
namespace
:
{{
namespace
}}
labels
:
type
:
{{
label
}}
qcloud-app
:
{{
serviceName
}}
spec
:
# replicas: 1
revisionHistoryLimit
:
1
# selector:
# matchLabels:
# qcloud-app: {{serviceName}}
strategy
:
type
:
Recreate
template
:
metadata
:
labels
:
qcloud-app
:
{{
serviceName
}}
type
:
{{
label
}}
spec
:
terminationGracePeriodSeconds
:
0
containers
:
-
name
:
{{
serviceName
}}
image
:
ccr.ccs.tencentyun.com/{{image}}
# imagePullPolicy: IfNotPresent
volumeMounts
:
-
mountPath
:
/home/logs
name
:
filelog
env
:
-
name
:
NAMESPACE
value
:
{{
namespace
}}
-
name
:
SYSTEM_NAME
value
:
{{
serviceName
}}
-
name
:
DEBUG
value
:
{{
debug
}}
-
name
:
HOSTS
value
:
{{
hosts
}}
-
name
:
NODE_ENV
value
:
test
-
name
:
CLUSTER
value
:
{{
cluster
}}
resources
:
requests
:
cpu
:
{{
resources.cpuRequest
}}
m
memory
:
{{
resources.memRequest
}}
Mi
limits
:
cpu
:
{{
resources.cpuLimit
}}
m
memory
:
{{
resources.memLimit
}}
Mi
# livenessProbe:
# exec:
# command:
# - /home/quant_group/readyCheck.sh
# initialDelaySeconds: 100
# successThreshold: 1
# readinessProbe:
# exec:
# command:
# - /home/quant_group/readyCheck.sh
# initialDelaySeconds: 2
# timeoutSeconds: 1
# periodSeconds: 5
# successThreshold: 1
volumes
:
-
name
:
filelog
hostPath
:
path
:
/var/log/containers2/{{namespace}}/{{serviceName}}
restartPolicy
:
Always
dnsPolicy
:
ClusterFirst
imagePullSecrets
:
-
name
:
qcloudregistrykey
-
name
:
tencenthubkey
yamls/index.js
View file @
0ef51ab9
...
@@ -6,9 +6,11 @@ const redis_sentinel = fs.readFileSync('yamls/redis.sentinel.yaml', 'utf8')
...
@@ -6,9 +6,11 @@ const redis_sentinel = fs.readFileSync('yamls/redis.sentinel.yaml', 'utf8')
const
rabbitmq
=
fs
.
readFileSync
(
'
yamls/rabbitmq.pvc.yaml
'
,
'
utf8
'
)
const
rabbitmq
=
fs
.
readFileSync
(
'
yamls/rabbitmq.pvc.yaml
'
,
'
utf8
'
)
const
mongodb
=
fs
.
readFileSync
(
'
yamls/mongo.pvc.yaml
'
,
'
utf8
'
)
const
mongodb
=
fs
.
readFileSync
(
'
yamls/mongo.pvc.yaml
'
,
'
utf8
'
)
const
zookeeper
=
fs
.
readFileSync
(
'
yamls/zookeeper.pvc.yaml
'
,
'
utf8
'
)
const
zookeeper
=
fs
.
readFileSync
(
'
yamls/zookeeper.pvc.yaml
'
,
'
utf8
'
)
const
consul
=
fs
.
readFileSync
(
'
yamls/consul.pvc.yaml
'
,
'
utf8
'
)
const
ui
=
fs
.
readFileSync
(
'
yamls/ui.node.yaml
'
,
'
utf8
'
)
const
ui
=
fs
.
readFileSync
(
'
yamls/ui.node.yaml
'
,
'
utf8
'
)
const
node
=
fs
.
readFileSync
(
'
yamls/ui.node.yaml
'
,
'
utf8
'
)
const
node
=
fs
.
readFileSync
(
'
yamls/ui.node.yaml
'
,
'
utf8
'
)
const
java
=
fs
.
readFileSync
(
'
yamls/java.yaml
'
,
'
utf8
'
)
const
java
=
fs
.
readFileSync
(
'
yamls/java.yaml
'
,
'
utf8
'
)
const
go
=
fs
.
readFileSync
(
'
yamls/go.yaml
'
,
'
utf8
'
)
const
python
=
fs
.
readFileSync
(
'
yamls/python.yaml
'
,
'
utf8
'
)
const
python
=
fs
.
readFileSync
(
'
yamls/python.yaml
'
,
'
utf8
'
)
const
tencenthubkey
=
fs
.
readFileSync
(
'
yamls/tencenthubkey.yaml
'
,
'
utf8
'
)
const
tencenthubkey
=
fs
.
readFileSync
(
'
yamls/tencenthubkey.yaml
'
,
'
utf8
'
)
...
@@ -19,9 +21,11 @@ module.exports = {
...
@@ -19,9 +21,11 @@ module.exports = {
rabbitmq
,
rabbitmq
,
mongodb
,
mongodb
,
zookeeper
,
zookeeper
,
consul
,
ui
,
ui
,
node
,
node
,
java
,
java
,
go
,
python
,
python
,
tencenthubkey
,
tencenthubkey
,
}
}
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