0

I have 2 services which are using same image but configuration for those services are different. I want that whenever i request for /get_traits_similarity it redirects to /get_similarity inside of that service. Is there a way how to do it? Below is lastest configuration i have tried.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: "/$1"
    nginx.ingress.kubernetes.io/ssl-redirect: 'false'
    nginx.ingress.kubernetes.io/use-regex: 'true'
    nginx.ingress.kubernetes.io/app-root: /get_similarity
  labels:
    app.kubernetes.io/component: hashingservice
    app.kubernetes.io/name: hashing-ingress
    app.kubernetes.io/part-of: hashingapi
  name: hashing-ingress
  namespace: default
spec:
  rules:
    - http:
        paths:
        - backend:
            serviceName: mediasimilarity
            servicePort: 5000
          path: "/(get_similarity)"
        - backend:
            serviceName: mediasimilarity
            servicePort: 5000
          path: "/(create_token)(/get_similarity){1}"
        - backend:
            serviceName: mediasimilarity
            servicePort: 5000
          path: "/(load_index)"
        - backend:
            serviceName: traits-mediasimilarity
            servicePort: 5000
          path: "/(get_traits_similarity)(/|$)(.*)"
        - backend:
            serviceName: traits-mediasimilarity
            servicePort: 5000
          path: "/(create_token)/(get_traits_similarity)(/|$)(.*){1}"
        - backend:
            serviceName: traits-mediasimilarity
            servicePort: 5000
          path: "/(load_index)"
3
  • I am analyzing your issue. In a meantime please correct a typo you got in your Ingress.metadata.annotation: nginx.ingress.kubernetes.io/user-regex: should be changed to nginx.ingress.kubernetes.io/use-regex: so use instead of `user'. Let me know if that helped. May 12, 2020 at 9:00
  • @OhHiMark Thanks for noticing typo! But that didn't fix the problem. May 12, 2020 at 11:29
  • Also, which version of Kubernetes are you using? NetworkPolicy in the extensions/v1beta1 API version is no longer served from 1.16. May 12, 2020 at 12:20

1 Answer 1

0

I see three potential issues with your config:

  1. A typo in annotations: nginx.ingress.kubernetes.io/user-regex: instead of nginx.ingress.kubernetes.io/use-regex: (already fixed)

  2. NetworkPolicy in the extensions/v1beta1 API version is no longer served from Kubernetes version 1.16.

  3. Regarding the Rewrite itself:

    • you need to set you target correctly: nginx.ingress.kubernetes.io/rewrite-target: /get_similarity/$2

    • you need to specify your host under the spec: part

    • finally you need to set the path that you want to be rewritten: path: /get_traits_similarity(/|$)(.*)

Here is an example:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /get_similarity/$2
  name: hashing-ingress
  namespace: default
spec:
  rules:
  - host: <your_host>
    http:
      paths:
      - backend:
          serviceName: traits-mediasimilarity
          servicePort: 5000
        path: /get_traits_similarity(/|$)(.*)

Refer to the linked documentation if needed and please let me know if that helped.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .