首先部署 Nginx Ingress Controller,推荐使用 Helm 安装并创建专用命名空间;接着验证 Pod 和 Service 状态确保控制器运行正常;然后创建 Ingress 资源定义路由规则,通过 host 和 path 将流量转发至对应服务,并可利用 rewrite-target 实现路径重写;最后通过 Secret 配置 TLS 证书并在 Ingress 中引用以启用 HTTPS,结合 DNS 解析、防火墙和网络策略保障外部访问畅通。

配置 Kubernetes Ingress 控制器(基于 Nginx)是实现外部访问集群内服务的关键步骤。核心在于部署 Nginx Ingress Controller 并创建正确的 Ingress 资源来路由流量。以下是具体操作流程。
部署 Nginx Ingress Controller
Nginx Ingress Controller 不是默认组件,需手动安装。最常用方式是通过官方 Helm Chart 或 Kubernetes 提供的 manifest 文件部署。
使用 Helm 安装(推荐):
- 添加 Ingress-nginx 的 Helm 仓库:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx - 更新仓库:
helm repo update - 安装 Ingress Controller 到专用命名空间:
helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx --create-namespace
该命令会自动创建 Deployment、Service 和必要的 RBAC 规则。Service 类型通常为 LoadBalancer(云环境)或 NodePort(本地测试)。
验证控制器是否正常运行
部署完成后,检查 Pod 和 Service 状态:
- 查看 Pod 是否就绪:
kubectl get pods -n ingress-nginx - 确认 Service 已暴露端口:
kubectl get svc -n ingress-nginx - 获取外部 IP(云平台)或节点 IP + NodePort
若 Pod 处于 Running 状态且 Service 分配了 IP 或端口,说明控制器已准备就绪。
创建 Ingress 资源定义路由规则
Ingress 资源用于定义域名和路径如何转发到后端服务。以下是一个典型示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
ingressClassName: nginx
rules:
- host: app.example.com
http:
paths:
- path: /service-a(/|$)(.*)
pathType: Prefix
backend:
service:
name: service-a
port:
number: 80
- path: /service-b(/|$)(.*)
pathType: Prefix
backend:
service:
name: service-b
port:
number: 80
说明:
-
ingressClassName: nginx明确指定使用 Nginx 控制器 -
host定义访问域名 -
path使用正则捕获组配合rewrite-target实现路径重写 - 确保后端 Service 存在且端口正确
启用 TLS 加密(可选但推荐)
通过 Secret 配置 HTTPS:
- 创建 TLS Secret:
kubectl create secret tls example-tls --cert=tls.crt --key=tls.key -n default - 在 Ingress 中引用:
在spec下添加:tls: - hosts: - app.example.com secretName: example-tls
这样所有匹配的主机将自动启用 HTTPS,HTTP 请求可由控制器重定向至 HTTPS(需开启对应 annotation)。
基本上就这些。部署控制器、定义 Ingress 规则、配置 TLS,三步完成对外暴露服务。注意网络策略、防火墙和 DNS 解析也要同步设置,才能确保访问畅通。










