前端服务升级脚本

发布时间 2023-09-15 10:21:38作者: beawh

front1.sh 更新脚本

#!/bin/bash
workdir=/root/data-ananlysis
tag=$(date +%Y%m%d%H%M%S)
echo $tag
cd $workdir && rm -rf dist
mv /tmp/dist .
docker build -t harbor.glroad.com:8800/glr-authority/data-analysis-frontend:$tag .
docker push harbor.glroad.com:8800/glr-authority/data-analysis-frontend:$tag

kubectl get pods -n deepinsight
kubectl set image deployment/data-analysis-frontend data-analysis-frontend=harbor.glroad.com:8800/glr-authority/data-analysis-frontend:${tag}    -n deepinsight  --record
[root@k8s-master data-ananlysis]# cat Dockerfile 
FROM nginx

# 切换为上海时区
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone

# 拷贝dist包文件
COPY dist/ /usr/share/nginx/html/

# 拷贝nginx配置文件
ADD nginx.conf /etc/nginx/nginx.conf
ADD default.conf /etc/nginx/conf.d/default.conf

EXPOSE 80

ENTRYPOINT nginx -g "daemon off;"
[root@k8s-master data-ananlysis]# cat nginx.conf 
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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  120;
    client_max_body_size 200m;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_header_timeout 120s;
    client_body_timeout 120s;
    proxy_send_timeout   600;
    proxy_read_timeout   600;
    proxy_connect_timeout 159s;
    gzip on;                            # 开启gzip压缩输出
    gzip_min_length 1k;         # 最小压缩文件大小,低于1kb不压缩 
    gzip_buffers 4 16k;         # 以16k为单位,按照原始数据的大小以4倍的方式申请内存空间,一般此项不要修改
    gzip_http_version 1.1;      # 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
    gzip_comp_level 2;          # 压缩等级,压缩等级越低,效率越高,但是对于CPU性能负载也越高
    #需要压缩的常见静态资源
    gzip_types text/plain application/javascript   application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";        # 由于nginx的压缩发生在浏览器端而微软的ie6会导致压缩后图片看不见,所以该选项是禁止 ie6 发生压缩

    include /etc/nginx/conf.d/*.conf;
}
[root@k8s-master data-ananlysis]# cat default.conf 
server {
    listen       80;
    server_name  localhost;
    charset utf-8;    

    #location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$ {
    #        add_header Cache-Control max-age=604800; # 不起作用
    #    }

    location / {
        root   /usr/share/nginx/html;
        try_files $uri $uri/ /index.html;
        index  index.html index.htm;
    }
    
    location /prod-api/ {
        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://data-analysis-svc/;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
[root@k8s-master data-ananlysis]# cat frontend.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: data-analysis-frontend
  namespace: deepinsight
  labels:
    app: data-analysis-frontend
spec:
  replicas: 1                 
  selector:                                    
    matchLabels:                                
      app: data-analysis-frontend                      
  template:                                    
    metadata:                                   
      labels:                                   
        app: data-analysis-frontend             
    spec:
      imagePullSecrets:
      - name: harbor-secret                         
      containers:
      - image: harbor.glroad.com:8800/glr-authority/data-analysis-frontend:20230727
        name: data-analysis-frontend
        ports: 
        - containerPort: 80 
          protocol: TCP 
---
apiVersion: v1
kind: Service
metadata:
  name: frontend-svc
  namespace: deepinsight
  labels:
    app: data-analysis-frontend
spec:
  type: NodePort
  ports:
  - port: 80            
    protocol: TCP
    targetPort: 80      
  selector:
    app: data-analysis-frontend