### NGINX 一键部署教程

#### 一、整体流程

下面是实现“nginx可以一键部署”的流程:

| 步骤 | 描述 |
| ------ | ------ |
| 1 | 安装 Kubernetes 集群 |
| 2 | 使用 Helm 部署 NGINX Ingress Controller |
| 3 | 部署您的应用并将其公开 |

#### 二、详细步骤

1. **安装 Kubernetes 集群**

首先,您需要安装一个 Kubernetes 集群。这可以通过使用 Minikube 或其他 Kubernetes 部署工具来完成。在这里,我们以Minikube为例进行教学。

```bash
# 安装 Minikube
brew install minikube
minikube start
```

2. **使用 Helm 部署 NGINX Ingress Controller**

Helm 是 Kubernetes 的包管理器,用于简化和自动化部署应用程序。我们可以使用 Helm 来快速部署 NGINX Ingress Controller。

首先,添加 NGINX Ingress Controller 的 Helm 仓库:

```bash
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
```

然后,安装 NGINX Ingress Controller:

```bash
helm install nginx-ingress ingress-nginx/ingress-nginx
```

3. **部署您的应用并将其公开**

现在,您可以部署您的应用程序,并通过 NGINX Ingress Controller 将其公开。以下是一个简单的示例:

```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
ports:
- containerPort: 80
```

您可以将上面的 YAML 文件保存为 `my-app.yaml`,然后使用以下命令来部署您的应用:

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

最后,使用 Ingress 对象来公开您的应用:

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

将上述 YAML 文件保存为 `my-ingress.yaml`,然后使用以下命令将 Ingress 对象应用到集群中:

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

现在,您的应用程序将通过 NGINX Ingress Controller 在 Kubernetes 集群中进行公开访问。

希望这篇文章对您有所帮助,祝您学习顺利!