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资源的编写。因大家的项目情况各不相同,以上只是一个整体的参考。如果有问题,还请各位小伙伴在评论区进行讨论,大家互相学习,共同进步!

相关推荐
哈里谢顿11 小时前
Kubernetes Operator核心概念、实现原理和实战开发
云原生
阿里云云原生16 小时前
你的 OpenClaw 真的在受控运行吗?
云原生
阿里云云原生17 小时前
5 分钟零代码改造,让 Go 应用自动获得全链路可观测能力
云原生·go
Shanyoufusu1217 小时前
RKE2 单节点集群安装 Rancher+ 私有镜像仓库搭建 完整教程
云原生
阿里云云原生18 小时前
Dify 官方上架 Higress 插件,轻松接入 AI 网关访问模型服务
云原生
AI攻城狮19 小时前
OpenClaw Session 管理完全指南:Context 压缩、重置与持久化
人工智能·云原生·aigc
蝎子莱莱爱打怪2 天前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
阿里云云原生5 天前
阿里云获评 Agentic AI 开发平台领导者,函数计算 AgentRun 赢下关键分!
云原生
蝎子莱莱爱打怪5 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀5 天前
Docker部署Nacos
docker·容器