在GKE集群上创建基于路径的Ingress

时间:2020-01-04 23:10:33

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

因此,我正在将裸机集群迁移到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集群上执行相同的操作,唯一的例外是,根据documentation LoadBalancer 公开了GKE集群上的Ingress控制器。 >

但是,如果我尝试访问URL,则会出现502错误。

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

2 个答案:

答案 0 :(得分:4)

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

您将从https://github.com/Kong/google-marketplace-kong-app#basic-usage

获得详细信息和安装说明。

答案 1 :(得分:1)

我将遵循此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问题,验证从负载均衡器到您的应用的运行状况检查是否通过。