From 4925cc8479867251a7f40cbb004214712098e92b Mon Sep 17 00:00:00 2001 From: starsliao Date: Thu, 27 Jul 2023 03:39:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Edocker=E5=92=8CK8S=E4=B8=80?= =?UTF-8?q?=E9=94=AE=E9=83=A8=E7=BD=B2=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 23 -- install/docker-compose/.all_install.sh.swp | Bin 0 -> 12288 bytes install/docker-compose/all_install.sh | 98 +++++++ install/docker-compose/consul_install_only.sh | 64 +++++ .../docker-compose/tensuns_install_only.sh | 49 ++++ install/k8s/install.sh | 247 ++++++++++++++++++ k8s-deploy.yaml | 108 -------- 7 files changed, 458 insertions(+), 131 deletions(-) delete mode 100644 docker-compose.yml create mode 100644 install/docker-compose/.all_install.sh.swp create mode 100755 install/docker-compose/all_install.sh create mode 100755 install/docker-compose/consul_install_only.sh create mode 100755 install/docker-compose/tensuns_install_only.sh create mode 100755 install/k8s/install.sh delete mode 100644 k8s-deploy.yaml diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 8176564..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: "3.2" -services: - flask-consul: - image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/flask-consul:latest - container_name: flask-consul - hostname: flask-consul - restart: always - volumes: - - /usr/share/zoneinfo/PRC:/etc/localtime - environment: - consul_token: xxxxx-xxxxx-xxxxx - consul_url: http://x.x.x.x:8500/v1 - admin_passwd: xxxxxxxx - log_level: INFO - nginx-consul: - image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/nginx-consul:latest - container_name: nginx-consul - hostname: nginx-consul - restart: always - ports: - - "1026:1026" - volumes: - - /usr/share/zoneinfo/PRC:/etc/localtime diff --git a/install/docker-compose/.all_install.sh.swp b/install/docker-compose/.all_install.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..795ba36a1c72e7cc8a3e0eba00212c61301dddf1 GIT binary patch literal 12288 zcmeI2Uu+ab9LEQYK|%b3##e`fP@~@NU0czt6cf=JV)zqLVua*6-JRa8-J4x^_gYF@ zl*APDf!2ufM-xfpPam`;iWmZ=niw8U@WsR^KFIZ2Uo?ggee*lJd%a!@SbUOXmVCI~ z`Tb_*H{aiH=Z-M#nXT(L&?mHJg6m#FzTf(dHE>@u*|(Sw-*rRT{BKvD6^ktGxcM{> zGTG~U?~()R>s%3(oDEE{Joj~51R--A-Ez%N?x#(+=(z#c(UeO}T2Q$DkjkPIPzuaj zfu*FWF`JR@D^knp{mWjScTeT06i^B%1(X6x0i}RaKq;UUPzv1o3WVMQ@&=Z%Fj-1_ z^0{EvXY!~%lmbctrGQdEDWDWk3Md7X0!jg;fKosypcJ?T6<`)2L$?#sya>VL|NpE1 z{=ae$AwPrfz;Q4DUIEX7N5C?$2wc6JkSpLfa0y%l7r<$792^CQ!Co)``oL?T0A2;p zgQtN89sqwXC8Po_fX~4Q_!JC-6JQr`0SDWF0UiR2!PUD6nF3#f_W%c*!84!{WWjRq z!xF>?J_LKfPVfRS00n>H?8A@XTW|^-0|&q!FaWy1V_*sR<4!_;0vEv;I0<%x*THtM z5v&C*pb0z-9t5|6zwaRASMUqC1RezonM)3&DUQ`ur63_U~F+iZ{eZYkt6&qJEk8nq^^nf6iE-ANmIJ>M1~UAeKfzoD zhu>Pixj!0&md~8796DPbdq3_aM>8$DG7JKbg$2556|FyHM@t?}Tk(vkiO)VMe>7Yk z8ZEzrzxP$nk57&dRnDF&pZTIZcv91}y3po&Or1SAIdT-?Fso>b^5{V2$nJ@Qqraa! zToY+!Wb?YM>GfV7ADP&HCicd1E9X9#Jpb-=$g>UwYCWvz(20+aO}u>`YfbtN9-P`U zNTZQ+9t(nQiz15ho9E>E$#a`p35_nxx4XD+P>Xl4k`qR)w#SM_bXT>u`?i(mQIlXr zZqS#w*isT((30F4MDVcN^*aLtzZRk^UA0BeHFMS4;jo|+M;qn2$H>Lv9v4=Sb45Hm zrD>{{0$&db%;)+}S8!W&xccT7*BLqwP2F)#=7e@Jj;zadN=1(Os}rPT5k*CiirPHa z4->P`alXO|faJ7z|PAVX#g?&q%KU>9+0)1X1OubCnppwnO~)-+8V+&la@N3sk3Mq_!(kx;LKJna^A+-j65{-6&f#6$G3fe@t(&5i z(z?Ph=yU}p)_A~N$w#N;t%{qBCm+vb^sa2ZU+8vnfl*2&+lnk)blJWuid=-XZ2Z?u z-Z)irifDGK<~ZDZs%8#ROI2O#d{Tw{7n!gOnnJCJFs{j)D{**NH!eNSi2UfV^G5w+ zoS(VQ77N+5t9*zY>t382%N7 z7F$qYwjhv%Y}oF^j+LM}`W|IjbVJto;CbDrziW{(`l;-W{+6Zf^M zuFQ0B+e_MUvO5TU=H>VfkDFmjHd-|ItBx}6THg-l1e`z~0bg{#meu1N-TgNut{3XaaZnOLimX_!x7$K*N7a&l E0Gu9avH$=8 literal 0 HcmV?d00001 diff --git a/install/docker-compose/all_install.sh b/install/docker-compose/all_install.sh new file mode 100755 index 0000000..25a56be --- /dev/null +++ b/install/docker-compose/all_install.sh @@ -0,0 +1,98 @@ +#!/bin/bash +tsspath="/opt/tensuns" +uuid=`uuidgen` +adminpwd=`uuidgen|awk -F- '{print $1}'` +mkdir -p $tsspath/consul/config +cat < $tsspath/consul/config/consul.hcl +log_level = "error" +data_dir = "/consul/data" +client_addr = "0.0.0.0" +ui_config{ + enabled = true +} +ports = { + grpc = -1 + https = -1 + dns = -1 + grpc_tls = -1 + serf_wan = -1 +} +peering { + enabled = false +} +connect { + enabled = false +} +server = true +bootstrap_expect=1 +acl = { + enabled = true + default_policy = "deny" + enable_token_persistence = true + tokens { + initial_management = "$uuid" + agent = "$uuid" + } +} +EOF + +cat < $tsspath/docker-compose.yaml +version: '3.6' +services: + consul: + image: hashicorp/consul:1.16 + container_name: consul + hostname: consul + restart: always + volumes: + - $tsspath/consul/data:/consul/data + - $tsspath/consul/config:/consul/config + - /usr/share/zoneinfo/PRC:/etc/localtime + command: "agent" + networks: + - TenSunS + + flask-consul: + image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/flask-consul:latest + container_name: flask-consul + hostname: flask-consul + restart: always + volumes: + - /usr/share/zoneinfo/PRC:/etc/localtime + environment: + consul_token: $uuid + consul_url: http://consul:8500/v1 + admin_passwd: $adminpwd + log_level: INFO + depends_on: + - consul + networks: + - TenSunS + + nginx-consul: + image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/nginx-consul:latest + container_name: nginx-consul + hostname: nginx-consul + restart: always + ports: + - "1026:1026" + volumes: + - /usr/share/zoneinfo/PRC:/etc/localtime + depends_on: + - flask-consul + networks: + - TenSunS + +networks: + TenSunS: + name: TenSunS + driver: bridge + ipam: + driver: default +EOF + +echo -e "\n后羿运维平台默认的admin密码是:\033[31;1m$adminpwd\033[0m\n修改密码请编辑 $tsspath/docker-compose.yaml 查找并修改变量 admin_passwd 的值\n" +echo "正在启动后羿运维平台..." +cd $tsspath && docker-compose up -d +echo -e "\n请使用浏览器访问 http://{你的IP}:1026 并登录使用\n" +echo -e "\033[31;1mhttp://`ip route get 1.2.3.4 | awk '{print $NF}'|head -1`:1026\033[0m\n" diff --git a/install/docker-compose/consul_install_only.sh b/install/docker-compose/consul_install_only.sh new file mode 100755 index 0000000..e6ae719 --- /dev/null +++ b/install/docker-compose/consul_install_only.sh @@ -0,0 +1,64 @@ +#!/bin/bash +uuid=`uuidgen` +mkdir -p /opt/consul/config +cat < /opt/consul/config/consul.hcl +log_level = "error" +data_dir = "/consul/data" +client_addr = "0.0.0.0" +ui_config{ + enabled = true +} +ports = { + grpc = -1 + https = -1 + dns = -1 + grpc_tls = -1 + serf_wan = -1 +} +peering { + enabled = false +} +connect { + enabled = false +} +server = true +bootstrap_expect=1 +acl = { + enabled = true + default_policy = "deny" + enable_token_persistence = true + tokens { + initial_management = "$uuid" + agent = "$uuid" + } +} +EOF + +cat < /opt/consul/docker-compose.yaml +version: '3.6' +services: + consul: + image: hashicorp/consul:1.16 + hostname: consul + container_name: consul + restart: always + volumes: + - /opt/consul/data:/consul/data + - /opt/consul/config:/consul/config + - /usr/share/zoneinfo/PRC:/etc/localtime + ports: + - "8500:8500" + command: "agent" + networks: + - TenSunS + +networks: + TenSunS: + name: TenSunS + driver: bridge + ipam: + driver: default +EOF + +echo "请进入/opt/consul目录执行 docker-compose up -d 启动consul" +echo "consul的管理员token是: $uuid" diff --git a/install/docker-compose/tensuns_install_only.sh b/install/docker-compose/tensuns_install_only.sh new file mode 100755 index 0000000..69aba65 --- /dev/null +++ b/install/docker-compose/tensuns_install_only.sh @@ -0,0 +1,49 @@ +#!/bin/bash +tsspath="/opt/tensuns" +mkdir -p $tsspath + +cat < $tsspath/docker-compose.yaml +version: '3.6' +services: + flask-consul: + image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/flask-consul:latest + container_name: flask-consul + hostname: flask-consul + restart: always + volumes: + - /usr/share/zoneinfo/PRC:/etc/localtime + environment: + consul_token: xxxxx-xxxxx-xxxxx + consul_url: http://x.x.x.x:8500/v1 + admin_passwd: xxxxxxxx + log_level: INFO + networks: + - TenSunS + + nginx-consul: + image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/nginx-consul:latest + container_name: nginx-consul + hostname: nginx-consul + restart: always + ports: + - "1026:1026" + volumes: + - /usr/share/zoneinfo/PRC:/etc/localtime + depends_on: + - flask-consul + networks: + - TenSunS + +networks: + TenSunS: + name: TenSunS + driver: bridge + ipam: + driver: default +EOF + + +echo -e "\n编辑:$tsspath/docker-compose.yaml,修改3个环境变量:\n\033[31;1mconsul_token\033[0m:consul的登录token(安装consul时生成的UUID)\n\033[31;1mconsul_url\033[0m:consul的URL(http开头,/v1要保留)\n\033[31;1madmin_passwd\033[0m:登录后羿运维平台admin用户的密码\n" +echo "启动:cd $tsspath && docker-compose up -d" +echo -e "\n请使用浏览器访问 http://{你的IP}:1026 并登录使用\n" +echo -e "\033[31;1mhttp://`ip route get 1.2.3.4 | awk '{print $NF}'|head -1`:1026\033[0m\n" diff --git a/install/k8s/install.sh b/install/k8s/install.sh new file mode 100755 index 0000000..d982fd8 --- /dev/null +++ b/install/k8s/install.sh @@ -0,0 +1,247 @@ +#!/bin/bash +uuid=`uuidgen` +passwd="tensuns" +read -p "请设置登录后羿运维平台的admin密码:" passwd + +cat < 1.consul-deploy.yaml +apiVersion: v1 +kind: Namespace +metadata: + name: tensuns +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: consul-config + namespace: tensuns + labels: + app: consul +data: + consul.hcl: |+ + log_level = "error" + data_dir = "/consul/data" + client_addr = "0.0.0.0" + ui_config { + enabled = true + } + ports = { + grpc = -1 + https = -1 + dns = -1 + grpc_tls = -1 + serf_wan = -1 + } + peering { + enabled = false + } + connect { + enabled = false + } + acl = { + enabled = true + default_policy = "deny" + enable_token_persistence = true + tokens { + initial_management = "$uuid" + agent = "$uuid" + } + } + server = true + bootstrap_expect = 1 +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: consul + namespace: tensuns + labels: + app: consul +spec: + replicas: 1 + selector: + matchLabels: + app: consul + template: + metadata: + labels: + app: consul + spec: + volumes: + - name: consul-config + configMap: + name: consul-config + containers: + - name: consul + image: hashicorp/consul:1.16 + ports: + - name: http + containerPort: 8500 + protocol: TCP + env: + - name: TZ + value: Asia/Shanghai + volumeMounts: + - name: consul-data + mountPath: /consul/data + - name: consul-config + mountPath: /consul/config/consul.hcl + subPath: consul.hcl + imagePullPolicy: IfNotPresent + restartPolicy: Always + volumeClaimTemplates: + - kind: PersistentVolumeClaim + apiVersion: v1 + metadata: + name: consul-data + namespace: tensuns + annotations: + everest.io/disk-volume-type: SAS + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: csi-disk + volumeMode: Filesystem + serviceName: consul + +--- +apiVersion: v1 +kind: Service +metadata: + name: consul + namespace: tensuns + labels: + app: consul +spec: + ports: + - name: http + protocol: TCP + port: 8500 + targetPort: 8500 + selector: + app: consul + type: ClusterIP +EOF + +cat < 2.tensuns-deploy.yaml +apiVersion: v1 +kind: Namespace +metadata: + name: tensuns +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: flask-consul + namespace: tensuns + labels: + app: flask-consul +spec: + replicas: 1 + selector: + matchLabels: + app: flask-consul + template: + metadata: + labels: + app: flask-consul + spec: + initContainers: + - name: wait-for-consul + image: busybox + command: + - sh + - '-c' + - >- + for i in \$(seq 1 60); do nc -z -w3 consul 8500 && exit 0 || + sleep 5; done; exit 1 + imagePullPolicy: IfNotPresent + containers: + - name: flask-consul + image: 'swr.cn-south-1.myhuaweicloud.com/starsl.cn/flask-consul:latest' + ports: + - name: http-2026 + containerPort: 2026 + protocol: TCP + env: + - name: admin_passwd + value: '$passwd' + - name: consul_token + value: '$uuid' + - name: consul_url + value: 'http://consul:8500/v1' + - name: log_level + value: INFO + - name: TZ + value: Asia/Shanghai + imagePullPolicy: Always + restartPolicy: Always +--- +kind: Service +apiVersion: v1 +metadata: + name: flask-consul + namespace: tensuns + labels: + app: flask-consul +spec: + ports: + - name: http-2026 + protocol: TCP + port: 2026 + targetPort: 2026 + selector: + app: flask-consul + type: ClusterIP +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: nginx-consul + namespace: tensuns + labels: + app: nginx-consul +spec: + replicas: 1 + selector: + matchLabels: + app: nginx-consul + template: + metadata: + labels: + app: nginx-consul + spec: + containers: + - name: nginx-consul + image: 'swr.cn-south-1.myhuaweicloud.com/starsl.cn/nginx-consul:latest' + ports: + - name: http-1026 + containerPort: 1026 + protocol: TCP + env: + - name: TZ + value: Asia/Shanghai + imagePullPolicy: Always + restartPolicy: Always +--- +kind: Service +apiVersion: v1 +metadata: + name: tensuns + namespace: tensuns + labels: + app: tensuns +spec: + ports: + - name: nginx-consul + protocol: TCP + port: 1026 + targetPort: 1026 + nodePort: 31026 + selector: + app: nginx-consul + type: NodePort + externalTrafficPolicy: Cluster +EOF diff --git a/k8s-deploy.yaml b/k8s-deploy.yaml deleted file mode 100644 index 843db5e..0000000 --- a/k8s-deploy.yaml +++ /dev/null @@ -1,108 +0,0 @@ -kind: Deployment -apiVersion: apps/v1 -metadata: - name: flask-consul - labels: - app: flask-consul -spec: - replicas: 1 - selector: - matchLabels: - app: flask-consul - template: - metadata: - labels: - app: flask-consul - spec: - initContainers: - - name: wait-for-consul - image: busybox - command: - - sh - - '-c' - - >- - for i in $(seq 1 60); do nc -z -w3 x.x.x.x 8500 && exit 0 || - sleep 5; done; exit 1 - imagePullPolicy: IfNotPresent - containers: - - name: flask-consul - image: 'swr.cn-south-1.myhuaweicloud.com/starsl.cn/flask-consul:latest' - ports: - - name: http-2026 - containerPort: 2026 - protocol: TCP - env: - - name: admin_passwd - value: 'xxxxxxxx' - - name: consul_token - value: xxxx-xxxx-xxxx-xxxx - - name: consul_url - value: 'http://x.x.x.x:8500/v1' - - name: log_level - value: INFO - - name: TZ - value: Asia/Shanghai - imagePullPolicy: Always - restartPolicy: Always ---- -kind: Service -apiVersion: v1 -metadata: - name: flask-consul - labels: - app: flask-consul -spec: - ports: - - name: http-2026 - protocol: TCP - port: 2026 - targetPort: 2026 - selector: - app: flask-consul - type: ClusterIP ---- -kind: Deployment -apiVersion: apps/v1 -metadata: - name: nginx-consul - labels: - app: nginx-consul -spec: - replicas: 1 - selector: - matchLabels: - app: nginx-consul - template: - metadata: - labels: - app: nginx-consul - spec: - containers: - - name: nginx-consul - image: 'swr.cn-south-1.myhuaweicloud.com/starsl.cn/nginx-consul:latest' - ports: - - name: http-1026 - containerPort: 1026 - protocol: TCP - env: - - name: TZ - value: Asia/Shanghai - imagePullPolicy: Always - restartPolicy: Always ---- -kind: Service -apiVersion: v1 -metadata: - name: consulmanager - labels: - service: consulmanager -spec: - ports: - - name: nginx-consul - protocol: TCP - port: 1026 - targetPort: 1026 - nodePort: 31026 - selector: - app: nginx-consul - type: NodePort \ No newline at end of file