Skip to content

Commit e3f1767

Browse files
committed
add azure provider parameters breakdown
1 parent 53fae55 commit e3f1767

File tree

1 file changed

+156
-3
lines changed

1 file changed

+156
-3
lines changed

docs/docs/explanations/advanced-provider-configuration.md

Lines changed: 156 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,7 @@ cluster region by inspecting its respective SSM parameters. For more information
199199

200200
<TabItem value="azure" label="Azure">
201201

202-
[Microsoft Azure](https://azure.microsoft.com/) has similar settings for Kubernetes version, region, and instance names - using Azure's available values of course.
203-
204-
Azure also requires a field named `storage_account_postfix` which will have been generated by `nebari init`. This allows nebari to create a Storage Account bucket that should be globally unique.
202+
[Microsoft Azure](https://azure.microsoft.com/) offers robust support for deploying and managing Kubernetes clusters through Azure Kubernetes Service (AKS). Azure provides a variety of settings for Kubernetes versions, regions, instance types, and more, enabling you to tailor your cluster to meet specific requirements.
205203

206204
```yaml
207205
### Provider configuration ###
@@ -224,6 +222,161 @@ azure:
224222
storage_account_postfix: t65ft6q5
225223
```
226224
225+
:::note
226+
227+
Azure requires a field named `storage_account_postfix`, which is generated by `nebari init`. This ensures the creation of a globally unique Storage Account bucket essential for your deployments.
228+
:::
229+
230+
### Provider Configuration
231+
232+
The `azure` section in your `nebari-config.yaml` defines the core settings for deploying your Kubernetes cluster on Azure. Below are the available configurations:
233+
234+
- **name** (Required): The name of your Azure Kubernetes cluster.
235+
- **environment** (Required): The environment context (e.g., development, staging, production).
236+
- **region** (Required): The Azure region where your resources will be deployed (e.g., `Central US`).
237+
- **kubernetes_version** (Required): Specifies the Kubernetes version to deploy (e.g., `1.19.11`).
238+
- **resource_group_name** (Required): The name of the Azure Resource Group that will contain the cluster resources.
239+
- **node_resource_group_name** (Required): The name of the Resource Group specifically for node-related resources.
240+
- **vnet_subnet_id** (Optional): The ID of the existing Virtual Network (VNet) subnet where the nodes will be deployed. If not provided, Nebari will create a new VNet.
241+
- **private_cluster_enabled** (Required): Boolean flag to enable or disable a private AKS cluster. When enabled, the API server is accessible only within the VNet.
242+
- **tags** (Optional): A dictionary of tags to apply to all Azure resources for easier management and organization.
243+
- **max_pods** (Optional): Maximum number of pods that can run on a single node.
244+
- **network_profile** (Optional): Configures network settings for the cluster, including network plugin, service CIDR, DNS service IP, and Docker bridge CIDR.
245+
- **workload_identity_enabled** (Optional): Enables Azure AD Workload Identity for better security and identity management within the cluster.
246+
- **azure_rbac** (Optional): Configures Azure Active Directory Role-Based Access Control (RBAC) integration.
247+
- **storage_account_postfix** (Required): A unique postfix generated by `nebari init` to create a globally unique Storage Account.
248+
249+
### Node Groups
250+
251+
Node groups define the sets of nodes within your Kubernetes cluster, specifying instance types and scaling parameters.
252+
253+
```yaml
254+
node_groups:
255+
general:
256+
instance: Standard_D4_v3
257+
min_nodes: 1
258+
max_nodes: 1
259+
user:
260+
instance: Standard_D2_v2
261+
min_nodes: 0
262+
max_nodes: 5
263+
worker:
264+
instance: Standard_D2_v2
265+
min_nodes: 0
266+
max_nodes: 5
267+
```
268+
269+
**Parameters:**
270+
271+
- `instance` (Required): The Azure VM instance type for the node group (e.g., `Standard_D4_v3`).
272+
- `min_nodes` (Required): The minimum number of nodes in the group.
273+
- `max_nodes` (Required): The maximum number of nodes in the group.
274+
275+
### Azure Active Directory Role-Based Access Control (RBAC) (Optional)
276+
277+
Integrating Azure AD with Kubernetes RBAC enhances security by managing access through Azure AD identities.
278+
279+
```yaml
280+
azure_rbac:
281+
enabled: true
282+
managed_identity: true
283+
admin_group_object_ids:
284+
- "00000000-0000-0000-0000-000000000000"
285+
```
286+
287+
**Parameters:**
288+
289+
- `enabled` (Required): Enables or disables Azure AD-based RBAC integration.
290+
- `managed_identity` (Required): If set to `true`, Azure manages the Service Principal used for integration.
291+
- `admin_group_object_ids` (Required): A list of Azure AD group Object IDs that will have administrative privileges within the Kubernetes cluster. This is only applicable when `managed_identity` is `true`.
292+
293+
::warning
294+
This change is irreversible and may impact the cluster's security posture. Ensure that
295+
you have the necessary permissions and understand the implications before enabling Azure
296+
AD RBAC. For more information, see [Azure AD integration with AKS](https://learn.microsoft.com/en-us/azure/aks/enable-authentication-microsoft-entra-id).
297+
:::
298+
299+
### Virtual Network and Subnet (Optional)
300+
301+
Specify an existing Virtual Network subnet for deploying your nodes to ensure network policies and integrations align with your infrastructure.
302+
303+
```yaml
304+
vnet_subnet_id: "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-vnet-group/providers/Microsoft.Network/virtualNetworks/my-vnet/subnets/my-subnet"
305+
```
306+
307+
**Parameters:**
308+
309+
- `vnet_subnet_id` (Optional): The full Azure Resource Manager (ARM) ID of the subnet where the nodes will be deployed. If not provided, Nebari will create a new VNet and subnet.
310+
311+
### Private Cluster (Optional)
312+
313+
Enable a private AKS cluster to restrict API server access within your Virtual Network, enhancing security.
314+
315+
```yaml
316+
private_cluster_enabled: true
317+
```
318+
319+
**Parameters:**
320+
321+
- `private_cluster_enabled` (Required): Set to `true` to enable a private cluster where the Kubernetes API server is accessible only within the VNet.
322+
323+
### Network Profile (Optional)
324+
325+
Customize network settings to fit your organizational requirements.
326+
327+
```yaml
328+
network_profile:
329+
network_plugin: azure
330+
service_cidr: "10.0.0.0/16"
331+
dns_service_ip: "10.0.0.10"
332+
docker_bridge_cidr: "172.17.0.1/16"
333+
```
334+
335+
**Parameters:**
336+
337+
- `network_plugin` (Optional): Specifies the network plugin to use (e.g., `azure`, `kubenet`).
338+
- `service_cidr` (Optional): The CIDR range for Kubernetes services.
339+
- `dns_service_ip` (Optional): The IP address for the DNS service.
340+
- `docker_bridge_cidr` (Optional): The CIDR range for the Docker bridge.
341+
342+
### Workload Identity (Optional)
343+
344+
Enable Azure AD Workload Identity for improved security and simplified identity management within your cluster.
345+
346+
```yaml
347+
workload_identity_enabled: true
348+
```
349+
350+
**Parameters:**
351+
352+
- `workload_identity_enabled` (Optional): Set to `true` to enable Azure AD Workload Identity integration.
353+
354+
### Tags (Optional)
355+
356+
Apply metadata to your Azure resources for better organization and management.
357+
358+
```yaml
359+
tags:
360+
environment: production
361+
department: engineering
362+
```
363+
364+
**Parameters:**
365+
366+
- `tags` (Optional): A dictionary of key-value pairs to tag Azure resources. Useful for categorization, billing, and access control.
367+
368+
### Storage Account Postfix
369+
370+
Azure requires a unique `storage_account_postfix` to create a globally unique Storage Account for your deployments.
371+
372+
```yaml
373+
storage_account_postfix: t65ft6q5
374+
```
375+
376+
**Parameters:**
377+
378+
- `storage_account_postfix` (Required): A unique postfix generated by `nebari init`. This ensures that the Storage Account name adheres to Azure’s global uniqueness requirements.
379+
227380
</TabItem>
228381

229382
<TabItem value="existing" label="Existing Kubernetes clusters">

0 commit comments

Comments
 (0)