Skip to content

Commit 8654e65

Browse files
authored
Merge branch 'main' into patch-1
2 parents 5bbc32a + 7a27e1f commit 8654e65

33 files changed

+882
-111
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ ci:
1717
repos:
1818
# Codespell: Spell checks the code and documentation
1919
- repo: https://github.com/codespell-project/codespell
20-
rev: v2.2.6
20+
rev: v2.3.0
2121
hooks:
2222
- id: codespell
2323
entry: codespell
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
id: decision-making
3+
title: Decision making process
4+
description: Decision making workflows for the Nebari OSS project
5+
---
6+
7+
Nebari's [core team][core-team] is the primary decision making authority for the project.
8+
9+
This group makes decisions about the following non-exhaustive list of items:
10+
11+
- Major updates to the Nebari project and community, through the Request-for-discussion (RFD) process (see explanation below)
12+
- Adding and removing members from the [Nebari team following the guidelines][nebari-team]
13+
14+
## Consent-based decision making
15+
16+
Nebari follows the [consent-based approach][consent-decision-making] for making all project-related decisions.
17+
18+
In this approach, everyone gets a chance to:
19+
20+
- understand the proposals by asking questions,
21+
- share their thoughts and reactions, and
22+
- present any specific objections
23+
24+
Each objection is discussed and the proposal is updated accordingly. The proposal is accepted when the team reaches a point where there are no objections.
25+
26+
## Major updates - Request-for-discussion (RFD) process
27+
28+
New features, sub-projects, and workflow changes that affect a majority of end-users of the core project or the Nebari community, need to follow the Request-for-discussion workflow (sometimes called Enhancement Proposals):
29+
30+
1. Open an [RFD-issue in the governance repository][rfd-issue] with your proposal describing the details, benefits, impact, and more as mentioned in the issue template. Add the following labels to the issue: `needs: discussion 💬`, `type: RFD 🗳`
31+
2. Tag the `@nebari-dev/core-team` and any specific people for questions, comments, and objections on your proposal.
32+
3. Answer questions and update the proposal addressing the objections. If there are major objections, the best course of action is declining the RFD, closing the issue, and opening a new RFD issue with the updated design proposal.
33+
4. Once all comments are addressed, request the core-team to cast votes. Team members are expected to vote "yes" with a 👍 reaction on the proposal if they have no objection. Votes can also be taken over synchronous community meetings. In this case, the decision is documented with a comment on the RFD issue. Remove the `needs: discussion 💬` label and add `status: being voted 🗳` at this stage.
34+
5. If over 50% of team members vote "yes", the proposal is accepted. Remove the `status: being voted 🗳` label and add `status: approved 💪🏾`. Do not close the issue yet.
35+
6. Once the proposal is implemented, close the RFD issue.
36+
37+
Learn more in [Gitpod's documentation on decision making][gitpod-rfd].
38+
39+
## Minor updates - Discussion in issues and pull requests
40+
41+
Minor updates to the codebase and documentation can be discussed in GitHub issues or in pull requests during code review. Contributors are expected to (informally) follow the consent-based decision making philosophy in these discussions.
42+
43+
44+
<!-- Reusable links -->
45+
46+
[nebari-team]: /docs/community/team-structure
47+
[core-team]: https://github.com/orgs/nebari-dev/teams/core-team
48+
[consent-decision-making]: https://www.sociocracyforall.org/consent-decision-making/
49+
[rfd-issue]: https://github.com/nebari-dev/governance/issues/new?assignees=&labels=type%3A+RFD&projects=&template=RFD.md&title=RFD+-+Title
50+
[gitpod-rfd]: https://gitpod.notion.site/Decision-Making-RFCs-eb4a57f3a34f40f1afbd95e05322af70

docs/docs/explanations/advanced-configuration.md

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -283,19 +283,20 @@ domain: demo.nebari.dev
283283

284284
### Continuous integration and continuous deployment
285285

286-
Nebari uses [infrastructure-as-code](https://en.wikipedia.org/wiki/Infrastructure_as_code) to allow developers and users to request changes to the environment via pull requests (PRs) which then get approved by administrators.
287-
You may configure a CI/CD process to watch for pull-requests or commits on specific branches.
288-
Currently, CI/CD can be setup for either [GitHub Actions](https://docs.github.com/en/actions) or [GitLab CI](https://docs.gitlab.com/ee/ci/).
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.
289287

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/).
289+
290+
Below is an example `ci_cd` section in a `nebari-config.yaml` file.
290291
```yaml
291292
### Continuous integration ###
292293
ci_cd:
293-
type: gitlab-ci
294-
branch: main
295-
commit_render: true
296-
before_script:
294+
type: gitlab-ci # 'gitlab-ci' or 'github-actions'
295+
branch: main # Branch that triggers deployment
296+
commit_render: true # During deployment, commit the rendered IaC back into the repository
297+
before_script: # GitLab only
297298
- echo "running commands before ci completes"
298-
after_script:
299+
after_script: # GitLab only
299300
- echo "running commands after ci completes"
300301
- echo "additional commands to run"
301302
```
@@ -309,8 +310,18 @@ ci_cd:
309310
resources. Currently only supported on `gitlab-ci`.
310311
- `after_script` (optional): Script to run after CI ends infrastructure deployment. This is useful in cases to notify resources of successful Nebari deployment. Currently supported on `gitlab-ci`.
311312

312-
If `ci_cd` is not supplied, no CI/CD will be auto-generated, however, we advise employing an infrastructure-as-code approach.
313-
This allows teams to more quickly modify their deployment, empowering developers and data scientists to request the changes and have them approved by an administrator.
313+
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+
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+
321+
322+
:::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/).
324+
:::
314325

315326
### Certificates
316327

@@ -414,4 +425,4 @@ Learn to configure more aspects of your Nebari deployment with the following top
414425
- [JupyterLab and Dask profile configuration](./advanced-profiles-settings.md)
415426
- [Customize JuputerHub theme](./advanced-custom-settings.md)
416427
- [Environment configuration](./advanced-env-configuration.md)
417-
- [Custom settings and overrides](./advanced-custom-settings.md)
428+
- [Custom settings and overrides](./advanced-custom-settings.md)

docs/docs/explanations/advanced-custom-settings.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ One way to achieve this is by creating a Virtual Machine (VM) inside the virtual
276276
Select the virtual network and subnet name under the networking settings of your cloud provider while creating the VM
277277
and then follow the usual deployment instructions as you would deploy from your local machine.
278278

279+
=======
279280
#### Conda store worker
280281

281282
You can use the following settings to change the defaults settings (shown) used for Conda store workers.
@@ -292,3 +293,55 @@ conda_store:
292293
:::note Note
293294
Current `conda_store.worker_resources` defaults are set at the minimum recommended resources for conda-store-workers - (conda-store [docs](https://conda.store/conda-store/references/faq#what-are-the-resource-requirements-for-conda-store-server))
294295
:::
296+
297+
## Helm Extensions
298+
299+
Nebari provides a way for any user to expand the infrastructure available by default by using the `helm_extensions` attribute. This attribute allows for the management and customization of Kubernetes applications through Helm charts. The helm_extensions is a configuration construct that specifies a list of Helm charts and their respective settings.
300+
301+
### Overview
302+
303+
Each entry in the `helm_extensions` list represents a single Helm chart configuration, allowing you to define the chart source, version, and specific overrides or settings for that chart. When Nebari is deployed, it will install the specified Helm charts using the provided settings.
304+
305+
### Structure
306+
307+
Each entry in the helm_extensions list contains the following fields:
308+
309+
- `name`: A unique identifier for the Helm chart. It will also be used as the name of the Kubernetes deployment related resources.
310+
- `repository`: The URL of the repository where the Helm chart is stored. Must be a valid Helm repository URL.
311+
- `chart`: The name or path of the chart within the repository. must be compliant with the Helm chart naming conventions.
312+
- `version`: The specific version of the chart to be used.
313+
- `overrides`: Specific configurations to override default chart values.
314+
315+
:::note Note
316+
The `overrides` field is optional. If not specified, the default values for the chart will be used.
317+
:::
318+
319+
### Example
320+
321+
Below we give an example showcasing how to install Redis using helm_extensions:
322+
323+
```yaml
324+
helm_extensions:
325+
- name: redis-deployment
326+
repository: https://charts.bitnami.com/bitnami
327+
chart: redis
328+
version: 17.7.5
329+
overrides:
330+
architecture: standalone
331+
master:
332+
containerSecurityContext:
333+
runAsUser: 0
334+
persistence:
335+
enabled: true
336+
path: /redis/data
337+
subPath: redis/data
338+
existingClaim: <existing-claim-name-is-required>
339+
replica:
340+
persistence:
341+
enabled: false
342+
replicaCount: 0
343+
```
344+
345+
:::warning Warning
346+
In the above example, we are assuming the current nebari kubernetes cluster already has an appropriate storage class and persistent volume claim (PVC) created. If not, you will need to create a storage class and PVC before deploying the helm chart.
347+
:::

docs/docs/get-started/installing-nebari.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ description: A guide to help you install Nebari for your team.
55

66
# Installing Nebari
77

8-
<!-- TODO: Add link to advanced settings section -->
9-
10-
This installation guide provides the basic instructions to install and deploy Nebari for the first time, and assumes you are already familiar with the [Conda](https://docs.conda.io/projects/conda/en/latest/) and [Python packaging](https://packaging.python.org/en/latest/tutorials/installing-packages/#installing-packages) ecosystems. If you are already familiar with Nebari and would like information on advanced configuration options, skip to the advanced-settings section in this documentation.
8+
This installation guide provides the basic instructions to install the Nebari deployer package CLI for the first time, and assumes you are already familiar with the [Conda](https://docs.conda.io/projects/conda/en/latest/) and [Python packaging](https://packaging.python.org/en/latest/tutorials/installing-packages/#installing-packages) ecosystems. If you are already familiar with Nebari and would like information on advanced configuration options, skip to the [Advanced Configuration][advanced-configuration] section in this documentation.
119

1210
:::note
1311
This guide focuses on installing Nebari for **cloud usage**.
@@ -23,9 +21,10 @@ Nebari heavily depends on [Terraform](https://www.terraform.io/) and Python. The
2321
- For more details on Terraform and its dependencies, visit the [official Terraform documentation](https://learn.hashicorp.com/tutorials/terraform/install-cli)
2422
- To install conda, visit the [official conda documentation](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html), or if you prefer, visit the [mamba installation documentation](https://github.com/mamba-org/mamba#installation)
2523

26-
## How to install Nebari
24+
## How to install the Nebari Package
25+
*See [Environment Management][environment-management] for best practices for using `conda` and `pip` to control your deployment environment.*
2726

28-
There are currently two ways to install Nebari:
27+
There are currently two ways to install the Nebari CLI:
2928

3029
1. You can install Nebari directly from the Python Package Index (PyPI) using `pip`. For most common architectures and platforms (`Linux x86-64` and `macOS x86-64`), `pip` will download and install the most recent version available.
3130

@@ -45,6 +44,13 @@ There are currently two ways to install Nebari:
4544
mamba install nebari
4645
```
4746

47+
:::note
48+
The version of Nebari in your `nebari-config.yaml` must match your currently installed Nebari package version; otherwise, a warning will be raised when attempting to deploy. See [Upgrading Nebari][nebari-upgrade] for techniques for upgrading your Nebari CLI or safely updating your older config file to match your Nebari package version.
49+
:::
50+
51+
:::note
52+
The Nebari CLI will auto-detect and then deploy any [Nebari Extensions][nebari-extension-system] that are installed in your Python environment, and extensions once deployed cannot be uninstalled. For this reason, we recommend creating a [unique environment][environment-management] for each Nebari deployment, especially when managing multiple deployments with extensions.
53+
:::
4854
## Verify installation
4955

5056
You can verify that the Nebari package is properly installed and you can execute the client commands by running:
@@ -96,11 +102,15 @@ Already made your mind about deployment? Check our handy how-to-guides:
96102

97103
<!-- Internal links -->
98104

105+
[advanced-configuration]: /explanations/advanced-configuration.md
99106
[nebari-aws]: /how-tos/nebari-aws.md
100107
[nebari-azure]: /how-tos/nebari-azure.md
101108
[nebari-do]: /how-tos/nebari-do.md
109+
[environment-management]: /how-tos/nebari-environment-management.md
110+
[nebari-extension-system]: /how-tos/nebari-extension-system.md
102111
[nebari-gcp]: /how-tos/nebari-gcp.md
103112
[nebari-local]: /how-tos/nebari-local.md
104113
[nebari-deploy]: /get-started/deploy.mdx
105114
[nebari-troubleshooting]: /troubleshooting.mdx
115+
[nebari-upgrade]: /how-tos/nebari-upgrade.md
106116
[supported-cloud-providers]: /get-started/cloud-providers.mdx

0 commit comments

Comments
 (0)