Я хочу использовать несколько правил под одним входным именем.

{
    "kind": "Ingress",
    "spec": {
        "rules": [
            {
                "host": "gke-service-xyz.com",
                "http": {
                    "paths": [
                        {
                            "path": "/",
                            "backend": {
                                "serviceName": "gke-service",
                                "servicePort": 8080
                            }
                        }
                    ]
                }
            },
            {
                "host": "gke-service1-xyz.com",
                "http": {
                    "paths": [
                        {
                            "path": "/",
                            "backend": {
                                "serviceName": "gke-service1",
                                "servicePort": 8081
                            }
                        }
                    ]
                }
            }
        ]
    },
    "apiVersion": "extensions/v1beta1",
    "metadata": {
        "annotations": {
            "kubernetes.io/ingress.class": "nginx",
            "nginx.ingress.kubernetes.io/ssl-redirect": "false"
        },
        "name": "javaservice1-ingress"
    },
    "namespace": "abc-namespace"
}

КОД YAML

kind: Ingress
spec:
  rules:
  - host: gke-service-xyz.com
    http:
      paths:
      - path: "/"
        backend:
          serviceName: gke-service
          servicePort: 8080
  - host: gke-service1-xyz.com
    http:
      paths:
      - path: "/"
        backend:
          serviceName: gke-service1
          servicePort: 8081
apiVersion: extensions/v1beta1
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: 'false'
  name: javaservice1-ingress
namespace: abc-namespace

Здесь проблема в том, что первый входной хост работает нормально, но при извлечении второго входящего хоста он не работает и отображается как 503 Service Tempoporary Unavailable. Я хочу, чтобы оба хоста были в рабочем состоянии. Есть ли способ добиться того же?

  • имя входа: сервис-вход.
  1. gke-service-xyz.com
  2. gke-service1-xyz.com

Выше точек 1 и 2 являются конечные точки входа, обе должны работать, но здесь работает только 1. Оба приведенных выше кода YAML не работают.

1
Hushen 7 Дек 2020 в 13:33

1 ответ

Лучший ответ

Попробуй это -

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    kubernetes.io/ingress.class: nginx
  name: staging-ingress
spec:
  rules:
  - host: gke-service-xyz.com
    http:
      paths:
      - path: /(.*)
        backend:
          serviceName: gke-service
          servicePort: 8080
      - path: /api/(.*)
        backend: 
          serviceName: gke-service1
          servicePort: 8081

Вопрос, который вы задаете, похож на то, что вы хотите иметь только один домен и использовать его для маршрутизации к двум службам, поэтому для этого вы можете использовать что-то вроде перезаписи URL

3
Tushar Mahajan 8 Дек 2020 в 08:00