Skip to content

Commit 3314bd2

Browse files
committed
Add new --node-provisioning-default-pools parameter
1 parent 2ab972b commit 3314bd2

13 files changed

+2928
-7080
lines changed

src/aks-preview/HISTORY.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ To release a new version, please select a new version number (usually plus 1 to
1111

1212
Pending
1313
+++++++
14+
* Add `--node-provisioning-default-pools` to the `az aks update` command.
15+
* Add `--node-provisioning-default-pools` to the `az aks create` command.
1416

1517
18.0.0b11
1618
+++++++

src/aks-preview/azext_aks_preview/_consts.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,10 @@
315315
CONST_NODE_PROVISIONING_MODE_MANUAL = "Manual"
316316
CONST_NODE_PROVISIONING_MODE_AUTO = "Auto"
317317

318+
# Node Provisioning Default Pools Consts
319+
CONST_NODE_PROVISIONING_DEFAULT_POOLS_AUTO = "Auto"
320+
CONST_NODE_PROVISIONING_DEFAULT_POOLS_NONE = "None"
321+
318322
# Node Provisioning State Consts
319323
CONST_NODE_PROVISIONING_STATE_SUCCEEDED = "Succeeded"
320324

src/aks-preview/azext_aks_preview/_help.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,14 @@
596596
- name: --node-provisioning-mode
597597
type: string
598598
short-summary: Set the node provisioning mode of the cluster. Valid values are "Auto" and "Manual". For more information on "Auto" mode see aka.ms/aks/nap.
599+
- name: --node-provisioning-default-pools
600+
type: string
601+
short-summary: The set of default Karpenter NodePools configured for node provisioning. Valid values are "Auto" and "None".
602+
long-summary: |-
603+
The set of default Karpenter NodePools configured for node provisioning. Valid values are "Auto" and "None".
604+
Auto: A standard set of Karpenter NodePools are provisioned.
605+
None: No Karpenter NodePools are provisioned.
606+
WARNING: Changing this from Auto to None on an existing cluster will cause the default Karpenter NodePools to be deleted, which will in turn drain and delete the nodes associated with those pools. It is strongly recommended to not do this unless there are idle nodes ready to take the pods evicted by that action.
599607
- name: --enable-app-routing
600608
type: bool
601609
short-summary: Enable Application Routing addon.
@@ -1230,6 +1238,14 @@
12301238
- name: --node-provisioning-mode
12311239
type: string
12321240
short-summary: Set the node provisioning mode of the cluster. Valid values are "Auto" and "Manual". For more information on "Auto" mode see aka.ms/aks/nap.
1241+
- name: --node-provisioning-default-pools
1242+
type: string
1243+
short-summary: The set of default Karpenter NodePools configured for node provisioning. Valid values are "Auto" and "None".
1244+
long-summary: |-
1245+
The set of default Karpenter NodePools configured for node provisioning. Valid values are "Auto" and "None".
1246+
Auto: A standard set of Karpenter NodePools are provisioned.
1247+
None: No Karpenter NodePools are provisioned.
1248+
WARNING: Changing this from Auto to None on an existing cluster will cause the default Karpenter NodePools to be deleted, which will in turn drain and delete the nodes associated with those pools. It is strongly recommended to not do this unless there are idle nodes ready to take the pods evicted by that action.
12331249
- name: --enable-ai-toolchain-operator
12341250
type: bool
12351251
short-summary: Enable AI toolchain operator to the cluster

src/aks-preview/azext_aks_preview/_params.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@
126126
CONST_WORKLOAD_RUNTIME_WASM_WASI,
127127
CONST_NODE_PROVISIONING_MODE_MANUAL,
128128
CONST_NODE_PROVISIONING_MODE_AUTO,
129+
CONST_NODE_PROVISIONING_DEFAULT_POOLS_AUTO,
130+
CONST_NODE_PROVISIONING_DEFAULT_POOLS_NONE,
129131
CONST_MANAGED_CLUSTER_SKU_NAME_BASE,
130132
CONST_MANAGED_CLUSTER_SKU_NAME_AUTOMATIC,
131133
CONST_SSH_ACCESS_LOCALUSER,
@@ -450,12 +452,16 @@
450452
CONST_EPHEMERAL_NVME_PERF_TIER_STANDARD,
451453
]
452454

453-
# consts for guardrails level
454455
node_provisioning_modes = [
455456
CONST_NODE_PROVISIONING_MODE_MANUAL,
456457
CONST_NODE_PROVISIONING_MODE_AUTO,
457458
]
458459

460+
node_provisioning_default_pools = [
461+
CONST_NODE_PROVISIONING_DEFAULT_POOLS_AUTO,
462+
CONST_NODE_PROVISIONING_DEFAULT_POOLS_NONE,
463+
]
464+
459465
ssh_accesses = [
460466
CONST_SSH_ACCESS_LOCALUSER,
461467
CONST_SSH_ACCESS_DISABLED,
@@ -1004,6 +1010,20 @@ def load_arguments(self, _):
10041010
'For more information on "Auto" mode see aka.ms/aks/nap.'
10051011
)
10061012
)
1013+
c.argument(
1014+
"node_provisioning_default_pools",
1015+
is_preview=True,
1016+
arg_type=get_enum_type(node_provisioning_default_pools),
1017+
help=(
1018+
'The set of default Karpenter NodePools configured for node provisioning. '
1019+
'Valid values are "Auto" and "None". Auto: A standard set of Karpenter NodePools are provisioned. '
1020+
'None: No Karpenter NodePools are provisioned. '
1021+
'WARNING: Changing this from Auto to None on an existing cluster will cause the default Karpenter '
1022+
'NodePools to be deleted, which will in turn drain and delete the nodes associated with those pools. '
1023+
'It is strongly recommended to not do this unless there are idle nodes ready to take the pods evicted '
1024+
'by that action.'
1025+
)
1026+
)
10071027
# in creation scenario, use "localuser" as default
10081028
c.argument(
10091029
'ssh_access',
@@ -1443,6 +1463,20 @@ def load_arguments(self, _):
14431463
'For more information on "Auto" mode see aka.ms/aks/nap.'
14441464
)
14451465
)
1466+
c.argument(
1467+
"node_provisioning_default_pools",
1468+
is_preview=True,
1469+
arg_type=get_enum_type(node_provisioning_default_pools),
1470+
help=(
1471+
'The set of default Karpenter NodePools configured for node provisioning. '
1472+
'Valid values are "Auto" and "None". Auto: A standard set of Karpenter NodePools are provisioned. '
1473+
'None: No Karpenter NodePools are provisioned. '
1474+
'WARNING: Changing this from Auto to None on an existing cluster will cause the default Karpenter '
1475+
'NodePools to be deleted, which will in turn drain and delete the nodes associated with those pools. '
1476+
'It is strongly recommended to not do this unless there are idle nodes ready to take the pods evicted '
1477+
'by that action.'
1478+
)
1479+
)
14461480
c.argument('enable_static_egress_gateway', is_preview=True, action='store_true')
14471481
c.argument('disable_static_egress_gateway', is_preview=True, action='store_true')
14481482
c.argument("enable_imds_restriction", action="store_true", is_preview=True)

src/aks-preview/azext_aks_preview/custom.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,7 @@ def aks_create(
717717
ephemeral_disk_volume_type=None,
718718
ephemeral_disk_nvme_perf_tier=None,
719719
node_provisioning_mode=None,
720+
node_provisioning_default_pools=None,
720721
ssh_access=CONST_SSH_ACCESS_LOCALUSER,
721722
# trusted launch
722723
enable_secure_boot=False,
@@ -930,6 +931,7 @@ def aks_update(
930931
ephemeral_disk_volume_type=None,
931932
ephemeral_disk_nvme_perf_tier=None,
932933
node_provisioning_mode=None,
934+
node_provisioning_default_pools=None,
933935
cluster_service_load_balancer_health_probe_mode=None,
934936
if_match=None,
935937
if_none_match=None,

src/aks-preview/azext_aks_preview/managed_cluster_decorator.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2734,6 +2734,11 @@ def get_node_provisioning_mode(self) -> Union[str, None]:
27342734
"""
27352735
return self.raw_param.get("node_provisioning_mode")
27362736

2737+
def get_node_provisioning_default_pools(self) -> Union[str, None]:
2738+
"""Obtain the value of node_provisioning_default_pools.
2739+
"""
2740+
return self.raw_param.get("node_provisioning_default_pools")
2741+
27372742
def get_ai_toolchain_operator(self, enable_validation: bool = False) -> bool:
27382743
"""Internal function to obtain the value of enable_ai_toolchain_operator.
27392744
@@ -3507,10 +3512,26 @@ def set_up_node_provisioning_mode(self, mc: ManagedCluster) -> ManagedCluster:
35073512

35083513
return mc
35093514

3515+
def set_up_node_provisioning_default_pools(self, mc: ManagedCluster) -> ManagedCluster:
3516+
self._ensure_mc(mc)
3517+
3518+
default_pools = self.context.get_node_provisioning_default_pools()
3519+
if default_pools is not None:
3520+
if mc.node_provisioning_profile is None:
3521+
mc.node_provisioning_profile = (
3522+
self.models.ManagedClusterNodeProvisioningProfile() # pylint: disable=no-member
3523+
)
3524+
3525+
# set default_node_pools
3526+
mc.node_provisioning_profile.default_node_pools = default_pools
3527+
3528+
return mc
3529+
35103530
def set_up_node_provisioning_profile(self, mc: ManagedCluster) -> ManagedCluster:
35113531
self._ensure_mc(mc)
35123532

35133533
mc = self.set_up_node_provisioning_mode(mc)
3534+
mc = self.set_up_node_provisioning_default_pools(mc)
35143535

35153536
return mc
35163537

@@ -5015,6 +5036,21 @@ def update_node_provisioning_mode(self, mc: ManagedCluster) -> ManagedCluster:
50155036

50165037
return mc
50175038

5039+
def update_node_provisioning_default_pools(self, mc: ManagedCluster) -> ManagedCluster:
5040+
self._ensure_mc(mc)
5041+
5042+
default_pools = self.context.get_node_provisioning_default_pools()
5043+
if default_pools is not None:
5044+
if mc.node_provisioning_profile is None:
5045+
mc.node_provisioning_profile = (
5046+
self.models.ManagedClusterNodeProvisioningProfile() # pylint: disable=no-member
5047+
)
5048+
5049+
# set default_node_pools
5050+
mc.node_provisioning_profile.default_node_pools = default_pools
5051+
5052+
return mc
5053+
50185054
# pylint: disable=too-many-branches
50195055
def update_app_routing_profile(self, mc: ManagedCluster) -> ManagedCluster:
50205056
"""Update app routing profile for the ManagedCluster object.
@@ -5177,6 +5213,7 @@ def update_node_provisioning_profile(self, mc: ManagedCluster) -> ManagedCluster
51775213
self._ensure_mc(mc)
51785214

51795215
mc = self.update_node_provisioning_mode(mc)
5216+
mc = self.update_node_provisioning_default_pools(mc)
51805217

51815218
return mc
51825219

0 commit comments

Comments
 (0)