阿里云容器服务Ingress设置原IP透传

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: ### 问题 在很多业务场景里,我们都需要知道客户端的真实IP来控制业务逻辑。但是从客户到真正的服务,中间总会进过多层的SLB(负载均衡),那么如何才能获取到客户的真实IP呢? 在Kubernetes容器的环境下,通常一个客户端访问到业务要经过云的SLB,Ingress才能达到业务的应用。

问题

在很多业务场景里,我们都需要知道客户端的真实IP来控制业务逻辑。但是从客户到真正的服务,中间总会进过多层的SLB(负载均衡),那么如何才能获取到客户的真实IP呢?
在Kubernetes容器的环境下,通常一个客户端访问到业务要经过云的SLB,Ingress才能达到业务的应用。所以我们需要每一层都能够透传客户端的IP才行。

原理

在基于HTTP的协议里,对于客户端原IP的透传,可以参考: RFC7239(Forwarded HTTP Extension, https://tools.ietf.org/html/rfc7239) 标准。没经过一层链路,都会把对应地址加入到X-Forwarded-For这个http的扩展头里,以逗号隔开,最早的客户端是第一个地址。

例如:

X-Forwarded-For: 192.0.2.43, 2001:db8:cafe::17

根据RFC7239规范,有个需要注意:如果请求中只有X-Forwarded-For,而没有其它的X-xxxxx的扩展头,则规范是建议将其转为

Forwarded: for=192.0.2.43, for="[2001:db8:cafe::17]"

阿里云Kubernetes Ingress实践

大家或许知道,在阿里云的Kubernetes容器服务里,公有云SLB和Ingress是已经自动在安装的时候配置好的,但是如果需要透传客户端的IP,则必须针对ingress controller的service做些改动,具体如下:

kubectl edit service/nginx-ingress-lb -n kube-system

将下图对应的红色框的内容从Cluster改为Local
Snip20180709_162.png

原因是参见Kubernetes官网的文档说明:
Snip20180709_161.png

该参数主要是保护客户端IP,避免loadbalancer/nodeport的服务的第二跳。这样nodeport的服务路口只会去找本节点的pod服务。如果本节点没有对应的pod(部署的deployment的实例数少于节点数),则请求将路由不到服务上。为此阿里云的Cloud Provider专门做了优化,只会把有pod的节点注!册到阿里云的SLB上,避免该问题。

这样,Ingress controller被rolling update后就可以提供原IP给容器的应用了

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
8天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,全面助力云上体育盛会
本文讲述了阿里云容器服务,通过安全稳定的产品能力和成熟的稳定性保障体系,全面助力云上体育赛场,促进科技之光与五环之光交相辉映。
阿里云容器服务,全面助力云上体育盛会
|
11天前
|
人工智能 Prometheus 监控
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
本文介绍了在阿里云容器服务 ACK 上部署 NVIDIA NIM,结合云原生 AI 套件和 KServe 快速构建高性能模型推理服务的方法。通过阿里云 Prometheus 和 Grafana 实现实时监控,并基于排队请求数配置弹性扩缩容策略,提升服务稳定性和效率。文章提供了详细的部署步骤和示例,帮助读者快速搭建和优化模型推理服务。
66 7
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
|
1月前
|
Kubernetes 负载均衡 安全
【技术揭秘】阿里云容器服务Ingress高级玩法:如何轻松实现客户端原始IP透传,提升应用安全性与用户体验!
【8月更文挑战第17天】本文介绍如何在阿里云容器服务中配置Ingress以透传客户端原始IP地址。通过Ingress可实现HTTP负载均衡等功能。需在Ingress定义文件中添加特定注解,如`nginx.ingress.kubernetes.io/real-ip-header: X-Real-IP`。创建并应用Ingress配置后,后端服务可通过读取`X-Real-IP`头获取真实IP。此举有助于安全审计及流量分析。
39 2
|
24天前
|
存储 运维 数据安全/隐私保护
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
|
4月前
|
人工智能 运维 Kubernetes
阿里云容器服务ACK AI助手正式上线带来的便利性
作为开发者想必大家都知道,云原生容器技术的优势,尤其是近两年的随着容器技术的迅猛发展,Kubernetes(K8s)已成为广泛应用于容器编排和管理的领先解决方案,但是K8s的运维复杂度一直是挑战之一。为了应对这一问题,就在最近,阿里云容器服务团队正式发布了ACK AI助手,这是一款旨在通过大模型增强智能诊断的产品,旨在帮助企业和开发者降低Kubernetes(K8s)的运维复杂度。那么本文就来详细讲讲关于这款产品,让我们结合实际案例分享一下K8s的运维经验,探讨ACK AI助手能否有效降低K8s的运维复杂度,并展望ACK AI助手正式版上线后的新功能。
323 2
阿里云容器服务ACK AI助手正式上线带来的便利性
|
4月前
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
4月前
|
Kubernetes 容器
要获取ACK(阿里云容器服务)集群中的Deployment
要获取ACK(阿里云容器服务)集群中的Deployment【1月更文挑战第8天】【1月更文挑战第40篇】
90 4
|
4月前
|
人工智能 弹性计算 调度
阿里云容器服务 ACK 产品技术动态(202312)
容器服务 Kubernetes 版 ACK 【新功能】 Feature:支持基于机密虚拟机的 AI 模型推理保护 ACK 现已支持将基于 Intel® Trusted Domain Extension(Intel® TDX)技术的 ECS 实例加入 TDX 机密虚拟机计算节点池,使集群具备 TDX 机密计算能力,实现 AI 模型的可信推理和微调,保障模型数据的机密性与完整性。结合 PyTorch 与 Intel® AMX指令集,您可以在 32 核实例上实现秒级出图的推理能力。
485 1
|
1月前
|
弹性计算 运维 负载均衡
基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
【8月更文挑战第3天】基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
|
2月前
|
弹性计算 Kubernetes 监控
阿里云 ACK 容器服务评测
在现代企业的数字化转型过程中,容器化技术逐渐成为提高应用部署效率、增强系统弹性和灵活性的关键手段。阿里云的容器服务 Kubernetes 版(ACK)是一个完全托管的 Kubernetes 容器管理服务,旨在帮助企业轻松实现应用的容器化管理和部署。本文将对阿里云 ACK 容器服务的核心功能、性能表现及实际使用体验进行评测,帮助读者更好地理解这一产品。
140 0

相关产品

  • 容器计算服务