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: docs/docs/explanations/advanced-provider-configuration.md
+156-3Lines changed: 156 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -199,9 +199,7 @@ cluster region by inspecting its respective SSM parameters. For more information
199
199
200
200
<TabItemvalue="azure"label="Azure">
201
201
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.
205
203
206
204
```yaml
207
205
### Provider configuration ###
@@ -224,6 +222,161 @@ azure:
224
222
storage_account_postfix: t65ft6q5
225
223
```
226
224
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.
- `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.
0 commit comments