十分钟教你在 K8s 中部署一个前后端应用("快速上手:十分钟内轻松在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.com
和frontend.example.com
替换为您自己的域名,并确保您的DNS解析指向您的Kubernetes集群的Ingress控制器。
使用kubectl命令创建Ingress资源:
kubectl apply -f ingress.yaml
七、验证部署
部署完成后,您可以通过以下命令查看部署的状态:
kubectl get deployments
您还可以通过以下命令查看服务状态:
kubectl get services
最后,使用浏览器访问您配置的域名(如backend.example.com
和frontend.example.com
),验证应用是否已经胜利部署。
八、总结
本文向您展示了怎样在Kubernetes中部署一个完整的前后端应用。通过创建Deployment、Service和Ingress资源,我们实现了应用的部署和外部访问。Kubernetes提供了强盛的容器编排能力,令部署和管理复杂化的微服务架构变得更加易懂。期望本文能帮助您迅捷上手Kubernetes,并在实际项目中应用。
以上是一个易懂的HTML页面,包含了怎样在Kubernetes中部署前后端应用的详细步骤。请确保在实际操作中基于您的具体情况调整配置文件和命令。