k8s前后端分离部署实践

前序

目前大多数项目都在以前后端分离方式进行项目的开发、部署。这样方便在更新前端时,不用重启后端,反之亦然,前后端解耦也提高开发的效率。今天咱们讲讲在如何在k8s集群中进行前后端分离部署。

给大家分析个:

小镜智能AI ChatGPT镜像站:https://xj.xiaozhi01.com/42091

镜像制作

后端

dockerfile编写

复制代码
#基于openjdk镜像FROM adoptopenjdk:8u222-b10-jdk-hotspot-bionic#指定app目录为当前运行目录WORKDIR /server#安装字体及相关环境变量RUN apt-get update  && apt-get -y install fontconfig && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \    && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8ENV LANG zh_CN.utf8COPY ./server /server/#端口映射EXPOSE 8080#执行命令,给sh脚本赋予执行权限RUN chmod a+x start.sh#指定启动后需要执行的脚本ENTRYPOINT ["./start.sh"]

构建镜像

复制代码
docker build -f dockerfile -t server:0.0.1 .

前端

dockerfile

前端镜像打算以nginx镜像作为基镜像,把前端项目文件构建结果拷贝进去,如下:​​​​​​​

复制代码
#基于openjdk镜像FROM nginxCOPY nginx.conf /etc/nginx/COPY web /opt/front/

nginx.conf为自己写的nginx配置文件,拷贝进去后覆盖nginx镜像中的配置文件内容。 /opt/front路径是nginx默认找静态资源的路径

构建镜像

将dockerfile文件放在web目录同级

复制代码
docker build -f dockerfile -t web:0.0.1 .

编写k8s资源yaml

后端

deploy以及service资源yaml​​​​​​​

复制代码
apiVersion: apps/v1kind: Deploymentmetadata:  name: backend-v2spec:  selector:    matchLabels:      app: server-v1  replicas: 1  template:    metadata:      labels:        app: server-v1    spec:      containers:      - name: server-v1        image: xxxxxx:8082/repository/mydocker/server:0.0.1 #替换为自己的docker镜像仓库地址        ports:        - containerPort: 8080     # nodeName: node1---apiVersion: v1kind: Servicemetadata:  name: backend-v1spec:  selector:    app: server-v1  ports:  - protocol: TCP    port: 8080    targetPort: 8080

前端

deploy以及service资源yaml​​​​​​​

复制代码
apiVersion: apps/v1kind: Deploymentmetadata:  name: front-v2spec:  selector:    matchLabels:      app: web-v1  replicas: 1  template:    metadata:      labels:        app: web-v1    spec:     # nodeName: node1      containers:      - name: web-v1        image: xxxxxxxxxxxx:8082/repository/mydocker/web:0.0.1 #替换为自己的docker镜像仓库地址        ports:        - containerPort: 80     # nodeName: node1---apiVersion: v1kind: Servicemetadata:  name: front-v1spec:  selector:    app: web-v1  ports:  - protocol: TCP    port: 80    targetPort: 80

外部访问ingress-nginx资源yaml编写​​​​​​​

复制代码
apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: test-demo  annotations:    kubernetes.io/ingress.class: nginxspec:  rules:  - http:      paths:       - path: /         pathType: ImplementationSpecific         backend:           service:             name: front-v1             port:               number: 80       - path: /api         pathType: Prefix         backend:           service:             name: backend-v1             port:               number: 8080       - path: /login-in         pathType: Prefix         backend:           service:             name: backend-v1             port:               number: 8080       - path: /logout         pathType: Prefix         backend:           service:             name: backend-v1             port:               number: 8080

结语

最后给大家分享个

小镜智能AI ChatGPT镜像站:https://xj.xiaozhi01.com/42091

以上内容涵盖前后端镜像dokcerfile编写到镜像制作,以及部署至k8s集群所需的deployment、service的yaml资源的编写,和ingress的yaml资源的编写。因大家的项目情况各不相同,以上只是一个整体的参考。如果有问题,还请各位小伙伴在评论区进行讨论,大家互相学习,共同进步!

相关推荐
会飞的小蛮猪1 小时前
K8s-1.29.2二进制安装-第一章
云原生·容器·kubernetes
树下水月6 小时前
docker 启动后 如何通过对应的进程 找docker-compose.yaml 编排文件
运维·docker·容器
平行云6 小时前
实时云渲染支持在网页上运行UE5开发的3A大作Lyra项目
unity·云原生·ue5·webgl·虚拟现实·实时云渲染·像素流送
凯子坚持 c6 小时前
Docker 网络管理深度解析与实践指南
运维·docker·容器
kevin_水滴石穿6 小时前
在镜像生成时从内网获取字体安装包并配置
linux·docker·容器
阿里云云原生7 小时前
AI 原生落地成果获认可,阿里云云原生多项案例入选信通院「AI 云」典型示范
云原生
LILR_7 小时前
简单学docker
运维·docker·容器
阿里云云原生8 小时前
阿里云可观测 2025 年 11 月产品动态
阿里云·云原生·云计算·可观测
Empty_7778 小时前
K8S-网络原理
网络·容器·kubernetes
永不停歇的蜗牛8 小时前
K8S之创建cm指令create和 apply的区别
java·容器·kubernetes