Переглянути джерело

init offline-process-schedule

yangxg 3 роки тому
батько
коміт
2bb3b52f26
4 змінених файлів з 198 додано та 0 видалено
  1. 1 0
      Dockerfile-template
  2. 8 0
      build/Dockerfile
  3. 97 0
      deploy-tmp-template.yaml
  4. 92 0
      drone.template.yml

+ 1 - 0
Dockerfile-template

@@ -0,0 +1 @@
+FROM hub.evbj.easou.com/[ENV]/[APP]:[TAG]

+ 8 - 0
build/Dockerfile

@@ -0,0 +1,8 @@
+FROM hub.evbj.easou.com/pro/base-alpine:v1.0
+VOLUME /tmp
+ARG JAR_FILE
+COPY ${JAR_FILE} app.jar
+EXPOSE 8080
+#JAVA_OPTS="-server -Xmx2g -Xms2g -Xss512k -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom "
+#DEBUG_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001,suspend=n "
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar -Dlogging.config=classpath:logback-k8s.xml -Dserver.port=8080 app.jar"]

+ 97 - 0
deploy-tmp-template.yaml

@@ -0,0 +1,97 @@
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: [APP]
+  namespace: [ENV]
+  labels:
+    app: [APP]
+spec:
+  serviceName: [APP]
+  replicas: [REPLICA]
+  selector:
+    matchLabels:
+      app: [APP]
+  template:
+    metadata:
+      labels:
+        app: [APP]
+    spec:
+      terminationGracePeriodSeconds: 60
+      initContainers:
+        - name: init
+          image: hub.evbj.easou.com/dev/busybox
+          command: [ "chmod","777","-R","/data" ]
+          imagePullPolicy: Always
+          volumeMounts:
+            - name: volume
+              mountPath: /data
+      #nodeSelector:
+      #  app.touchrs: touchrs
+      containers:
+        - name: [APP]
+          image: hub.evbj.easou.com/[ENV]/[APP]:[TAG]
+          imagePullPolicy: Always
+          env:
+            - name: JAVA_OPTS
+              value: "-server [DEBUG_OPTS] -Xmx2g -Xms2g -Xss512k -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=[PROFILE]"
+          ports:
+            - containerPort: 8080
+              name: port
+            - containerPort: 8001
+              name: "jvm-debug"
+          volumeMounts:
+            - name: volume
+              mountPath: /data
+          livenessProbe:
+            tcpSocket:
+              port: 8080
+            initialDelaySeconds: 30
+            periodSeconds: 15
+          readinessProbe:
+            tcpSocket:
+              port: 8080
+            initialDelaySeconds: 30
+            periodSeconds: 15
+  volumeClaimTemplates:
+    - metadata:
+        name: volume
+      spec:
+        accessModes: [ "ReadWriteOnce" ]
+        storageClassName: rbd
+        resources:
+          requests:
+            storage: 100Gi
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: [APP]-svc
+  namespace: [ENV]
+  labels:
+    app: [APP]-svc
+spec:
+  type: NodePort
+  ports:
+    - port: 80
+      targetPort: 8080
+      name: "main"
+  selector:
+    app: [APP]
+---
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+  name: [APP]-ingress
+  namespace: [ENV]
+  annotations:
+    kubernetes.io/ingress.class: nginx
+spec:
+  rules:
+    - host: [APP]-[ENV].ieasou.cn
+      http:
+        paths:
+          - path: /
+            backend:
+              serviceName: [APP]-svc
+              servicePort: 80

+ 92 - 0
drone.template.yml

@@ -0,0 +1,92 @@
+kind: pipeline
+type: kubernetes
+name: [APP]
+
+clone:
+  disable: true
+
+metadata:
+  namespace: drone
+
+steps:
+- name: clone
+  image: hub.evbj.easou.com/dev/alpine-git:20200622
+  commands:
+   - git clone $DRONE_GIT_HTTP_URL .
+
+- name: build
+  image: plugins/docker
+  settings:
+    username: admin
+    password: Easou2)1*
+    insecure: true
+    mirror: https://ci7pm4nx.mirror.aliyuncs.com
+    registry: hub.evbj.easou.com
+    repo: hub.evbj.easou.com/[ENV]/[APP]
+    tag: [TAG]
+#    build_args:
+#      - JAR_FILE=[JAR_FILE]
+#      - SERVER_PORT=8080
+
+- name: deployment
+  image: hub.evbj.easou.com/dev/drone-agent:v2.0.0
+  pull: always
+  # privileged: true
+  environment:
+    JNLP_ENV: [ENV]
+    JNLP_REPLICAS: [REPLICA]
+    JNLP_TAG: [TAG]
+    JNLP_VERSION: v1  # default v1, v2 for canary
+    DEPLOY_ENV: k8s-2 # 可以选择把应用部署到集群:k8s-1 or k8s-2
+    JNLP_REPO: hub.evbj.easou.com
+    JNLP_CONTAINER_PORT: 80
+    JNLP_INGRESS: nginx
+    JNLP_SVC_MODE: http
+    JNLP_STORAGE_CLASS: rbd
+    JNLP_DOMAIN: .ieasou.cn
+    JNLP_CONTROL: StatefulSet
+    JNLP_STORAGE_CAPACITY: 100Gi
+    JNLP_MOUNT_PATH: /data
+    JNLP_LIVENESS_INIT: 30
+    JNLP_LIVENESS_PER: 15
+    JNLP_READINESS_INIT: 30
+    JNLP_READINESS_PER: 15
+  commands:
+    # 切换目标集群
+    - kubecm s $DEPLOY_ENV
+    # 生成配置YAML文件
+    - python3 /root/tools.py -b
+    # 部署服务到kubernetes上
+    - python3 /root/tools.py -a
+    # 检查服务部署状态
+    - python3 /root/tools.py -c
+    # 添加dns解析记录,生成访问域名
+    - python3 /root/tools.py -d
+
+- name: success
+  image: hub.evbj.easou.com/dev/drone-wechat:20200622
+  settings:
+    corpid: ww419ee4063735e1c0
+    corp_secret: zpiRBLETH9eLwIMQ4eJ_r_dcm3BPSGeLHvTcft8Ot-M
+    agent_id: 1000004
+    title: "Pipeline [ENV]/[APP]:[TAG] Success"
+    description: "${DRONE_BUILD_LINK} [ENV]/[APP]:[TAG] 部署完成"
+    msg_url: ${DRONE_BUILD_LINK}
+    btn_txt: "否"
+  when:
+    status:
+     - success
+
+- name: failure
+  image: hub.evbj.easou.com/dev/drone-wechat:20200622
+  settings:
+    corpid: ww419ee4063735e1c0
+    corp_secret: zpiRBLETH9eLwIMQ4eJ_r_dcm3BPSGeLHvTcft8Ot-M
+    agent_id: 1000004
+    title: "Pipeline [ENV]/[APP]:[TAG] Failure"
+    description: "${DRONE_BUILD_LINK} 部署失败,请检查配置!"
+    msg_url: ${DRONE_BUILD_LINK}
+    btn_txt: "否"
+  when:
+    status:
+     - failure