当前位置: 首页 > news >正文

Ingress-Nginx简介和配置样例

Ingress-Nginx 是 Kubernetes 中一个基于 Nginx 的 Ingress 控制器,用于管理对集群内服务的 HTTP/HTTPS 访问。它是 Kubernetes Ingress 资源的实现之一,通过配置 Nginx 反向代理和负载均衡器,提供路由规则、SSL/TLS 终止、路径重写等高级功能。


核心功能

  1. 路由规则

    • 根据域名、路径将请求路由到不同的后端服务(Service)。

    • 支持基于路径(path)或主机名(host)的路由。

  2. 负载均衡

    • 自动将流量分发到多个 Pod,支持轮询、加权轮询等算法。

  3. SSL/TLS 终止

    • 支持 HTTPS 加密,可通过 Kubernetes Secret 配置证书。

    • 支持自动证书续签(与 cert-manager 集成)。

  4. 高级特性

    • 路径重写:修改请求路径(如 /api/ 重写到后端服务的 /)。

    • 流量控制:限速、黑白名单、连接数限制。

    • 自定义注解:通过注解(Annotations)配置 Nginx 行为(如缓存、CORS)。

  5. 监控与日志

    • 集成 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 版本匹配。

http://www.lqws.cn/news/505387.html

相关文章:

  • 最方便的应用构建——利用云原生快速搭建本地deepseek知识仓库
  • 程序猿成长之路之数据挖掘篇——聚类算法介绍
  • uniapp实现远程图片下载到手机相册功能
  • redis的安装及操作
  • 支持向量机(SVM):原理、实现与应用
  • Python核心库Pandas详解:数据处理与分析利器
  • 传输层协议TCP
  • 随机森林详解:原理、优势与应用实践
  • 【apache-maven3.9安装与配置】
  • C++ string类的操作
  • Python与Web3.py库交互实践
  • ref() 与 reactive()
  • Android中Navigation使用介绍
  • 跟着AI学习C#之项目实践Day5
  • 从0开始学习R语言--Day31--概率图模型
  • Blaster - Multiplayer P162-PXX
  • 系统性能优化-4 磁盘
  • 【Bluedroid】蓝牙启动之 bta_dm_enable 流程梳理 源码解析
  • 【AI落地应用实战】Chaterm:重新定义终端操作的AI智能工具
  • C# WinForm跨平台串口通讯实现
  • ffmpeg下载地址
  • 数组题解——移除元素​【LeetCode】
  • Windows驱动开发最新教程笔记2025(一)名词解释
  • Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
  • From Tranformer to Decoder ONLY
  • 云原生周刊:Argo CD v3.1 正式发布
  • PyEcharts教程(009):PyEcharts绘制水球图
  • 【HTTP】取消已发送的请求
  • Leaflet面试题200道
  • C++修炼:智能指针