如何从所有主机访问入口?

How to access the ingress from all hosts?

我正在为 google 云实例中的 Web 应用程序设置 bare-metal kubernetes 集群,我正在通过入口控制器连接到微服务。如何从所有传入主机访问入口控制器?

有一个 pod 运行 angular Web 应用程序和另一个 pod 运行 一个节点 api 微服务。 Angular Web 应用程序已在全球公开。当从外部访问微服务并使用主机名传递 header 时,我能够获得预期的响应。在入口 yaml 中删除主机后,我无法访问入口。

kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/rewrite-target: nginx
  creationTimestamp: "2019-08-12T07:41:37Z"
  generation: 7
  name: test
  namespace: default
  resourceVersion: "546400"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/test
  uid: 374836d2-34c3-4053-b0e3-9fe3f63167cc
spec:
  rules:
  - host: bar.com
    http:
      paths:
      - backend:
          serviceName: login-service
          servicePort: 3000
        path: /login-service
      - backend:
          serviceName: organization-service
          servicePort: 3000
        path: /organization-service
status:
  loadBalancer:
    ingress:
    - ip: 10.128.0.16
    - ip: 203.0.113.2

我排除了ingress中除指定主机(bar.com)以外的所有主机访问的ingress。

从外部集群(全局)访问 API 微服务的任何其他方式?

为了从集群外部(全局)访问 API 服务。

创建代理nginx服务器,并暴露nginx代理服务器的端口。从 Web 应用服务器,通过外部 IP 和暴露的端口向代理服务器调用请求。代理服务器会将请求传递给受尊重的 API 微服务和 return 预期的响应。

编辑 nginx.conf 文件。

location /<your_requested_URL> {
proxy_pass http://service_name:port;
}