ingress-nginx icon indicating copy to clipboard operation
ingress-nginx copied to clipboard

Exact pathType behaves the same as Prefix when another rule uses rewrite-target

Open jtackaberry opened this issue 3 years ago • 17 comments

Problem Statement

Consider the following Ingress definition which uses the permanent-redirect annotation to issue a 301 Redirect for matched path:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: redirects
  namespace: websites
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: https://github.com/
spec:
  rules:
    - host: example.com
      http:
        paths:
          - backend:
              service:
                name: webserver
                port:
                  name: webserver
            path: /changelog
            pathType: Exact

Querying https://example.com/changelog redirects as expected.

But what's unexpected is that when another Ingress rule is defined that uses rewrite-target, the above Ingress will also redirect https://example.com/changelogfoobarbaz.

On the ingress controller pod, nginx.conf contains the following for both Exact and Prefix:

location ~* "^/changelog" {

This what I expect for Prefix, but not for Exact. For Exact I would have expected:

location ~* "^/changelog$" {

This condition only occurs when there is another Ingress in the same scope that defines a nginx.ingress.kubernetes.io/rewrite-target annotation.

Steps to Reproduce

Perform this method of procedure on a fresh cluster:

# Deploy ingress-nginx via Helm chart.  We enable the default backend just to have a target
# we can use to simplify the test case (avoids deploying a separate service).
$ helm repo add --force-update ingress-nginx https://kubernetes.github.io/ingress-nginx
$ helm upgrade --install -n ingress-nginx --create-namespace ingress-nginx \
     ingress-nginx/ingress-nginx \
     --set defaultBackend.enabled=true \
     --set controller.ingressClassResource.default=true

# Generate the meat of our test case.  The first Ingress rule is the necessary precondition:
# an unrelated (but in the same `host` scope) Prefix rule that uses the rewrite-target
# annotation.
#
# The next rule that uses the permanent-redirect annotation is the actual problem.
$ cat > ingress.yaml << EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: precondition
  namespace: ingress-nginx
  annotations:
     nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - host: example.com
      http:
        paths:
          - backend:
              service:
                name: ingress-nginx-defaultbackend
                port:
                  name: http
            path: /unrelated-subpath/(.*)
            pathType: Prefix
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: testcase
  namespace: ingress-nginx
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: https://github.com/
spec:
  rules:
    - host: example.com
      http:
        paths:
          - backend:
              service:
                name: ingress-nginx-defaultbackend
                port:
                  name: http
            path: /testcase
            pathType: Exact
EOF
$ kubectl apply -f ingress.yaml

# Execute until the LoadBalancer Service external IP is realized
$ watch kubectl get -n ingress-nginx services
# Assign the IP to a variable
$ ip=$(kubectl get -n ingress-nginx service/ingress-nginx-controller \
          --template='{{(index .status.loadBalancer.ingress 0).ip}}')

# Use curl to confirm the positive case (expected result)
$ curl -kis https://example.com/testcase --resolve example.com:443:$ip | grep location
location: https://github.com/

# Now try again with a different URL that matches the same prefix but SHOULD FAIL
# due to not being an exact match. 
$ curl -kis https://example.com/testcasefoobarbaz --resolve example.com:443:$ip | grep location
# ACTUAL RESULT
location: https://github.com/
# EXPECTED RESULT
(empty string)

Environment State Following Reproduction Steps

Given the above reproduction steps, here are more details from the resulting environment (which in my case is hosted in DOKS, but is repeatable on Vultr):

$ kubectl -n ingress-nginx get service/ingress-nginx-controller -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubernetes.digitalocean.com/load-balancer-id: 7f532b2c-3799-4ad9-ba83-137316ccc176
    meta.helm.sh/release-name: ingress-nginx
    meta.helm.sh/release-namespace: ingress-nginx
  creationTimestamp: "2022-01-31T03:48:01Z"
  finalizers:
  - service.kubernetes.io/load-balancer-cleanup
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
    app.kubernetes.io/version: 1.1.1
    helm.sh/chart: ingress-nginx-4.0.16
  name: ingress-nginx-controller
  namespace: ingress-nginx
  resourceVersion: "12646"
  uid: 800ee1a7-dcf2-44d1-9e89-b49c9ae79cba
spec:
  clusterIP: 10.245.63.255
  clusterIPs:
  - 10.245.63.255
  externalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - appProtocol: http
    name: http
    nodePort: 31355
    port: 80
    protocol: TCP
    targetPort: http
  - appProtocol: https
    name: https
    nodePort: 31799
    port: 443
    protocol: TCP
    targetPort: https
  selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: <public IP redacted>

$ kubectl -n ingress-nginx describe service/ingress-nginx-controller
Name:                     ingress-nginx-controller
Namespace:                ingress-nginx
Labels:                   app.kubernetes.io/component=controller
                          app.kubernetes.io/instance=ingress-nginx
                          app.kubernetes.io/managed-by=Helm
                          app.kubernetes.io/name=ingress-nginx
                          app.kubernetes.io/part-of=ingress-nginx
                          app.kubernetes.io/version=1.1.1
                          helm.sh/chart=ingress-nginx-4.0.16
Annotations:              kubernetes.digitalocean.com/load-balancer-id: 7f532b2c-3799-4ad9-ba83-137316ccc176
                          meta.helm.sh/release-name: ingress-nginx
                          meta.helm.sh/release-namespace: ingress-nginx
Selector:                 app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.245.63.255
IPs:                      10.245.63.255
LoadBalancer Ingress:     <public IP redacted>
Port:                     http  80/TCP
TargetPort:               http/TCP
NodePort:                 http  31355/TCP
Endpoints:                10.244.0.103:80
Port:                     https  443/TCP
TargetPort:               https/TCP
NodePort:                 https  31799/TCP
Endpoints:                10.244.0.103:443
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

$ kubectl -n ingress-nginx get ingress/precondition -o yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"nginx.ingress.kubernetes.io/rewrite-target":"/$1"},"name":"precondition","namespace":"ingress-nginx"},"spec":{"rules":[{"host":"example.com","http":{"paths":[{"backend":{"service":{"name":"ingress-nginx-defaultbackend","port":{"name":"http"}}},"path":"/unrelated-subpath/(.*)","pathType":"Prefix"}]}}]}}
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  creationTimestamp: "2022-01-31T02:45:11Z"
  generation: 6
  name: precondition
  namespace: ingress-nginx
  resourceVersion: "12726"
  uid: 7b16aa67-c45c-4a16-99c2-5334ea34b739
spec:
  ingressClassName: nginx
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          service:
            name: ingress-nginx-defaultbackend
            port:
              name: http
        path: /unrelated-subpath/(.*)
        pathType: Prefix
status:
  loadBalancer:
    ingress:
    - ip: <public IP redacted>


$ kubectl -n ingress-nginx describe ingress/precondition
Name:             precondition
Namespace:        ingress-nginx
Address:          <public IP redacted>
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host         Path  Backends
  ----         ----  --------
  example.com
               /unrelated-subpath/(.*)   ingress-nginx-defaultbackend:http (10.244.0.79:8080)
Annotations:   nginx.ingress.kubernetes.io/rewrite-target: /$1
Events:        <none>

$ kubectl -n ingress-nginx get ingress/testcase -o yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"nginx.ingress.kubernetes.io/permanent-redirect":"https://github.com/"},"name":"testcase","namespace":"ingress-nginx"},"spec":{"rules":[{"host":"example.com","http":{"paths":[{"backend":{"service":{"name":"ingress-nginx-defaultbackend","port":{"name":"http"}}},"path":"/testcase","pathType":"Exact"}]}}]}}
    nginx.ingress.kubernetes.io/permanent-redirect: https://github.com/
  creationTimestamp: "2022-01-31T02:45:11Z"
  generation: 2
  name: testcase
  namespace: ingress-nginx
  resourceVersion: "12728"
  uid: afd365d8-a91c-47a8-9d2a-ee68f114d4c6
spec:
  ingressClassName: nginx
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          service:
            name: ingress-nginx-defaultbackend
            port:
              name: http
        path: /testcase
        pathType: Exact
status:
  loadBalancer:
    ingress:
    - ip: <public IP redacted>

$ kubectl -n ingress-nginx describe ingress/testcase
Name:             testcase
Namespace:        ingress-nginx
Address:          <public IP redacted>
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host         Path  Backends
  ----         ----  --------
  example.com
               /testcase   ingress-nginx-defaultbackend:http (10.244.0.79:8080)
Annotations:   nginx.ingress.kubernetes.io/permanent-redirect: https://github.com/
Events:        <none>

Here is the resulting nginx.conf on the controller pod:

nginx.zip

Here are the ingress controller log lines generated from the above two curl requests:

# Command
$ curl -kis https://example.com/testcase --resolve example.com:443:$ip
# Resulting log line (301 is the EXPECTED RESULT)
10.137.0.4 - - [01/Feb/2022:15:44:43 +0000] "GET /testcase HTTP/2.0" 301 162 "-" "curl/7.68.0" 35 0.000 [ingress-nginx-ingress-nginx-defaultbackend-http] [] - - - - 78a5281eb1d146f3076e161d01acdebf

# Command
$ curl -kis https://example.com/testcasefoobarbaz --resolve example.com:443:$ip 
# Resulting log line (301 is an UNEXPECTED RESULT - 404 is expected due to use of pathType: Exact)
10.137.0.4 - - [01/Feb/2022:15:45:56 +0000] "GET /testcasefoobarbaz HTTP/2.0" 301 162 "-" "curl/7.68.0" 42 0.000 [ingress-nginx-ingress-nginx-defaultbackend-http] [] - - - - f20e268c2a237f231452d2650a6c530c

Environment Details

NGINX Ingress controller version

NGINX Ingress controller
  Release:       v1.1.1
  Build:         a17181e43ec85534a6fea968d95d019c5a4bc8cf
  Repository:    https://github.com/kubernetes/ingress-nginx
  nginx version: nginx/1.19.9

Kubernetes version

Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-17T15:48:33Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.6", GitCommit:"f59f5c2fda36e4036b49ec027e556a15456108f0", GitTreeState:"clean", BuildDate:"2022-01-19T17:26:47Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"linux/amd64"}

Environment:

  • Cloud provider or hardware configuration: Vultr
  • OS (e.g. from /etc/os-release): Debian GNU/Linux 10 (buster)
  • Kernel (e.g. uname -a): Linux default-38df614b9441 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64 GNU/Linux
  • Install tools: VKE (managed cluster)
  • How was the ingress-nginx-controller installed: Helm chart
$ helm ls -A | grep -i ingress
ingress-nginx           ingress-nginx   10              2022-01-30 10:24:57.244907492 -0500 EST deployed        ingress-nginx-4.0.16                     1.1.1

$ helm -n ingress-nginx get values ingress-nginx
controller:
  config:
    force-ssl-redirect: true
    hsts-max-age: 31536000
    log-format-escape-json: "true"
    log-format-upstream: status=$status path="$request_uri" method=$request_method
      ingress=$ingress_name remote_addr=$proxy_protocol_addr response_length=$bytes_sent
      duration=$request_time host=$http_host protocol=$server_protocol referer="$http_referer"
      agent="$http_user_agent" ssl_protocol=$ssl_protocol ssl_cipher=$ssl_cipher scheme=$scheme
      request_length=$request_length request_id=$req_id user=$remote_user namespace=$namespace
      service=$service_name:$service_port
    real-ip-header: proxy_protocol
    ssl-ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
    use-proxy-protocol: "true"
    worker-processes: 2
  extraArgs:
    default-ssl-certificate: ingress-nginx/default-cert-tls
  image:
    tag: v1.1.1
  ingressClassResource:
    default: true
  metrics:
    enabled: true
  replicaCount: 1
  service:
    annotations:
      service.beta.kubernetes.io/vultr-loadbalancer-proxy-protocol: "true"
defaultBackend:
  enabled: false
  • Current State of the controller:
 $ kubectl describe ingressclasses
Name:         nginx
Labels:       app.kubernetes.io/component=controller
              app.kubernetes.io/instance=ingress-nginx
              app.kubernetes.io/managed-by=Helm
              app.kubernetes.io/name=ingress-nginx
              app.kubernetes.io/part-of=ingress-nginx
              app.kubernetes.io/version=1.1.1
              helm.sh/chart=ingress-nginx-4.0.16
Annotations:  ingressclass.kubernetes.io/is-default-class: true
              meta.helm.sh/release-name: ingress-nginx
              meta.helm.sh/release-namespace: ingress-nginx
Controller:   k8s.io/ingress-nginx
Events:       <none>

 $ kubectl -n ingress-nginx get pod -o wide
NAME                                        READY   STATUS    RESTARTS   AGE   IP             NODE                   NOMINATED NODE   READINESS GATES
ingress-nginx-controller-59b6745b68-kstn5   1/1     Running   0          4d    10.244.44.11   default-38df614b9441   <none>           <none>

 $ kubectl -n ingress-nginx get svc -o wide
NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE   SELECTOR
ingress-nginx-controller             LoadBalancer   10.96.29.106     <redacted>    80:32035/TCP,443:32583/TCP   4d    app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx
ingress-nginx-controller-admission   ClusterIP      10.110.101.181   <none>        443/TCP                      4d    app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx
ingress-nginx-controller-metrics     ClusterIP      10.102.70.74     <none>        10254/TCP                    4d    app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx

jtackaberry avatar Jan 30 '22 23:01 jtackaberry

@jtackaberry: This issue is currently awaiting triage.

If Ingress contributors determines this is a relevant issue, they will accept it by applying the triage/accepted label and provide further guidance.

The triage/accepted label can be added by org members by writing /triage accepted in a comment.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

k8s-ci-robot avatar Jan 30 '22 23:01 k8s-ci-robot

@jtackaberry Hi, Thanks for reporting this. If what you are saying is true, then it looks like a bug.

You can help out by kindly writing step-by-step instructions, for reproducing. If someone can copy/paste from, your instructions on their kind/minikube/kubeadm/other cluster, to reproduce this, it will save developer time & help complete/accept triage to get some priority on the issue. There is lack of resources so clear data showing priority helps.

longwuyuan avatar Jan 31 '22 01:01 longwuyuan

@longwuyuan done. Apologies for not doing that to begin with. It turned out the actual test case was a bit more complicated -- it required the precondition of having another rule that uses nginx.ingress.kubernetes.io/rewrite-target. I've updated my original post with repeatable commands to reproduce the issue.

jtackaberry avatar Jan 31 '22 03:01 jtackaberry

Thank you very much for the steps. Was worried that controller broke api specs.

Now, your update complicates the issue. So step1 request is kindly make sure all ingress objects have defined ingress.spec.rules.host field. Need to know behaviour with that field defined. Waiting for your update.

Thanks, ; Long

On Mon, 31 Jan, 2022, 8:33 AM Jason Tackaberry, @.***> wrote:

@longwuyuan https://github.com/longwuyuan done. Apologies for not doing that to begin with. It turned out the actual test case was a bit more complicated -- it required the precondition of having another rule that uses nginx.ingress.kubernetes.io/rewrite-target. I've updated my original post with repeatable commands to reproduce the issue.

— Reply to this email directly, view it on GitHub https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025332849, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGZVWRAWHM7FWKXGQ4DVXTUYX3ZHANCNFSM5NE2XLPA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

longwuyuan avatar Jan 31 '22 03:01 longwuyuan

So step1 request is kindly make sure all ingress objects have defined ingress.spec.rules.host field.

@longwuyuan Done. OP updated.

jtackaberry avatar Jan 31 '22 03:01 jtackaberry

Thanks. Did you check nginx.conf.

Kindly add more info. Please add kubectl describe for the service type LoadBalancer created by the controller. Then for each ingress object, please add the kubectl describe. After that, for each curl, please add the log messages of the controller pod, related to that specific curl request.

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:24 AM Jason Tackaberry, @.***> wrote:

So step1 request is kindly make sure all ingress objects have defined ingress.spec.rules.host field.

@longwuyuan https://github.com/longwuyuan Done. OP updated.

— Reply to this email directly, view it on GitHub https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025352912, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGZVWQT2V3YOKKTOVFK4G3UYYBY7ANCNFSM5NE2XLPA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

longwuyuan avatar Jan 31 '22 04:01 longwuyuan

I probably won't be able to get to this until at least next weekend. If you think of anything further you'd like to see between now and then, please let me know.

For what it's worth, the test case is complete and repeatable and clearly demonstrates the bug.

jtackaberry avatar Jan 31 '22 04:01 jtackaberry

I think it's complete too but a person reproducing should compare the state, the curl and the logs. Hope I can reproduce too.

Current thought is permanent redirect and rewrite are contending plus not designed to be used together on one fqdn. It will be interesting to see what server block contains in nginx.conf

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:48 AM Jason Tackaberry, @.***> wrote:

I probably won't be able to get to this until at least next weekend. If you think of anything further you'd like to see between now and then, please let me know.

For what it's worth, the test case is complete and repeatable and clearly demonstrates the bug.

— Reply to this email directly, view it on GitHub https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025363932, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGZVWVHBO33OEGTZMTB7XTUYYEQ7ANCNFSM5NE2XLPA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

longwuyuan avatar Jan 31 '22 04:01 longwuyuan

@nishant-jain-94, would you be interested to pair on this one

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:56 AM Yuan, @.***> wrote:

I think it's complete too but a person reproducing should compare the state, the curl and the logs. Hope I can reproduce too.

Current thought is permanent redirect and rewrite are contending plus not designed to be used together on one fqdn. It will be interesting to see what server block contains in nginx.conf

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:48 AM Jason Tackaberry, @.***> wrote:

I probably won't be able to get to this until at least next weekend. If you think of anything further you'd like to see between now and then, please let me know.

For what it's worth, the test case is complete and repeatable and clearly demonstrates the bug.

— Reply to this email directly, view it on GitHub https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025363932, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGZVWVHBO33OEGTZMTB7XTUYYEQ7ANCNFSM5NE2XLPA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

longwuyuan avatar Jan 31 '22 04:01 longwuyuan

@jtackaberry, it will be nice to see kubectl describe of ingress objects so that the ingressClassName is verified.

Thanks, ; Long

On Mon, 31 Jan, 2022, 10:06 AM Yuan, @.***> wrote:

@nishant-jain-94, would you be interested to pair on this one

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:56 AM Yuan, @.***> wrote:

I think it's complete too but a person reproducing should compare the state, the curl and the logs. Hope I can reproduce too.

Current thought is permanent redirect and rewrite are contending plus not designed to be used together on one fqdn. It will be interesting to see what server block contains in nginx.conf

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:48 AM Jason Tackaberry, @.***> wrote:

I probably won't be able to get to this until at least next weekend. If you think of anything further you'd like to see between now and then, please let me know.

For what it's worth, the test case is complete and repeatable and clearly demonstrates the bug.

— Reply to this email directly, view it on GitHub https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025363932, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGZVWVHBO33OEGTZMTB7XTUYYEQ7ANCNFSM5NE2XLPA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

longwuyuan avatar Jan 31 '22 04:01 longwuyuan

Yes @Long. I have started running this on my machine. Yet to reproduce the problem. Still working on it. Thank you.

On Mon, Jan 31, 2022, 10:26 Long Wu Yuan @.***> wrote:

@jtackaberry, it will be nice to see kubectl describe of ingress objects so that the ingressClassName is verified.

Thanks, ; Long

On Mon, 31 Jan, 2022, 10:06 AM Yuan, @.***> wrote:

@nishant-jain-94, would you be interested to pair on this one

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:56 AM Yuan, @.***> wrote:

I think it's complete too but a person reproducing should compare the state, the curl and the logs. Hope I can reproduce too.

Current thought is permanent redirect and rewrite are contending plus not designed to be used together on one fqdn. It will be interesting to see what server block contains in nginx.conf

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:48 AM Jason Tackaberry, @.***> wrote:

I probably won't be able to get to this until at least next weekend. If you think of anything further you'd like to see between now and then, please let me know.

For what it's worth, the test case is complete and repeatable and clearly demonstrates the bug.

— Reply to this email directly, view it on GitHub < https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025363932 , or unsubscribe < https://github.com/notifications/unsubscribe-auth/ABGZVWVHBO33OEGTZMTB7XTUYYEQ7ANCNFSM5NE2XLPA

. Triage notifications on the go with GitHub Mobile for iOS < https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android < https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .

You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025380403, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADUFFDV5WQIGQXONIWBAZZTUYYI7NANCNFSM5NE2XLPA . You are receiving this because you were mentioned.Message ID: @.***>

nishant-jain-94 avatar Feb 01 '22 03:02 nishant-jain-94

Thank you Nishant. We can sync on slack.

Thanks, ; Long

On 2/1/22 9:13 AM, Nishant Jain wrote:

Yes @Long. I have started running this on my machine. Yet to reproduce the problem. Still working on it. Thank you.

On Mon, Jan 31, 2022, 10:26 Long Wu Yuan @.***> wrote:

@jtackaberry, it will be nice to see kubectl describe of ingress objects so that the ingressClassName is verified.

Thanks, ; Long

On Mon, 31 Jan, 2022, 10:06 AM Yuan, @.***> wrote:

@nishant-jain-94, would you be interested to pair on this one

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:56 AM Yuan, @.***> wrote:

I think it's complete too but a person reproducing should compare the state, the curl and the logs. Hope I can reproduce too.

Current thought is permanent redirect and rewrite are contending plus not designed to be used together on one fqdn. It will be interesting to see what server block contains in nginx.conf

Thanks, ; Long

On Mon, 31 Jan, 2022, 9:48 AM Jason Tackaberry, @.***> wrote:

I probably won't be able to get to this until at least next weekend. If you think of anything further you'd like to see between now and then, please let me know.

For what it's worth, the test case is complete and repeatable and clearly demonstrates the bug.

— Reply to this email directly, view it on GitHub <

https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025363932

,

or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ABGZVWVHBO33OEGTZMTB7XTUYYEQ7ANCNFSM5NE2XLPA

. Triage notifications on the go with GitHub Mobile for iOS <

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

.

You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub

https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1025380403,

or unsubscribe

https://github.com/notifications/unsubscribe-auth/ADUFFDV5WQIGQXONIWBAZZTUYYI7NANCNFSM5NE2XLPA

. You are receiving this because you were mentioned.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1026449767, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGZVWWWAS4OU2X25C7F7Y3UY5JGVANCNFSM5NE2XLPA. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

longwuyuan avatar Feb 01 '22 05:02 longwuyuan

@longwuyuan I've updated the "Steps to Reproduce" section in my original comment with the requested information.

jtackaberry avatar Feb 01 '22 15:02 jtackaberry

Thank you. It helps a lot.

Thanks, ; Long

On Tue, 1 Feb, 2022, 9:23 PM Jason Tackaberry, @.***> wrote:

@longwuyuan https://github.com/longwuyuan I've updated the "Steps to Reproduce" section in my original comment with the requested information.

— Reply to this email directly, view it on GitHub https://github.com/kubernetes/ingress-nginx/issues/8208#issuecomment-1026995681, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABGZVWUAU7BWQSIFU2LOSS3UY76XRANCNFSM5NE2XLPA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you were mentioned.Message ID: @.***>

longwuyuan avatar Feb 01 '22 16:02 longwuyuan

The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle stale
  • Mark this issue or PR as rotten with /lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

k8s-triage-robot avatar May 02 '22 16:05 k8s-triage-robot

/remove-lifecycle stale

jtackaberry avatar May 02 '22 17:05 jtackaberry

The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle stale
  • Mark this issue or PR as rotten with /lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

k8s-triage-robot avatar Jul 31 '22 17:07 k8s-triage-robot

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle rotten

k8s-triage-robot avatar Aug 30 '22 18:08 k8s-triage-robot

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Reopen this issue with /reopen
  • Mark this issue as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close not-planned

k8s-triage-robot avatar Sep 29 '22 19:09 k8s-triage-robot

@k8s-triage-robot: Closing this issue, marking it as "Not Planned".

In response to this:

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Reopen this issue with /reopen
  • Mark this issue as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close not-planned

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

k8s-ci-robot avatar Sep 29 '22 19:09 k8s-ci-robot