## 详解Ingress-Nginx部署步骤

### 什么是Ingress-Nginx?
Ingress-Nginx是Kubernetes平台上的一个Controller,用于实现HTTP和HTTPS路由的功能,可以实现流量的负载均衡,并允许外部流量访问Kubernetes集群内的服务。

### 部署步骤
以下是部署Ingress-Nginx的步骤及相应的代码示例:

| 步骤 | 操作 | 代码示例 |
| ------ | ------ | ------ |
| 1 | 添加Ingress-Nginx的仓库 |
| | 添加Ingress-Nginx的仓库至Helm |
| | `helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx` |
| | 更新仓库信息 |
| | `helm repo update` |
| 2 | 安装Ingress-Nginx |
| | 通过Helm安装Ingress-Nginx |
| | `helm install nginx-ingress ingress-nginx/ingress-nginx` |
| 3 | 部署Ingress资源 |
| | 创建Ingress资源以定义路由规则 |
| | 例如,创建名为`example-ingress`的Ingress资源: |

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

| 4 | 配置DNS |
| | 将域名解析到Ingress的公共IP地址 |
| 5 | 部署相应的服务 |
| | 部署需要外部访问的服务 |
| | 创建一个示例服务`example-service`: |

```yaml
apiVersion: v1
kind: Service
metadata:
name: example-service
spec:
selector:
app: example
ports:
- protocol: TCP
port: 80
targetPort: 80
```

### 代码注释说明
- `helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx`:添加Ingress-Nginx的仓库至Helm,使得可以通过Helm安装Ingress-Nginx。
- `helm repo update`:更新Helm仓库信息,以确保安装最新版本的Ingress-Nginx。
- `helm install nginx-ingress ingress-nginx/ingress-nginx`:通过Helm安装Ingress-Nginx Controller。
- Ingress资源的YAML文件中,定义了Ingress的路由规则,指定了域名`example.com`下的所有请求都转发到`example-service`服务的80端口。
- `kubectl apply -f ingress.yaml`:将Ingress资源文件部署到Kubernetes集群中。
- 配置DNS:将域名解析至Ingress Controller的公共IP地址,确保请求能够正确路由到集群内的服务。
- 示例服务`example-service`的YAML文件中,定义了一个基本的Service资源,将请求转发到部署了`example`应用的Pod的80端口。

通过以上步骤,你可以成功部署Ingress-Nginx,实现外部流量的访问和路由控制。希望这篇文章能够帮助你顺利部署Ingress-Nginx,加深对Kubernetes中Ingress的理解!如果有任何问题,欢迎随时向我提问。