使用 nginx 代理动态进入 Kubernetes 服务

dynamic ingress to Kubernetes services with nginx proxy

我正在尝试用 nginx 做一个动态的 proxy_pass,做类似的事情:

我的 nginx.conf 使用静态值,但使用正则表达式,工作大约 5 分钟,然后错误开始

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config-dns-file
data:
  nginx.conf: |
    server {
      listen 80;
      server_name ~^(?<subdomain>.*?)\.;
      resolver kube-dns.kube-system.svc.cluster.local valid=5s;

      location /healthz {
        return 200;
      }

      location / {
        proxy_pass http://$subdomain.default.svc.cluster.local; 
      }
    }

我的 pod 获取服务 ip 而不是名称,这是日志

2019/11/11 22:30:40 [error] 6#6: 163 10.default.svc.cluster.local could not be resolved (3: Host not found), client: 10.142.0.34, server: ~^(?.?)., request: "GET / HTTP/1.1", host: "10.142.0.34"

10。是ip的开头点。 不知道怎么回事,谁能帮我解决一下,谢谢!!

用这个解决

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config-dns-file
data:
  nginx.conf: |
    server {
      listen 80;
      server_name ~^(?<subdomain>.*?)\.;
      resolver kube-dns.kube-system.svc.cluster.local valid=5s;

      location /healthz {
        return 200;
      }

      location / {
        proxy_set_header Host $host
        proxy_pass http://$subdomain.default.svc.cluster.local; 
      }
    }