diff --git a/k8s/build-java.sh b/k8s/build-java.sh old mode 100644 new mode 100755 diff --git a/k8s/build-java.sh.bak b/k8s/build-java.sh.bak new file mode 100644 index 00000000..66ddbecc --- /dev/null +++ b/k8s/build-java.sh.bak @@ -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 + + + + + + + + diff --git a/k8s/build-node.sh b/k8s/build-node.sh old mode 100644 new mode 100755 diff --git a/k8s/build-node.sh.bak b/k8s/build-node.sh.bak new file mode 100644 index 00000000..9805d2ca --- /dev/null +++ b/k8s/build-node.sh.bak @@ -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 + + + diff --git a/k8s/build.sh b/k8s/build.sh old mode 100644 new mode 100755 diff --git a/k8s/build_and_deploy.sh b/k8s/build_and_deploy.sh old mode 100644 new mode 100755 diff --git a/k8s/build_and_deploy.sh.bak b/k8s/build_and_deploy.sh.bak new file mode 100644 index 00000000..eacc9c6b --- /dev/null +++ b/k8s/build_and_deploy.sh.bak @@ -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 秒" \ No newline at end of file diff --git a/k8s/deploy.sh b/k8s/deploy.sh old mode 100644 new mode 100755 diff --git a/k8s/deploy.sh.bak b/k8s/deploy.sh.bak new file mode 100644 index 00000000..a9fe57f8 --- /dev/null +++ b/k8s/deploy.sh.bak @@ -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))秒" diff --git a/k8s/dockerfiles/conf/nginx.conf.20240705 b/k8s/dockerfiles/conf/nginx.conf.20240705 new file mode 100644 index 00000000..bf9f77c4 --- /dev/null +++ b/k8s/dockerfiles/conf/nginx.conf.20240705 @@ -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; + } + } +} diff --git a/k8s/dockerfiles/conf/nginx.conf.20240909 b/k8s/dockerfiles/conf/nginx.conf.20240909 new file mode 100644 index 00000000..c23e02c3 --- /dev/null +++ b/k8s/dockerfiles/conf/nginx.conf.20240909 @@ -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; + } + } +} diff --git a/k8s/dockerfiles/conf/nginx.conf.bak b/k8s/dockerfiles/conf/nginx.conf.bak new file mode 100644 index 00000000..281ad4f4 --- /dev/null +++ b/k8s/dockerfiles/conf/nginx.conf.bak @@ -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; + } + } +} diff --git a/k8s/dockerfiles/conf/nginx.conf.bak0719 b/k8s/dockerfiles/conf/nginx.conf.bak0719 new file mode 100644 index 00000000..48e45bf0 --- /dev/null +++ b/k8s/dockerfiles/conf/nginx.conf.bak0719 @@ -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; + } + } +} diff --git a/k8s/redis.tgz b/k8s/redis.tgz new file mode 100644 index 00000000..288e3db7 Binary files /dev/null and b/k8s/redis.tgz differ diff --git a/k8s/vim b/k8s/vim new file mode 100644 index 00000000..e69de29b