新增docker和K8S一键部署脚本

pull/72/head
starsliao 2023-07-27 03:39:01 +08:00
parent 1f5a827ba9
commit 4925cc8479
7 changed files with 458 additions and 131 deletions

View File

@ -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

Binary file not shown.

View File

@ -0,0 +1,98 @@
#!/bin/bash
tsspath="/opt/tensuns"
uuid=`uuidgen`
adminpwd=`uuidgen|awk -F- '{print $1}'`
mkdir -p $tsspath/consul/config
cat <<EOF > $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 <<EOF > $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"

View File

@ -0,0 +1,64 @@
#!/bin/bash
uuid=`uuidgen`
mkdir -p /opt/consul/config
cat <<EOF > /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 <<EOF > /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"

View File

@ -0,0 +1,49 @@
#!/bin/bash
tsspath="/opt/tensuns"
mkdir -p $tsspath
cat <<EOF > $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[0mconsul的登录token安装consul时生成的UUID\n\033[31;1mconsul_url\033[0mconsul的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"

247
install/k8s/install.sh Executable file
View File

@ -0,0 +1,247 @@
#!/bin/bash
uuid=`uuidgen`
passwd="tensuns"
read -p "请设置登录后羿运维平台的admin密码" passwd
cat <<EOF > 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 <<EOF > 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

View File

@ -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