istio: Port 80/443 not working with virtual service

kubectl version Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.4", GitCommit:"67d2fcf276fcd9cf743ad4be9a9ef5828adc082f", GitTreeState:"clean", BuildDate:"2019-09-18T14:51:13Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"15+", GitVersion:"v1.15.4-gke.22", GitCommit:"a6ba43f5a24ac29e631bb627c9b2a719c4e93638", GitTreeState:"clean", BuildDate:"2019-11-26T00:40:25Z", GoVersion:"go1.12.11b4", Compiler:"gc", Platform:"linux/amd64"}

istioctl version client version: 1.4.2 control plane version: 65b6870f1e3bf73fc688a02d10963ea0158e96c6-dirty data plane version: 1.2.10-gke.0 (22 proxies)

Modified sample httpbin example

service image

deployment image

virtual service image

Command to deploy to all istioctl kube-inject apply -f httpbin-all.yaml | kubectl -n itest apply -f -

Running pods kubectl -n itest get pods NAME READY STATUS RESTARTS AGE httpbin-7fbb6744b7-55dm9 2/2 Running 0 21m

k8s service image

istio vs image

Expected behavior when the service from another pod in the cluster is called is to have a fault with 500 status code

image

Observed behavior If same is changed to port 80 , it bypasses virtual service altogether image

Changing the virtual service port to 8000 makes no difference image

Apparently if a k8s service has port 80 exposed , the virtual service is not getting used at all. All other ports seems to be working fine.

proxy-config for the routes look like this

image

Here is the complete yaml file httpbin-all.txt

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 19 (10 by maintainers)

Most upvoted comments

I think you are not understanding HTTP route correctly, it only works on http like protocols, like. HTTP gRPC, etc. But not HTTPS.

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: hello
spec:
  hosts:
  - "hello"
    
  http:
  - route:
    - destination:
        host: hello
        subset: v1
      weight: 99
    - destination:
        host: hello
        subset: v2
      weight: 1