开发测试环境
apiVersion: apps/v1kind: Deploymentmetadata:labels:app: kubespherecomponent: $APP_NAMEtier: backend# 服务名称name: $APP_NAME# 项目名称namespace: $NAMESPACEspec:progressDeadlineSeconds: 600replicas: 1selector:matchLabels:app: kubespherecomponent: $APP_NAMEtier: backendtemplate:metadata:labels:app: kubespherecomponent: $APP_NAMEtier: backendspec:initContainers:# 初始化容器- name: ur-paas-init-cimage: $HARBOR_HOST/paas/init-container:1.0.0imagePullPolicy: IfNotPresentcommand: ["cp", "-r", "/agent/", "/share/"]volumeMounts:- name: ur-sharemountPath: /shareresources:requests:cpu: 200mmemory: 200Milimits:cpu: 200mmemory: 200Micontainers:- name: $APP_NAME-cimage: $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBERcommand: ["sh","/home/run.sh"]imagePullPolicy: Alwayslifecycle:preStop:exec:command: ["sh", "-c", "sleep 10"]env:- name: JAVA_OPTSvalue: $JAVA_OPTS- name: CACHE_IGNOREvalue: js|html- name: CACHE_PUBLIC_EXPIRATIONvalue: 3d# 时区- name: TZvalue: Asia/Shanghai# 引入skywalking agent- name: SW_AGENT_NAMEvalue: ${APP_NAME}_${NAMESPACE}# skywalking oap 后端- name: SW_AGENT_COLLECTOR_BACKEND_SERVICESvalue: ${SW_BACKEND}# nacos 注册中心配置中心- name: NACOS_HOSTvalue: ${NACOS_HOST}- name: NACOS_NAMESPACEvalue: ${NACOS_NAMESPACE}- name: NACOS_GROUPvalue: ${NACOS_GROUP}- name: POD_IDvalueFrom:fieldRef:fieldPath: metadata.namelivenessProbe:httpGet:path: $HEALTH_PATHport: $CONTAINER_PORTinitialDelaySeconds: 300successThreshold: 1timeoutSeconds: 10failureThreshold: 10periodSeconds: 10readinessProbe:httpGet:path: $HEALTH_PATHport: $CONTAINER_PORTinitialDelaySeconds: 150timeoutSeconds: 10failureThreshold: 30periodSeconds: 5ports:- containerPort: $CONTAINER_PORTprotocol: TCPvolumeMounts:- name: ur-sharemountPath: /share- name: jvmmountPath: /home/jvm/- name: runmountPath: /home/run.shsubPath: run.shresources:limits:cpu: 1memory: 2Girequests:cpu: 1memory: 2GiterminationMessagePath: /dev/termination-logterminationMessagePolicy: Filevolumes:# ur共享文件夹- name: ur-shareemptyDir: {}- name: jvmemptyDir: {}- name: runconfigMap:defaultMode: 0777name: $APP_NAMEdnsPolicy: ClusterFirstimagePullSecrets:- name: $HARBOR_CREDENTIAL_IDrestartPolicy: AlwaysterminationGracePeriodSeconds: 30---apiVersion: v1kind: ConfigMapmetadata:name: $APP_NAMEnamespace: $NAMESPACEdata:run.sh: |#!/bin/bashecho -javaagent:/share/agent/skywalking/skywalking-agent.jar \-XX:+UseContainerSupport \-XX:MaxRAMPercentage=75.0 \-XX:MinRAMPercentage=75.0 \-XX:InitialRAMPercentage=75.0 \-XX:MetaspaceSize=256m \-XX:MaxMetaspaceSize=256m \-XX:+UseConcMarkSweepGC \-XX:+UseCMSCompactAtFullCollection \-XX:+CMSClassUnloadingEnabled \-XX:CMSInitiatingOccupancyFraction=80 \-XX:+UseCMSInitiatingOccupancyOnly \-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses \-Dsun.rmi.dgc.server.gcInterval=2592000000 \-Dsun.rmi.dgc.client.gcInterval=2592000000 \-XX:+UseParNewGC \-XX:ParallelGCThreads=4 \-XX:SurvivorRatio=8 \-XX:+PrintGCDetails \-XX:+PrintGCDateStamps \-XX:+PrintTenuringDistribution \-XX:+PrintHeapAtGC \-XX:+PrintReferenceGC \-XX:+PrintGCApplicationStoppedTime \-XX:+UseGCLogFileRotation \-XX:NumberOfGCLogFiles=10 \-XX:GCLogFileSize=1000m \-Xloggc:/home/jvm/gc-$${p}POD_ID-$(date +"%Y-%m-%d-%H-%M-%S").log \-XX:+HeapDumpOnOutOfMemoryError \-XX:HeapDumpPath=/home/jvm/dump-$${p}POD_ID-$(date +"%Y-%m-%d-%H-%M-%S").hprof > /home/jvm/java_tool_opts.shexport JAVA_TOOL_OPTIONS=$(cat /home/jvm/java_tool_opts.sh)java -jar ${${p}JAVA_OPTS} -javaagent:/share/agent/jacoco/jacocoagent.jar=includes=com.ur.ufm.*,output=tcpserver,append=false,address=0.0.0.0,port=1234 -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=10000 -Dsun.net.client.defaultReadTimeout=30000 -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom *.jar
预发生产环境
apiVersion: apps/v1kind: Deploymentmetadata:labels:app: kubespherecomponent: $APP_NAMEtier: backend# 服务名称name: $APP_NAME# 项目名称namespace: $NAMESPACEspec:progressDeadlineSeconds: 600replicas: 2selector:matchLabels:app: kubespherecomponent: $APP_NAMEtier: backendtemplate:metadata:labels:app: kubespherecomponent: $APP_NAMEtier: backendspec:affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: componentoperator: Invalues:- $APP_NAMEtopologyKey: "kubernetes.io/hostname"initContainers:# 初始化容器- name: ur-paas-initimage: $HARBOR_HOST/paas/init-container:1.0.0imagePullPolicy: IfNotPresentcommand: ["cp", "-r", "/agent/", "/share/"]volumeMounts:- name: ur-sharemountPath: /shareresources:requests:cpu: 200mmemory: 200Milimits:cpu: 200mmemory: 200Micontainers:- name: $APP_NAMEimage: $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBERcommand: ["sh","/home/run.sh"]imagePullPolicy: Alwayslifecycle:preStop:exec:command: ["sh","/home/preStop.sh"]env:- name: JAVA_OPTSvalue: $JAVA_OPTS- name: CACHE_IGNOREvalue: js|html- name: CACHE_PUBLIC_EXPIRATIONvalue: 3d# 时区- name: TZvalue: Asia/Shanghai# 引入skywalking agent- name: SW_AGENT_NAMEvalue: ${APP_NAME}# skywalking oap 后端- name: SW_AGENT_COLLECTOR_BACKEND_SERVICESvalue: ${SW_BACKEND}# nacos 注册中心配置中心- name: NACOS_HOSTvalue: ${NACOS_HOST}- name: NACOS_NAMESPACEvalue: ${NACOS_NAMESPACE}- name: NACOS_GROUPvalue: ${NACOS_GROUP}- name: POD_IDvalueFrom:fieldRef:fieldPath: metadata.name- name: POD_IPvalueFrom:fieldRef:fieldPath: status.podIPlivenessProbe:httpGet:path: $HEALTH_PATHport: $CONTAINER_PORTinitialDelaySeconds: 60successThreshold: 1timeoutSeconds: 10failureThreshold: 10periodSeconds: 10readinessProbe:httpGet:path: $HEALTH_PATHport: $CONTAINER_PORTinitialDelaySeconds: 30timeoutSeconds: 10failureThreshold: 30periodSeconds: 5ports:- containerPort: $CONTAINER_PORTprotocol: TCPvolumeMounts:- name: ur-sharemountPath: /share- name: gcmountPath: /home/gc/- name: dumpmountPath: /home/dump/- name: scriptsmountPath: /home/run.shsubPath: run.sh- name: scriptsmountPath: /home/preStop.shsubPath: preStop.sh- name: vol-logmountPath: /var/logpolicy:logs:rotate: Hourlyannotations:format: '{"multi":{"mode":"regular","value":"([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))"}}'pathPattern: /info.logresources:limits:cpu: 2memory: 4Girequests:cpu: 2memory: 4GiterminationMessagePath: /dev/termination-logterminationMessagePolicy: Filevolumes:# ur共享文件夹- name: ur-shareemptyDir: {}- name: vol-logemptyDir: {}- name: gcpersistentVolumeClaim:claimName: $APP_NAME- name: dumppersistentVolumeClaim:claimName: ufm-dump- name: scriptsconfigMap:defaultMode: 0777name: $APP_NAMEdnsPolicy: ClusterFirstimagePullSecrets:- name: $HARBOR_CREDENTIAL_IDrestartPolicy: AlwaysterminationGracePeriodSeconds: 40---apiVersion: v1kind: ConfigMapmetadata:name: $APP_NAMEnamespace: $NAMESPACEdata:run.sh: |#!/bin/bashecho -javaagent:/share/agent/skywalking/skywalking-agent.jar \-XX:+UseContainerSupport \-XX:MaxRAMPercentage=75.0 \-XX:MinRAMPercentage=75.0 \-XX:InitialRAMPercentage=75.0 \-XX:MetaspaceSize=256m \-XX:MaxMetaspaceSize=256m \-XX:+UseConcMarkSweepGC \-XX:+UseCMSCompactAtFullCollection \-XX:+CMSClassUnloadingEnabled \-XX:CMSInitiatingOccupancyFraction=80 \-XX:+UseCMSInitiatingOccupancyOnly \-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses \-Dsun.rmi.dgc.server.gcInterval=2592000000 \-Dsun.rmi.dgc.client.gcInterval=2592000000 \-XX:+UseParNewGC \-XX:ParallelGCThreads=4 \-XX:SurvivorRatio=8 \-XX:+PrintGCDetails \-XX:+PrintGCDateStamps \-XX:+PrintTenuringDistribution \-XX:+PrintHeapAtGC \-XX:+PrintReferenceGC \-XX:+PrintGCApplicationStoppedTime \-XX:+UseGCLogFileRotation \-XX:NumberOfGCLogFiles=10 \-XX:GCLogFileSize=1000m \-Xloggc:/home/gc/gc-$${p}POD_ID-$(date +"%Y-%m-%d-%H-%M-%S").log \-XX:+HeapDumpOnOutOfMemoryError \-XX:HeapDumpPath=/home/dump/dump-$${p}POD_ID-$(date +"%Y-%m-%d-%H-%M-%S").hprof > /home/gc/java_tool_opts.shexport JAVA_TOOL_OPTIONS=$(cat /home/gc/java_tool_opts.sh)java -jar ${${p}JAVA_OPTS} -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=10000 -Dsun.net.client.defaultReadTimeout=30000 -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom *.jarpreStop.sh: |#!/bin/bashcurl -XPUT http://${NACOS_HOST}/nacos/v1/ns/instance?serviceName=${APP_NAME}\&groupName=${NACOS_GROUP}\&namespaceId=${NACOS_NAMESPACE}\&ip=$${p}POD_IP\&port=${CONTAINER_PORT}\&enable=falsesleep 40s---kind: PersistentVolumeClaimapiVersion: v1metadata:name: $APP_NAMEnamespace: $NAMESPACEspec:accessModes:- ReadWriteManyvolumeMode: Filesystemresources:requests:storage: 2GistorageClassName: sfsturbo-ur-ufm---apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata:annotations:extendedhpa.metrics: '[{"type":"Resource","name":"cpu","targetType":"Utilization","targetRange":{"low":"55","high":"65"}}]'extendedhpa.option: '{"downscaleWindow":"60m","upscaleWindow":"0m"}'name: $APP_NAMEnamespace: $NAMESPACEspec:minReplicas: 2maxReplicas: 6scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: $APP_NAMEtargetCPUUtilizationPercentage: 60
