This commit is contained in:
somunslotus 2024-09-14 15:13:48 +08:00
parent 975f5adf8c
commit 9050a65e02
15 changed files with 647 additions and 0 deletions

0
k8s/build-java.sh Normal file → Executable file
View File

25
k8s/build-java.sh.bak Normal file
View File

@ -0,0 +1,25 @@
#!/bin/bash
baseDir="/home/somuns/ci4s"
#判断$1是否为all如果是则编译所有模块否则只编译management-platform模块
if [ "$1" == "all" ]; then
buildDir=$baseDir
else
buildDir="$baseDir/ruoyi-modules/management-platform"
fi
echo "Building $buildDir"
cd $buildDir && mvn clean install
if [ $? -ne 0 ]; then
echo "Failed to build ruoyi-modules"
exit 1
fi

0
k8s/build-node.sh Normal file → Executable file
View File

21
k8s/build-node.sh.bak Normal file
View File

@ -0,0 +1,21 @@
#!/bin/bash
baseDir="/home/somuns/ci4s"
cd ${baseDir}/react-ui
npm install
if [ $? -ne 0 ]; then
echo "Failed to install npm depend package"
exit 1
fi
npm run build
if [ $? -ne 0 ]; then
echo "Failed to build react-ui"
exit 1
fi

0
k8s/build.sh Normal file → Executable file
View File

0
k8s/build_and_deploy.sh Normal file → Executable file
View File

View File

@ -0,0 +1,74 @@
#!/bin/bash
#记录开始时间
startTime=$(date +%s)
# 登录到目标环境
baseDir="/home/somuns/ci4s"
cd ${baseDir}
#build
# 默认参数
branch="master"
service="manage-front"
env="dev"
#
show_help() {
echo "Usage: $0 [-b branch] [-s service] [-e environment]"
echo
echo "Options:"
echo " -b Branch to deploy, default: master"
echo " -s Service to deploy (manage-front, manage, front, all, default: manage-front)"
echo " -e Environment (e.g., dev, test, default: dev)"
echo " -h Show this help message"
}
# 解析命令行选项
while getopts "b:s:e:h" opt; do
case $opt in
b) branch=$OPTARG ;;
s) service=$OPTARG ;;
e) env=$OPTARG ;;
h) show_help; exit 0 ;;
\?) echo "Invalid option -$OPTARG" >&2; show_help; exit 1 ;;
esac
done
valid_services=("manage-front" "manage" "front" "all")
if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then
echo "Invalid service name: $service" >&2
echo "Valid services are: ${valid_services[*]}"
exit 1
fi
valid_envs=("dev" "test")
if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then
echo "Invalid environment: $env" >&2
echo "Valid environments are: ${valid_envs[*]}"
exit 1
fi
echo "start build"
sh ${baseDir}/k8s/build.sh -b ${branch} -s ${service}
if [ $? -ne 0 ]; then
echo "Build failed"
exit 1
fi
echo "build success"
# 部署
echo "start deploy"
sh ${baseDir}/k8s/deploy.sh -s ${service} -e ${env}
if [ $? -ne 0 ]; then
echo "Deploy failed"
exit 1
fi
echo "deploy success"
# 记录结束时间
endTime=$(date +%s)
# 计算运行时间
duration=$(( $endTime - $startTime ))
echo "编译发布总耗时: $duration"

0
k8s/deploy.sh Normal file → Executable file
View File

162
k8s/deploy.sh.bak Normal file
View File

@ -0,0 +1,162 @@
#!/bin/bash
# 记录开始时间
start=$(date +%s)
# 默认参数
service="manage-front"
env="dev"
show_help() {
echo "Usage: $0 [-s service] [-e environment]"
echo
echo "Options:"
echo " -s Service to deploy (manage-front, manage, front, all default: manage-front)"
echo " -e Environment (e.g., dev, test, default: dev)"
echo " -h Show this help message"
}
# 解析命令行参数
while getopts "s:e:h" opt; do
case $opt in
s) service=$OPTARG ;;
e) env=$OPTARG ;;
h) show_help; exit 0 ;;
\?) echo "Invalid option -$OPTARG" >&2; exit 1 ;;
esac
done
echo "Deploy service: $service, environment: $env"
valid_services=("manage-front" "manage" "front" "all")
if [[ ! " ${valid_services[@]} " =~ " $service " ]]; then
echo "Invalid service name: $service" >&2
echo "Valid services are: ${valid_services[*]}"
exit 1
fi
valid_envs=("dev" "test")
if [[ ! " ${valid_envs[@]} " =~ " $env " ]]; then
echo "Invalid environment: $env" >&2
echo "Valid environments are: ${valid_envs[*]}"
exit 1
fi
# 根据环境设置 IP 地址
if [ "$env" == "dev" ]; then
remote_ip="172.20.32.181"
elif [ "$env" == "test" ]; then
remote_ip="172.20.32.185"
else
echo "Invalid environment - $env"
exit 1
fi
baseDir=/home/somuns/ci4s
tag=$(date +'%Y%m%d%H%M')
remote_deploy_dir=/home/deploy/manage-platform
# 构建镜像函数
build_image() {
local dockerfile=$1
local image=$2
cd ${baseDir}/k8s/dockerfiles
docker build -t ${image} -f ${dockerfile} .
if [ $? -ne 0 ]; then
echo "Build ${image} image fail"
exit 1
fi
docker push ${image}
}
# 复制和替换 YAML 文件函数
prepare_yaml() {
local yaml_file=$1
local image=$2
placeholder="\${${yaml_file%.yaml}-image}"
cd ${baseDir}/k8s/template-yaml
cp -rf ${yaml_file} deploy/
cd deploy/
sed -i "s|${placeholder}|${image}|g" ${yaml_file}
if [ $? -ne 0 ]; then
echo "Replace ${image} image fail"
exit 1
fi
# 建立远程目录并备份文件
ssh root@$remote_ip "mkdir -p ${remote_deploy_dir} && if [ -f ${remote_deploy_dir}/${yaml_file} ]; then mv ${remote_deploy_dir}/${yaml_file} ${remote_deploy_dir}/${yaml_file}.bak; fi"
if [ $? -ne 0 ]; then
echo "Failed to create remote directory or backup ${yaml_file}"
exit 1
else
echo "Successfully created remote directory and backup ${yaml_file}"
fi
scp ${baseDir}/k8s/template-yaml/deploy/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file}
if [ $? -ne 0 ]; then
echo "Failed to copy ${yaml_file}"
exit 1
else
echo "Successfully copied ${yaml_file}"
fi
}
# 部署服务函数
deploy_service() {
local yaml_file=$1
ssh root@$remote_ip "kubectl apply -n argo -f ${remote_deploy_dir}/${yaml_file}"
if [ $? -ne 0 ]; then
echo "Failed to deploy ${yaml_file}"
exit 1
else
echo "Successfully deployed ${yaml_file}"
fi
}
deploy_nacos() {
local yaml_file=$1
scp ${baseDir}/k8s/${yaml_file} root@$remote_ip:${remote_deploy_dir}/${yaml_file}
deploy_service ${yaml_file}
}
build_and_deploy() {
local dockerfile=$1
local image=$2
local yaml_file=$3
build_image ${dockerfile} ${image}
prepare_yaml ${yaml_file} ${image}
deploy_service ${yaml_file}
}
# 构建和部署 manage 服务
if [ "$service" == "manage-front" ] || [ "$service" == "manage" ]; then
build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml"
fi
# 构建和部署 front 服务
if [ "$service" == "manage-front" ] || [ "$service" == "front" ]; then
build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml"
fi
if [ "$service" == "all" ]; then
#部署前端
build_and_deploy "nginx-dockerfile" "172.20.32.187/ci4s/ci4s-front:${tag}" "k8s-12front.yaml"
#部署管理平台
build_and_deploy "managent-dockerfile" "172.20.32.187/ci4s/ci4s-managent:${tag}" "k8s-7management.yaml"
#部署认证中心
build_and_deploy "auth-dockerfile" "172.20.32.187/ci4s/ci4s-auth:${tag}" "k8s-5auth.yaml"
#部署网关
build_and_deploy "gateway-dockerfile" "172.20.32.187/ci4s/ci4s-gateway:${tag}" "k8s-4gateway.yaml"
#部署系统服务
build_and_deploy "system-dockerfile" "172.20.32.187/ci4s/ci4s-system:${tag}" "k8s-6system.yaml"
#部署配置中心
deploy_nacos "k8s-3nacos.yaml"
fi
# 记录结束时间
end=$(date +%s)
echo "部署成功, 耗时: $((end-start))"

View File

@ -0,0 +1,64 @@
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_max_body_size 20480m;
server {
listen 8000;
server_name localhost;
location /api/{
# rewrite ^/prod-api/(.*)$ /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
proxy_connect_timeout 500s; # 设置连接超时时间为 120 秒
proxy_read_timeout 500s; # 设置读取超时时间为 120 秒
proxy_send_timeout 500s; # 设置发送超时时间为 120 秒
}
location /label-studio/ {
# rewrite ^/label-studio/(.*)$ /$1 break;
proxy_pass http://label-studio-service.argo.svc:8080/projects/;
proxy_hide_header X-Frame-Options;
add_header X-Frame-Options ALLOWALL;
}
location / {
rewrite ^/prod-api/(.*)$ /$1 break;
root /home/ruoyi/projects/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /api/v1/model/ {
proxy_pass http://pipeline-convert-service.argo.svc:80;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location @router {
rewrite ^.*$ /index.html last;
}
# 避免actuator暴露
if ($request_uri ~ "/actuator") {
return 403;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

View File

@ -0,0 +1,131 @@
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_max_body_size 20480m;
error_log /var/log/nginx/error.log debug;
server {
listen 8000;
server_name localhost;
location /api/{
# rewrite ^/prod-api/(.*)$ /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
proxy_connect_timeout 500s; # 设置连接超时时间为 120 秒
proxy_read_timeout 500s; # 设置读取超时时间为 120 秒
proxy_send_timeout 500s; # 设置发送超时时间为 120 秒
}
location /label-studio/ {
# rewrite ^/label-studio/(.*)$ /$1 break;
proxy_pass http://label-studio-service.argo.svc:8080/projects/;
proxy_hide_header X-Frame-Options;
add_header X-Frame-Options ALLOWALL;
}
location / {
rewrite ^/prod-api/(.*)$ /$1 break;
root /home/ruoyi/projects/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /api/v1/model/ {
proxy_pass http://pipeline-convert-service.argo.svc:80;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# location /api/v1/realtimeStatus {
# proxy_pass http://argo-server.argo.svc:2746/api/v1/workflow-events/argo;
# proxy_set_header REMOTE-HOST $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# }
location /api/v1/tensorboard/show {
# 提取查询参数中的 `svc` 值
set $svc "";
if ($arg_svc) {
set $svc $arg_svc;
}
# 将请求转发到动态生成的内部服务地址
proxy_pass http://$svc.argo.svc:6006;
# 传递必要的头信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 对于 WebSocket 应用很重要
proxy_buffering off;
}
location /api/v1/realtimeStatus {
rewrite ^/api/v1/realtimeStatus(.*)$ /api/v1/workflow-events/argo$1 break;
proxy_pass https://argo-server.argo.svc:2746;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 保留查询参数
proxy_set_header X-Original-URI $request_uri;
# 禁用缓冲
proxy_buffering off;
# 增加超时时间
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 60s;
# 设置传递的请求头
# proxy_set_header Connection '';
# chunked_transfer_encoding off;
# 如果需要保留自定义头部
proxy_set_header Accept 'text/event-stream';
}
location /newlog/realtimeLog {
proxy_pass http://loki.loki-log.svc:3100/loki/api/v1/tail;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location @router {
rewrite ^.*$ /index.html last;
}
# 避免actuator暴露
if ($request_uri ~ "/actuator") {
return 403;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

View File

@ -0,0 +1,60 @@
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8000;
server_name localhost;
location /api/{
rewrite ^/prod-api/(.*)$ /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
}
location /label-studio {
rewrite ^/prod-api/(.*)$ /$1 break;
proxy_pass http://label-studio-ls-app.label-data.svc:80/;
proxy_hide_header X-Frame-Options;
add_header X-Frame-Options "ALLOW-FROM http://label-studio-ls-app.label-data.svc:80/";
}
location /api/v1/model/ {
proxy_pass http://pipeline-convert-service.argo.svc:80;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
rewrite ^/prod-api/(.*)$ /$1 break;
root /home/ruoyi/projects/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location @router {
rewrite ^.*$ /index.html last;
}
# 避免actuator暴露
if ($request_uri ~ "/actuator") {
return 403;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

View File

@ -0,0 +1,110 @@
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_max_body_size 20480m;
error_log /var/log/nginx/error.log debug;
server {
listen 8000;
server_name localhost;
location /api/{
# rewrite ^/prod-api/(.*)$ /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ci4s-gateway-service.argo.svc:8082/;
proxy_connect_timeout 500s; # 设置连接超时时间为 120 秒
proxy_read_timeout 500s; # 设置读取超时时间为 120 秒
proxy_send_timeout 500s; # 设置发送超时时间为 120 秒
}
location /label-studio/ {
# rewrite ^/label-studio/(.*)$ /$1 break;
proxy_pass http://label-studio-service.argo.svc:8080/projects/;
proxy_hide_header X-Frame-Options;
add_header X-Frame-Options ALLOWALL;
}
location / {
rewrite ^/prod-api/(.*)$ /$1 break;
root /home/ruoyi/projects/ruoyi-ui;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /api/v1/model/ {
proxy_pass http://pipeline-convert-service.argo.svc:80;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# location /api/v1/realtimeStatus {
# proxy_pass http://argo-server.argo.svc:2746/api/v1/workflow-events/argo;
# proxy_set_header REMOTE-HOST $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# }
location /api/v1/realtimeStatus {
rewrite ^/api/v1/realtimeStatus(.*)$ /api/v1/workflow-events/argo$1 break;
proxy_pass https://argo-server.argo.svc:2746;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 保留查询参数
proxy_set_header X-Original-URI $request_uri;
# 禁用缓冲
proxy_buffering off;
# 增加超时时间
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 60s;
# 设置传递的请求头
# proxy_set_header Connection '';
# chunked_transfer_encoding off;
# 如果需要保留自定义头部
proxy_set_header Accept 'text/event-stream';
}
location /newlog/realtimeLog {
proxy_pass http://loki.loki-log.svc:3100/loki/api/v1/tail;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location @router {
rewrite ^.*$ /index.html last;
}
# 避免actuator暴露
if ($request_uri ~ "/actuator") {
return 403;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

BIN
k8s/redis.tgz Normal file

Binary file not shown.

0
k8s/vim Normal file
View File