Customize Istio

You can customize the Verrazzano Istio component using settings in the Verrazzano custom resource.

The following table describes the fields in the Verrazzano custom resource pertaining to the Istio component.

Path to Field Description
spec.components.istio.egress.kubernetes.replicas The number of pods to replicate. The default is 2 for the prod profile and 1 for all other profiles.
spec.components.istio.egress.kubernetes.affinity The pod affinity definition expressed as a standard Kubernetes affinity definition. The default configuration spreads the Istio gateway pods across the available nodes.
spec:
components:
istio:
egress:
kubernetes:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- istio-egressgateway
topologyKey: kubernetes.io/hostname
spec.components.istio.ingress.kubernetes.replicas The number of pods to replicate. The default is 2 for the prod profile and 1 for all other profiles.
spec.components.istio.ingress.kubernetes.affinity The pod affinity definition expressed as a standard Kubernetes affinity definition. The default configuration spreads the Istio gateway pods across the available nodes.
spec:
components:
istio:
ingress:
kubernetes:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- istio-ingressgateway
topologyKey: kubernetes.io/hostname

The following example customizes a Verrazzano prod profile as follows:

  • Increases the replicas count to 3 for istio-ingressgateway and istio-egressgateway
  • Changes the podAffinity configuration to use requiredDuringSchedulingIgnoredDuringExecution for istio-ingressgateway and istio-egressgateway
    apiVersion: install.verrazzano.io/v1beta1
    kind: Verrazzano
    metadata:
      name: example-verrazzano
    spec:
      profile: prod
      components:
        istio:
          overrides:
          - values:
              apiVersion: install.istio.io/v1alpha1
              kind: IstioOperator
              spec:
                components:
                  egressGateways:
                    - enabled: true
                      k8s:
                        affinity:
                          podAntiAffinity:
                            requiredDuringSchedulingIgnoredDuringExecution:
                              - podAffinityTerm:
                                  labelSelector:
                                    matchExpressions:
                                      - key: app
                                        operator: In
                                        values:
                                          - istio-egressgateway
                                  topologyKey: kubernetes.io/hostname
                                weight: 100
                        replicaCount: 3
                      name: istio-egressgateway
                  ingressGateways:
                    - enabled: true
                      k8s:
                        affinity:
                          podAntiAffinity:
                            requiredDuringSchedulingIgnoredDuringExecution:
                              - podAffinityTerm:
                                  labelSelector:
                                    matchExpressions:
                                      - key: app
                                        operator: In
                                        values:
                                          - istio-ingressgateway
                                  topologyKey: kubernetes.io/hostname
                                weight: 100
                        replicaCount: 3
                        service:
                          type: LoadBalancer
                      name: istio-ingressgateway