Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 22 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,28 @@ COLOR_END:=\033[0m
# 一键部署
.PHONY: deploy
deploy:
@echo "$(RED_COLOR_START) deploy may last a long time, don't worry $(COLOR_END)"
@echo "$(GREEN_COLOR_START) Common modules are being deployed $(COLOR_END)"
@sudo sh ./scripts/common.sh

@$(foreach script, dir interaction relation user video gateway, \
echo "$(GREEN_COLOR_START) $(shell echo $(script) | tr '[:lower:]' '[:upper:]') modules are being deployed $(COLOR_END)"; \
sudo sh ./scripts/$(script).sh; \
)

# 如果你的 k8s runtime 为 docker 的话可以手动进行这个操作. 事实上他会在 ./scripts/common.sh 中被自动执行
.PHONY: pull
@sh ./scripts/pull_images.sh
@echo "$(RED_COLOR_START) deploy may last a long time$(COLOR_END)"
@sh ./scripts/deploy.sh create

# 配置文件有改动的话可以使用这个.
.PHONY: apply
apply:
@sh ./scripts/deploy.sh apply

# 删除所有环境, 不包括刚刚构建的镜像. 请自行删除
.PHONY: down
down:
@sh ./scripts/deploy.sh delete

# 只有当你需要把数据挂载到本地时, 你才需要这条命令, 你还需要更改任何 pv 配置中的 nodeAffinity ,而且他需要运行在 make deploy 之前
# 相关测试并不完善, 不建议使用.
.PHONY: dir-create
dir-create:
@sudo sh ./scripts/dir.sh create

.PHONY: dir-delete
dir-delete:
@sudo sh ./scripts/dir.sh delete

# 格式化代码,我们使用 gofumpt,是 fmt 的严格超集
.PHONY: fmt
Expand Down
9 changes: 8 additions & 1 deletion deploy/common/etcd-pv.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ spec:
storageClassName: local-path
local:
path: /data/etcd

nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
---

apiVersion: v1
Expand Down
9 changes: 8 additions & 1 deletion deploy/common/initdb.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ spec:
storageClassName: local-path
local:
path: /data/gateway/mysql

nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
---

apiVersion: v1
Expand Down
2 changes: 1 addition & 1 deletion deploy/gateway/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ spec:
- key: kubernetes.io/hostname
operator: In
values:
- k3s
- docker-desktop

---

Expand Down
9 changes: 8 additions & 1 deletion deploy/gateway/kafka-pv.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ spec:
storageClassName: local-path
local:
path: /data/gateway/kafka/

nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
---

apiVersion: v1
Expand Down
2 changes: 1 addition & 1 deletion deploy/interaction/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ spec:
- key: kubernetes.io/hostname
operator: In
values:
- k3s
- docker-desktop

---

Expand Down
2 changes: 1 addition & 1 deletion deploy/relation/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ spec:
- key: kubernetes.io/hostname
operator: In
values:
- k3s
- docker-desktop

---

Expand Down
2 changes: 1 addition & 1 deletion deploy/user/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ spec:
- key: kubernetes.io/hostname
operator: In
values:
- k3s
- docker-desktop

---

Expand Down
2 changes: 1 addition & 1 deletion deploy/video/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ spec:
- key: kubernetes.io/hostname
operator: In
values:
- k3s
- docker-desktop

---

Expand Down
78 changes: 0 additions & 78 deletions scripts/common.sh

This file was deleted.

45 changes: 45 additions & 0 deletions scripts/deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/usr/bin/bash

WORK_DIR=$(dirname "$0")

if [ -f "$WORK_DIR/functions.sh" ]; then
source "$WORK_DIR/functions.sh" > /dev/null 2>&1
else
echo "ERROR: $WORK_DIR/functions.sh NOT EXIST"
exit 1
fi

OPTION=$1

# 判断是否是支持的类型
case "$OPTION" in
create | apply | delete)
;;
*)
echo_red "deploy.sh only supported create, apply or delete"
exit 1
;;
esac

# 如果参数为 create 的话会尝试拉取镜像
if [[ "$OPTION" == "create" ]]; then
if ! sudo sh "$WORK_DIR/pull_images.sh"; then
echo_red "Pull images failed"
exit 1
fi
fi

SHELL_NAMES=(global.sh interaction.sh relation.sh user.sh video.sh gateway.sh)

# 根据不同的参数进行不同的操作. create, apply 或者是 delete
function deploy() {
for name in "${SHELL_NAMES[@]}"; do
echo_green "准备 $OPTION $WORK_DIR/$name"
if [ -f "$WORK_DIR/$name" ]; then
sh "$WORK_DIR/$name" "$OPTION"
fi
echo_green "成功 $OPTION $WORK_DIR/$name"
done
}

deploy
57 changes: 44 additions & 13 deletions scripts/dir.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,52 @@
#!/usr/bin/bash

WORK_DIR="$(dirname "$0")"

source "${WORK_DIR}"/functions.sh > /dev/null 2>&1

# 生成所需要的相关文件夹
sudo mkdir -p /data/etcd
ROOT_DIR="/data"

sudo mkdir -p /data/gateway/mysql
sudo mkdir -p /data/gateway/kafka
sudo mkdir -p /data/gateway/logs
# 定义各个模块的文件夹
ETCD_DIRS=( etcd )
GATEWAY_DIRS=(gateway/mysql gateway/kafka gateway/logs)
USER_DIRS=(user/mysql user/logs)
VIDEO_DIRS=(video/redis video/mysql video/logs)
INTERACTION_DIRS=(interaction/mysql interaction/logs)
RELATION_DIRS=(relation/mysql relation/logs)

sudo mkdir -p /data/user/mysql
sudo mkdir -p /data/user/logs
# 将所有模块的文件夹合并到一个数组中
DIRS=(
"${ETCD_DIRS[@]}"
"${GATEWAY_DIRS[@]}"
"${USER_DIRS[@]}"
"${VIDEO_DIRS[@]}"
"${INTERACTION_DIRS[@]}"
"${RELATION_DIRS[@]}"
)

sudo mkdir -p /data/video/redis
sudo mkdir -p /data/video/mysql
sudo mkdir -p /data/video/logs
function create_dir() {
mkdir -p "${ROOT_DIR}"
for file_path in "${DIRS[@]}"; do
mkdir -p "$ROOT_DIR/$file_path"
done
}

sudo mkdir -p /data/interaction/logs
sudo mkdir -p /data/interaction/logs
function delete_dir() {
for file_path in "${DIRS[@]}"; do
if [ -d "${ROOT_DIR:?}/${file_path:?}" ]; then
rm -rf "${ROOT_DIR:?}/${file_path:?}"
echo_green "Deleted: ${ROOT_DIR:?}/${file_path:?}"
fi
done
}

sudo mkdir -p /data/relation/mysql
sudo mkdir -p /data/relation/logs
# RUN
OPTION=$1
if [[ "$OPTION" == "create" ]]; then
create_dir
elif [[ "$OPTION" == "delete" ]]; then
delete_dir
else
echo_red "Only supported create or delete"
fi
Loading