【问题标题】:How to access the ingress from all hosts?如何访问所有主机的入口?
【发布时间】:2019-08-14 09:27:25
【问题描述】:

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

有一个 Pod 运行 Angular Web 应用程序,另一个 Pod 运行一个节点 API 微服务。 Angular Web 应用程序已在全球范围内公开。当从外部访问微服务并传递带有主机名的标头时,我能够获得预期的响应。在入口 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中指定的host(bar.com)以外的所有主机访问的ingress。

还有其他方式从外部集群(全局)访问 API 微服务吗?

【问题讨论】:

  • Ingress 本身不是由 Service 暴露的吗?
  • @weibeld 是的,我已经暴露了 ingress-nginx 服务。

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


【解决方案1】:

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

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

编辑 nginx.conf 文件。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2021-11-14
    • 2015-01-12
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多