如何使用重定向在 google 云中设置 yaml 入口

how to setup yaml ingress in google cloud with redirect

我正在 Google 云环境中设置一个入口和负载均衡器。

我知道如何设置主机和它的路径,但我不知道当用户访问特定站点时如何设置 http://example.com/ 我希望他重定向到 http://example.com/en

注:

已更新

我添加了 app-root: /en(但它什么也没做)。

这是我当前的 yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: gce
    kubernetes.io/ingress.global-static-ip-name: our-frontend-static-ip
    networking.gke.io/managed-certificates: example-certificate
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/app-root: /en
  name: example-ingress
  namespace: default
spec:
  rules:
  - host: anotherexample.com
    http:
      paths:
      - backend:
          serviceName: anotherexample-service
          servicePort: 80
  - host: example.com
    http:
      paths:
      - path: /nl
        backend:
          serviceName: example-nl-service
          servicePort: 80
      - path: /en
        backend:
          serviceName: example-en-service
          servicePort: 80

所以,我的 yaml 中有 2 个主机,我想要:当 url 对其中 1 个主机正确时:example.com 它必须转到 example.com/en(这是用于多语言目的)

我们可以在 ingress 中的同步更改回来后更改负载均衡器禁令中的设置。

Kubernetes 支持多个彼此不同的 Ingress Controller。例如,您正在尝试使用 Ingress GCE and there is also a popular Nginx Ingress.

您的用例中的主要问题是 Ingress GCE 不支持重写。可以找到关于此的持续功能请求 here

为了能够使用重写,您需要部署 Nginx Ingress Controller 并在 yaml 中切换注释来自:

kubernetes.io/ingress.class: "gce"

至:

kubernetes.io/ingress.class: "nginx"

可以帮助您解决此问题的资源如下: