Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/azure-cli/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ Release History
* `az aks mesh enable/proxy-redirection-mechanism`: Add mesh Istio CNI commands (#32992)
* `az aks nodepool add`: Add `Windows2025` as a supported value for `--os-sku` (#33246)
* `az aks update`: Fix `--enable-azure-monitor-metrics` failing with RoleAssignmentExists when Grafana role assignment already exists (#33229)
* `az aks create/update`: Add `--enable-gateway-api` and `--disable-gateway-api` parameters to manage Managed Gateway API installation (#33286)
* `az aks create/update`: Add `--enable-app-routing-istio` and `--disable-app-routing-istio` to manage App Routing Istio gateway implementation (#33287)

**App Service**

Expand Down
8 changes: 8 additions & 0 deletions src/azure-cli/azure/cli/command_modules/acs/_consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,14 @@
CONST_APP_ROUTING_INTERNAL_NGINX = "Internal"
CONST_APP_ROUTING_NONE_NGINX = "None"

# app routing istio mode
CONST_APP_ROUTING_ISTIO_MODE_ENABLED = "Enabled"
CONST_APP_ROUTING_ISTIO_MODE_DISABLED = "Disabled"

# managed gateway api installation
CONST_MANAGED_GATEWAY_INSTALLATION_DISABLED = "Disabled"
CONST_MANAGED_GATEWAY_INSTALLATION_STANDARD = "Standard"

# all supported addons
ADDONS = {
"http_application_routing": CONST_HTTP_APPLICATION_ROUTING_ADDON_NAME,
Expand Down
67 changes: 67 additions & 0 deletions src/azure-cli/azure/cli/command_modules/acs/_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,16 @@
- name: --enable-ai-toolchain-operator
type: bool
short-summary: Enable AI toolchain operator to the cluster.
- name: --enable-app-routing-istio --enable-ari
type: bool
short-summary: Enable Gateway API based ingress on App Routing via Istio without service mesh functionality.
long-summary: |
This enables an ingress-only version of Istio that reconciles Gateway API resources for App Routing.
It does not provide service mesh functionality (e.g. mTLS, traffic management between services).
Cannot be used simultaneously with the Istio service mesh add-on (--enable-azure-service-mesh).
- name: --enable-gateway-api
type: bool
short-summary: Enable managed installation of Gateway API CRDs from the standard release channel.
- name: --bootstrap-container-registry-resource-id
type: string
short-summary: Configure container registry resource ID. Must use "Cache" as bootstrap artifact source.
Expand Down Expand Up @@ -752,6 +762,8 @@
text: az aks create -g MyResourceGroup -n MyManagedCluster --node-provisioning-mode Auto --node-provisioning-default-pools None
- name: Create a Kubernetes cluster with KataVmIsolation enabled.
text: az aks create -g MyResourceGroup -n MyManagedCluster --os-sku AzureLinux --vm-size Standard_D4s_v3 --workload-runtime KataVmIsolation --node-count 1
- name: Create a kubernetes cluster with a managed installation of Gateway API CRDs from the standard release channel.
text: az aks create -g MyResourceGroup -n MyManagedCluster --enable-gateway-api
"""

helps["aks update"] = """
Expand Down Expand Up @@ -1175,6 +1187,22 @@
- name: --disable-ai-toolchain-operator
type: bool
short-summary: Disable AI toolchain operator.
- name: --enable-app-routing-istio --enable-ari
type: bool
short-summary: Enable Gateway API based ingress on App Routing via Istio without service mesh functionality.
long-summary: |
This enables an ingress-only version of Istio that reconciles Gateway API resources for App Routing.
It does not provide service mesh functionality (e.g. mTLS, traffic management between services).
Cannot be used simultaneously with the Istio service mesh add-on (--enable-azure-service-mesh).
- name: --disable-app-routing-istio --disable-ari
type: bool
short-summary: Disable Gateway API based ingress on App Routing via Istio.
- name: --enable-gateway-api
type: bool
short-summary: Enable managed installation of Gateway API CRDs from the standard release channel.
- name: --disable-gateway-api
type: bool
short-summary: Disable managed installation of Gateway API CRDs.
- name: --bootstrap-container-registry-resource-id
type: string
short-summary: Configure container registry resource ID. Must use "Cache" as bootstrap artifact source.
Expand Down Expand Up @@ -1263,6 +1291,10 @@
text: az aks update -g MyResourceGroup -n MyManagedCluster --node-provisioning-mode Auto --node-provisioning-default-pools None
- name: Upgrade load balancer sku to standard
text: az aks update --load-balancer-sku standard -g MyResourceGroup -n MyManagedCluster
- name: Update a kubernetes cluster to enable a managed installation of Gateway API CRDs from the standard release channel.
text: az aks update -g MyResourceGroup -n MyManagedCluster --enable-gateway-api
- name: Update a kubernetes cluster to disable the managed installation of Gateway API CRDs.
text: az aks update -g MyResourceGroup -n MyManagedCluster --disable-gateway-api
"""

helps["aks delete"] = """
Expand Down Expand Up @@ -3028,6 +3060,41 @@
long-summary: This command lists the DNS zone resources used in App Routing.
"""

helps["aks approuting gateway"] = """
type: group
short-summary: Commands to manage App Routing Gateway API implementations.
long-summary: A group of commands to manage Gateway API implementations for App Routing in a given cluster.
"""

helps["aks approuting gateway istio"] = """
type: group
short-summary: Commands to manage the Istio Gateway API implementation for App Routing.
long-summary: A group of commands to manage the Istio-based Gateway API implementation for App Routing in a given cluster.
"""

helps["aks approuting gateway istio enable"] = """
type: command
short-summary: Enable Gateway API based ingress on App Routing via Istio without service mesh functionality.
long-summary: |
This command enables an ingress-only version of Istio as a Gateway API implementation for App Routing
in the given cluster. This Istio instance only reconciles Gateway API resources and does not provide
service mesh functionality (e.g. mTLS, traffic management between services). Cannot be used
simultaneously with Azure Service Mesh (az aks mesh enable).
examples:
- name: Enable Istio Gateway API implementation for App Routing.
text: az aks approuting gateway istio enable --resource-group MyResourceGroup --name MyManagedCluster
"""

helps["aks approuting gateway istio disable"] = """
type: command
short-summary: Disable Gateway API based ingress on App Routing via Istio.
long-summary: |
This command disables the ingress-only Istio Gateway API implementation for App Routing in the given cluster.
examples:
- name: Disable Istio Gateway API implementation for App Routing.
text: az aks approuting gateway istio disable --resource-group MyResourceGroup --name MyManagedCluster
"""

helps["aks machine"] = """
type: group
short-summary: Get information about machines in a nodepool of a managed clusters
Expand Down
33 changes: 33 additions & 0 deletions src/azure-cli/azure/cli/command_modules/acs/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,17 @@ def load_arguments(self, _):
'by that action.'
)
)
c.argument(
"enable_app_routing_istio",
options_list=["--enable-app-routing-istio", "--enable-ari"],
action="store_true",
help="Enable Gateway API based ingress on App Routing via Istio"
)
c.argument(
"enable_gateway_api",
action="store_true",
help="Enable managed installation of Gateway API CRDs from the standard release channel."
)

with self.argument_context('aks update') as c:
# managed cluster paramerters
Expand Down Expand Up @@ -880,6 +891,28 @@ def load_arguments(self, _):
'by that action.'
)
)
c.argument(
"enable_app_routing_istio",
options_list=["--enable-app-routing-istio", "--enable-ari"],
action="store_true",
help="Enable Gateway API based ingress on App Routing via Istio."
)
c.argument(
"disable_app_routing_istio",
options_list=["--disable-app-routing-istio", "--disable-ari"],
action="store_true",
help="Disable Gateway API based ingress on App Routing via Istio."
)
c.argument(
"enable_gateway_api",
action="store_true",
help="Enable managed installation of Gateway API CRDs from the standard release channel."
)
c.argument(
"disable_gateway_api",
action="store_true",
help="Disable managed installation of Gateway API CRDs."
)
with self.argument_context('aks delete') as c:
c.argument("if_match")
c.argument("if_none_match")
Expand Down
5 changes: 5 additions & 0 deletions src/azure-cli/azure/cli/command_modules/acs/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,11 @@ def load_command_table(self, _):
g.custom_command('update', 'aks_approuting_zone_update')
g.custom_command('list', 'aks_approuting_zone_list')

# AKS approuting gateway istio commands
with self.command_group('aks approuting gateway istio', managed_clusters_sdk, client_factory=cf_managed_clusters) as g:
g.custom_command('enable', 'aks_approuting_gateway_istio_enable')
g.custom_command('disable', 'aks_approuting_gateway_istio_disable', confirmation=True)

with self.command_group('aks safeguards'):
from .custom import AKSSafeguardsShowCustom as Show
from .custom import AKSSafeguardsCreateCustom as Create
Expand Down
43 changes: 42 additions & 1 deletion src/azure-cli/azure/cli/command_modules/acs/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -1040,6 +1040,10 @@ def aks_create(
# node provisioning
node_provisioning_mode=None,
node_provisioning_default_pools=None,
# app routing istio
enable_app_routing_istio=False,
# gateway api
enable_gateway_api=False,
):
# DO NOT MOVE: get all the original parameters and save them as a dictionary
raw_parameters = locals()
Expand Down Expand Up @@ -1235,6 +1239,12 @@ def aks_update(
# node provisioning
node_provisioning_mode=None,
node_provisioning_default_pools=None,
# app routing istio
enable_app_routing_istio=False,
disable_app_routing_istio=False,
# gateway api
enable_gateway_api=False,
disable_gateway_api=False,
):
# DO NOT MOVE: get all the original parameters and save them as a dictionary
raw_parameters = locals()
Expand Down Expand Up @@ -3999,6 +4009,34 @@ def aks_approuting_disable(
enable_app_routing=False)


def aks_approuting_gateway_istio_enable(
cmd,
client,
resource_group_name,
name,
):
return _aks_approuting_update(
cmd,
client,
resource_group_name,
name,
enable_app_routing_istio=True)


def aks_approuting_gateway_istio_disable(
cmd,
client,
resource_group_name,
name,
):
return _aks_approuting_update(
cmd,
client,
resource_group_name,
name,
disable_app_routing_istio=True)


def aks_approuting_update(
cmd,
client,
Expand Down Expand Up @@ -4111,7 +4149,9 @@ def _aks_approuting_update(
update_dns_zone=None,
dns_zone_resource_ids=None,
attach_zones=None,
nginx=None
nginx=None,
enable_app_routing_istio=None,
disable_app_routing_istio=None,
):
from azure.cli.command_modules.acs.managed_cluster_decorator import AKSManagedClusterUpdateDecorator

Expand All @@ -4127,6 +4167,7 @@ def _aks_approuting_update(
try:
mc = aks_update_decorator.fetch_mc()
mc = aks_update_decorator.update_app_routing_profile(mc)
mc = aks_update_decorator.update_ingress_profile_app_routing_istio(mc)
except DecoratorEarlyExitException:
return None

Expand Down
Loading
Loading