k8s安装Ingress-Nginx Controller

在 k8s 中,Ingress 是对集群中服务的外部访问进行管理的 API 对象,Ingress 可以提供负载均衡、SSL 等功能。要使用 Ingress 资源,集群中必须先安装 Ingress 控制器。

前提条件

  • 已安装 Helm

Helm 安装 Ingress-Nginx Controller

添加 ingress-nginx 仓库

1
2
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

创建 values.yaml 配置文件

1
2
# 创建并编辑values.yaml文件
vim values.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
controller:
replicaCount: 1 # 生产环境建议至少3副本
service:
type: NodePort
nodePorts:
http: "30080"
https: "30443"

# 配置nginx获取真实IP
config:
use-forwarded-headers: "true"
# 代理真实IP范围(根据你的网络环境调整)
proxy-real-ip-cidr: "10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" # 这些是集群所在私有网络地址段,告诉nginx这些是代理IP(应该忽略),以获取真实客户端IP
forwarded-for-header: "X-Forwarded-For"
compute-full-forwarded-for: "true"
# 全局设置 设置最大请求体大小(等同于nginx的client_max_body_size)
proxy-body-size: "50m"

安装 chart

1
2
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx --create-namespace -f values.yaml

查询 chart

1
2
# 查看已安装的chart
helm list -A

参考文档

Ingress 控制器

Ingress

Ingress-Nginx Controller Installation Guide