Skip to content
Merged
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
1 change: 1 addition & 0 deletions src/aks-preview/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ To release a new version, please select a new version number (usually plus 1 to

Pending
+++++++
* Add option `--acns-advanced-networkpolicies <None|FQDN|L7>` to `az aks create/update`

14.0.0b5
++++++++
Expand Down
5 changes: 5 additions & 0 deletions src/aks-preview/azext_aks_preview/_consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,11 @@
CONST_NETWORK_POLICY_CILIUM = "cilium"
CONST_NETWORK_POLICY_NONE = "none"

# ACNS advanced network policies
CONST_ADVANCED_NETWORKPOLICIES_NONE = "None"
CONST_ADVANCED_NETWORKPOLICIES_FQDN = "FQDN"
CONST_ADVANCED_NETWORKPOLICIES_L7 = "L7"

# network pod ip allocation mode
CONST_NETWORK_POD_IP_ALLOCATION_MODE_DYNAMIC_INDIVIDUAL = "DynamicIndividual"
CONST_NETWORK_POD_IP_ALLOCATION_MODE_STATIC_BLOCK = "StaticBlock"
Expand Down
6 changes: 6 additions & 0 deletions src/aks-preview/azext_aks_preview/_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,9 @@
- name: --disable-acns-security
type: bool
short-summary: Used to disable advanced networking security features on a clusters when enabling advanced networking features with "--enable-acns".
- name: --acns-advanced-networkpolicies
type: string
short-summary: Used to enable advanced network policies (None, FQDN or L7) on a cluster when enabling advanced networking features with "--enable-acns".
- name: --no-ssh-key -x
type: string
short-summary: Do not use or create a local SSH key.
Expand Down Expand Up @@ -1214,6 +1217,9 @@
- name: --disable-acns-security
type: bool
short-summary: Used to disable advanced networking security features on a clusters when enabling advanced networking features with "--enable-acns".
- name: --acns-advanced-networkpolicies
type: string
short-summary: Used to enable advanced network policies (None, FQDN or L7) on a cluster when enabling advanced networking features with "--enable-acns".
- name: --enable-cost-analysis
type: bool
short-summary: Enable exporting Kubernetes Namespace and Deployment details to the Cost Analysis views in the Azure portal. For more information see aka.ms/aks/docs/cost-analysis.
Expand Down
18 changes: 18 additions & 0 deletions src/aks-preview/azext_aks_preview/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,9 @@
CONST_APP_ROUTING_NONE_NGINX,
CONST_GPU_DRIVER_TYPE_CUDA,
CONST_GPU_DRIVER_TYPE_GRID,
CONST_ADVANCED_NETWORKPOLICIES_NONE,
CONST_ADVANCED_NETWORKPOLICIES_FQDN,
CONST_ADVANCED_NETWORKPOLICIES_L7,
)
from azext_aks_preview._validators import (
validate_acr,
Expand Down Expand Up @@ -277,6 +280,11 @@
CONST_NETWORK_PLUGIN_NONE,
]
network_plugin_modes = [CONST_NETWORK_PLUGIN_MODE_OVERLAY]
advanced_networkpolicies = [
CONST_ADVANCED_NETWORKPOLICIES_NONE,
CONST_ADVANCED_NETWORKPOLICIES_FQDN,
CONST_ADVANCED_NETWORKPOLICIES_L7,
]
network_dataplanes = [CONST_NETWORK_DATAPLANE_AZURE, CONST_NETWORK_DATAPLANE_CILIUM]
disk_driver_versions = [CONST_DISK_DRIVER_V1, CONST_DISK_DRIVER_V2]
outbound_types = [
Expand Down Expand Up @@ -825,6 +833,11 @@ def load_arguments(self, _):
"disable_acns_security",
action="store_true",
)
c.argument(
"acns_advanced_networkpolicies",
is_preview=True,
arg_type=get_enum_type(advanced_networkpolicies),
)
c.argument(
"custom_ca_trust_certificates",
options_list=["--custom-ca-trust-certificates", "--ca-certs"],
Expand Down Expand Up @@ -1303,6 +1316,11 @@ def load_arguments(self, _):
"disable_acns_security",
action="store_true",
)
c.argument(
"acns_advanced_networkpolicies",
is_preview=True,
arg_type=get_enum_type(advanced_networkpolicies),
)
c.argument("enable_cost_analysis", action="store_true")
c.argument("disable_cost_analysis", action="store_true")
c.argument('enable_ai_toolchain_operator', is_preview=True, action='store_true')
Expand Down
2 changes: 2 additions & 0 deletions src/aks-preview/azext_aks_preview/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,7 @@ def aks_create(
enable_acns=None,
disable_acns_observability=None,
disable_acns_security=None,
acns_advanced_networkpolicies=None,
# nodepool
crg_id=None,
message_of_the_day=None,
Expand Down Expand Up @@ -724,6 +725,7 @@ def aks_update(
disable_acns=None,
disable_acns_observability=None,
disable_acns_security=None,
acns_advanced_networkpolicies=None,
# metrics profile
enable_cost_analysis=False,
disable_cost_analysis=False,
Expand Down
32 changes: 31 additions & 1 deletion src/aks-preview/azext_aks_preview/managed_cluster_decorator.py
Original file line number Diff line number Diff line change
Expand Up @@ -763,6 +763,21 @@ def get_acns_security(self) -> Union[bool, None]:
return not disable_acns_security
return None

def get_acns_advanced_networkpolicies(self) -> Union[str, None]:
"""Get the value of acns_advanced_networkpolicies

:return: str or None
"""
disable_acns_security = self.raw_param.get("disable_acns_security")
disable_acns = self.raw_param.get("disable_acns")
acns_advanced_networkpolicies = self.raw_param.get("acns_advanced_networkpolicies")
if acns_advanced_networkpolicies is not None:
if disable_acns_security or disable_acns:
raise MutuallyExclusiveArgumentError(
"--disable-acns-security and --disable-acns cannot be used with acns_advanced_networkpolicies."
)
return self.raw_param.get("acns_advanced_networkpolicies")

def get_load_balancer_managed_outbound_ip_count(self) -> Union[int, None]:
"""Obtain the value of load_balancer_managed_outbound_ip_count.

Expand Down Expand Up @@ -2939,6 +2954,7 @@ def set_up_network_profile(self, mc: ManagedCluster) -> ManagedCluster:

acns = None
(acns_enabled, acns_observability_enabled, acns_security_enabled) = self.context.get_acns_enablement()
acns_advanced_networkpolicies = self.context.get_acns_advanced_networkpolicies()
if acns_enabled is not None:
acns = self.models.AdvancedNetworking(
enabled=acns_enabled,
Expand All @@ -2951,8 +2967,14 @@ def set_up_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
acns.security = self.models.AdvancedNetworkingSecurity(
enabled=acns_security_enabled,
)
if acns_advanced_networkpolicies is not None:
if acns.security is None:
acns.security = self.models.AdvancedNetworkingSecurity(
advanced_network_policies=acns_advanced_networkpolicies
)
else:
acns.security.advanced_network_policies = acns_advanced_networkpolicies
network_profile.advanced_networking = acns

return mc

def set_up_api_server_access_profile(self, mc: ManagedCluster) -> ManagedCluster:
Expand Down Expand Up @@ -4025,6 +4047,7 @@ def update_acns_in_network_profile(self, mc: ManagedCluster) -> ManagedCluster:

acns = None
(acns_enabled, acns_observability_enabled, acns_security_enabled) = self.context.get_acns_enablement()
acns_advanced_networkpolicies = self.context.get_acns_advanced_networkpolicies()
if acns_enabled is not None:
acns = self.models.AdvancedNetworking(
enabled=acns_enabled,
Expand All @@ -4037,6 +4060,13 @@ def update_acns_in_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
acns.security = self.models.AdvancedNetworkingSecurity(
enabled=acns_security_enabled,
)
if acns_advanced_networkpolicies is not None:
if acns.security is None:
acns.security = self.models.AdvancedNetworkingSecurity(
advanced_network_policies=acns_advanced_networkpolicies
)
else:
acns.security.advanced_network_policies = acns_advanced_networkpolicies
mc.network_profile.advanced_networking = acns
return mc

Expand Down
Loading
Loading