You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/aks/cluster-extensions.md
+22-28Lines changed: 22 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,20 +3,20 @@ title: Cluster extensions for Azure Kubernetes Service (AKS)
3
3
description: Learn how to deploy and manage the lifecycle of extensions on Azure Kubernetes Service (AKS)
4
4
ms.service: container-service
5
5
ms.custom: event-tier1-build-2022
6
-
ms.date: 05/13/2022
6
+
ms.date: 09/29/2022
7
7
ms.topic: article
8
8
author: nickomang
9
9
ms.author: nickoman
10
10
---
11
11
12
12
# Deploy and manage cluster extensions for Azure Kubernetes Service (AKS)
13
13
14
-
Cluster extensions provides an Azure Resource Manager driven experience for installation and lifecycle management of services like Azure Machine Learning (ML) on an AKS cluster. This feature enables:
14
+
Cluster extensions provide an Azure Resource Manager driven experience for installation and lifecycle management of services like Azure Machine Learning (ML) on an AKS cluster. This feature enables:
15
15
16
16
* Azure Resource Manager-based deployment of extensions, including at-scale deployments across AKS clusters.
17
17
* Lifecycle management of the extension (Update, Delete) from Azure Resource Manager.
18
18
19
-
In this article, you will learn about:
19
+
In this article, you'll learn about:
20
20
> [!div class="checklist"]
21
21
22
22
> * How to create an extension instance.
@@ -36,24 +36,18 @@ A conceptual overview of this feature is available in [Cluster extensions - Azur
36
36
*[Azure CLI](/cli/azure/install-azure-cli) version >= 2.16.0 installed.
37
37
38
38
> [!NOTE]
39
-
> If you have enabled [AAD-based pod identity][use-azure-ad-pod-identity] on your AKS cluster, please add the following `AzurePodIdentityException` to the release namespace of your extension instance on the AKS cluster:
### Setup the Azure CLI extension for cluster extensions
39
+
> If you have enabled [AAD-based pod identity][use-azure-ad-pod-identity] on your AKS cluster or are considering implementing it,
40
+
> we recommend you first review [Migrate to workload identity][migrate-workload-identity] to understand our
41
+
> recommendations and options to set up your cluster to use an Azure AD workload identity (preview).
42
+
> This authentication method replaces pod-managed identity (preview), which integrates with the Kubernetes native capabilities
43
+
> to federate with any external identity providers.
44
+
45
+
### Set up the Azure CLI extension for cluster extensions
52
46
53
47
> [!NOTE]
54
48
> The minimum supported version for the `k8s-extension` Azure CLI extension is `1.0.0`. If you are unsure what version you have installed, run `az extension show --name k8s-extension` and look for the `version` field.
55
49
56
-
You will also need the `k8s-extension` Azure CLI extension. Install this by running the following commands:
50
+
You'll also need the `k8s-extension` Azure CLI extension. Install the extension by running the following command:
> The Cluster Extensions service is unable to retain sensitive information for more than 48 hours. If the cluster extension agents don't have network connectivity for more than 48 hours and cannot determine whether to create an extension on the cluster, then the extension transitions to `Failed` state. Once in `Failed` state, you will need to run `k8s-extension create` again to create a fresh extension instance.
93
+
> The Cluster Extensions service is unable to retain sensitive information for more than 48 hours. If the cluster extension agents don't have network connectivity for more than 48 hours and can't determine whether to create an extension on the cluster, then the extension transitions to `Failed` state. Once in `Failed` state, you will need to run `k8s-extension create` again to create a fresh extension instance.
| `--auto-upgrade-minor-version` | Boolean property that specifies if the extension minor version will be upgraded automatically or not. Default: `true`. If this parameter is set to true, you cannot set `version` parameter, as the version will be dynamically updated. If set to `false`, extension will not be auto-upgraded even for patch versions. |
109
+
|`--auto-upgrade-minor-version`| Boolean property that specifies if the extension minor version will be upgraded automatically or not. Default: `true`. If this parameter is set to true, you can't set `version` parameter, as the version will be dynamically updated. If set to `false`, extension won't be auto-upgraded even for patch versions. |
116
110
|`--version`| Version of the extension to be installed (specific version to pin the extension instance to). Must not be supplied if auto-upgrade-minor-version is set to `true`. |
117
-
| `--configuration-settings` | Settings that can be passed into the extension to control its functionality. They are to be passed in as space separated `key=value` pairs after the parameter name. If this parameter is used in the command, then `--configuration-settings-file` can't be used in the same command. |
111
+
|`--configuration-settings`| Settings that can be passed into the extension to control its functionality. Pass values as space separated `key=value` pairs after the parameter name. If this parameter is used in the command, then `--configuration-settings-file` can't be used in the same command. |
118
112
|`--configuration-settings-file`| Path to the JSON file having key value pairs to be used for passing in configuration settings to the extension. If this parameter is used in the command, then `--configuration-settings` can't be used in the same command. |
119
-
| `--configuration-protected-settings` | These settings are not retrievable using `GET` API calls or `az k8s-extension show` commands, and are thus used to pass in sensitive settings. They are to be passed in as space separated `key=value` pairs after the parameter name. If this parameter is used in the command, then `--configuration-protected-settings-file` can't be used in the same command. |
113
+
|`--configuration-protected-settings`| These settings are not retrievable using `GET` API calls or `az k8s-extension show` commands, and are thus used to pass in sensitive settings. Pass values as space separated `key=value` pairs after the parameter name. If this parameter is used in the command, then `--configuration-protected-settings-file` can't be used in the same command. |
120
114
|`--configuration-protected-settings-file`| Path to the JSON file having key value pairs to be used for passing in sensitive settings to the extension. If this parameter is used in the command, then `--configuration-protected-settings` can't be used in the same command. |
121
115
|`--scope`| Scope of installation for the extension - `cluster` or `namespace`|
122
116
|`--release-namespace`| This parameter indicates the namespace within which the release is to be created. This parameter is only relevant if `scope` parameter is set to `cluster`. |
123
-
| `--release-train` | Extension authors can publish versions in different release trains such as `Stable`, `Preview`, etc. If this parameter is not set explicitly, `Stable` is used as default. This parameter can't be used when `autoUpgradeMinorVersion` parameter is set to `false`. |
117
+
|`--release-train`| Extension authors can publish versions in different release trains such as `Stable`, `Preview`, etc. If this parameter isn't set explicitly, `Stable` is used as default. This parameter can't be used when `autoUpgradeMinorVersion` parameter is set to `false`. |
124
118
|`--target-namespace`| This parameter indicates the namespace within which the release will be created. Permission of the system account created for this extension instance will be restricted to this namespace. This parameter is only relevant if the `scope` parameter is set to `namespace`. |
| `--auto-upgrade-minor-version` | Boolean property that specifies if the extension minor version will be upgraded automatically or not. Default: `true`. If this parameter is set to true, you cannot set `version` parameter, as the version will be dynamically updated. If set to `false`, extension will not be auto-upgraded even for patch versions. |
161
+
|`--auto-upgrade-minor-version`| Boolean property that specifies if the extension minor version will be upgraded automatically or not. Default: `true`. If this parameter is set to true, you cannot set `version` parameter, as the version will be dynamically updated. If set to `false`, extension won't be auto-upgraded even for patch versions. |
168
162
|`--version`| Version of the extension to be installed (specific version to pin the extension instance to). Must not be supplied if auto-upgrade-minor-version is set to `true`. |
169
-
| `--configuration-settings` | Settings that can be passed into the extension to control its functionality. Only the settings that require an update need to be provided. The provided settings would be replaced with the provided values. They are to be passed in as space separated `key=value` pairs after the parameter name. If this parameter is used in the command, then `--configuration-settings-file` can't be used in the same command. |
163
+
|`--configuration-settings`| Settings that can be passed into the extension to control its functionality. Only the settings that require an update need to be provided. The provided settings would be replaced with the provided values. Pass values as space separated `key=value` pairs after the parameter name. If this parameter is used in the command, then `--configuration-settings-file` can't be used in the same command. |
170
164
|`--configuration-settings-file`| Path to the JSON file having key value pairs to be used for passing in configuration settings to the extension. If this parameter is used in the command, then `--configuration-settings` can't be used in the same command. |
171
-
| `--configuration-protected-settings` | These settings are not retrievable using `GET` API calls or `az k8s-extension show` commands, and are thus used to pass in sensitive settings. When updating a setting, all settings are expected to be provided. If some settings are omitted, those settings would be considered obsolete and deleted. They are to be passed in as space separated `key=value` pairs after the parameter name. If this parameter is used in the command, then `--configuration-protected-settings-file` can't be used in the same command. |
165
+
|`--configuration-protected-settings`| These settings are not retrievable using `GET` API calls or `az k8s-extension show` commands, and are thus used to pass in sensitive settings. When you update a setting, all settings are expected to be specified. If some settings are omitted, those settings would be considered obsolete and deleted. Pass values as space separated `key=value` pairs after the parameter name. If this parameter is used in the command, then `--configuration-protected-settings-file` can't be used in the same command. |
172
166
|`--configuration-protected-settings-file`| Path to the JSON file having key value pairs to be used for passing in sensitive settings to the extension. If this parameter is used in the command, then `--configuration-protected-settings` can't be used in the same command. |
173
167
|`--scope`| Scope of installation for the extension - `cluster` or `namespace`|
174
-
| `--release-train` | Extension authors can publish versions in different release trains such as `Stable`, `Preview`, etc. If this parameter is not set explicitly, `Stable` is used as default. This parameter can't be used when `autoUpgradeMinorVersion` parameter is set to `false`. |
168
+
|`--release-train`| Extension authors can publish versions in different release trains such as `Stable`, `Preview`, etc. If this parameter isn't set explicitly, `Stable` is used as default. This parameter can't be used when `autoUpgradeMinorVersion` parameter is set to `false`. |
Copy file name to clipboardExpand all lines: articles/aks/concepts-identity.md
+16-9Lines changed: 16 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,17 +3,18 @@ title: Concepts - Access and identity in Azure Kubernetes Services (AKS)
3
3
description: Learn about access and identity in Azure Kubernetes Service (AKS), including Azure Active Directory integration, Kubernetes role-based access control (Kubernetes RBAC), and roles and bindings.
4
4
services: container-service
5
5
ms.topic: conceptual
6
-
ms.date: 03/24/2021
6
+
ms.date: 09/27/2022
7
7
author: palma21
8
8
ms.author: jpalma
9
9
10
10
---
11
11
12
12
# Access and identity options for Azure Kubernetes Service (AKS)
13
13
14
-
You can authenticate, authorize, secure, and control access to Kubernetes clusters in a variety of ways.
15
-
* Using Kubernetes role-based access control (Kubernetes RBAC), you can grant users, groups, and service accounts access to only the resources they need.
16
-
* With Azure Kubernetes Service (AKS), you can further enhance the security and permissions structure via Azure Active Directory and Azure RBAC.
14
+
You can authenticate, authorize, secure, and control access to Kubernetes clusters in a variety of ways:
15
+
16
+
* Using Kubernetes role-based access control (Kubernetes RBAC), you can grant users, groups, and service accounts access to only the resources they need.
17
+
* With Azure Kubernetes Service (AKS), you can further enhance the security and permissions structure using Azure Active Directory and Azure RBAC.
17
18
18
19
Kubernetes RBAC and AKS help you secure your cluster access and provide only the minimum required permissions to developers and operators.
19
20
@@ -22,6 +23,7 @@ This article introduces the core concepts that help you authenticate and assign
22
23
## Kubernetes RBAC
23
24
24
25
Kubernetes RBAC provides granular filtering of user actions. With this control mechanism:
26
+
25
27
* You assign users or user groups permission to create and modify resources or view logs from running application workloads.
26
28
* You can scope permissions to a single namespace or across the entire AKS cluster.
27
29
* You create *roles* to define permissions, and then assign those roles to users with *role bindings*.
@@ -31,7 +33,8 @@ For more information, see [Using Kubernetes RBAC authorization][kubernetes-rbac]
31
33
### Roles and ClusterRoles
32
34
33
35
#### Roles
34
-
Before assigning permissions to users with Kubernetes RBAC, you'll define user permissions as a *Role*. Grant permissions within a namespace using roles.
36
+
37
+
Before assigning permissions to users with Kubernetes RBAC, you'll define user permissions as a *Role*. Grant permissions within a namespace using roles.
35
38
36
39
> [!NOTE]
37
40
> Kubernetes roles *grant* permissions; they don't *deny* permissions.
@@ -82,7 +85,8 @@ With Azure RBAC, you create a *role definition* that outlines the permissions to
82
85
83
86
For more information, see [What is Azure role-based access control (Azure RBAC)?][azure-rbac]
84
87
85
-
There are two levels of access needed to fully operate an AKS cluster:
88
+
There are two levels of access needed to fully operate an AKS cluster:
89
+
86
90
*[Access the AKS resource in your Azure subscription](#azure-rbac-to-authorize-access-to-the-aks-resource).
87
91
* Control scaling or upgrading your cluster using the AKS APIs.
88
92
* Pull your `kubeconfig`.
@@ -227,19 +231,22 @@ By default Node Access is not required for AKS. The following access is needed
227
231
228
232
| Access | Reason |
229
233
|---|---|
230
-
|`kubelet`| Required for customer to grant MSI access to ACR. |
234
+
|`kubelet`| Required to grant MSI access to ACR. |
231
235
|`http app routing`| Required for write permission to "random name".aksapp.io. |
232
-
|`container insights`| Required for customer to grant permission to the Log Analytics workspace. |
236
+
|`container insights`| Required to grant permission to the Log Analytics workspace. |
233
237
234
238
## Summary
235
239
236
240
View the table for a quick summary of how users can authenticate to Kubernetes when Azure AD integration is enabled. In all cases, the user's sequence of commands is:
241
+
237
242
1. Run `az login` to authenticate to Azure.
238
243
1. Run `az aks get-credentials` to download credentials for the cluster into `.kube/config`.
239
-
1. Run `kubectl` commands.
244
+
1. Run `kubectl` commands.
245
+
240
246
* The first command may trigger browser-based authentication to authenticate to the cluster, as described in the following table.
241
247
242
248
In the Azure portal, you can find:
249
+
243
250
* The *Role Grant* (Azure RBAC role grant) referred to in the second column is shown on the **Access Control** tab.
244
251
* The Cluster Admin Azure AD Group is shown on the **Configuration** tab.
245
252
* Also found with parameter name `--aad-admin-group-object-ids` in the Azure CLI.
0 commit comments