kubernetes之部署nginx+vue前端(一)

k8s系列项目的部署方式之一使用了kubernetes部署nginx+vue前端。

一、打包前端

将dist与Dockerfile放到同一目录下,Dockerfile内容如下:

FROM harbor.k8s/nginx:1.16
COPY nginx.conf /etc/nginx/nginx.conf
COPY dist/ /www/

构建镜像

docker build -t harbor.k8s/frontend:2021101401 .

# 推送到私服
docker push harbor.k8s/frontend:2021101401 # 导出镜像
docker save harbor.k8s/frontend:2021101401 | gzip > frontend-2021101401.tar.gz # 导入镜像
docker load < frontend-2021101401.tar.gz

二、k8s部署

执行部署命令

kubectl create -f frontend.yaml

下面是部署的 frontend.yaml:

apiVersion: v1
kind: Service
metadata:
labels:
app: frontend
name: frontend-service
spec:
ports:
- port: 80
protocol: TCP
# dockerfile暴露的端口
targetPort: 80
selector:
app: frontend
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: frontend
managedFields:
name: frontend-deployment
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: frontend
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: frontend
spec:
containers:
# 需要注意修改对应的镜像
- image: harbor.k8s/my-frontend:v1.0.0
imagePullPolicy: IfNotPresent
name: frontend
ports:
- containerPort: 80
protocol: TCP
resources:
limits:
cpu: '2'
memory: 1024Mi
requests:
cpu: '1'
memory: 10Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/nginx/nginx.conf
name: nginx-conf
subPath: nginx.conf
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 420
name: frontend-configmap
name: nginx-conf
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app: frontend-configmap
name: frontend-configmap
# 配置nginx.conf,注意根据实际情况修改数据DNS库域名、端口和数据库的名称
data:
nginx.conf: |
events {
worker_connections 1024; ## Default: 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 on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript application/json text/css font/ttf font/otf font/woff application/vnd.ms-fontobject image/vnd.microsoft.icon image/svg+xml
application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on; client_max_body_size 300M; server {
listen 80;
server_name localhost;
resolver 10.96.0.10 valid=60s; location / {
root /www/;
}
location /index.html {
root /www/;
}
location /favicon.ico {
root /www/;
}
location /*.js {
root /www/;
}
location /fonts/ {
root /www/;
}
location /img/ {
root /www/;
}
location /js/ {
root /www/;
}
# tomcat
location /my-app/ {
proxy_pass http://my-app-service/my-app:8080/;
}
# springboot
location /auth-center/ {
proxy_pass http://auth-center-service/;
}
location /websocket/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header X-Client-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_pass http://auth-center-service/;
}
}
}

前提条件:k8s已经部署好my-app、auth-center-service、准备好了私服镜像:harbor.k8s/my-frontend:v1.0.0

# 获取service对外端口
kubectl get svc

效果:

kubernetes之部署nginx+vue前端(一)的更多相关文章

  1. 008.Kubernetes二进制部署Nginx实现高可用

    一 Nginx代理实现kube-apiserver高可用 1.1 Nginx实现高可用 基于 nginx 代理的 kube-apiserver 高可用方案. 控制节点的 kube-controller ...

  2. docker Compose 部署springboot+vue前端端分离项目

    温馨提示:如果有自己的服务器最好不过了,这样部署网项目就可以上线了.没有的话,只能使用localhost 本机访问啦,记得替换 ngixn 中的ip地址.域名为localhost. (一) 准备工作 ...

  3. docker部署nginx+vue项目

    1.vue项目打包 npm run build 会在项目生成dist文件夹,这个文件夹可以使用nginx或tomcat来发布服务 2.查找nginx基础镜像 可以通过以下网站找到符合自己的基础镜像,我 ...

  4. Docker部署nginx+vue项目并运行

    一.打包VUE项目 npm run build:prod 二.编写default.conf 文件 server { listen 80; server_name localhost; #charset ...

  5. kubernetes下的Nginx加Tomcat三部曲之二:细说开发

    本文是<kubernetes下的Nginx加Tomcat三部曲>的第二章,在<kubernetes下的Nginx加Tomcat三部曲之一:极速体验>一文我们快速部署了Nginx ...

  6. Nginx部署多个vue前端项目

    前言:在前端项目的部署上需要让2个前端项目都部署到一个IP地址和端口下,那么我们这里就要用到Nginx了,接下来我们看看如何在一个Nginx下部署2个前端项目. 例如我的服务器地址是 http://1 ...

  7. nginx + uwsgi 部署 Django+Vue项目

    nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...

  8. 基于vue+springboot+docker网站搭建【五】部署vue前端项目

    部署vue前端项目  一.下载项目到本地   https://github.com/macrozheng/mall-admin-web 二.npm install 三.修改api配置,改为你接下来要部 ...

  9. Vue 前端配置多级目录实践(基于Nginx配置方式)

    前情提要 有阵子没更新博客了,因为快年结了工作比较多,这不,最近公司的对外演示环境出现问题这个活儿也落到了我的头上-- 事情是这样的,原来演示环境有很多服务,每个服务都是对外单独开一个端口,比如 ht ...

  10. (已经成功部署)配置vue+nginx+uwsgi luffy项目

    2019-9-16 21:16:17 由于超哥视频翻车,应该是先改api.js中的IP 再打包 然后按照原来一步一步部署vue uwsgi  Nginx 然后就可以直接访问了!!! 昨天其实就完成,只 ...

随机推荐

  1. 兴达易控modbus转profinet网关与温度变送器兼容转modbus tcp网口协议

    兴达易控modbus转profinet网关与流量变送器兼容转modbusTCP网口协议 本案例演示电磁流量计通过兴达易控modbus转profinet网关(XD-MDPN100)连接西门子1200PL ...

  2. 常用设计模式(Java)

    目录 设计模式引入 1. 什么是设计模式 2. 学习设计模式的意义 3. 设计模式的基本要素 4. OOP七大原则 1.单例模式 1. 饿汉式单例 2. 懒汉式单例 3. 内部类实现单例 4. 反射会 ...

  3. 低代码引擎 TinyEngine 正式发布!

    在当今数字化飞速发展的时代,企业对高效.敏捷的应用程序需求日益旺盛.为了满足这一需求,越来越多的低代码开发平台开始涌现.这些平台通过提供简单易用的开发工具和优化后的开发流程,帮助开发者快速构建高质量. ...

  4. c++ 常用的 STL

    c++ 中常用的 STL vector //vector 变长数组 倍增的思想(倍增:系统为每一个程序分配空间的时候,所需要的时间和空间大小无关,与请求次数相关)尽量减少请求的次数 /* 返回元素的个 ...

  5. SYN泛洪攻击详解

    SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应 报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这 ...

  6. vue项目使用lodash节流防抖函数问题与解决

    背景 在lodash函数工具库中,防抖_.debounce和节流_.throttle函数在一些频繁触发的事件中比较常用. 防抖函数_.debounce(func, [wait=0], [options ...

  7. K8S太庞大,这款PasteSpider绝对适合你!一款轻量级容器部署管理工具

    PasteSpider采用.netcore编写,运行于linux服务器的docker/podman里面,涉及的技术或者工具有podman/docker,registry,nginx,top,ssh,g ...

  8. 使用LiME收集主机物理内存的内容时发生宕机

    作者 pengdonglin137@163.com 现象 在一台ARM64的Centos7虚拟机里加载 https://github.com/504ensicsLabs/LiME 编译出的内核模块时发 ...

  9. 基于LangChain的LLM应用开发2——模型、提示和输出解析

    本次会讲解LangChain的三个基本组件:模型.提示和解析器. 名词解析 模型(Models):是指作为基础的大语言模型.LangChain中通过ChatOpenAI或者AzureChatOpenA ...

  10. 安装 Android x86 并开启 arm 兼容

    安装 Android x86 并开启 arm 兼容 Win 11 下开启了 Hyper-v,尝试了各种安卓模拟器,要么不能设置代理(BlueStacks),要么/system目录没办法设置. 获取 A ...