【问题标题】:How to get around specifying "Host" header to access services pointed by Ingress controllers?如何绕过指定“主机”标头来访问入口控制器指向的服务?
【发布时间】:2019-04-03 23:04:34
【问题描述】:

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

入口资源:

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

【问题讨论】:

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


    【解决方案1】:

    我假设你想用它来测试。

    如果您使用任何 *nix 风格的操作系统(MacOS、Linux),您可以在 /etc/hosts 文件中添加一个条目,如下所示:

    172.16.32.85 master1.saas.com
    

    如果您使用任何 Windows 框,您可以在 C:\Windows\System32\Drivers\etc\hosts 中添加相同的条目

    【讨论】:

      猜你喜欢
      • 2020-12-09
      • 2020-04-28
      • 2011-11-25
      相关资源
      最近更新 更多