1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ${APP_NAME}
environment: ${RUN_ENV}
name: ${APP_NAME}
namespace: ${NAMESPACE}
spec:
progressDeadlineSeconds: 600
replicas: ${REPLICAS}
selector:
matchLabels:
app: ${APP_NAME}
environment: ${RUN_ENV}
template:
metadata:
labels:
app: ${APP_NAME}
environment: ${RUN_ENV}
annotations:
prometheus.io/scrape: "${ENABLE_SCRAPE}"
prometheus.io/port: "${RUN_PORT}"
prometheus.io/path: "${METRICS_PATH}"
kubesphere.io/collectSavedLog: 'true'
logging.kubesphere.io/logsidecar-config: '{"containerLogConfigs":{"${APP_NAME}":{"${APP_NAME}-log-volume":["*.log"]}}}'
spec:
volumes:
- name: ${APP_NAME}-log-volume
emptyDir: {}
- name: heap-dumps
emptyDir: {}
containers:
- name: ${APP_NAME}
env:
- name: JAVA_OPTS
value: -server -Dapp.id=${APP_NAME} -Denv=${RUN_ENV} -Dapollo.cacheDir=/services/apollo -Dspring.profiles.active=${RUN_ENV} -Xms${HEAP_XMS} -Xmx${HEAP_XMX} -Xss512k -XX:ParallelGCThreads=4 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -Xlog:gc* -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dumper -Dsun.net.inetaddr.ttl=60 -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark -Dcom.sun.management.jmxremote.port=19185 -Dtomcat.base=/services/tomcat -Dio.netty.tryReflectionSetAccessible=true --add-exports java.base/jdk.internal.misc=ALL-UNNAMED -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dlog.base=/services/logs/ -verbose:gc -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:19085
image: $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:${RUN_ENV}-${BRANCH_NAME}-${COMMIT_HASH}-$DATE-${BUILD_NUMBER}
lifecycle:
postStart:
exec:
command:
- "sh"
- "-c"
- >
wget -P /services/ http://192.168.0.169:12306/download/finch.jar;
nohup java -Dapp.id=finch -Denv=${RUN_ENV} -jar /services/finch.jar &
volumeMounts:
- mountPath: "/services/logs/"
name: ${APP_NAME}-log-volume
- mountPath: /dumper
name: heap-dumps
livenessProbe:
httpGet:
path: ${HEALTH_PATH}
port: ${RUN_PORT}
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 3
successThreshold: 1
failureThreshold: 10
readinessProbe:
httpGet:
path: ${HEALTH_PATH}
port: ${RUN_PORT}
initialDelaySeconds: 60
periodSeconds: 30
successThreshold: 1
failureThreshold: 10
imagePullPolicy: IfNotPresent
ports:
- containerPort: ${RUN_PORT}
protocol: TCP
resources:
limits:
cpu: ${LIMIT_CPU}
memory: ${LIMIT_MEMORY}
requests:
cpu: ${REQUEST_CPU}
memory: ${REQUEST_MEMORY}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
securityContext:
runAsUser: 5000
runAsGroup: 5000
allowPrivilegeEscalation: false
- name: dumper
image: 'harbor.m.cn/library/dumper:1.96'
env:
- name: COS_BUCKETURL
value: 'https://jvm-dump.cos.ap-guangzhou.myqcloud.com'
- name: COS_DUMPER_ROOT
value: /
- name: APP_NAME
value: ${APP_NAME}
- name: DUMPER_ROOT
value: /dumper/
- name: RUN_ENV_NAME
value: ${RUN_ENV}
resources:
limits:
cpu: 4000m
memory: 4000Mi
requests:
cpu: 1000m
memory: 1000Mi
volumeMounts:
- name: heap-dumps
mountPath: /dumper
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 30
imagePullSecrets:
- name: ${IMAGE_PULL_SECRETS}
```
|