k3s - ingress-nginx - сопоставление пути работает

Я не могу сопоставить ни один путь в правилах, которые я упомянул во входящем ресурсе. Только значение по умолчанию / сопоставляется с сервисом, другие пути (например, shyam.local / sample) возвращают:

Не удается получить / образец.

Вот мой входной yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
   name: example-ingress
spec:
   rules:
    - host: "shyam.local"
      http:
          paths:
          - path: "/"
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 3000
          - path: "/sample"
            pathType: Prefix
            backend:
              service:
                name: mongo-express-service
                port:
                  number: 8081    

Не уверен, что это означает какой-то вред, но я вижу ошибку в бэкэнде по умолчанию, упомянутом во входе. Вот мой результат для kubectl describe ingress example-ingress

Name:             example-ingress
Namespace:        default
Address:          192.168.43.130
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host         Path  Backends
  ----         ----  --------
  shyam.local  
               /         my-service:3000 (10.42.0.83:3000,10.42.0.84:3000,10.42.0.85:3000 + 1 more...)
               /sample   mongo-express-service:8081 (10.42.0.62:8081)
Annotations:   <none>
Events:
  Type    Reason  Age                From                      Message
  ----    ------  ----               ----                      -------
  Normal  Sync    13m (x6 over 41m)  nginx-ingress-controller  Scheduled for sync

Я использую nginx-ingress с k3s, как упоминалось здесь.

Вот мой результат для kubectl get all -n ingress-nginx

NAME                                            READY   STATUS      RESTARTS   AGE
pod/ingress-nginx-admission-create-bmn9s        0/1     Completed   0          59m
pod/ingress-nginx-admission-patch-6tx6l         0/1     Completed   1          59m
pod/ingress-nginx-controller-7d779d8ccf-d7ddv   1/1     Running     0          56m

NAME                                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
service/ingress-nginx-controller-admission   ClusterIP   10.43.224.186   <none>        443/TCP                      59m
service/ingress-nginx-controller             NodePort    10.43.233.81    <none>        80:32069/TCP,443:31746/TCP   59m

NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ingress-nginx-controller   1/1     1            1           59m

NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/ingress-nginx-controller-7d779d8ccf   1         1         1       56m
replicaset.apps/ingress-nginx-controller-6cb6fdd64b   0         0         0       59m

NAME                                       COMPLETIONS   DURATION   AGE
job.batch/ingress-nginx-admission-create   1/1           21s        59m
job.batch/ingress-nginx-admission-patch    1/1           22s        59m

Есть предложения по поводу того, что могло быть причиной этого?


person Shyam kumar    schedule 22.05.2021    source источник


Ответы (1)


Обнаружил проблему, это произошло из-за отсутствия аннотации в ресурсе Ingress. Для потомков, вот обновленный ресурс yaml для ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
   name: example-ingress
   annotations:
    # kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
   rules:
    - http:
          paths:
          - path: /sample
            pathType: Prefix
            backend:
              service:
                name: my-service  
                port:
                  number: 3000
          - path: /
            pathType: Prefix
            backend:
              service:
                name: mongo-express-service
                port:
                  number: 8081   
person Shyam kumar    schedule 22.05.2021