Why does istio-ingressgateway expose port 31400?

7/17/2018

The Istio ingress gateway exposes the following ports by default:

80:31380/TCP,443:31390/TCP,31400:31400/TCP

Why does it expose 31400 and map it to 31400? I can't find an explanation of this in the docs or elsewhere.

Background: I'm following the Install with Helm via helm template guide using Istio 0.8.0. The deployment manifest is built from https://github.com/istio/istio/tree/0.8.0/install/kubernetes/helm/istio, giving the following ingress gateway service definition:

# Source: istio/charts/ingressgateway/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: istio-ingressgateway
  namespace: istio-system    
  labels:
    chart: ingressgateway-0.8.0
    release: istio
    heritage: Tiller
    istio: ingressgateway
spec:
  type: NodePort
  selector:
    istio: ingressgateway
  ports:
    -
      name: http
      nodePort: 31380
      port: 80
    -
      name: https
      nodePort: 31390
      port: 443
    -
      name: tcp
      nodePort: 31400
      port: 31400
-- nzkeith
istio
kubernetes

2 Answers

7/17/2018

Commit a4b6cc5 mentions:

Adding the 31400 port back because of testdata dependency

This is part of istio/istio PR 6350

These changes add support for multiple ingress/egress gateway configuration in the Helm charts.
The new gateways field is an array that by default has one configuration (as it was before) but allows users to add more configurations to have multiple ingress/egress gateways deployed when installing the charts.

See commit 05cba4e.

-- VonC
Source: StackOverflow

10/8/2018

This is just the default install option. By default, Istio opens the set of NodePorts you list above so that you can use those ports to access the ingress gateway if you are using an environment like Minikube, which does not support the LoadBalancer port type. If you are deploying Istio in a non-Minikube environment the NodePorts can be omitted.

-- Isaiah Snell-Feikema
Source: StackOverflow