root 2 éve
szülő
commit
a911422592
2 módosított fájl, 132 hozzáadás és 15 törlés
  1. 19 15
      .drone.yml
  2. 113 0
      deploy-canary.yaml

+ 19 - 15
.drone.yml

@@ -18,24 +18,24 @@ steps:
    image: hub.evbj.easou.com/dev/drone-agent:v3.0.1
    pull: always
    environment:
-     JNLP_ENV: op
-     JNLP_REPLICAS: 2
-     JNLP_TAG: v3.0.0
-     JNLP_VERSION: v1  # default v1, v2 for canary
+     #JNLP_ENV: book-api
+     #JNLP_REPLICAS: 2
+     #JNLP_TAG: v3.0.0
+     #JNLP_VERSION: v1  # default v1, v2 for canary
      DEPLOY_ENV: k8s-1 # 可以选择把应用部署到集群:k8s-1(阿里云) or k8s-2(IDC机房)
-     JNLP_REPO: hub.evbj.easou.com
-     JNLP_CONTAINER_PORT: 8080
+     #JNLP_REPO: hub.evbj.easou.com
+     #JNLP_CONTAINER_PORT: 8080
      JNLP_INGRESS: nginx
      JNLP_SVC_MODE: http
-     JNLP_STORAGE_CLASS: rbd   #k8s-2的STORAGE_CLASS为: rbd; k8s-1的STORAGE_CLASS为: ceph-block
+     #JNLP_STORAGE_CLASS: rbd   #k8s-2的STORAGE_CLASS为: rbd; k8s-1的STORAGE_CLASS为: ceph-block
      JNLP_DOMAIN: .ieasou.cn
-     JNLP_CONTROL: StatefulSet
-     JNLP_STORAGE_CAPACITY: 200Gi
-     JNLP_MOUNT_PATH: /data
-     JNLP_LIVENESS_INIT: 45
-     JNLP_LIVENESS_PER: 15
-     JNLP_READINESS_INIT: 45
-     JNLP_READINESS_PER: 15
+     #JNLP_CONTROL: StatefulSet
+     #JNLP_STORAGE_CAPACITY: 200Gi
+     #JNLP_MOUNT_PATH: /data
+     #JNLP_LIVENESS_INIT: 45
+     #JNLP_LIVENESS_PER: 15
+     #JNLP_READINESS_INIT: 45
+     #JNLP_READINESS_PER: 15
      JNLP_INGRESS_PUB: yes
    commands:
      # 切换目标集群
@@ -43,7 +43,11 @@ steps:
      # 生成配置YAML文件
      # - python3 /root/tools.py -b
      # 部署服务到kubernetes上
-     - python3 /root/tools.py -a
+     # - python3 /root/tools.py -a
+     # apply for prod
+     # - kubectl apply -f deploy.yaml --record
+     # apply for canary
+     - kubectl apply -f deploy-canary.yaml --record
      # 检查服务部署状态
      # - python3 /root/tools.py -c
      # 添加dns解析记录,生成访问域名

+ 113 - 0
deploy-canary.yaml

@@ -0,0 +1,113 @@
+---
+apiVersion: apps.kruise.io/v1beta1
+#apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: book-api-canary
+  namespace: book-api
+  labels:
+    app: book-api
+spec:
+  serviceName: book-api-canary
+  replicas: 1
+  selector:
+    matchLabels:
+      app: book-api-canary
+  template:
+    metadata:
+      labels:
+        app: book-api-canary
+    spec:
+      readinessGates:
+      - conditionType: InPlaceUpdateReady
+      terminationGracePeriodSeconds: 180
+      dnsPolicy: ClusterFirstWithHostNet
+      dnsConfig:
+        nameservers:
+          - 223.5.5.5
+          - 10.26.22.50
+      initContainers:
+        - name: init
+          image: hub.evbj.easou.com/dev/busybox
+          command: ['sh', "-c", 'chmod 777 -R /data && mkdir -p /data/project &&  mkdir -p /data/log']
+          imagePullPolicy: IfNotPresent
+          volumeMounts:
+          - name: volume
+            mountPath: /data
+        - name: init-package
+          image: hub.evbj.easou.com/dev/busybox
+          command: ['sh', '-c', 'rm -rf /data/project/* && wget http://10.26.22.190/release/app-web/prod-64/novelapi/3.1.278/novelapi_3.1.278_kuaiDu3.15.4Dev_B3.1.277-179663_3.1.278_20220831-165821_RBL/ROOT.war -O /data/project/ROOT.war']
+          imagePullPolicy: IfNotPresent
+          volumeMounts:
+          - name: volume
+            mountPath: /data
+      containers:
+      - name: book-api-canary
+        image: hub.evbj.easou.com/dev/book-api:v3.1base
+        imagePullPolicy: Always
+        ports:
+        - containerPort: 8080
+          name: port
+        volumeMounts:
+        - name: volume
+          mountPath: /data
+        livenessProbe:
+          tcpSocket:
+            port: 8080
+          initialDelaySeconds: 45
+          periodSeconds: 15
+        readinessProbe:
+          tcpSocket:
+            port: 8080
+          initialDelaySeconds: 45
+          periodSeconds: 15
+  updateStrategy:
+    type: RollingUpdate
+    rollingUpdate:
+      podUpdatePolicy: InPlaceIfPossible
+      inPlaceUpdateStrategy:
+        gracePeriodSeconds: 10
+  volumeClaimTemplates:
+  - metadata:
+      name: volume
+    spec:
+      accessModes: ["ReadWriteOnce"]
+      storageClassName: ceph-block
+      resources:
+        requests:
+          storage: 200Gi
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: book-api-canary-svc
+  namespace: book-api
+  labels:
+    app: book-api--canary-svc
+spec:
+  type: NodePort
+  ports:
+  - port: 8080
+    targetPort: 8080
+    nodePort: 30201
+  selector:
+    app: book-api-canary
+---
+#apiVersion: networking.k8s.io/v1
+#kind: Ingress
+#metadata:
+#  name: book-api-ingress
+#  namespace: book-api
+#spec:
+#  rules:
+#  - host: book-api-book-api.ieasou.cn
+#    http:
+#      paths:
+#      - path: /
+#        pathType: Prefix
+#        backend:
+#          service:
+#            name: book-api-svc
+#            port:
+#              number: 8080
+#  ingressClassName: nginx