From 080eab1a9ff83bab59d59bcac2c0dc7f00a8ce6e Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Wed, 2 Aug 2023 16:38:36 -0700 Subject: [PATCH 01/14] OBO: arc mode in Guard --- src/connectedk8s/azext_connectedk8s/custom.py | 7 +------ src/connectedk8s/setup.py | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index e45e74f23a1..46dccdc1230 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1371,10 +1371,6 @@ def enable_features(cmd, client, resource_group_name, cluster_name, features, ku raise InvalidArgumentValueError("The features 'cluster-connect' and 'custom-locations' cannot be enabled for a private link enabled connected cluster.") if enable_azure_rbac: - if (azrbac_client_id is None) or (azrbac_client_secret is None): - telemetry.set_exception(exception='Application ID or secret is not provided for Azure RBAC', fault_type=consts.Application_Details_Not_Provided_For_Azure_RBAC_Fault, - summary='Application id, application secret is required to enable/update Azure RBAC feature') - raise RequiredArgumentMissingError("Please provide Application id, application secret to enable/update Azure RBAC feature") if azrbac_skip_authz_check is None: azrbac_skip_authz_check = "" azrbac_skip_authz_check = escape_proxy_settings(azrbac_skip_authz_check) @@ -1469,8 +1465,7 @@ def enable_features(cmd, client, resource_group_name, cluster_name, features, ku cmd_helm_upgrade.extend(["--kube-context", kube_context]) if enable_azure_rbac: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.enabled=true"]) - cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.clientId={}".format(azrbac_client_id)]) - cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.clientSecret={}".format(azrbac_client_secret)]) + cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) # new mode for latest OBO changes cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.skipAuthzCheck={}".format(azrbac_skip_authz_check)]) if enable_cluster_connect: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.clusterconnect-agent.enabled=true"]) diff --git a/src/connectedk8s/setup.py b/src/connectedk8s/setup.py index ba2ecdb5532..3e3a4ed9dbc 100644 --- a/src/connectedk8s/setup.py +++ b/src/connectedk8s/setup.py @@ -17,7 +17,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '1.3.20' +VERSION = '1.3.21' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers From 257e15427dd36e59277cce188e2028b97508ea90 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Thu, 3 Aug 2023 12:32:53 -0700 Subject: [PATCH 02/14] add release notes --- src/connectedk8s/HISTORY.rst | 7 ++++++- src/connectedk8s/azext_connectedk8s/custom.py | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/connectedk8s/HISTORY.rst b/src/connectedk8s/HISTORY.rst index c45c21a06bc..945b0f85e0d 100644 --- a/src/connectedk8s/HISTORY.rst +++ b/src/connectedk8s/HISTORY.rst @@ -2,6 +2,11 @@ Release History +1.3.21 +++++++ + +* Setting default authnMode to 'arc' when RBAC is enabled + 1.3.20 ++++++ @@ -71,7 +76,7 @@ Release History ++++++ * Added CLI heuristics change -* Added AKS IOT infra support +* Added AKS IOT infra support * Bug Fix in precheckutils 1.3.9 diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index 46dccdc1230..d59e9e8cb33 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1465,7 +1465,7 @@ def enable_features(cmd, client, resource_group_name, cluster_name, features, ku cmd_helm_upgrade.extend(["--kube-context", kube_context]) if enable_azure_rbac: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.enabled=true"]) - cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) # new mode for latest OBO changes + cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) # new mode for latest OBO changes cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.skipAuthzCheck={}".format(azrbac_skip_authz_check)]) if enable_cluster_connect: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.clusterconnect-agent.enabled=true"]) From c17b2d0e2a846e9a37c18cf7bc787bf4297d0150 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Tue, 22 Aug 2023 12:58:21 -0700 Subject: [PATCH 03/14] update comments --- src/connectedk8s/HISTORY.rst | 2 +- src/connectedk8s/azext_connectedk8s/custom.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/connectedk8s/HISTORY.rst b/src/connectedk8s/HISTORY.rst index 945b0f85e0d..47906218ad5 100644 --- a/src/connectedk8s/HISTORY.rst +++ b/src/connectedk8s/HISTORY.rst @@ -5,7 +5,7 @@ Release History 1.3.21 ++++++ -* Setting default authnMode to 'arc' when RBAC is enabled +* Setting guard default authnMode to 'arc' when RBAC is enabled 1.3.20 ++++++ diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index d59e9e8cb33..f997bbc19a3 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1465,7 +1465,10 @@ def enable_features(cmd, client, resource_group_name, cluster_name, features, ku cmd_helm_upgrade.extend(["--kube-context", kube_context]) if enable_azure_rbac: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.enabled=true"]) - cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) # new mode for latest OBO changes + # Setting the default authnMode mode as "arc" for guard. This mode used Arc RBAC 1P apps for authN/authZ. + # This needs + cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) + logger.warning("Please use the latest kubelogin version which has support for generating PoP token(s) needed by guard running in 'arc' authN mode.") cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.skipAuthzCheck={}".format(azrbac_skip_authz_check)]) if enable_cluster_connect: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.clusterconnect-agent.enabled=true"]) From aba962ccf8445a56780c39aadceb966a1ac5fab0 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Tue, 22 Aug 2023 13:23:38 -0700 Subject: [PATCH 04/14] update comments --- src/connectedk8s/HISTORY.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/connectedk8s/HISTORY.rst b/src/connectedk8s/HISTORY.rst index 508ea274bd9..469aa297288 100644 --- a/src/connectedk8s/HISTORY.rst +++ b/src/connectedk8s/HISTORY.rst @@ -3,14 +3,13 @@ Release History =============== -1.4.0 +1.4.1 ++++++ -* Added support for reading ARM metadata 2022-09-01. +* Setting guard default authnMode to 'arc' when RBAC is enabled. -1.3.21 +1.4.0 ++++++ - -* Setting guard default authnMode to 'arc' when RBAC is enabled +* Added support for reading ARM metadata 2022-09-01. 1.3.20 ++++++ From a8dbe561a3499f564f38c61af687ea0d9288c91b Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Tue, 22 Aug 2023 13:28:07 -0700 Subject: [PATCH 05/14] update comments --- src/connectedk8s/azext_connectedk8s/custom.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index 4eaf54989a1..99e85f3f27c 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1456,7 +1456,7 @@ def enable_features(cmd, client, resource_group_name, cluster_name, features, ku if enable_azure_rbac: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.enabled=true"]) # Setting the default authnMode mode as "arc" for guard. This mode used Arc RBAC 1P apps for authN/authZ. - # This needs + # This mode in guard uses PoP token bases auth. cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) logger.warning("Please use the latest kubelogin version which has support for generating PoP token(s) needed by guard running in 'arc' authN mode.") cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.skipAuthzCheck={}".format(azrbac_skip_authz_check)]) From 65ae830a98ca3aabbacb3c9bf70df123b26dee12 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Wed, 23 Aug 2023 11:30:29 -0700 Subject: [PATCH 06/14] update comments --- src/connectedk8s/azext_connectedk8s/custom.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index 99e85f3f27c..12fe991e492 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1456,7 +1456,7 @@ def enable_features(cmd, client, resource_group_name, cluster_name, features, ku if enable_azure_rbac: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.enabled=true"]) # Setting the default authnMode mode as "arc" for guard. This mode used Arc RBAC 1P apps for authN/authZ. - # This mode in guard uses PoP token bases auth. + # This mode in guard uses PoP token based auth. cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) logger.warning("Please use the latest kubelogin version which has support for generating PoP token(s) needed by guard running in 'arc' authN mode.") cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.skipAuthzCheck={}".format(azrbac_skip_authz_check)]) From fa445b93e6fd2315df73642c24f8d6c639acbd40 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Wed, 23 Aug 2023 11:47:21 -0700 Subject: [PATCH 07/14] rm artifacts --- .../connectedk8s-1.3.21-py2.py3-none-any.whl | Bin 142812 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/connectedk8s/connectedk8s-1.3.21-py2.py3-none-any.whl diff --git a/src/connectedk8s/connectedk8s-1.3.21-py2.py3-none-any.whl b/src/connectedk8s/connectedk8s-1.3.21-py2.py3-none-any.whl deleted file mode 100644 index 40f218d4e6ccd2b260c67290c003e388469dcfac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142812 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�B*NhmY$S=D_2jvj#ShubzAxP9Qwni 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�mwgonhiUBkzzbrtH}2w2ETx0Vl0HvC)}y?=3@&t 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%0DRd%wkZv{GA(d_Iqzf?cRpmF7 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 Date: Thu, 2 Nov 2023 16:21:56 -0400 Subject: [PATCH 08/14] test and cleanup --- src/connectedk8s/azext_connectedk8s/_constants.py | 1 - src/connectedk8s/azext_connectedk8s/_help.py | 2 +- src/connectedk8s/azext_connectedk8s/_params.py | 2 -- src/connectedk8s/azext_connectedk8s/custom.py | 2 +- .../tests/latest/test_connectedk8s_scenario.py | 4 ++-- 5 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/connectedk8s/azext_connectedk8s/_constants.py b/src/connectedk8s/azext_connectedk8s/_constants.py index 485075e5d39..62ed0fdca41 100644 --- a/src/connectedk8s/azext_connectedk8s/_constants.py +++ b/src/connectedk8s/azext_connectedk8s/_constants.py @@ -118,7 +118,6 @@ Operate_RG_Cluster_Name_Conflict = 'The provided cluster name and rg correspond to different cluster being operated on' Custom_Locations_Registration_Check_Fault_Type = "Error while checking resource provider registration of custom locations." Custom_Locations_OID_Fetch_Fault_Type = "Error while fetching oid for custom locations." -Application_Details_Not_Provided_For_Azure_RBAC_Fault = 'Application ID or secret not provided for Azure RBAC' Successfully_Enabled_Features = 'Successsfully enabled features: {} for the Connected Cluster {}' Successfully_Disabled_Features = 'Successsfully disabled features: {} for the Connected Cluster {}' Error_enabling_Features = 'Error while updating agents for enabling features. Please run \"kubectl get pods -n azure-arc\" to check the pods in case of timeout error. Error: {}' diff --git a/src/connectedk8s/azext_connectedk8s/_help.py b/src/connectedk8s/azext_connectedk8s/_help.py index 2fbb29b112b..7fdb2fdf63b 100644 --- a/src/connectedk8s/azext_connectedk8s/_help.py +++ b/src/connectedk8s/azext_connectedk8s/_help.py @@ -109,7 +109,7 @@ - name: Enables the Cluster-Connect feature. text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features cluster-connect - name: Enable Azure RBAC feature. - text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features azure-rbac --app-id appID --app-secret="appSecret" --skip-azure-rbac-list "user1@domain.com,spn_oid" + text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features azure-rbac --skip-azure-rbac-list "user1@domain.com,spn_oid" - name: Enable multiple features. text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features cluster-connect custom-locations """ diff --git a/src/connectedk8s/azext_connectedk8s/_params.py b/src/connectedk8s/azext_connectedk8s/_params.py index 042b4d2081b..d2b21eff1c9 100644 --- a/src/connectedk8s/azext_connectedk8s/_params.py +++ b/src/connectedk8s/azext_connectedk8s/_params.py @@ -80,8 +80,6 @@ def load_arguments(self, _): c.argument('kube_config', options_list=['--kube-config'], help='Path to the kube config file.') c.argument('kube_context', options_list=['--kube-context'], help='Kubconfig context from current machine.') c.argument('features', features_types, options_list=['--features'], help='Space-separated list of features you want to enable.') - c.argument('azrbac_client_id', options_list=['--app-id'], arg_group='Azure RBAC', help='Application ID for enabling Azure RBAC. Specify when enabling azure-rbac.') - c.argument('azrbac_client_secret', options_list=['--app-secret'], arg_group='Azure RBAC', help='Application secret for enabling Azure RBAC. Specify when enabling azure-rbac.') c.argument('azrbac_skip_authz_check', options_list=['--skip-azure-rbac-list'], arg_group='Azure RBAC', help='Comma separated list of names of usernames/email/oid. Azure RBAC will be skipped for these users. Specify when enabling azure-rbac.') c.argument('cl_oid', options_list=['--custom-locations-oid'], help="OID of 'custom-locations' app") diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index 12fe991e492..a6bfe3560a4 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1351,7 +1351,7 @@ def get_all_helm_values(release_namespace, kube_config, kube_context, helm_clien def enable_features(cmd, client, resource_group_name, cluster_name, features, kube_config=None, kube_context=None, - azrbac_client_id=None, azrbac_client_secret=None, azrbac_skip_authz_check=None, cl_oid=None): + azrbac_skip_authz_check=None, cl_oid=None): logger.warning("This operation might take a while...\n") # Validate custom token operation diff --git a/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py b/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py index e7c881e72ac..dc644728d6c 100644 --- a/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py +++ b/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py @@ -270,7 +270,7 @@ def test_enable_disable_features(self,resource_group): assert(enabled_cmd1["systemDefaultValues"]['customLocations']['enabled'] == bool(1)) assert(enabled_cmd1["systemDefaultValues"]['clusterconnect-agent']['enabled'] == bool(1)) - # scenario-4: azure rbac turned off and turning azure rbac on again using app id and app secret + # scenario-4: azure rbac turned off and turning azure rbac on again using 1P self.cmd('connectedk8s disable-features -n {name} -g {rg} --features azure-rbac --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin -y') cmd_output1 = subprocess.Popen(cmd, stdout=PIPE, stderr=PIPE) _, error_helm_delete = cmd_output1.communicate() @@ -278,7 +278,7 @@ def test_enable_disable_features(self,resource_group): disabled_cmd1 = json.loads(cmd_output1.communicate()[0].strip()) assert(disabled_cmd1["systemDefaultValues"]['guard']['enabled'] == bool(0)) - self.cmd('az connectedk8s enable-features -n {name} -g {rg} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin --features azure-rbac --app-id ffba4043-836e-4dcc-906c-fbf60bf54eef --app-secret="6a6ae7a7-4260-40d3-ba00-af909f2ca8f0"') + self.cmd('az connectedk8s enable-features -n {name} -g {rg} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin --features azure-rbac') # deleting the cluster self.cmd('connectedk8s delete -g {rg} -n {name} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin -y') From 0cb4aafa1b7008934df7afb7781f6d2ae6f5c8f3 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Thu, 9 Nov 2023 17:40:21 -0800 Subject: [PATCH 09/14] deprecate --app-id & --app-secret --- .../azext_connectedk8s/_constants.py | 1 + src/connectedk8s/azext_connectedk8s/_help.py | 2 +- src/connectedk8s/azext_connectedk8s/_params.py | 2 ++ src/connectedk8s/azext_connectedk8s/custom.py | 2 +- .../tests/latest/test_connectedk8s_scenario.py | 18 +++++++++--------- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/connectedk8s/azext_connectedk8s/_constants.py b/src/connectedk8s/azext_connectedk8s/_constants.py index 62ed0fdca41..485075e5d39 100644 --- a/src/connectedk8s/azext_connectedk8s/_constants.py +++ b/src/connectedk8s/azext_connectedk8s/_constants.py @@ -118,6 +118,7 @@ Operate_RG_Cluster_Name_Conflict = 'The provided cluster name and rg correspond to different cluster being operated on' Custom_Locations_Registration_Check_Fault_Type = "Error while checking resource provider registration of custom locations." Custom_Locations_OID_Fetch_Fault_Type = "Error while fetching oid for custom locations." +Application_Details_Not_Provided_For_Azure_RBAC_Fault = 'Application ID or secret not provided for Azure RBAC' Successfully_Enabled_Features = 'Successsfully enabled features: {} for the Connected Cluster {}' Successfully_Disabled_Features = 'Successsfully disabled features: {} for the Connected Cluster {}' Error_enabling_Features = 'Error while updating agents for enabling features. Please run \"kubectl get pods -n azure-arc\" to check the pods in case of timeout error. Error: {}' diff --git a/src/connectedk8s/azext_connectedk8s/_help.py b/src/connectedk8s/azext_connectedk8s/_help.py index 7fdb2fdf63b..2fbb29b112b 100644 --- a/src/connectedk8s/azext_connectedk8s/_help.py +++ b/src/connectedk8s/azext_connectedk8s/_help.py @@ -109,7 +109,7 @@ - name: Enables the Cluster-Connect feature. text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features cluster-connect - name: Enable Azure RBAC feature. - text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features azure-rbac --skip-azure-rbac-list "user1@domain.com,spn_oid" + text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features azure-rbac --app-id appID --app-secret="appSecret" --skip-azure-rbac-list "user1@domain.com,spn_oid" - name: Enable multiple features. text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features cluster-connect custom-locations """ diff --git a/src/connectedk8s/azext_connectedk8s/_params.py b/src/connectedk8s/azext_connectedk8s/_params.py index d2b21eff1c9..9399ddf26de 100644 --- a/src/connectedk8s/azext_connectedk8s/_params.py +++ b/src/connectedk8s/azext_connectedk8s/_params.py @@ -80,6 +80,8 @@ def load_arguments(self, _): c.argument('kube_config', options_list=['--kube-config'], help='Path to the kube config file.') c.argument('kube_context', options_list=['--kube-context'], help='Kubconfig context from current machine.') c.argument('features', features_types, options_list=['--features'], help='Space-separated list of features you want to enable.') + c.argument('azrbac_client_id', options_list=['--app-id'], arg_group='Azure RBAC', help='To be deprecated soon. Application ID for enabling Azure RBAC.', deprecate_info=c.deprecate(hide=True)) + c.argument('azrbac_client_secret', options_list=['--app-secret'], arg_group='Azure RBAC', help='To be deprecated soon. Application secret for enabling Azure RBAC.', deprecate_info=c.deprecate(hide=True)) c.argument('azrbac_skip_authz_check', options_list=['--skip-azure-rbac-list'], arg_group='Azure RBAC', help='Comma separated list of names of usernames/email/oid. Azure RBAC will be skipped for these users. Specify when enabling azure-rbac.') c.argument('cl_oid', options_list=['--custom-locations-oid'], help="OID of 'custom-locations' app") diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index a6bfe3560a4..12fe991e492 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1351,7 +1351,7 @@ def get_all_helm_values(release_namespace, kube_config, kube_context, helm_clien def enable_features(cmd, client, resource_group_name, cluster_name, features, kube_config=None, kube_context=None, - azrbac_skip_authz_check=None, cl_oid=None): + azrbac_client_id=None, azrbac_client_secret=None, azrbac_skip_authz_check=None, cl_oid=None): logger.warning("This operation might take a while...\n") # Validate custom token operation diff --git a/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py b/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py index dc644728d6c..13ef912f083 100644 --- a/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py +++ b/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py @@ -135,9 +135,9 @@ class Connectedk8sScenarioTest(LiveScenarioTest): @live_only() @ResourceGroupPreparer(name_prefix='conk8stest', location='eastus2euap', random_name_length=16) def test_connect(self,resource_group): - + managed_cluster_name = self.create_random_name(prefix='test-connect', length=24) - kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) + kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) self.kwargs.update({ 'rg': resource_group, 'name': self.create_random_name(prefix='cc-', length=12), @@ -165,7 +165,7 @@ def test_connect(self,resource_group): def test_forcedelete(self,resource_group): managed_cluster_name = self.create_random_name(prefix='test-force-delete', length=24) - kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) + kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) self.kwargs.update({ 'rg': resource_group, 'name': self.create_random_name(prefix='cc-', length=12), @@ -204,7 +204,7 @@ def test_forcedelete(self,resource_group): def test_enable_disable_features(self,resource_group): managed_cluster_name = self.create_random_name(prefix='test-enable-disable', length=24) - kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) + kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) self.kwargs.update({ 'rg': resource_group, 'name': self.create_random_name(prefix='cc-', length=12), @@ -278,7 +278,7 @@ def test_enable_disable_features(self,resource_group): disabled_cmd1 = json.loads(cmd_output1.communicate()[0].strip()) assert(disabled_cmd1["systemDefaultValues"]['guard']['enabled'] == bool(0)) - self.cmd('az connectedk8s enable-features -n {name} -g {rg} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin --features azure-rbac') + self.cmd('az connectedk8s enable-features -n {name} -g {rg} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin --features azure-rbac --app-id ffba4043-836e-4dcc-906c-fbf60bf54eef --app-secret="6a6ae7a7-4260-40d3-ba00-af909f2ca8f0"') # deleting the cluster self.cmd('connectedk8s delete -g {rg} -n {name} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin -y') @@ -294,14 +294,14 @@ def test_connectedk8s_list(self,resource_group): managed_cluster_name = self.create_random_name(prefix='first', length=24) managed_cluster_name_second = self.create_random_name(prefix='second', length=24) - kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) + kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) kubeconfigpls="%s" % (_get_test_data_file('pls-config.yaml')) name = self.create_random_name(prefix='cc-', length=12) name_second = self.create_random_name(prefix='cc-', length=12) managed_cluster_list=[] managed_cluster_list.append(name) managed_cluster_list.append(name_second) - managed_cluster_list.sort() + managed_cluster_list.sort() self.kwargs.update({ 'rg': resource_group, 'name': name, @@ -366,7 +366,7 @@ def test_connectedk8s_list(self,resource_group): def test_upgrade(self,resource_group): managed_cluster_name = self.create_random_name(prefix='test-upgrade', length=24) - kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) + kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) self.kwargs.update({ 'name': self.create_random_name(prefix='cc-', length=12), 'rg': resource_group, @@ -430,7 +430,7 @@ def test_upgrade(self,resource_group): @ResourceGroupPreparer(name_prefix='conk8stest', location='eastus2euap', random_name_length=16) def test_update(self,resource_group): managed_cluster_name = self.create_random_name(prefix='test-update', length=24) - kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) + kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) self.kwargs.update({ 'name': self.create_random_name(prefix='cc-', length=12), 'kubeconfig': kubeconfig, From 8ce0c4923e1d00046da61bb5d221f4dd6412b1fb Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Fri, 10 Nov 2023 11:07:10 -0800 Subject: [PATCH 10/14] Update setup.py --- src/connectedk8s/setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/connectedk8s/setup.py b/src/connectedk8s/setup.py index e97331d900d..a5b1eb63d25 100644 --- a/src/connectedk8s/setup.py +++ b/src/connectedk8s/setup.py @@ -16,6 +16,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. + VERSION = '1.5.4' # The full list of classifiers is available at From 87f95b8485bf122f03885e278b8776f40453aa26 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Fri, 10 Nov 2023 11:12:38 -0800 Subject: [PATCH 11/14] update version --- src/connectedk8s/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connectedk8s/setup.py b/src/connectedk8s/setup.py index a5b1eb63d25..e4ab91bf545 100644 --- a/src/connectedk8s/setup.py +++ b/src/connectedk8s/setup.py @@ -17,7 +17,7 @@ # TODO: Confirm this is the right version number you want and it matches your # HISTORY.rst entry. -VERSION = '1.5.4' +VERSION = '1.5.5' # The full list of classifiers is available at # https://pypi.python.org/pypi?%3Aaction=list_classifiers From 947114a611eb3aeb2c433a73acdb18741bc62e6f Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Mon, 13 Nov 2023 13:15:50 -0800 Subject: [PATCH 12/14] address comments --- src/connectedk8s/HISTORY.rst | 4 +++- src/connectedk8s/azext_connectedk8s/_params.py | 4 ++-- src/connectedk8s/azext_connectedk8s/custom.py | 5 ++--- .../tests/latest/test_connectedk8s_scenario.py | 3 +-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/connectedk8s/HISTORY.rst b/src/connectedk8s/HISTORY.rst index d7ca2cf0da0..d5af58ce23b 100644 --- a/src/connectedk8s/HISTORY.rst +++ b/src/connectedk8s/HISTORY.rst @@ -5,7 +5,9 @@ Release History 1.5.5 ++++++ -* Setting guard default authnMode to 'arc' when RBAC is enabled. +* Deprecate 'app-id' and 'app-secret' RBAC params. +* Use 1P apps for authN/authZ when RBAC is enabled. +* Add warning to use kubelogin version v0.0.32 or higher which has support for generating PoP token. 1.5.4 ++++++ diff --git a/src/connectedk8s/azext_connectedk8s/_params.py b/src/connectedk8s/azext_connectedk8s/_params.py index 9399ddf26de..3fb7931f8ba 100644 --- a/src/connectedk8s/azext_connectedk8s/_params.py +++ b/src/connectedk8s/azext_connectedk8s/_params.py @@ -80,8 +80,8 @@ def load_arguments(self, _): c.argument('kube_config', options_list=['--kube-config'], help='Path to the kube config file.') c.argument('kube_context', options_list=['--kube-context'], help='Kubconfig context from current machine.') c.argument('features', features_types, options_list=['--features'], help='Space-separated list of features you want to enable.') - c.argument('azrbac_client_id', options_list=['--app-id'], arg_group='Azure RBAC', help='To be deprecated soon. Application ID for enabling Azure RBAC.', deprecate_info=c.deprecate(hide=True)) - c.argument('azrbac_client_secret', options_list=['--app-secret'], arg_group='Azure RBAC', help='To be deprecated soon. Application secret for enabling Azure RBAC.', deprecate_info=c.deprecate(hide=True)) + c.argument('azrbac_client_id', options_list=['--app-id'], arg_group='Azure RBAC', help='Application ID for enabling Azure RBAC.', deprecate_info=c.deprecate(hide=True)) + c.argument('azrbac_client_secret', options_list=['--app-secret'], arg_group='Azure RBAC', help='Application secret for enabling Azure RBAC.', deprecate_info=c.deprecate(hide=True)) c.argument('azrbac_skip_authz_check', options_list=['--skip-azure-rbac-list'], arg_group='Azure RBAC', help='Comma separated list of names of usernames/email/oid. Azure RBAC will be skipped for these users. Specify when enabling azure-rbac.') c.argument('cl_oid', options_list=['--custom-locations-oid'], help="OID of 'custom-locations' app") diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index b43ae84f080..6b2f4b25c90 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1483,10 +1483,9 @@ def enable_features(cmd, client, resource_group_name, cluster_name, features, ku cmd_helm_upgrade.extend(["--kube-context", kube_context]) if enable_azure_rbac: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.enabled=true"]) - # Setting the default authnMode mode as "arc" for guard. This mode used Arc RBAC 1P apps for authN/authZ. - # This mode in guard uses PoP token based auth. + # Setting the default authnMode mode as "arc" for guard. This mode uses PoP token based auth. and Arc RBAC 1P apps for authN/authZ. cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) - logger.warning("Please use the latest kubelogin version which has support for generating PoP token(s) needed by guard running in 'arc' authN mode.") + logger.warning("Please use the kubelogin version v0.0.32 or higher which has support for generating PoP token(s) which is needed by guard running in 'arc' authN mode.") cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.skipAuthzCheck={}".format(azrbac_skip_authz_check)]) if enable_cluster_connect: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.clusterconnect-agent.enabled=true"]) diff --git a/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py b/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py index f9c14c6f9e2..302048ff37a 100644 --- a/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py +++ b/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py @@ -150,7 +150,6 @@ class Connectedk8sScenarioTest(LiveScenarioTest): @live_only() @ResourceGroupPreparer(name_prefix='conk8stest', location=CONFIG['location'], random_name_length=16) def test_connect(self,resource_group): - managed_cluster_name = self.create_random_name(prefix='test-connect', length=24) kubeconfig="%s" % (_get_test_data_file(managed_cluster_name + '-config.yaml')) self.kwargs.update({ @@ -240,7 +239,7 @@ def test_enable_disable_features(self,resource_group): 'rbac_app_secret': CONFIG['rbacAppSecret'], 'location': CONFIG['location'] }) - + self.cmd('aks create -g {rg} -n {managed_cluster_name} --generate-ssh-keys') self.cmd('aks get-credentials -g {rg} -n {managed_cluster_name} -f {kubeconfig} --admin') self.cmd('connectedk8s connect -g {rg} -n {name} -l {location} --tags foo=doo --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin', checks=[ From 5494e953bd985d344e50e956c40cb21e11833430 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Mon, 13 Nov 2023 13:34:49 -0800 Subject: [PATCH 13/14] update help --- src/connectedk8s/azext_connectedk8s/_constants.py | 1 - src/connectedk8s/azext_connectedk8s/_help.py | 2 +- .../tests/latest/test_connectedk8s_scenario.py | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/connectedk8s/azext_connectedk8s/_constants.py b/src/connectedk8s/azext_connectedk8s/_constants.py index 485075e5d39..62ed0fdca41 100644 --- a/src/connectedk8s/azext_connectedk8s/_constants.py +++ b/src/connectedk8s/azext_connectedk8s/_constants.py @@ -118,7 +118,6 @@ Operate_RG_Cluster_Name_Conflict = 'The provided cluster name and rg correspond to different cluster being operated on' Custom_Locations_Registration_Check_Fault_Type = "Error while checking resource provider registration of custom locations." Custom_Locations_OID_Fetch_Fault_Type = "Error while fetching oid for custom locations." -Application_Details_Not_Provided_For_Azure_RBAC_Fault = 'Application ID or secret not provided for Azure RBAC' Successfully_Enabled_Features = 'Successsfully enabled features: {} for the Connected Cluster {}' Successfully_Disabled_Features = 'Successsfully disabled features: {} for the Connected Cluster {}' Error_enabling_Features = 'Error while updating agents for enabling features. Please run \"kubectl get pods -n azure-arc\" to check the pods in case of timeout error. Error: {}' diff --git a/src/connectedk8s/azext_connectedk8s/_help.py b/src/connectedk8s/azext_connectedk8s/_help.py index 2fbb29b112b..7fdb2fdf63b 100644 --- a/src/connectedk8s/azext_connectedk8s/_help.py +++ b/src/connectedk8s/azext_connectedk8s/_help.py @@ -109,7 +109,7 @@ - name: Enables the Cluster-Connect feature. text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features cluster-connect - name: Enable Azure RBAC feature. - text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features azure-rbac --app-id appID --app-secret="appSecret" --skip-azure-rbac-list "user1@domain.com,spn_oid" + text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features azure-rbac --skip-azure-rbac-list "user1@domain.com,spn_oid" - name: Enable multiple features. text: az connectedk8s enable-features -n clusterName -g resourceGroupName --features cluster-connect custom-locations """ diff --git a/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py b/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py index 302048ff37a..4cd16f7f77f 100644 --- a/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py +++ b/src/connectedk8s/azext_connectedk8s/tests/latest/test_connectedk8s_scenario.py @@ -306,7 +306,7 @@ def test_enable_disable_features(self,resource_group): disabled_cmd1 = json.loads(cmd_output1.communicate()[0].strip()) assert(disabled_cmd1["systemDefaultValues"]['guard']['enabled'] == bool(0)) - self.cmd('az connectedk8s enable-features -n {name} -g {rg} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin --features azure-rbac --app-id {rbac_app_id} --app-secret {rbac_app_secret}') + self.cmd('az connectedk8s enable-features -n {name} -g {rg} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin --features azure-rbac') # deleting the cluster self.cmd('connectedk8s delete -g {rg} -n {name} --kube-config {kubeconfig} --kube-context {managed_cluster_name}-admin -y') From c7aa81bb704be52229334d99b7363681198d4ad2 Mon Sep 17 00:00:00 2001 From: Vineeth Thumma Date: Tue, 28 Nov 2023 11:17:35 -0800 Subject: [PATCH 14/14] update comments --- src/connectedk8s/HISTORY.rst | 2 +- src/connectedk8s/azext_connectedk8s/custom.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/connectedk8s/HISTORY.rst b/src/connectedk8s/HISTORY.rst index d5af58ce23b..63dd80a20ff 100644 --- a/src/connectedk8s/HISTORY.rst +++ b/src/connectedk8s/HISTORY.rst @@ -5,7 +5,7 @@ Release History 1.5.5 ++++++ -* Deprecate 'app-id' and 'app-secret' RBAC params. +* Deprecate '--app-id' and '--app-secret' RBAC params. * Use 1P apps for authN/authZ when RBAC is enabled. * Add warning to use kubelogin version v0.0.32 or higher which has support for generating PoP token. diff --git a/src/connectedk8s/azext_connectedk8s/custom.py b/src/connectedk8s/azext_connectedk8s/custom.py index 6b2f4b25c90..a8785687199 100644 --- a/src/connectedk8s/azext_connectedk8s/custom.py +++ b/src/connectedk8s/azext_connectedk8s/custom.py @@ -1485,7 +1485,7 @@ def enable_features(cmd, client, resource_group_name, cluster_name, features, ku cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.enabled=true"]) # Setting the default authnMode mode as "arc" for guard. This mode uses PoP token based auth. and Arc RBAC 1P apps for authN/authZ. cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.authnMode=arc"]) - logger.warning("Please use the kubelogin version v0.0.32 or higher which has support for generating PoP token(s) which is needed by guard running in 'arc' authN mode.") + logger.warning("Please use the kubelogin version v0.0.32 or higher which has support for generating PoP token(s). This is needed by guard running in 'arc' authN mode.") cmd_helm_upgrade.extend(["--set", "systemDefaultValues.guard.skipAuthzCheck={}".format(azrbac_skip_authz_check)]) if enable_cluster_connect: cmd_helm_upgrade.extend(["--set", "systemDefaultValues.clusterconnect-agent.enabled=true"])