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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT-民工21110

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值