容器服务ACK自建的k8s ,里面ingress--nginx采集客户端ip怎么配置呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在ACK自建的Kubernetes集群中,可以通过配置Ingress-nginx的annotation来采集客户端IP。具体步骤如下:
创建一个名为custom-annotations的ConfigMap,用于存储自定义注解的配置信息。可以使用以下命令创建:
kubectl create configmap custom-annotations --from-literal=client-ip="X-Forwarded-For"
在需要采集客户端IP的Ingress资源上添加注解ingress.kubernetes.io/custom-annotations,并将其值设置为刚刚创建的ConfigMap的名称。例如:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    ingress.kubernetes.io/custom-annotations: "custom-annotations"
spec:
  ...
在Ingress资源的后端服务中,使用$proxy_add_x_forwarded_for变量来获取客户端IP。例如:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: my-image
        ports:
        - containerPort: 8080
        env:
        - name: X_FORWARDED_FOR
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: CLIENT_IP
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['ingress.kubernetes.io/custom-annotations']
        ...
通过以上步骤,就可以在Ingress-nginx中采集客户端IP了。