Мое тестовое веб-приложение показывает ошибку, я использую nginx в Dockerfile - вход в kubernetes minikube - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь получить доступ к ресурсам в kubernetes (minikube).Я создал pod и сервис NodePort, и он отлично работает, когда я curl 192.168.99.100:30290

, тогда я создал вход с / path, и он все еще работает нормально, если я добавляю curl **-kL** 192.168.99.100

Но когда я добавляю/ anypath во входных путях возвращает страницу ошибки, когда I curl **-kL** 192.168.99.100/anypath

kind: Pod apiVersion: v1 metadata: name: test-web labels: app: test-web spec: containers: - name: test-web image: aamirpinger/test-web ports: - containerPort: 80 # default nginx port

---

kind: Service apiVersion: v1 metadata: name: test-web-service spec: selector: app: test-web ports: - port: 8080 targetPort: 80 # default nginx port type: NodePort

---

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: pwa-ingress spec: rules: - http: paths: - path: /anypath backend: serviceName: test-web-service servicePort: 8080



Список ресурсов kubectl get pod,svc,ingress NAME READY STATUS RESTARTS AGE pod/test-web 1/1 Running 0 7m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11m service/test-web-service NodePort 10.98.17.107 <none> 8080:30290/TCP 7m NAME HOSTS ADDRESS PORTS AGE ingress.extensions/pwa-ingress * 10.0.2.15 80 7m

curl -kL 192.168.99.100/anypath

Получено следующее Результат

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.15.5</center>
</body>
</html>

Ожидается следующее Результат

<html>
<head>
<title>Test Page</title>

</head>
<body>
<h1>Hello World</h1>
</body>
</html>

Кто-нибудь, кто знает, что мне не хватает в выше, чтобы заставить его работать должным образом?

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Если вы вручную запускаете докер-контейнер с помощью nginx с портом 80, отображаемым как некоторый локальный порт, работает ли он при переходе к / anypath? У вас есть доступ к журналам доступа nginx с вашего модуля?

0 голосов
/ 17 января 2019

Ааааа !!! Наконец-то получил мой ответ. аннотация: "nginx.ingress.kubernetes.io/rewrite-target: /" Я делал аннотацию, но пропустил "nginx". в начале, который был единственной причиной ошибки и занял весь мой день. Цель этой строки - фактически перенаправить в root с любого маршрута, который мы пишем перед curl. Поскольку root - это место, где обычно у нас есть точка входа, т.е. index.html в моем случае.

0 голосов
/ 17 января 2019

Ваше веб-приложение обрабатывает этот путь?Со стороны nginx все вроде бы нормально, он обрабатывает запрос.Вы можете попробовать аннотацию "nginx.ingress.kubernetes.io/rewrite-target: /", чтобы nginx переписал нужную цель в запросе.

...