1、资源目录如下
在这里插入图片描述
2、clean_docker_image.sh

#!/bin/bash

# 设置要删除的镜像标签
IMAGE_TAG="ylc-dgcc-nginx:v1.0.0"

# 查找要删除的镜像的 ID
IMAGE_ID=$(docker images -q $IMAGE_TAG)

# 检查是否找到了镜像
if [ -z "$IMAGE_ID" ]; then
    echo "未找到标签为 $IMAGE_TAG 的镜像。"
else
    # 删除镜像
    echo "正在删除标签为 $IMAGE_TAG 的镜像..."
    docker rmi $IMAGE_ID
    echo "镜像删除成功。"
fi


3、compress_nginx.sh

#!/bin/bash

# 源目录
source_dir="/data/nginx"

# 备份目录
backup_dir="/data/backup/xxxx"

# 确保备份目录存在
mkdir -p $backup_dir

# 获取当前时间并格式化为年月日时分秒
timestamp=$(date +"%Y%m%d%H%M%S")

# 构造压缩文件名
backup_file="ylc-nginx-web-$timestamp.tar.gz"

# 执行压缩
tar -zcvf "$backup_dir/$backup_file" "$source_dir"

echo "压缩完成,压缩文件名为: $backup_file"


4、remote_script.sh

#!/bin/bash

# 远程服务器的地址
remote_server="172.16.xx.xxx"

# SSH 连接的用户名
username="root"

# 远程服务器上的脚本路径
remote_script="/data/nginx/clean_docker_image.sh"

# 远程服务器上执行的命令
remote_command="cd /data/nginx && docker build -t ylc-nginx-web:v1.0.0 ."

# 执行远程脚本
ssh $username@$remote_server bash $remote_script

# 在远程服务器上执行 docker build 命令
ssh $username@$remote_server $remote_command

echo "远程操作完成"

5、nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    # Gzip Settings
    gzip  on;
    gzip_disable "msie6";
    server {
        listen 80;
        server_name 127.0.0.1;
        
        gzip on;
        gzip_static on;
        gzip_min_length 1k;
        gzip_comp_level 4;
        gzip_proxied any;
        gzip_types text/plain text/xml text/css;
        gzip_vary on;
        gzip_disable "MSIE [1-6]\.(?!.*SV1)";
        
        # Frontend static files
        location ^~ / {
            alias /data/nginx/html/;
            index  index.html index.htm;
            proxy_set_header Host $host;
            try_files $uri $uri/ /index.html;
        }
        # API proxy
        location /api/ {
			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;
			proxy_pass http://ylc-dgcc-web.dev.svc.cluster.local:8000;
        }
        location /api/oauth2/token {
            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_pass http://ylc-dgcc-web.dev.svc.cluster.local:8000;
        }
    }
}

6、nginx-deployment.yaml
k8s ,端口默认范围为:30000-32767 所以nodePort只能是3000开头,也是可以改的

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: dev
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: ylc-nginx-web:v1.0.0
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: ylc-nginx-web
  namespace: dev
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 32082
  type: NodePort

7、Dockerfile

FROM nginx:latest
COPY nginx.conf /etc/nginx/nginx.conf
COPY html /data/nginx/html
EXPOSE 80

8、html 放入VUE打包的静态资源
在这里插入图片描述
9、nginx_apply.sh 最重要的执行文件,运维文件

#!/bin/bash

# Set the namespace and deployment variables

NAMESPACE="dev"

DEPLOYMENT_NAME="nginx-deployment"

# 定义可选操作
options=("Build Docker Image" "Apply Deployment" "Delete Deployment" "Delete Service" "Get Pods" "Get Services" "View Logs" "SCP Nginx Directory" "Restart Deployment" "Scale Deployment" "Push Docker Image" "Remote Script" "Compress Nginx Backup" "Exit")

# 显示菜单并读取用户选择
echo "请选择一个操作:"
select opt in "${options[@]}"
do
    case $opt in
        "Build Docker Image")
            echo "正在执行清理 Docker 镜像脚本..."
            if /data/nginx/clean_docker_image.sh; then
                echo "清理成功,正在构建 Docker 镜像..."
                if docker build -t ylc-nginx-web:v1.0.0 .; then
                    echo "Docker 镜像构建成功"
                else
                    echo "Docker 镜像构建失败"
                fi
            else
                echo "清理 Docker 镜像脚本执行失败"
            fi
            ;;
        "Apply Deployment")
            echo "正在应用部署..."
            if kubectl apply -f /data/nginx/nginx-deployment.yaml --namespace $NAMESPACE --validate=false; then
                echo "部署应用成功"
            else
                echo "部署应用失败"
            fi
            ;;
        "Delete Deployment")
            echo "正在删除部署..."
            if kubectl delete deployment nginx-deployment --namespace $NAMESPACE; then
                echo "部署删除成功"
            else
                echo "部署删除失败"
            fi
            ;;
        "Delete Service")
            echo "正在删除服务..."
            if kubectl delete service ylc-nginx-web --namespace $NAMESPACE; then
                echo "服务删除成功"
            else
                echo "服务删除失败"
            fi
            ;;
        "Get Pods")
            echo "正在获取 Pods..."
            kubectl get pods --namespace $NAMESPACE
            ;;
        "Get Services")
            echo "正在获取 Services..."
            kubectl get services --namespace $NAMESPACE
            ;;
        "View Logs")
            echo "正在获取 nginx-deployment 的日志..."
            pod_name=$(kubectl get pods -n $NAMESPACE -l app=nginx -o jsonpath="{.items[0].metadata.name}")
            if [ -n "$pod_name" ]; then
                kubectl logs -n $NAMESPACE -f --tail=1000 $pod_name
            else
                echo "未找到匹配的 Pod"
            fi
            ;;
        "SCP Nginx Directory")
            echo "正在传输 app 目录..."
            if scp -r ../nginx root@172.16.xx.xxx:/data; then
                echo "传输成功"
            else
                echo "传输失败"
            fi
            ;;
        "Restart Deployment")
            echo "请选择要重启的部署:"
            deployments=$(kubectl get deployments -n $NAMESPACE -o jsonpath="{.items[*].metadata.name}")
            select selected_pod in $deployments; do
                if [ -n "$selected_pod" ]; then
                    echo "正在重启部署 $selected_pod..."
                    if kubectl rollout restart -n $NAMESPACE deployment "$selected_pod"; then
                        echo "部署 $selected_pod 重启成功"
                    else
                        echo "部署 $selected_pod 重启失败"
                    fi
                    break
                else
                    echo "无效选择,请选择一个有效的部署"
                fi
            done
            ;;
        "Scale Deployment")
            echo "请输入要设置的副本数量:"
            read replicas
            echo "正在设置副本数量为 $replicas..."
            if kubectl scale --replicas=$replicas deployment ylc-nginx-web -n $NAMESPACE; then
                echo "设置副本数量成功"
            else
                echo "设置副本数量失败"
            fi
            ;;
        "Push Docker Image")
            echo "正在推送 Docker 镜像..."
            if /data/nginx/remote_script.sh; then
                echo "推送成功"
            else
                echo "推送失败"
            fi
            ;;
        "Remote Script")
            echo "正在执行远程脚本..."
            if /data/nginx/remote_script.sh; then
                echo "远程脚本执行成功"
            else
                echo "远程脚本执行失败"
            fi
            ;;
        "Compress Nginx Backup")
            echo "正在执行压缩脚本..."
            if /data/nginx/compress_nginx.sh; then
                echo "压缩脚本执行成功"
            else
                echo "压缩脚本执行失败"
            fi
            ;;
        "Exit")
            echo "退出"
            break
            ;;
        *)
            echo "无效选项,请选择一个有效的操作"
            ;;
    esac
done

所有脚本都需要授权

chmod +x  xxxxx.sh

在这里插入图片描述
就可以操作你想要操作的了

然后安装 kuboard

sudo docker run -d --restart=unless-stopped --name=kuboard -p 31000:80/tcp -p 10081:10081/tcp -e KUBOARD_ENDPOINT="http://172.16.17.xxx:31000" -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" -v /root/kuboard-data:/data eipwork/kuboard:v3

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐