k8s部署vue项目

Posted 爱上口袋的天空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s部署vue项目相关的知识,希望对你有一定的参考价值。

1、环境准备

提前搭建好的k8s集群准备:

    192.168.56.30(master节点)

    192.168.56.31(node节点)

harbor远程仓库准备:

     192.168.56.14

2、创建nginx镜像

1)准备一个nginx安装包,我们这里的版本是1.18.0的

2)在同级目录下创建一个Dockerfile文件,内容如下
  

#基于centos基础镜像
FROM centos:7

#作者信息
MAINTAINER kgf

#安装环境依赖
RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel 


#将nginx安装包拷贝并且安装到/opt目录下
ADD nginx-1.18.0.tar.gz /opt/

#创建/usr/local/nginx目录
RUN mkdir -p /usr/local/nginx

#编译安装nginx
RUN cd /opt/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx && make && make install


#暴露80端口
EXPOSE 80 

#启动nginx
ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /etc/passwd

3)使用Dockerfile创建镜像

    命令:docker build -t hub.harbor.com/library/kgf-nginx:v1 .
    
    推送到harbor: docker push hub.harbor.com/library/kgf-nginx:v1
     

4)运行该镜像测试nginx是否正常运行

      命令:docker run -d --name 自定义容器名称 -p 8080:80 镜像id /bin/bash
      

    

3、创建vue项目镜像

1)配置vue项目访问后端的配置文件

        

2)使用命令打包vue项目得到一个dist包

       命令:npm run build
       

3)准备一个nginx.conf配置文件,配置我们的代理规则


worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
	
    server {
        listen       80;
        server_name  localhost;

        location /gateway/ {
			proxy_pass http://192.168.56.30:32447;			
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
			add_header Content-Type "text/plain;charset=utf-8";
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST';
				
        }
   
        location / {
            root   /usr/local/nginx/html;
			try_files $uri $uri/ /index.html last;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

4)创建Dockerfile文件,内容如下:

#基于centos基础镜像
FROM hub.harbor.com/library/kgf-nginx:v1

#作者信息
MAINTAINER kgf

COPY dist\\
     /usr/local/nginx/html/

#删除默认的nginx.conf配置文件
RUN rm -rf /usr/local/nginx/conf/nginx.conf

#拷贝nginx.conf配置文件
COPY nginx.conf  /usr/local/nginx/conf/

#暴露80端口
EXPOSE 80 

#启动nginx
ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /etc/passwd

 5)执行Dockerfile文件生成镜像

      命令:docker build -t hub.harbor.com/library/kgf-vue:v1 .

           

      推送到harbor: docker push hub.harbor.com/library/kgf-vue:v1

6)创建vue项目的yaml文件,kgf-vue-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kgf-vue
  namespace: kgf-dev
  labels:
    app: kgf-vue
spec:
  replicas: 1
  selector:
    matchLabels: { app: kgf-vue }
  strategy: 
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate  
  template:
    metadata:
      labels: { app: kgf-vue }
    spec:
      containers:
        - name: kgf-vue
          env:
            - name: kgf-vue
              valueFrom:
                fieldRef: { fieldPath: metadata.name }
          image: hub.harbor.com/library/kgf-vue:v1
          imagePullPolicy: IfNotPresent
          resources: 
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 0.4
              memory: 256Mi         

7)创建vue项目的svc文件,kgf-vue-service.yaml

#service版本
apiVersion: v1
#这个表示资源类型我们创建的是Service
kind: Service
metadata: #这个里面定义的是Service中我们创建的对象信息
  #对象名称
  name: kgf-vue
  #元数据名称空间
  namespace: kgf-dev
  labels:
    app: kgf-vue
spec: #下面定义service的详细信息
  #类型为NodePort
  type: NodePort
  selector: #通过标签选择器去查询对应版本的pod,最后组成一个service
    app: kgf-vue
  ports: #指定容器需要用到的端口列表
    #指定端口名称 
    - name: http
      #服务对外的端口
      port: 8080
      protocol: TCP
      #容器的端口
      targetPort: 80

8)执行上面创建的yaml文件

   命令:

         kubectl apply -f kgf-vue-deployment.yaml

         kubectl apply -f kgf-vue-service.yaml

   

4、浏览器访问效果

以上是关于k8s部署vue项目的主要内容,如果未能解决你的问题,请参考以下文章

k8s的项目部署

Vue+Node部署

flask项目在Linux上部署

微服务从代码到k8s部署应有尽有大结局(k8s部署)

k8s+SpringCloud全栈技术:在k8s平台部署亿级高并发的SpringCloud项目

Jenkins+Rancher自动化部署