AWS alb eks traefik realip后端真实IP

这篇具有很好参考价值的文章主要介绍了AWS alb eks traefik realip后端真实IP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

亚马逊 eks 集群代理用了traefik alb绑定 traefik 在node 上面暴露的端口,对外提供服务。一直也没有在意是否能正常获取客户端IP(腾讯云 阿里云的traefik 后端应用都能正常获取客户端IP),后端php服务基础镜像基于https://github.com/richarvey/nginx-php-fpm构建,对日志进行了json格式化,安装了一些其他依赖。最近后端小伙伴有个需求要获取到客户端IP然后上传给第三方,这才发现xff字段是内网IP,大概就是这样的:

{"@timestamp_local":"2023-06-27T10:37:10+00:00","host":"10.0.36.94","clientip":"10.0.37.83","size":552,"responsetime":0.000,"upstreamtime":"0.000","upstreamhost":"127.0.0.1:1215","http_host":"xxx.xxxx.com","url":"/","type":"newnginx-api","request":"GET / HTTP/1.1","time_local":"27/Jun/2023:10:37:10 +0000","xff":"10.0.16.130","city_name":"-","country_code2":"-","country_name":"-","latitude":"-","longitude":"-","region_name":"-","region_code":"-","referer":"-","agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36","status":"502"}

image.png
注:图文不符阿,两个环境!但是演示效果一样!
xff字段获取的是内网IP怎么破?如何获取客户端真实IP呢?

traefik alb 透传客户端真实IP

ALB的配置

点开属性面板:
image.png
image.png
我也尝试了附加?貌似不可以,保留会显示两个IP但是可以显示客户端真实IP!

traefik相关配置

traefik的部署方式基本是Kubernetes 1.20.5 安装traefik在腾讯云下的实践这样的。当然了crd rbac等用了官方新的配置文件!
traefik修改配置参照:https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers
traefik-config.yaml
image.png
image.png

      web:
        address: ":80"          ## 配置 80 端口,并设置入口名称为 web
        forwardedHeaders:
          insecure: true
        proxyProtocol:
          insecure: true

注: alb https也直接挂载了后端http 端口(web端口),故只做了web相关配置,这里根据实际需求进行配置!

kubectl apply -f traefik-config.yaml -n traefik

删除Pod 使Pod重新加载configmap文件!当然了如果有更优雅的方式也可以使用,我这里就暴力一下了!

[root@ip-10-0-13-199 yaml]# kubectl get pods -n traefik
NAME                               READY   STATUS    RESTARTS   AGE
traefik-ingress-controller-229bm   1/1     Running   0          32m
traefik-ingress-controller-n9fzv   1/1     Running   0          32m
traefik-ingress-controller-vlbqs   1/1     Running   0          32m
[root@ip-10-0-13-199 yaml]# kubectl delete pods traefik-ingress-controller-229bm traefik-ingress-controller-n9fzv  traefik-ingress-controller-vlbqs  -n traefik
pod "traefik-ingress-controller-229bm" deleted
pod "traefik-ingress-controller-n9fzv" deleted
pod "traefik-ingress-controller-vlbqs" deleted

image.png
继续浏览器访问后端web项目域名:
image.png
恩xff字段可以显示客户端公网IP了!就先这样了
另外还有一个集群的traefik helm配置的该怎么搞呢?个人觉得应该是这样:https://community.traefik.io/t/forwardedheaders-insecure-to-true-not-working/11092/4
修改value.yaml中配置:

  - "--entryPoints.web.forwardedHeaders.insecure"
  - "--entryPoints.web.proxyProtocol.insecure"

image.png
然后upgrade?:

helm upgrade traefik2  -f values.yaml traefik-14.0.1.tgz -n kube-system

正式环境就先写的等维护的时候操作了!试过了没有问题:

其他:

traefik pod日志中可能会出现这样的日志:
AK5lN7412K.png
参照:
https://doc.traefik.io/traefik/reference/dynamic-configuration/kubernetes-gateway/#rbac
cat gateway-rbac.yaml

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: gateway-role
rules:
  - apiGroups:
      - ""
    resources:
      - namespaces
    verbs:
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - services
      - endpoints
      - secrets
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - gateway.networking.k8s.io
    resources:
      - gatewayclasses
      - gateways
      - httproutes
      - tcproutes
      - tlsroutes
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - gateway.networking.k8s.io
    resources:
      - gatewayclasses/status
      - gateways/status
      - httproutes/status
      - tcproutes/status
      - tlsroutes/status
    verbs:
      - update

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gateway-controller

roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: gateway-role
subjects:
  - kind: ServiceAccount
    name: traefik-ingress-controller
    namespace: traefik

kubectl apply -f gateway-rbac.yaml -n traefik

delete pods 查看日志就没有那些烦人的日志了!当然如果没有使用gateway or 没有强迫症可以忽略
image.png文章来源地址https://www.toymoban.com/news/detail-510178.html

到了这里,关于AWS alb eks traefik realip后端真实IP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 玩转aws之(一)eks集群部署

    目录 1. 前言 2. 创建EKS集群 2.2.1 创建集群角色 2.2.2 创建 EKS 集群 2.2.3 添加主机组 3. 配置kubectl访问集群 3.1 安装kubectl 3.2 使用AWS CLi配置.kube/config 4. 安装ingress controll 创建集群文档参考:创建 Amazon EKS 集群 - Amazon EKS aws官方用户指南中关于创建EKS集群部分,看了几次才理解了整

    2024年01月21日
    浏览(60)
  • AWS CLI创建Amazon EKS服务

    Amazon EKS文档 前言: 创建ClusterRole需要选择一下的角色 AmazonEKSClusterPolicy 创建NodeRole需要选择一下的角色 AmazonEC2ContainerRegistryReadOnly AmazonEKSWorkerNodePolicy AmazonEKS_CNI_Policy 1、创建 Amazon EKS 集群 IAM 角色 1)创建json 2)创建 Amazon EKS 集群 IAM 角色 3)将名为 GamefiAmazonEKSClusterRole的 Am

    2024年02月11日
    浏览(34)
  • AWS EKS 集群自动扩容 Cluster Autoscaler

    Amazon EKS 是托管的 Kubernetes 服务,可以使用 HPA 和 Cluster Autoscaler 来在集群中实现弹性伸缩,以满足应用程序的需求并节省资源成本。 Kubernetes(K8s)提供了自动伸缩机制,旨在根据应用程序负载和资源需求的变化自动调整应用的副本数量或节点数量,以满足性能需求和优化资

    2024年02月12日
    浏览(30)
  • aws的eks平滑删除work节点实现降配

    背景 我们的EKS的Master是托管的,Work节点是EC2,目前EC2的配置为c5.4large,现在需要降配成m5.2xlarge。 官网 基础背景知识 k8s命令对node调度 有三个命令,分别是: cordon,drain,delete 。 (1)cordon 停止调度 影响最小,只会将node调为SchedulingDisabled 之后再发创建pod,不会被调度到该

    2024年02月03日
    浏览(30)
  • 【云原生】AWS创建EKS1.25(Kubernetes)集群

    我这里使用的是 eksctl 命令创建的,更多信息:https://eksctl.io/usage/schema/ 1、编写 yaml 文件 vim eks-cluster.yaml 2、创建集群 3、本地管理 获取 config 文件自动添加到 ~/.kube/config 使用 kubectl 工具管理集群,现在可以使用 kubectl 工具管理集群了

    2024年02月13日
    浏览(33)
  • AWS 专题学习 P8 (ECS、EKS、Lambda、CloudFront、DynamoDB)

    专题内容总览和系列博客目录 https://blog.csdn.net/weixin_40815218/article/details/135590291 辅助资料( PDF ) https://download.csdn.net/download/weixin_40815218/88741566 Docker 是一个用于部署应用程序的软件开发平台 Docker 容器可以在任何操作系统上运行,应用程序运行在容器中 应用程序运行过程相同,

    2024年01月21日
    浏览(32)
  • 玩转aws之(二)eks 设置efs(nfs)存储卷pvc

    目录 1. 前言 2. 配置步骤 3. 安装csi驱动 3.1 创建iam policy 3.2 安装CFS csi驱动 4. 创建EFS 4.1 创建EFS访问安全组及放通EKS访问 4.2 根据EKS集群创建对应的EFS文件系统 4.3 创建挂载目标 5. 创建存储类 5.1 获取efs id 5.2 创建存储类 6. 创建pvc 7. pod挂载pvc使用 8. 总结   EKS支持两种持久性存

    2024年02月01日
    浏览(69)
  • 【云原生】aws平台使用eks发布load balancer暴露服务到外网

    区域:中国北京区 网络负载均衡: 搭建ingress一定要参考aws官网教程文档:https://docs.amazonaws.cn/eks/latest/userguide/network-load-balancing.html 开启外网在svc 上添加注释:

    2024年02月11日
    浏览(37)
  • 【云原生】AWS EKS1.25配置StorageClass-EFS存储类

    简介 StorageClass在kubernetes中定义为一种存储“类”,我们使用此类型的资源能帮助我们减少人工手动创建PV、PVC,了解更多信息可参考:存储类 | Kubernetes 卷插件支持AWS EBS、NFS等,我们需要改用EFS产品,在Github有人创建了EFS的插件 工作目录 cd /dwz/yaml/storageclass/ 工具及版本 区域

    2024年02月13日
    浏览(31)
  • AWS EKS集群安装EBS CSI驱动程序,创建PVC动态存储卷

    开发测试环境需要创建redis,mysql等中间件,使用动态pvc存储并挂载卷。 什么是EBS CSI DRIVER Amazon Elastic Block Store (Amazon EBS) Container Storage Interface (CSI) 驱动程序允许 Amazon Elastic Kubernetes Service (Amazon EKS) 集群管理持久性卷的 Amazon EBS 卷的生命周期。 为什么要安装EBS CSI DRIVER EKS 1.24及

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包