api7/Amesh

bug: specific operation generates empty `vhost.domains` xds response

lingsamuel opened this issue · 0 comments

Test consumer:

kn run consumer --image curlimages/curl --image-pull-policy IfNotPresent --command sleep 1d

We have two apps, first one is httpbin2, deployment via kubectl command line

kn create deployment httpbin2 --image kennethreitz/httpbin --port 80 
kn expose deployment httpbin2 --port 80

The second is httpbin3, deployed via a yaml file

apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpbin3
  labels:
    app: httpbin3
spec:
  replicas: 1
  selector:
    matchLabels:
      app: httpbin3
  template:
    metadata:
      labels:
        app: httpbin3
    spec:
      containers:
      - name: httpbin
        image: kennethreitz/httpbin
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          protocol: TCP
          name: http
---
apiVersion: v1
kind: Service
metadata:
  name: httpbin3
spec:
  selector:
    app: httpbin3
  ports:
  - name: http
    targetPort: 80
    port: 80
    protocol: TCP

The httpbin3 works perfectly, but httpbin2 doesn't.
If we deploy httpbin2 ONLY, the xds response vhost.domains is "*" so the route doesn't work.

If we deploy httpbin3 AFTER httpbin2, once httpbin3 is deployed, the httpbin2 vhost with correct domains is generated. But there is a large number of xds calls and logs are generated in the amesh log. Also, the empty domains route still exists.

If we deploy httpbin3 BEFORE httpbin2, the final result is the same as above. The only difference is that no exceed logs generated.