瀏覽代碼

可以通过脚本部署,zk/es/kibana

yangxg 4 年之前
父節點
當前提交
eab2062d6d
共有 10 個文件被更改,包括 385 次插入35 次删除
  1. 1 0
      Dockerfile
  2. 1 0
      Dockerfile-elasticsearch
  3. 1 0
      Dockerfile-kibana
  4. 17 16
      deploy-tmp-elasticsearch.yaml
  5. 22 6
      deploy-tmp-kibana.yaml
  6. 13 13
      deploy-tmp-zookeeper.yaml
  7. 65 0
      deploy-tmp.yaml
  8. 93 0
      drone.elasticsearch.yml
  9. 93 0
      drone.kibana.yml
  10. 79 0
      k8s-deploy.sh

+ 1 - 0
Dockerfile

@@ -0,0 +1 @@
+FROM docker.elastic.co/kibana/kibana:7.6.2

+ 1 - 0
Dockerfile-elasticsearch

@@ -0,0 +1 @@
+FROM docker.elastic.co/elasticsearch/elasticsearch:7.6.2

+ 1 - 0
Dockerfile-kibana

@@ -0,0 +1 @@
+FROM docker.elastic.co/kibana/kibana:7.6.2

+ 17 - 16
k8s-es.yaml → deploy-tmp-elasticsearch.yaml

@@ -2,7 +2,7 @@
 apiVersion: apps/v1
 kind: StatefulSet
 metadata:
-  name: es
+  name: elasticsearch
   namespace: qa
 spec:
   serviceName: elasticsearch
@@ -78,13 +78,13 @@ spec:
 apiVersion: v1
 kind: Service
 metadata:
-  name: elasticsearch
+  name: elasticsearch-svc
   namespace: qa
   labels:
-    app: elasticsearch
+    app: elasticsearch-svc
 spec:
   selector:
-    app: elasticsearch
+    app: elasticsearch-svc
   clusterIP: None
   ports:
     - port: 9200
@@ -92,18 +92,19 @@ spec:
     - port: 9300
       name: inter-node
 ---
-apiVersion: v1
-kind: Service
+apiVersion: extensions/v1beta1
+kind: Ingress
 metadata:
-  name: elasticsearch-cs
+  name: kibana-ingress
   namespace: qa
-  labels:
-    app: elasticsearch
+  annotations:
+    kubernetes.io/ingress.class: nginx
 spec:
-  type: NodePort
-  ports:
-    - port: 9200
-      name: client
-      nodePort: 30029
-  selector:
-    app: elasticsearch
+  rules:
+    - host: qa-elasticsearch.ieasou.cn
+      http:
+        paths:
+          - path: /
+            backend:
+              serviceName: elasticsearch-svc
+              servicePort: 80

+ 22 - 6
k8s-kibana.yaml → deploy-tmp-kibana.yaml

@@ -2,19 +2,18 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: kibana
+  name: kibana-svc
   namespace: qa
   labels:
-    app: kibana
+    app: kibana-svc
 spec:
   ports:
-    - port: 5601
+    - port: 80
       name: client
-      nodePort: 31065
+      targetPort: 5601
   type: NodePort
   selector:
     app: kibana
-
 ---
 apiVersion: apps/v1
 kind: StatefulSet
@@ -46,4 +45,21 @@ spec:
             - name: ELASTICSEARCH_HOSTS
               value: http://elasticsearch:9200
           ports:
-            - containerPort: 5601
+            - containerPort: 5601
+---
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+  name: kibana-ingress
+  namespace: qa
+  annotations:
+    kubernetes.io/ingress.class: nginx
+spec:
+  rules:
+    - host: qa-kibana.ieasou.cn
+      http:
+        paths:
+          - path: /
+            backend:
+              serviceName: kibana-svc
+              servicePort: 80

+ 13 - 13
k8s-zk.yaml → deploy-tmp-zookeeper.yaml

@@ -2,13 +2,13 @@
 apiVersion: apps/v1
 kind: StatefulSet
 metadata:
-  name: zk
+  name: zookeeper
   namespace: qa
 spec:
   selector:
     matchLabels:
-      app: zk
-  serviceName: zk-hs
+      app: zookeeper
+  serviceName: zookeeper-hs
   replicas: 3
   updateStrategy:
     type: RollingUpdate
@@ -16,7 +16,7 @@ spec:
   template:
     metadata:
       labels:
-        app: zk
+        app: zookeeper
     spec:
       terminationGracePeriodSeconds: 180
       affinity:
@@ -27,7 +27,7 @@ spec:
                   - key: "app"
                     operator: In
                     values:
-                      - zk
+                      - zookeeper
               topologyKey: "kubernetes.io/hostname"
       containers:
         - name: kubernetes-zookeeper
@@ -102,10 +102,10 @@ spec:
 apiVersion: v1
 kind: Service
 metadata:
-  name: zk-hs
+  name: zookeeper-hs
   namespace: qa
   labels:
-    app: zk
+    app: zookeeper
 spec:
   ports:
     - port: 2888
@@ -114,15 +114,15 @@ spec:
       name: leader-election
   clusterIP: None
   selector:
-    app: zk
+    app: zookeeper
 ---
 apiVersion: v1
 kind: Service
 metadata:
-  name: zk-cs
+  name: zookeeper-cs
   namespace: qa
   labels:
-    app: zk
+    app: zookeeper
 spec:
   type: NodePort
   ports:
@@ -130,15 +130,15 @@ spec:
       name: client
       nodePort: 31812
   selector:
-    app: zk
+    app: zookeeper
 ---
 apiVersion: policy/v1beta1
 kind: PodDisruptionBudget
 metadata:
-  name: zk-pdb
+  name: zookeeper-pdb
   namespace: qa
 spec:
   selector:
     matchLabels:
-      app: zk
+      app: zookeeper
   maxUnavailable: 1

+ 65 - 0
deploy-tmp.yaml

@@ -0,0 +1,65 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: kibana-svc
+  namespace: qa
+  labels:
+    app: kibana-svc
+spec:
+  ports:
+    - port: 80
+      name: client
+      targetPort: 5601
+  type: NodePort
+  selector:
+    app: kibana
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: kibana
+  namespace: qa
+  labels:
+    app: kibana
+spec:
+  serviceName: kibana
+  selector:
+    matchLabels:
+      app: kibana
+  template:
+    metadata:
+      labels:
+        app: kibana
+    spec:
+      terminationGracePeriodSeconds: 180
+      containers:
+        - name: kibana
+          image: docker.elastic.co/kibana/kibana:7.6.2
+          resources:
+            limits:
+              cpu: 1000m
+            requests:
+              cpu: 1000m
+          env:
+            - name: ELASTICSEARCH_HOSTS
+              value: http://elasticsearch:9200
+          ports:
+            - containerPort: 5601
+---
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+  name: kibana-ingress
+  namespace: qa
+  annotations:
+    kubernetes.io/ingress.class: nginx
+spec:
+  rules:
+    - host: qa-kibana.ieasou.cn
+      http:
+        paths:
+          - path: /
+            backend:
+              serviceName: kibana-svc
+              servicePort: 80

+ 93 - 0
drone.elasticsearch.yml

@@ -0,0 +1,93 @@
+kind: pipeline
+type: kubernetes
+name: elasticsearch
+
+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/qa/elasticsearch
+      tag: v1.0
+  #    build_args:
+  #      - 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: qa
+      JNLP_REPLICAS: 1
+      JNLP_TAG: v1.0
+      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
+      JNLP_INGRESS_PUB: no
+    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 qa/kibana:v1.0 Success"
+      description: "${DRONE_BUILD_LINK} qa/elasticsearch:v1.0 部署完成"
+      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 qa/elasticsearch:v1.0 Failure"
+      description: "${DRONE_BUILD_LINK} 部署失败,请检查配置!"
+      msg_url: ${DRONE_BUILD_LINK}
+      btn_txt: "否"
+    when:
+      status:
+        - failure

+ 93 - 0
drone.kibana.yml

@@ -0,0 +1,93 @@
+kind: pipeline
+type: kubernetes
+name: kibana
+
+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/qa/kibana
+      tag: v1.0
+  #    build_args:
+  #      - 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: qa
+      JNLP_REPLICAS: 1
+      JNLP_TAG: v1.0
+      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
+      JNLP_INGRESS_PUB: no
+    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 qa/kibana:v1.0 Success"
+      description: "${DRONE_BUILD_LINK} qa/kibana:v1.0 部署完成"
+      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 qa/kibana:v1.0 Failure"
+      description: "${DRONE_BUILD_LINK} 部署失败,请检查配置!"
+      msg_url: ${DRONE_BUILD_LINK}
+      btn_txt: "否"
+    when:
+      status:
+        - failure

+ 79 - 0
k8s-deploy.sh

@@ -0,0 +1,79 @@
+#!/bin/bash -c
+app_names=("zookeeper" "kibana" "elasticsearch")
+envs=("qa" "pro")
+
+#当前目录
+DEPLOY_HOME=$(
+  cd $(dirname $0)
+  pwd
+)
+
+echo "----------------------------------"
+echo "选择要部署的应用:"
+echo "(0) zookeeper"
+echo "(1) kibana"
+echo "(2) elasticsearch"
+echo "----------------------------------"
+while [ 1 ]; do
+  read input1
+  if ! [[ $input1 =~ ^[0-9](,[0-9])*$ ]]; then
+    echo "请输入[0-2]之间的数字:"
+    continue
+  fi
+
+  if [  $input1 -ge 0 -a $input1 -le 2 ]; then
+    currApp=${app_names[$input1]}
+    break
+  else
+    echo "请输入[0-2]之间的数字:"
+  fi
+done
+
+echo "----------------------------------"
+echo "运行环境:"
+echo "(0) qa"
+echo "(1) pro"
+echo "----------------------------------"
+while [ 1 ]; do
+  read input1
+  if ! [[ $input1 =~ ^[0-9](,[0-9])*$ ]]; then
+    echo "请输入[0-1]之间的数字:"
+    continue
+  fi
+
+  if [ $input1 != 1 -o $input1 -lt 0 -o $input1 -gt 2 ]; then
+    ENV=${envs[$input1]}
+    break
+  else
+    echo "请输入[0-1]之间的数字:"
+  fi
+done
+
+echo "----------------------------------"
+echo "最终要部署的应用${currApp}"
+echo "环境${ENV}"
+echo "----------------------------------"
+
+cd $DEPLOY_HOME || exit
+rm -rf .tmp && mkdir .tmp && cd .tmp || exit
+
+git config --global user.email "yangxg_yang@easou.cn"
+git config --global user.name "${USER}"
+git config --global credential.helper store
+
+
+git clone http://yangxg:yangtxy1256@gogs.ieasou.cn/yangxg/${currApp}.git ${currApp} && cd ${currApp} || exit
+cp -f ../../deploy-tmp-${currApp}.yaml deploy-tmp.yaml
+cp -f ../../drone.${currApp}.yml .drone.yml
+cp -f ../../Dockerfile-${currApp} Dockerfile
+
+git add deploy-tmp.yaml
+git add .drone.yml
+git add Dockerfile
+echo "git commit"
+git commit --allow-empty -m "deploy $ENV/${currApp}:1.0"
+echo "git push"
+git push origin master
+
+cd $DEPLOY_HOME || exit
+rm -rf .tmp