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
4 changes: 4 additions & 0 deletions src/aks-preview/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ To release a new version, please select a new version number (usually plus 1 to
Pending
+++++++

18.0.0b33
+++++++
* `az aks create`: Add new parameter `--kms-infrastructure-encryption` to enable KMS infrastructure encryption.

18.0.0b32
+++++++
* Remove the sku preview flag from help command for AKS automatic
Expand Down
4 changes: 4 additions & 0 deletions src/aks-preview/azext_aks_preview/_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,10 @@
- name: --azure-keyvault-kms-key-vault-resource-id
type: string
short-summary: Resource ID of Azure Key Vault.
- name: --kms-infrastructure-encryption
type: string
short-summary: Enable encryption at rest of Kubernetes resource objects using service-managed keys.
long-summary: Enable infrastructure encryption for Kubernetes resource objects. This feature provides encryption at rest for cluster secrets and configuration using service-managed keys. For more information see https://aka.ms/aks/kubernetesResourceObjectEncryption.
- name: --enable-image-cleaner
type: bool
short-summary: Enable ImageCleaner Service.
Expand Down
6 changes: 6 additions & 0 deletions src/aks-preview/azext_aks_preview/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,12 @@ def load_arguments(self, _):
"azure_keyvault_kms_key_vault_resource_id",
validator=validate_azure_keyvault_kms_key_vault_resource_id,
)
c.argument(
"kms_infrastructure_encryption",
arg_type=get_enum_type(["Enabled", "Disabled"]),
default="Disabled",
is_preview=True,
)
c.argument("http_proxy_config")
c.argument(
"bootstrap_artifact_source",
Expand Down
1 change: 1 addition & 0 deletions src/aks-preview/azext_aks_preview/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -609,6 +609,7 @@ def aks_create(
azure_keyvault_kms_key_id=None,
azure_keyvault_kms_key_vault_network_access=None,
azure_keyvault_kms_key_vault_resource_id=None,
kms_infrastructure_encryption="Disabled",
http_proxy_config=None,
bootstrap_artifact_source=CONST_ARTIFACT_SOURCE_DIRECT,
bootstrap_container_registry_resource_id=None,
Expand Down
36 changes: 36 additions & 0 deletions src/aks-preview/azext_aks_preview/managed_cluster_decorator.py
Original file line number Diff line number Diff line change
Expand Up @@ -1231,6 +1231,16 @@ def get_disable_image_integrity(self) -> bool:

return disable_image_integrity

def get_kms_infrastructure_encryption(self) -> str:
"""Obtain the value of kms_infrastructure_encryption.

:return: str
"""
# read the original value passed by the command
kms_infrastructure_encryption = self.raw_param.get("kms_infrastructure_encryption")

return kms_infrastructure_encryption

def get_cluster_snapshot_id(self) -> Union[str, None]:
"""Obtain the values of cluster_snapshot_id.

Expand Down Expand Up @@ -3250,6 +3260,30 @@ def set_up_image_integrity(self, mc: ManagedCluster) -> ManagedCluster:

return mc

def set_up_kms_infrastructure_encryption(self, mc: ManagedCluster) -> ManagedCluster:
"""Set up security profile KubernetesResourceObjectEncryptionProfile for the ManagedCluster object.

:return: the ManagedCluster object
"""
self._ensure_mc(mc)

kms_infrastructure_encryption = self.context.get_kms_infrastructure_encryption()
if kms_infrastructure_encryption and kms_infrastructure_encryption != "Disabled":
if mc.security_profile is None:
mc.security_profile = self.models.ManagedClusterSecurityProfile() # pylint: disable=no-member

# Set or update the kubernetes resource object encryption profile
if mc.security_profile.kubernetes_resource_object_encryption_profile is None:
mc.security_profile.kubernetes_resource_object_encryption_profile = (
self.models.KubernetesResourceObjectEncryptionProfile() # pylint: disable=no-member
)

# Set infrastructure encryption
# pylint: disable=line-too-long
mc.security_profile.kubernetes_resource_object_encryption_profile.infrastructure_encryption = kms_infrastructure_encryption

return mc

def set_up_creationdata_of_cluster_snapshot(self, mc: ManagedCluster) -> ManagedCluster:
"""Set up creationData of cluster snapshot for the ManagedCluster object.

Expand Down Expand Up @@ -3784,6 +3818,8 @@ def construct_mc_profile_preview(self, bypass_restore_defaults: bool = False) ->
mc = self.set_up_image_cleaner(mc)
# set up image integrity
mc = self.set_up_image_integrity(mc)
# set up KMS infrastructure encryption
mc = self.set_up_kms_infrastructure_encryption(mc)
# set up cluster snapshot
mc = self.set_up_creationdata_of_cluster_snapshot(mc)
# set up app routing profile
Expand Down
Loading
Loading