apiVersion: release-notes/v2
kind: feature
area: traffic-management
releaseNotes:
- |
  **Improved** [Gateway API Automated Deployment](https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/#automated-deployment) management logic.
  See Upgrade Notes for more information.

upgradeNotes:
- title: Gateway API Automated Deployment changes.
  content: |
    This change impacts you only if you use [Gateway API Automated Deployment](https://istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/#automated-deployment).
    Note that this only applies to the Kubernetes Gateway API, not the Istio `Gateway`.
    You can check if you are using this feature with the following command:

    {{< text bash >}}
    $ kubectl get gateways.gateway.networking.k8s.io -ojson | jq -r '.items[] | select(.spec.gatewayClassName == "istio") | select((.spec.addresses | length) == 0) | "Found managed gateway: " + .metadata.namespace + "/" + .metadata.name'
    Found managed gateway: default/gateway
    {{< /text >}}

    If you see "Found managed gateway", you may be impacted by this change.

    Prior to Istio 1.18, the managed gateway worked by creating a minimal Deployment configuration which
    was fully populated at runtime with Pod injection. To upgrade gateways, users would restart the Pods
    to trigger a re-injection.

    In Istio 1.18, this has changed to create a fully rendered Deployment and no longer rely on injection.
    As a result, *Gateways will be updated, via a rolling restart, when their revision changes*.

    Additionally, users using this feature must update their control plane to Istio 1.16.5+ or 1.17.3+ before adopting Istio 1.18.
    Failure to do so may lead to conflicting writes to the same resources.
