Ingress-Nginx?是 Kubernetes 中一個基于?Nginx?的?Ingress 控制器,用于管理對集群內服務的 HTTP/HTTPS 訪問。它是 Kubernetes Ingress 資源的實現之一,通過配置 Nginx 反向代理和負載均衡器,提供路由規則、SSL/TLS 終止、路徑重寫等高級功能。
核心功能
-
路由規則
-
根據域名、路徑將請求路由到不同的后端服務(Service)。
-
支持基于路徑(
path
)或主機名(host
)的路由。
-
-
負載均衡
-
自動將流量分發到多個 Pod,支持輪詢、加權輪詢等算法。
-
-
SSL/TLS 終止
-
支持 HTTPS 加密,可通過 Kubernetes Secret 配置證書。
-
支持自動證書續簽(與?
cert-manager
?集成)。
-
-
高級特性
-
路徑重寫:修改請求路徑(如?
/api/
?重寫到后端服務的?/
)。 -
流量控制:限速、黑白名單、連接數限制。
-
自定義注解:通過注解(Annotations)配置 Nginx 行為(如緩存、CORS)。
-
-
監控與日志
-
集成 Prometheus 指標導出。
-
支持訪問日志和錯誤日志配置。
-
架構組成
-
Ingress 資源:Kubernetes 定義的規則(YAML 文件),描述路由和后端服務的映射。
-
Ingress-Nginx Controller:
-
監聽 Ingress 資源變化,動態生成 Nginx 配置。
-
以 Pod 形式運行在集群內或作為外部負載均衡器(如云廠商的 LoadBalancer)。
-
配置
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: inner.test.comnamespace: monitoringresourceVersion: '30006506'uid: f07bc210-2aa9-43f2-b905-b17af9d2c054
spec:defaultBackend:service:name: nginx-testport:number: 80ingressClassName: nginxrules:- host: inner.test.comhttp:paths:- backend:service:name: grafanaport:number: 3000path: /grafanapathType: Prefix- backend:service:name: prometheus-serverport:number: 9090path: /prometheuspathType: Prefix- backend:service:name: alertmanagerport:number: 9093path: /alertmanagerpathType: Prefix- backend:service:name: prometheus-prometheus-pushgatewayport:number: 9091path: /pushgatewaypathType: Prefixtls:- hosts:- inner.test.comsecretName: test.com
grafana需要修改的配置文件
grafana.ini
[analytics]
check_for_updates = true[grafana_net]
url = https://inner.test.com[log]
mode = console[paths]
data = /var/lib/grafana/
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
provisioning = /etc/grafana/provisioning[server]
domain = "inner.baiwutong.com" # 雙引號包裹更規范
serve_from_sub_path = true # 新增:啟用子路徑模式
root_url = https://inner.test.com/grafana
prometheus需要修改的配置文件
--storage.tsdb.retention.time=15d --config.file=/etc/config/prometheus.yml --storage.tsdb.path=/data --web.console.libraries=/etc/prometheus/console_libraries --web.console.templates=/etc/prometheus/consoles --web.enable-lifecycle --web.external-url=/prometheus --web.route-prefix=/prometheus
alertmanager需要修改的配置文件
#baseURL: ""
baseURL: "https://inner.test.com/alertmanager" # 完整外部訪問 URL
pushgateway需要修改的配置文件
/bin/pushgateway --web.external-url=/pushgateway
優勢
-
高性能:基于 Nginx,處理高并發流量。
-
靈活性:通過注解支持大量自定義配置。
-
社區支持:Kubernetes 官方維護,文檔和生態完善。
適用場景
-
需要對外暴露多個服務的 Kubernetes 集群。
-
統一管理 HTTPS 證書和路由規則。
-
實現藍綠部署、A/B 測試等流量分發策略。
注意事項
-
性能調優:需根據流量調整 Nginx 參數(如?
worker_processes
)。 -
安全:限制敏感注解的使用,避免配置錯誤導致的安全風險。
-
版本兼容性:確保 Ingress-Nginx 版本與 Kubernetes 版本匹配。