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

时间:2019-08-14 09:27:25

标签: kubernetes web-hosting kubernetes-ingress resolve nginx-ingress

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

有一个运行角度Web应用程序的容器,另一个运行节点api微服务的容器。 Angular Web Application已在全球公开。当从外部访问微服务并传递带有主机名的标头时,我能够获得预期的响应。在移除入口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

除了要从入口中的指定主机(bar.com)以外的所有主机访问入口之外,我。

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

1 个答案:

答案 0 :(得分:2)

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

创建代理Nginx服务器,并公开Nginx代理服务器的端口。从Web应用程序服务器,通过外部IP和公开的端口调用对代理服务器的请求。代理服务器会将请求传递给受尊重的API微服务,并返回预期的响应。

编辑nginx.conf文件。

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