十分钟教你在 K8s 中部署一个前后端应用("快速上手:十分钟内轻松在Kubernetes部署完整的前后端应用")

原创
ithorizon 7个月前 (10-21) 阅读数 20 #后端开发

迅捷上手:十分钟内轻松在Kubernetes部署完整的前后端应用

一、前言

在当今的云计算时代,Kubernetes(K8s)已经成为容器编排的事实标准。在本文中,我们将向您展示怎样在短短十分钟内,在Kubernetes集群中部署一个完整的前后端应用。我们将使用一个易懂的Node.js和React应用作为示例,通过创建Deployment、Service和Ingress资源,实现应用的部署和访问。

二、准备工作

在开端之前,请确保您已经完成了以下准备工作:

  • 安装并配置好Kubernetes集群(可以是本地Minikube或云上的集群)。
  • 安装并配置好kubectl命令行工具,以便与Kubernetes集群进行交互。
  • 准备一个易懂的Node.js和React应用(本文将以一个易懂的示例应用为例)。

三、部署后端服务

首先,我们需要创建一个Deployment资源来部署后端服务。以下是一个易懂的Node.js应用的Dockerfile:

FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

接下来,创建一个名为backend-deployment.yaml的文件,并添加以下内容:

apiVersion: apps/v1

kind: Deployment

metadata:

name: backend

spec:

replicas: 2

selector:

matchLabels:

app: backend

template:

metadata:

labels:

app: backend

spec:

containers:

- name: backend

image: your-docker-image # 替换为你的Docker镜像地址

ports:

- containerPort: 3000

使用kubectl命令部署后端服务:

kubectl apply -f backend-deployment.yaml

四、部署前端服务

接下来,我们将部署前端服务。以下是一个易懂的React应用的Dockerfile:

FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

RUN npm run build

FROM nginx:alpine

COPY --from=0 /app/build /usr/share/nginx/html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

创建一个名为frontend-deployment.yaml的文件,并添加以下内容:

apiVersion: apps/v1

kind: Deployment

metadata:

name: frontend

spec:

replicas: 2

selector:

matchLabels:

app: frontend

template:

metadata:

labels:

app: frontend

spec:

containers:

- name: frontend

image: your-docker-image # 替换为你的Docker镜像地址

ports:

- containerPort: 80

使用kubectl命令部署前端服务:

kubectl apply -f frontend-deployment.yaml

五、创建服务(Service)

为了使外部访问我们的应用,我们需要创建一个Service资源。首先,为后端服务创建一个名为backend-service.yaml的文件:

apiVersion: v1

kind: Service

metadata:

name: backend-service

spec:

selector:

app: backend

ports:

- protocol: TCP

port: 3000

targetPort: 3000

然后,为前端服务创建一个名为frontend-service.yaml的文件:

apiVersion: v1

kind: Service

metadata:

name: frontend-service

spec:

selector:

app: frontend

ports:

- protocol: TCP

port: 80

targetPort: 80

使用kubectl命令创建服务:

kubectl apply -f backend-service.yaml

kubectl apply -f frontend-service.yaml

六、创建Ingress资源

最后,我们需要创建一个Ingress资源来暴露我们的应用。创建一个名为ingress.yaml的文件,并添加以下内容:

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

name: my-ingress

spec:

rules:

- host: backend.example.com

http:

paths:

- path: /

pathType: Prefix

backend:

service:

name: backend-service

port:

number: 3000

- host: frontend.example.com

http:

paths:

- path: /

pathType: Prefix

backend:

service:

name: frontend-service

port:

number: 80

请注意,您需要将backend.example.comfrontend.example.com替换为您自己的域名,并确保您的DNS解析指向您的Kubernetes集群的Ingress控制器。

使用kubectl命令创建Ingress资源:

kubectl apply -f ingress.yaml

七、验证部署

部署完成后,您可以通过以下命令查看部署的状态:

kubectl get deployments

您还可以通过以下命令查看服务状态:

kubectl get services

最后,使用浏览器访问您配置的域名(如backend.example.comfrontend.example.com),验证应用是否已经胜利部署。

八、总结

本文向您展示了怎样在Kubernetes中部署一个完整的前后端应用。通过创建Deployment、Service和Ingress资源,我们实现了应用的部署和外部访问。Kubernetes提供了强盛的容器编排能力,令部署和管理复杂化的微服务架构变得更加易懂。期望本文能帮助您迅捷上手Kubernetes,并在实际项目中应用。

以上是一个易懂的HTML页面,包含了怎样在Kubernetes中部署前后端应用的详细步骤。请确保在实际操作中基于您的具体情况调整配置文件和命令。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门