Ingress如何代理kubernetes之外的服务?

Ingress如何代理kubernetes之外的服务?,kubernetes,Kubernetes,如何使用入口代理kubernetes外部url地址? 在我使用nginx作为代理之前,配置如下 location /index.html { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://172.19.2.2:8080/index.html; proxy_set_header Host

如何使用入口代理kubernetes外部url地址? 在我使用nginx作为代理之前,配置如下

       location /index.html {
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_pass  http://172.19.2.2:8080/index.html;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_intercept_errors off;
            proxy_connect_timeout 900000;
            proxy_send_timeout 900000;
            proxy_read_timeout 900000;
            add_header Cache-Control 'no-cache';
            add_header Access-Control-Allow-Origin *;
            add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
       }
http://172.19.2.2:8080/index.html 是kubernetes以外的服务

如何在ingress中实现上述nginx配置代理的效果

kubernetes版本信息 入口版本信息 0.20.0

入口配置 没有外部url的配置

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dev-yilin-web-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /

spec:
  tls:
  - hosts:
    - dev-yilin.example.com
    secretName: example-ingress-secret
  rules:
  - host: dev-yilin.example.com
    http:
      paths:
      - path: /yilin
        backend:
          serviceName: dev-yilin-web
          servicePort: 8080

下面是一篇来自Google Cloud的精彩文章,介绍如何为外部端点创建服务:

然后,您只需添加一个规则条目,其中包含您配置的新服务和端口。至于kubernetes如何处理这个问题,它会根据您为端点配置的方法返回DNS名称/IP,然后据我所知,入口会像处理任何其他请求一样处理这个问题


希望这有帮助。

您可以为外部IP创建一个无头服务和一个端点,然后让入口点指向该服务
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dev-yilin-web-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /

spec:
  tls:
  - hosts:
    - dev-yilin.example.com
    secretName: example-ingress-secret
  rules:
  - host: dev-yilin.example.com
    http:
      paths:
      - path: /yilin
        backend:
          serviceName: dev-yilin-web
          servicePort: 8080