FAQ

  • How can I view the current rules I have configured with Istio?

    Rules can be viewed using istioctl get routerules -o yaml or kubectl get routerules -o yaml.

  • I created a weighted Route Rule to split traffic between two versions of a service but I am not seeing the expected behavior.

    For the current Envoy sidecar implementation, up to 100 requests may be required for the desired distribution to be observed.

  • How come some of my services are unreachable after creating Route Rules?

    This is an known issue with the current Envoy sidecar implementation. After two seconds of creating the rule, services should become available.

  • Can I use standard Ingress specification without any route rules?

    Simple ingress specifications, with host, TLS, and exact path based matches will work out of the box without the need for route rules. However, note that the path used in the ingress resource should not have any . characters.

    For example, the following ingress resource matches requests for example.com host, with /helloworld as the URL.

    cat <<EOF | kubectl create -f -
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: simple-ingress
      annotations:
        kubernetes.io/ingress.class: istio
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - path: /helloworld
            backend:
              serviceName: myservice
              servicePort: grpc
    EOF
    

    However, the following rules will not work because it uses regular expressions in the path and uses ingress.kubernetes.io annotations.

    cat <<EOF | kubectl create -f -
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: this-will-not-work
      annotations:
        kubernetes.io/ingress.class: istio
        # Ingress annotations other than ingress class will not be honored
        ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - path: /hello(.*?)world/
            backend:
              serviceName: myservice
              servicePort: grpc
    EOF