如何绕过指定“主机”标头来访问Ingress控制器指向的服务?

时间:2018-10-30 20:12:47

标签: kubernetes nginx-reverse-proxy kubernetes-ingress kube-dns nginx-ingress

我的入口控制器正在工作,我能够使用http://(externalIP)/path通过RestClient的HTTP GET请求使用群集外的服务。但是,我必须使用"Host"(我的Ingress资源的值)指定value = "host"标头才能正常工作。因此,我无法从Web浏览器中访问http://(externalIP)/path。有什么方法可以使我能够从外部Web浏览器进行访问而不必在请求标头中指定"Host"

入口资源:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  namespace: ingress-nginx
  annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: master1.saas.com
    http:
      paths:
      - backend:
          serviceName: gen-devops
          servicePort: 10311
        path: /*

入口服务:

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
 namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
   externalIPs:
    - 172.16.32.85

  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

1 个答案:

答案 0 :(得分:1)

我假设您想使用它进行测试。

如果您正在使用任何* nix风味操作系统(MacOS,Linux),则可以将条目添加到/etc/hosts文件中,如下所示:

172.16.32.85 master1.saas.com

如果您使用的是Windows,则可以在C:\Windows\System32\Drivers\etc\hosts

中添加相同的条目