<p>I am planning to install Istion on my AKS Cluster using the following configuration, what are all the components this would install? would it install both the Ingress &amp; Egress Gateways?</p>
<pre><code>istioctl operator init

kubectl create ns istio-system

cat &lt;&lt; EOF | kubectl apply -f -
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-control-plane
spec:
  # Use the default profile as the base
  # More details at: https://istio.io/docs/setup/additional-setup/config-profiles/
  profile: default
  # Enable the addons that we will want to use
  addonComponents:
    grafana:
      enabled: true
    prometheus:
      enabled: true
    tracing:
      enabled: true
    kiali:
      enabled: true
  values:
    global:
      # Ensure that the Istio pods are only scheduled to run on Linux nodes
      defaultNodeSelector:
        beta.kubernetes.io/os: linux
    kiali:
      dashboard:
        auth:
          strategy: anonymous
EOF
</code></pre>

One Developer
<p>The istio operator manifest in your question will not install egress gateway. It is based on default profile which according to istio documentation can be inspected by using <a href="https://istio.io/latest/docs/setup/install/istioctl/#display-the-configuration-of-a-profile" rel="nofollow noreferrer"><code>istioctl profile dump</code></a>:</p>
<blockquote>
<p><strong>default</strong>: enables components according to the default settings of the <a href="https://istio.io/latest/docs/reference/config/istio.operator.v1alpha1/" rel="nofollow noreferrer"><code>IstioOperator</code>  API</a>. This profile is recommended for production deployments and for primary clusters in a <a href="https://istio.io/latest/docs/ops/deployment/deployment-models/#multiple-clusters" rel="nofollow noreferrer">multicluster mesh</a>. You can display the default setting by running the command <code>istioctl profile dump</code>.</p>
</blockquote>
<p>In order to install egress gateway using <code>IstioOperator</code> follow these steps from istio <a href="https://istio.io/latest/docs/setup/install/istioctl/#configure-gateways" rel="nofollow noreferrer">documentation</a>:</p>
<blockquote>
<h3>Configure gateways<a href="https://istio.io/latest/docs/setup/install/istioctl/#configure-gateways" rel="nofollow noreferrer"></a></h3>
<p>Gateways are a special type of component, since multiple ingress and egress gateways can be defined. In the  <a href="https://istio.io/latest/docs/reference/config/istio.operator.v1alpha1/" rel="nofollow noreferrer"><code>IstioOperator</code>  API</a>, gateways are defined as a list type. <strong>The  <code>default</code>  profile installs one ingress gateway, called  <code>istio-ingressgateway</code>.</strong> You can inspect the default values for this gateway:</p>
<pre><code>istioctl profile dump --config-path components.ingressGateways
istioctl profile dump --config-path values.gateways.istio-ingressgateway
</code></pre>
<p>These commands show both the  <code>IstioOperator</code>  and Helm settings for the gateway, which are used together to define the generated gateway resources. The built-in gateways can be customized just like any other component.</p>
<p><em>From 1.7 onward, the gateway name must always be specified when overlaying. Not specifying any name no longer defaults to  <code>istio-ingressgateway</code>  or  <code>istio-egressgateway</code>.</em></p>
<p>A new user gateway can be created by adding a new list entry:</p>
<pre><code>apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
      - namespace: user-ingressgateway-ns
        name: ilb-gateway
        enabled: true
        k8s:
          resources:
            requests:
              cpu: 200m
          serviceAnnotations:
            cloud.google.com/load-balancer-type: &quot;internal&quot;
          service:
            ports:
            - port: 8060
              targetPort: 8060
              name: tcp-citadel-grpc-tls
            - port: 5353
              name: tcp-dns
</code></pre>
<p>Note that Helm values (<code>spec.values.gateways.istio-ingressgateway/egressgateway</code>) are shared by all ingress/egress gateways. If these must be customized per gateway, it is recommended to use a separate IstioOperator CR to generate a manifest for the user gateways, separate from the main Istio installation:</p>
<pre><code>apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: empty
  components:
    ingressGateways:
      - name: ilb-gateway
        namespace: user-ingressgateway-ns
        enabled: true
        # Copy settings from istio-ingressgateway as needed.
  values:
    gateways:
      istio-ingressgateway:
        debug: error
</code></pre>
</blockquote>
<p>More information about installing istio on AKS can be found <a href="https://learn.microsoft.com/en-us/azure/aks/servicemesh-istio-install?pivots=client-operating-system-linux" rel="nofollow noreferrer">here</a>.</p>
