Skip to content

Commit 19bd81f

Browse files
committed
feat(acns) add advanced network policies options for az create and update commands
1 parent a3cc309 commit 19bd81f

File tree

9 files changed

+1973
-1
lines changed

9 files changed

+1973
-1
lines changed

src/aks-preview/azext_aks_preview/_consts.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@
125125
CONST_NETWORK_POLICY_CILIUM = "cilium"
126126
CONST_NETWORK_POLICY_NONE = "none"
127127

128+
# ACNS advanced network policies
129+
CONST_ADVANCED_NETWORKPOLICIES_NONE = "None"
130+
CONST_ADVANCED_NETWORKPOLICIES_FQDN = "FQDN"
131+
CONST_ADVANCED_NETWORKPOLICIES_L7 = "L7"
132+
128133
# network pod ip allocation mode
129134
CONST_NETWORK_POD_IP_ALLOCATION_MODE_DYNAMIC_INDIVIDUAL = "DynamicIndividual"
130135
CONST_NETWORK_POD_IP_ALLOCATION_MODE_STATIC_BLOCK = "StaticBlock"

src/aks-preview/azext_aks_preview/_help.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,9 @@
228228
- name: --disable-acns-security
229229
type: bool
230230
short-summary: Used to disable advanced networking security features on a clusters when enabling advanced networking features with "--enable-acns".
231+
- name: --acns-advanced-networkpolicies
232+
type: string
233+
short-summary: Used to enable advanced network policies (None, FQDN or L7) on a cluster when enabling advanced networking features with "--enable-acns".
231234
- name: --no-ssh-key -x
232235
type: string
233236
short-summary: Do not use or create a local SSH key.
@@ -1214,6 +1217,9 @@
12141217
- name: --disable-acns-security
12151218
type: bool
12161219
short-summary: Used to disable advanced networking security features on a clusters when enabling advanced networking features with "--enable-acns".
1220+
- name: --acns-advanced-networkpolicies
1221+
type: string
1222+
short-summary: Used to enable advanced network policies (None, FQDN or L7) on a cluster when enabling advanced networking features with "--enable-acns".
12171223
- name: --enable-cost-analysis
12181224
type: bool
12191225
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.

src/aks-preview/azext_aks_preview/_params.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@
130130
CONST_APP_ROUTING_NONE_NGINX,
131131
CONST_GPU_DRIVER_TYPE_CUDA,
132132
CONST_GPU_DRIVER_TYPE_GRID,
133+
CONST_ADVANCED_NETWORKPOLICIES_NONE,
134+
CONST_ADVANCED_NETWORKPOLICIES_FQDN,
135+
CONST_ADVANCED_NETWORKPOLICIES_L7,
133136
)
134137
from azext_aks_preview._validators import (
135138
validate_acr,
@@ -277,6 +280,11 @@
277280
CONST_NETWORK_PLUGIN_NONE,
278281
]
279282
network_plugin_modes = [CONST_NETWORK_PLUGIN_MODE_OVERLAY]
283+
advanced_networkpolicies = [
284+
CONST_ADVANCED_NETWORKPOLICIES_NONE,
285+
CONST_ADVANCED_NETWORKPOLICIES_FQDN,
286+
CONST_ADVANCED_NETWORKPOLICIES_L7,
287+
]
280288
network_dataplanes = [CONST_NETWORK_DATAPLANE_AZURE, CONST_NETWORK_DATAPLANE_CILIUM]
281289
disk_driver_versions = [CONST_DISK_DRIVER_V1, CONST_DISK_DRIVER_V2]
282290
outbound_types = [
@@ -825,6 +833,11 @@ def load_arguments(self, _):
825833
"disable_acns_security",
826834
action="store_true",
827835
)
836+
c.argument(
837+
"acns_advanced_networkpolicies",
838+
is_preview=True,
839+
arg_type=get_enum_type(advanced_networkpolicies),
840+
)
828841
c.argument(
829842
"custom_ca_trust_certificates",
830843
options_list=["--custom-ca-trust-certificates", "--ca-certs"],
@@ -1303,6 +1316,11 @@ def load_arguments(self, _):
13031316
"disable_acns_security",
13041317
action="store_true",
13051318
)
1319+
c.argument(
1320+
"acns_advanced_networkpolicies",
1321+
is_preview=True,
1322+
arg_type=get_enum_type(advanced_networkpolicies),
1323+
)
13061324
c.argument("enable_cost_analysis", action="store_true")
13071325
c.argument("disable_cost_analysis", action="store_true")
13081326
c.argument('enable_ai_toolchain_operator', is_preview=True, action='store_true')

src/aks-preview/azext_aks_preview/custom.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,8 @@ def aks_create(
493493
enable_acns=None,
494494
disable_acns_observability=None,
495495
disable_acns_security=None,
496+
acns_advanced_networkpolicies=None,
497+
acns_transit_encryption_type=None,
496498
# nodepool
497499
crg_id=None,
498500
message_of_the_day=None,
@@ -724,6 +726,8 @@ def aks_update(
724726
disable_acns=None,
725727
disable_acns_observability=None,
726728
disable_acns_security=None,
729+
acns_advanced_networkpolicies=None,
730+
acns_transit_encryption_type=None,
727731
# metrics profile
728732
enable_cost_analysis=False,
729733
disable_cost_analysis=False,

src/aks-preview/azext_aks_preview/managed_cluster_decorator.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,21 @@ def get_acns_security(self) -> Union[bool, None]:
763763
return not disable_acns_security
764764
return None
765765

766+
def get_acns_advanced_networkpolicies(self) -> Union[str, None]:
767+
"""Get the value of acns_advanced_networkpolicies
768+
769+
:return: str or None
770+
"""
771+
disable_acns_security = self.raw_param.get("disable_acns_security")
772+
disable_acns = self.raw_param.get("disable_acns")
773+
acns_advanced_networkpolicies = self.raw_param.get("acns_advanced_networkpolicies")
774+
if acns_advanced_networkpolicies is not None:
775+
if disable_acns_security or disable_acns:
776+
raise MutuallyExclusiveArgumentError(
777+
"--disable-acns-security and --disable-acns cannot be used with acns_advanced_networkpolicies."
778+
)
779+
return self.raw_param.get("acns_advanced_networkpolicies")
780+
766781
def get_load_balancer_managed_outbound_ip_count(self) -> Union[int, None]:
767782
"""Obtain the value of load_balancer_managed_outbound_ip_count.
768783
@@ -2939,6 +2954,7 @@ def set_up_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
29392954

29402955
acns = None
29412956
(acns_enabled, acns_observability_enabled, acns_security_enabled) = self.context.get_acns_enablement()
2957+
acns_advanced_networkpolicies = self.context.get_acns_advanced_networkpolicies()
29422958
if acns_enabled is not None:
29432959
acns = self.models.AdvancedNetworking(
29442960
enabled=acns_enabled,
@@ -2951,8 +2967,14 @@ def set_up_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
29512967
acns.security = self.models.AdvancedNetworkingSecurity(
29522968
enabled=acns_security_enabled,
29532969
)
2970+
if acns_advanced_networkpolicies is not None:
2971+
if acns.security is None:
2972+
acns.security = self.models.AdvancedNetworkingSecurity(
2973+
advanced_network_policies=acns_advanced_networkpolicies
2974+
)
2975+
else:
2976+
acns.security.advanced_network_policies = acns_advanced_networkpolicies
29542977
network_profile.advanced_networking = acns
2955-
29562978
return mc
29572979

29582980
def set_up_api_server_access_profile(self, mc: ManagedCluster) -> ManagedCluster:
@@ -4025,6 +4047,7 @@ def update_acns_in_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
40254047

40264048
acns = None
40274049
(acns_enabled, acns_observability_enabled, acns_security_enabled) = self.context.get_acns_enablement()
4050+
acns_advanced_networkpolicies = self.context.get_acns_advanced_networkpolicies()
40284051
if acns_enabled is not None:
40294052
acns = self.models.AdvancedNetworking(
40304053
enabled=acns_enabled,
@@ -4037,6 +4060,13 @@ def update_acns_in_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
40374060
acns.security = self.models.AdvancedNetworkingSecurity(
40384061
enabled=acns_security_enabled,
40394062
)
4063+
if acns_advanced_networkpolicies is not None:
4064+
if acns.security is None:
4065+
acns.security = self.models.AdvancedNetworkingSecurity(
4066+
advanced_network_policies=acns_advanced_networkpolicies
4067+
)
4068+
else:
4069+
acns.security.advanced_network_policies = acns_advanced_networkpolicies
40404070
mc.network_profile.advanced_networking = acns
40414071
return mc
40424072

0 commit comments

Comments
 (0)