【问题标题】:Creating a path based Ingress on a GKE cluster在 GKE 集群上创建基于路径的 Ingress
【发布时间】:2020-04-23 00:35:16
【问题描述】:

因此,我正在将裸机集群迁移到 GKE 上,但遇到了入口问题。在我的裸机集群上,我使用了来自nginxinc 的入口控制器,它运行良好。以下是特定部署的 Ingress 文件示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: mynamespace
name: app-ingress
annotations: 
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: myhost
    http:
    paths:
    - path: /dev/appname(/|$)(.*)
        backend:
          serviceName: app
          servicePort: 80

基本上,当用户输入myhost/dev/appname 时,myhost 被解析为 HAProxy 服务器。然后代理将请求路由到运行入口服务的 NodePort。

我尝试在我的 GKE 集群上做同样的事情,唯一的例外是 GKE 集群上的 Ingress 控制器使用 LoadBalancer 根据documentation

公开

但是,如果我尝试访问该 URL,则会收到 502 错误。

TL;DR:寻找使用以下 URL 访问部署在 GKE 集群上的各种应用程序(部署)的最佳方式:myhost/dev/firstapp 和 myhost/dev/secondapp 等。

【问题讨论】:

    标签: kubernetes google-kubernetes-engine nginx-ingress


    【解决方案1】:

    您可以使用 Kong Ingress 作为 GKE 上的入口控制器,用于基于路径的入口。您可以从 GCP Marketplace 安装 Kong Ingress。它易于集成,并且还支持用于身份验证、监控等的各种插件。

    您将从https://github.com/Kong/google-marketplace-kong-app#basic-usage获得详细信息和安装说明

    【讨论】:

      【解决方案2】:

      我会关注guide 在 GKE 上设置 Nginx。入口如下所示:

      apiVersion: extensions/v1beta1
      kind: Ingress
      metadata:
        name: ingress-resource
        annotations:
          kubernetes.io/ingress.class: nginx
          nginx.ingress.kubernetes.io/ssl-redirect: "false"
      spec:
        rules:
        - http:
            paths:
            - path: /hello
              backend:
                serviceName: hello-app
                servicePort: 8080 
      

      您应该能够从外部访问您的应用程序http://external-ip-of-ingress-controller/hello

      现在要调试 502 问题,验证从负载均衡器到您的应用的运行状况检查是否通过。

      【讨论】:

      • 感谢您的回复。我会按照指南检查并让你知道。我之前看过指南,唯一的原因是我没有这样做,因为它与 Kubernetes Ingress 控制器有关,而不是 nginxinc 的 Ingress 控制器。我也没有问题,我只是想看看我是否也可以在 GKE 上使用 nginxinc,因为它在我的裸机集群上运行良好。但我会仔细阅读指南并更新您的状态。再次感谢
      • 本指南仅适用于 Nginx 入口控制器。注释定义了如果您提供 kubernetes.io/ingress.class 将使用的入口控制器:nginx 它将使用 Nginx,如果您不提供任何东西都会使用 gke 入口控制器
      猜你喜欢
      • 2019-05-08
      • 2020-01-30
      • 2018-09-21
      • 2022-06-17
      • 2019-09-05
      • 2020-03-19
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      相关资源
      最近更新 更多