# 微服务项目部署

## 流程概述

在Kubernetes(K8S)中部署微服务项目主要包括创建并部署容器镜像、定义并创建Pod、Service以及Ingress等资源。下面是整个部署流程的步骤概览:

| 步骤 | 操作 |
|---------------------------|--------------------------|
| 1. 创建Docker镜像 | 编写Dockerfile并构建镜像 |
| 2. 部署到K8S集群 | 创建Deployment、Service与Ingress |
| 3. 验证项目部署是否成功 | 访问Service暴露的端口 |

## 具体操作

### 1. 创建Docker镜像

首先,我们需要在项目根目录下编写一个Dockerfile文件,用于构建Docker镜像。例如,下面是一个Node.js项目的Dockerfile示例:

```Dockerfile
# 使用Node.js官方镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 将项目文件拷贝到工作目录
COPY package*.json ./
COPY . .

# 安装依赖
RUN npm install

# 暴露端口
EXPOSE 3000

# 启动应用程序
CMD ["node", "app.js"]
```

然后执行以下命令构建Docker镜像:

```bash
docker build -t my-node-app .
```

### 2. 部署到K8S集群

接下来,我们需要在K8S集群中创建Deployment、Service和Ingress资源来部署我们的微服务应用。

#### 创建Deployment

创建一个名为`my-node-app-deployment.yaml`的文件,并填入以下内容:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-node-app
spec:
replicas: 1
selector:
matchLabels:
app: my-node-app
template:
metadata:
labels:
app: my-node-app
spec:
containers:
- name: my-node-app
image: my-node-app
ports:
- containerPort: 3000
```

然后执行以下命令创建Deployment:

```bash
kubectl apply -f my-node-app-deployment.yaml
```

#### 创建Service

创建一个名为`my-node-app-service.yaml`的文件,并填入以下内容:

```yaml
apiVersion: v1
kind: Service
metadata:
name: my-node-app
spec:
selector:
app: my-node-app
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: ClusterIP
```

然后执行以下命令创建Service:

```bash
kubectl apply -f my-node-app-service.yaml
```

#### 创建Ingress

创建一个名为`my-node-app-ingress.yaml`的文件,并填入以下内容:

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-node-app
spec:
rules:
- host: my-node-app.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-node-app
port:
number: 80
```

然后执行以下命令创建Ingress:

```bash
kubectl apply -f my-node-app-ingress.yaml
```

### 3. 验证项目部署是否成功

最后,通过访问Ingress暴露的域名(比如`my-node-app.com`)来验证项目部署是否成功。

通过上述步骤,你就成功地将微服务项目部署到了K8S集群中。希望这篇文章可以帮助你顺利进行微服务项目部署的工作!