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
The `nebari-config.yaml` file can be split into several sections.
240
239
241
-
The first section is the version of Nebari you wish to run.
242
-
243
-
240
+
The first section is the version of Nebari you wish to run.
244
241
245
242
```yaml
246
243
### Nebari version ###
247
244
nebari_version: 2023.7.2
248
245
```
249
246
250
247
:::note
251
-
You will get a validation error if the version of `nebari` used from the command line is different from the one in the `nebari-config.yaml`.
248
+
You will get a validation error if the version of `nebari` used from the command line is different from the one in the `nebari-config.yaml`.
252
249
:::
253
250
254
-
255
251
The next section relates to Nebari's inner mechanics for the initial deployment and is the most important section of the configuration file,
256
252
because the following parameters are heavily propagated throughout all infrastructure components.
257
253
@@ -283,11 +279,12 @@ domain: demo.nebari.dev
283
279
284
280
### Continuous integration and continuous deployment
285
281
286
-
Nebari uses [infrastructure-as-code](https://en.wikipedia.org/wiki/Infrastructure_as_code) to maintain a description of the deployed infrastructure in source control. By using a git repository with CI/CD configured, teams can more quickly modify their deployment, empowering developers and data scientists to request the changes and have them approved by an administrator.
282
+
Nebari uses [infrastructure-as-code](https://en.wikipedia.org/wiki/Infrastructure_as_code) to maintain a description of the deployed infrastructure in source control. By using a git repository with CI/CD configured, teams can more quickly modify their deployment, empowering developers and data scientists to request the changes and have them approved by an administrator.
287
283
288
-
When a `ci_cd` section is configured within your `nebari-config.yaml`, the first `nebari deploy` command will create all related files that describe a [CI/CD](https://about.gitlab.com/topics/ci-cd/) process. These pipelines will then be responsible for redeploying Nebari as changes are made to a specified branch. (Alternatively, an administrator can use `nebari render` to generate the necessary files as if running a dry-run.) Currently, Nebari can generate CI/CD for [GitHub Actions](https://docs.github.com/en/actions) and [GitLab CI](https://docs.gitlab.com/ee/ci/).
284
+
When a `ci_cd` section is configured within your `nebari-config.yaml`, the first `nebari deploy` command will create all related files that describe a [CI/CD](https://about.gitlab.com/topics/ci-cd/) process. These pipelines will then be responsible for redeploying Nebari as changes are made to a specified branch. (Alternatively, an administrator can use `nebari render` to generate the necessary files as if running a dry-run.) Currently, Nebari can generate CI/CD for [GitHub Actions](https://docs.github.com/en/actions) and [GitLab CI](https://docs.gitlab.com/ee/ci/).
289
285
290
286
Below is an example `ci_cd` section in a `nebari-config.yaml` file.
287
+
291
288
```yaml
292
289
### Continuous integration ###
293
290
ci_cd:
@@ -312,15 +309,14 @@ ci_cd:
312
309
313
310
The CI/CD workflow that is best for you will depend on your organization, but the following tenets will be appropriate for most situations.
314
311
315
-
* You will want to have an upstream Git repository configured - we recommend either GitHub or GitLab since we support generating CI/CD jobs for these products.
316
-
* The branch that triggers deployment (typically `main`, but you can set other ones in Nebari config's `ci_cd.branch`) should be protected so that only sys admins can commit or approve pull (or merge) requests into it.
317
-
* CI/CD variables must be set in your repository so the pipeline can access your cloud (see Note below)
318
-
* Non-admin users who have write access to the repository's non-protected branches may create their own branch off of `main`, locally make changes to the `nebari-config.yaml` and other files, and then push that branch to the origin and propose they be deployed via a Pull Request.
319
-
* Advanced Nebari users may also want to add a step in their deployment flow that includes a `nebari render` so that the administrator may preview the resulting diffs to IaC and/or CI/CD files before `nebari deploy` is executed.
320
-
312
+
- You will want to have an upstream Git repository configured - we recommend either GitHub or GitLab since we support generating CI/CD jobs for these products.
313
+
- The branch that triggers deployment (typically `main`, but you can set other ones in Nebari config's `ci_cd.branch`) should be protected so that only sys admins can commit or approve pull (or merge) requests into it.
314
+
- CI/CD variables must be set in your repository so the pipeline can access your cloud (see Note below)
315
+
- Non-admin users who have write access to the repository's non-protected branches may create their own branch off of `main`, locally make changes to the `nebari-config.yaml` and other files, and then push that branch to the origin and propose they be deployed via a Pull Request.
316
+
- Advanced Nebari users may also want to add a step in their deployment flow that includes a `nebari render` so that the administrator may preview the resulting diffs to IaC and/or CI/CD files before `nebari deploy` is executed.
321
317
322
318
:::note
323
-
In order for your CI/CD pipeline to be able to deploy changes into your Nebari cloud hosting provider, you must set the appropriate authentication environment variables for your GitLab or GitHub CI/CD execution environment. See the Authentication section for deploing to [AWS](https://www.nebari.dev/docs/how-tos/nebari-aws/#authentication), [Azure](https://www.nebari.dev/docs/how-tos/nebari-azure#authentication), [GCP](https://www.nebari.dev/docs/how-tos/nebari-gcp/#authentication), or [Digital Ocean](https://www.nebari.dev/docs/how-tos/nebari-do/#authentication) for Nebari's required variables. Guidance on how to set these for your repository/project can be found in the documentation for [GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/variables) and [GitLab CI/CD](https://docs.gitlab.com/ee/ci/variables/).
319
+
In order for your CI/CD pipeline to be able to deploy changes into your Nebari cloud hosting provider, you must set the appropriate authentication environment variables for your GitLab or GitHub CI/CD execution environment. See the Authentication section for deploing to [AWS](https://www.nebari.dev/docs/how-tos/nebari-aws/#authentication), [Azure](https://www.nebari.dev/docs/how-tos/nebari-azure#authentication), [GCP](https://www.nebari.dev/docs/how-tos/nebari-gcp/#authentication), or [Digital Ocean](https://www.nebari.dev/docs/how-tos/nebari-do/#authentication) for Nebari's required variables. Guidance on how to set these for your repository/project can be found in the documentation for [GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/variables) and [GitLab CI/CD](https://docs.gitlab.com/ee/ci/variables/).
324
320
:::
325
321
326
322
### Certificates
@@ -376,11 +372,10 @@ In general you should use the production server, as seen above.
376
372
You can also generate the above configuration automatically by using the `--ssl-cert-email <your-email-address>` flag when you run `nebari init` to initialize your project.
377
373
:::
378
374
379
-
380
-
Let's Encrypt heavily rate limits their production endpoint. In order to avoid throttling, Nebari's traefik deployments will store retrieved certificates for the duration of their validity in a mounted PVC at a default location `/mnt/acme-certificates/acme.json`.
375
+
Let's Encrypt heavily rate limits their production endpoint. In order to avoid throttling, Nebari's traefik deployments will store retrieved certificates for the duration of their validity in a mounted PVC at a default location `/mnt/acme-certificates/acme.json`.
381
376
382
377
:::note
383
-
In order to refresh the certificate before it is invalidated, you will need to delete the `acme.json` file then restart the Traefik deployment by deleting the existing pod and letting a new one spin up. This may be necessary if you change the domain name of your Nebari deployment.
378
+
In order to refresh the certificate before it is invalidated, you will need to delete the `acme.json` file then restart the Traefik deployment by deleting the existing pod and letting a new one spin up. This may be necessary if you change the domain name of your Nebari deployment.
384
379
:::
385
380
386
381
</TabItem>
@@ -416,6 +411,62 @@ Defining a wildcard certificate decreases the amount of Common Name (CN) names y
416
411
</TabItem>
417
412
</Tabs>
418
413
414
+
### Shared Storage Configuration
415
+
416
+
Nebari includes shared file systems for the jupyterhub user storage, jupyterhub shared storage, and conda store shared storage. By default, NFS drives are used.
417
+
418
+
As of Nebari 2024.9.1, alpha support for [Ceph](https://docs.ceph.com/en/latest/) shared file systems as an alternative to NFS is available. The initial benefit of using Ceph is increased read/write performance compared to NFS, but further benefits are expected in future development. Ceph is a distributed storage system which has the potential to provide increased performance, high availability, data redundancy, storage consolidation, and scalability to Nebari.
419
+
420
+
:::danger
421
+
Do not switch from one storage type to another on an existing Nebari deployment. Any files in the user home directory and conda environments will be lost if you do so! On GCP, all node groups in the cluster will be destroyed and recreated. Only change the storage type prior to the initial deployment.
422
+
:::
423
+
424
+
Storage is configuredin the nebari config file under the storage section.
425
+
426
+
```yaml
427
+
storage:
428
+
type: nfs # efs (default on AWS), cephfs
429
+
conda_store: 200Gi
430
+
shared_filesystem: 200Gi
431
+
```
432
+
433
+
If using the "cephfs" storage type. The block storage backing all ceph storage will be provisioned using a kubernetes storage class. The default storage class will be used unless specified. Premium storage can be used on some cloud providers to back ceph storage for improved performance. The storage class name can be specified in the yaml file. Be aware that premium storage is not accessible on all node types on some cloud providers.
434
+
435
+
<Tabs>
436
+
<TabItem label="AWS" value="AWS" default="true">
437
+
438
+
Premium storage is not available on AWS.
439
+
</TabItem>
440
+
<TabItem label="Azure" value="Azure">
441
+
442
+
```yaml
443
+
ceph:
444
+
storage_class_name: managed-premium
445
+
```
446
+
447
+
</TabItem>
448
+
<TabItem label="GCP" value="GCP">
449
+
450
+
```yaml
451
+
ceph:
452
+
storage_class_name: premium-rwo
453
+
```
454
+
455
+
</TabItem>
456
+
<TabItem label="Existing" value="Existing">
457
+
458
+
```yaml
459
+
ceph:
460
+
storage_class_name: some-cluster-storage-class
461
+
```
462
+
463
+
</TabItem>
464
+
<TabItem label="Local" value="Local">
465
+
466
+
Ceph is not supported on local deployments.
467
+
</TabItem>
468
+
</Tabs>
469
+
419
470
## More configuration options
420
471
421
472
Learn to configure more aspects of your Nebari deployment with the following topic guides:
@@ -425,4 +476,4 @@ Learn to configure more aspects of your Nebari deployment with the following top
425
476
- [JupyterLab and Dask profile configuration](./advanced-profiles-settings.md)
0 commit comments