Сайт отвечает "по умолчанию бэкэнд - 404" на GKE - Kubernetes - PullRequest
0 голосов
/ 17 апреля 2020

На одном из наших доменов https://www.secretwish.in - все 404 трафика c отправляются на вход GKE по умолчанию, в то время как он должен маршрутизироваться в мое приложение.

Все остальные страницы на моем приложении работают нормально, проблема только с 404 страницы, все траффи c идет по входу gke по умолчанию. Пример URL - https://www.secretwish.in/hshshs

Необходимо найти решение для этого, чтобы все traffi c начинали маршрутизацию к моему приложению

Версия кластера - 1.14.10- gke.27

Входной файл выглядит так: -

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ans-commerce-ingress
  annotations:
    kubernetes.io/tls-acme: "true"
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/tls-minimum-version: "1.0"
spec:
  tls:      
  - hosts:
    - www.secretwish.in
    secretName: www-secretwish-in-tls    

   - host: www.secretwish.in
     http:
       paths:
       - path: /
         backend:
           serviceName: ans-commerce
           servicePort: 80

1 Ответ

0 голосов
/ 17 апреля 2020

В GKE документах вы можете найти информацию, касающуюся GKE Ingress , для которой необходимо указать c path, указав backend, в противном случае вы получите выпуск 404 default backend.

Вы можете указать бэкэнд по умолчанию, указав поле бэкэнда в манифесте Ingress. Любые запросы, которые не совпадают с путями в поле правил, отправляются в службу и порт, указанный в поле серверной части. ... Если вы не указываете бэкэнд по умолчанию, GKE предоставляет бэкэнд по умолчанию, который возвращает 404.

Default backend перенаправит весь запрос, который не может быть найден ни в одном spec.rules.http.paths.path

Для небольшого теста я использовал 2 deployments и 2 services форму этот пример gke .

Вариант 1 без настройки default end

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - http:
      paths:
      - path: /world
        backend:
          serviceName: hello-world
          servicePort: 60000
      - path: /kube
        backend:
          serviceName: hello-kubernetes
          servicePort: 80

user@cloudshell:~ (prjoect-name)$ curl 35.244.197.176
default backend - 404
user@cloudshell:~ (prjoect-name)$ curl 35.244.197.176/kube
Hello Kubernetes!
user@cloudshell:~ (prjoect-name)$ curl 35.244.197.176/world
Hello, world!
Version: 2.0.0
Hostname: hello-world-deployment-7f67f479f5-vqzxg
user@cloudshell:~ (prjoect-name)$ curl 35.244.197.176/yvgbhuij
default backend - 404 

Опция 2 С заданным по умолчанию бэкэндом

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  backend:
    serviceName: hello-world
    servicePort: 60000
  rules:
  - http:
      paths:
      - path: /world
        backend:
          serviceName: hello-world
          servicePort: 60000
      - path: /kube
        backend:
          serviceName: hello-kubernetes
          servicePort: 80

user@cloudshell:~ (prjoect-name)$ curl 35.244.186.95
Hello, world!
Version: 2.0.0
Hostname: hello-world-deployment-7f67f479f5-vqzxg
user@cloudshell:~ (prjoect-name)$ curl 35.244.186.95/hello
Hello, world!
Version: 2.0.0
Hostname: hello-world-deployment-7f67f479f5-kd6fg
user@cloudshell:~ (prjoect-name)$ curl 35.244.186.95/kube
Hello Kubernetes!
user@cloudshell:~ (prjoect-name)$ curl 35.244.186.95/fyvgbhujnkl
Hello, world!
Version: 2.0.0
Hostname: hello-world-deployment-7f67f479f5-vqzxg

Имейте в виду, что для входа в GKE требуется около 5- За 6 минут до начала правильной работы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...