Skip to content

Commit b6f4f79

Browse files
authored
Merge branch 'main' into rook-ceph
2 parents 2ceba59 + e111f3c commit b6f4f79

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+944
-666
lines changed

.github/workflows/test-website.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,8 @@ jobs:
3333
- name: Lint 🔍
3434
run: yarn run lint
3535

36+
- name: Format 🥇
37+
run: yarn run format
38+
3639
- name: Build site 🔨
3740
run: yarn run build

docs/docs/community/decision-making.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ Learn more in [Gitpod's documentation on decision making][gitpod-rfd].
4040

4141
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.
4242

43-
4443
<!-- Reusable links -->
4544

4645
[nebari-team]: /docs/community/team-structure

docs/docs/community/plugins.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ You can learn to use and create Nebari extensions in the [extension mechanism do
1212

1313
The following community-developed extensions are recognized and verified by the Nebari development team.
1414

15-
* [nebari-mlflow-aws](https://github.com/MetroStar/nebari-mlflow-aws)
16-
* [nebari-label-studio](https://github.com/MetroStar/nebari-label-studio)
15+
- The **[ML Flow extension for AWS](https://github.com/MetroStar/nebari-mlflow-aws)** is designed to integrate [MLFlow](https://mlflow.org/) into Nebari deployments utilizing AWS (Amazon Web Services) as the provider. It provides a robust, collaborative environment for AI/ML professionals to manage experiments, track metrics, and deploy models.
16+
- The **[Label Studio](https://github.com/MetroStar/nebari-label-studio)** integrates [Label Studio](https://labelstud.io/) into the Nebari platform, allowing seamless labeling functionality within Nebari. Utilizing Python, Terraform, Kubernetes, and Helm charts, the plugin provides a configurable deployment and authentication through Keycloak.
17+
- The **[Self Registration](https://github.com/nebari-dev/nebari-self-registration)** extension allows potential new users of a Nebari deployment to self-register through a coupon code. A new self-registration page is generated on the Nebari server where users can input their information and a coupon code. Once the form is validated, the new user will be auto-generated on the Nebari deployment. It can also be configured to give new users a set expiration date.

docs/docs/community/team-structure.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ Nebari follows a nomination process to add new team members[^2], as detailed in
5757

5858
[^2]: All except the [Emeritus core](#emeritus-core) team are decided through nominations.
5959

60-
| Team | Requirements for nomination | Nominators | Approvers |
61-
| ----------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
62-
| Triage | Engage with (create or comment on) one or more issue/PR/discussion in [`nebari-dev`](https://github.com/nebari-dev) | Any community member (including self) | Any Core team member |
63-
| Contributor | Two or more [contributions](./#how-to-contribute) to Nebari with intention to continue contributing regularly | Any community member (including self) | Any Core team member |
64-
| Core | [Contributors team](#contributors) member with a record of regular, valuable, and high-quality contributions to Nebari for at least one month | Any community member (including self) and one Core team member | Core team makes a [consent-based decision](https://www.sociocracyforall.org/consent-decision-making/) |
65-
| Conduct | Member of the Contributor or Core Team with adequate training to handle CoC reports | Any community member (including self) | Core team makes a [consent-based decision](https://www.sociocracyforall.org/consent-decision-making/) |
60+
| Team | Requirements for nomination | Nominators | Approvers |
61+
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
62+
| Triage | Engage with (create or comment on) one or more issue/PR/discussion in [`nebari-dev`](https://github.com/nebari-dev) | Any community member (including self) | Any Core team member |
63+
| Contributor | Two or more [contributions](./#how-to-contribute) to Nebari with intention to continue contributing regularly | Any community member (including self) | Any Core team member |
64+
| Core | [Contributors team](#contributors) member with a record of regular, valuable, and high-quality contributions to Nebari for at least one month | Any community member (including self) and one Core team member | Core team makes a [consent-based decision](https://www.sociocracyforall.org/consent-decision-making/) |
65+
| Conduct | Member of the Contributor or Core Team with adequate training to handle CoC reports | Any community member (including self) | Core team makes a [consent-based decision](https://www.sociocracyforall.org/consent-decision-making/) |

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

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ 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+
=======
280+
279281
#### Conda store worker
280282

281283
You can use the following settings to change the defaults settings (shown) used for Conda store workers.
@@ -292,3 +294,55 @@ conda_store:
292294
:::note Note
293295
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))
294296
:::
297+
298+
## Helm Extensions
299+
300+
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.
301+
302+
### Overview
303+
304+
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.
305+
306+
### Structure
307+
308+
Each entry in the helm_extensions list contains the following fields:
309+
310+
- `name`: A unique identifier for the Helm chart. It will also be used as the name of the Kubernetes deployment related resources.
311+
- `repository`: The URL of the repository where the Helm chart is stored. Must be a valid Helm repository URL.
312+
- `chart`: The name or path of the chart within the repository. must be compliant with the Helm chart naming conventions.
313+
- `version`: The specific version of the chart to be used.
314+
- `overrides`: Specific configurations to override default chart values.
315+
316+
:::note Note
317+
The `overrides` field is optional. If not specified, the default values for the chart will be used.
318+
:::
319+
320+
### Example
321+
322+
Below we give an example showcasing how to install Redis using helm_extensions:
323+
324+
```yaml
325+
helm_extensions:
326+
- name: redis-deployment
327+
repository: https://charts.bitnami.com/bitnami
328+
chart: redis
329+
version: 17.7.5
330+
overrides:
331+
architecture: standalone
332+
master:
333+
containerSecurityContext:
334+
runAsUser: 0
335+
persistence:
336+
enabled: true
337+
path: /redis/data
338+
subPath: redis/data
339+
existingClaim: <existing-claim-name-is-required>
340+
replica:
341+
persistence:
342+
enabled: false
343+
replicaCount: 0
344+
```
345+
346+
:::warning Warning
347+
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.
348+
:::

docs/docs/faq.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ There are drop-in replacements for `distributed`, `dask`, and `dask-gateway` wit
3131
## What packages are needed in your environment to create a dashboard?
3232

3333
When deploying an app with JHub App Launcher, you need to have the following in your environment:
34+
3435
- `jhub-apps` package
35-
- packages corresponding to the dashboard framework (for example, `panel`, `gradio`, etc.)
36+
- packages corresponding to the dashboard framework (for example, `panel`, `gradio`, etc.)
3637
- any other libraries required for the analysis in the dashboard creation script/notebook
3738

3839
## How can I install a package locally? Will this package be available to Dask workers?
@@ -163,6 +164,7 @@ Nebari automatically shuts down servers when users are idle, as described in Neb
163164
:::note
164165
Until this issue is addressed, we recommend manually shutting down your VS Code server when it is not in use.
165166
:::
167+
166168
<!-- Internal links -->
167169

168170
[dask-tutorial]: tutorials/using_dask.md

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ Nebari heavily depends on [Terraform](https://www.terraform.io/) and Python. The
2222
- 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)
2323

2424
## 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.*
25+
26+
_See [Environment Management][environment-management] for best practices for using `conda` and `pip` to control your deployment environment._
2627

2728
There are currently two ways to install the Nebari CLI:
2829

@@ -45,12 +46,13 @@ There are currently two ways to install the Nebari CLI:
4546
```
4647

4748
:::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+
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.
4950
:::
5051

5152
:::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+
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.
5354
:::
55+
5456
## Verify installation
5557

5658
You can verify that the Nebari package is properly installed and you can execute the client commands by running:

docs/docs/get-started/quickstart.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,14 @@ nebari init azure --project projectname \
121121

122122
## Validate (optional)
123123

124-
After creating the `nebari-config.yaml` file, you can customize it. The Nebari package uses Pydantic for schema validation. To ensure your customizations are valid, run:
124+
After creating the `nebari-config.yaml` file, you can customize it. The Nebari package uses Pydantic for schema validation. To ensure your customizations are valid, run:
125125

126126
```bash
127127
nebari validate -c nebari-config.yaml
128128
```
129129

130130
:::note
131-
Extensions built using the [Nebari Extension System][nebari-extension-system] may extend the Nebari schema. If you are intending to use an extension and `nebari validate` returns an error `Extra inputs are not permitted`, ensure that the the correct versions of the extensions you intend to use are installed in your active Python environment.
131+
Extensions built using the [Nebari Extension System][nebari-extension-system] may extend the Nebari schema. If you are intending to use an extension and `nebari validate` returns an error `Extra inputs are not permitted`, ensure that the the correct versions of the extensions you intend to use are installed in your active Python environment.
132132
:::
133133

134134
:::note
@@ -143,13 +143,12 @@ You can generate the (Terraform) deployment workflow scripts with:
143143
nebari render -c nebari-config.yaml
144144
```
145145

146-
This is the actual step that loads the stage classes/models and generates physical IaC files based on your Nebari config file and installed package versions. It is not necessary to manually run a render to deploy. However, it can be useful (especially if you use a GitOps workflow with GitHub Actions or GitLab CI/CD) to review the effects of config files changes on the resulting IaC before deploying.
146+
This is the actual step that loads the stage classes/models and generates physical IaC files based on your Nebari config file and installed package versions. It is not necessary to manually run a render to deploy. However, it can be useful (especially if you use a GitOps workflow with GitHub Actions or GitLab CI/CD) to review the effects of config files changes on the resulting IaC before deploying.
147147

148148
:::note
149149
This command is automatically run when you `deploy`.
150150
:::
151151

152-
153152
## Deploy
154153

155154
<Tabs>

docs/docs/how-tos/access-logs-loki.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
title: Access system logs (Loki) via Grafana
3+
description: Access common system logs on Nebari
4+
---
5+
6+
# How to access system logs (Loki) via Grafana
7+
8+
Below is a step-by-step walkthrough of how to view JupyterHub pod logs in Grafana [Loki](https://grafana.com/docs/loki/latest/). As similar approach can be used to find other commonly accessed logs (summarized at the end of this document).
9+
10+
To view the Loki logs via Grafana in Nebari, you'll need to have [set up monitoring](/docs/how-tos/setup-monitoring) on your deployment.
11+
12+
## Getting Started
13+
14+
Access the Monitoring UI for your Nebari installation at https://{your-nebari-domain}/monitoring/.
15+
16+
:::note
17+
The **Explore** functionality shown below is only available to users who have `grafana_admin` permissions. In Nebari's default configuration, only the users in the `admin` Keycloak user group will have this role. `grafana_admin` is a client role in Keycloak which can be assigned to other groups or users. See [Configure Keycloak](/docs/how-tos/configuring-keycloak#in-depth-look-at-roles-and-groups) for more information.
18+
:::
19+
20+
First, click "Explore".
21+
22+
![Grafana Explore Page](/img/how-tos/1_grafana-explore.png)
23+
24+
Select Loki as the data source at the top:
25+
26+
![Grafana Select Loki](/img/how-tos/2_grafana-select-loki.png)
27+
28+
Select a Label to search. For this example, we will select `pod`:
29+
30+
![Grafana Select Loki](/img/how-tos/3_grafana-log-browser-pod.png)
31+
32+
Begin typing the name of the desired pod. In this case we are looking
33+
for a JupyterHub pod. The exact name will vary on each deployment but it will begin with `hub-` followed by a unique identifier.
34+
35+
![Grafana Select Loki](/img/how-tos/4_grafana-log-search-pod.png)
36+
37+
Select the pod from the list of pods and then click on "Run Query":
38+
39+
![Grafana Select Loki](/img/how-tos/5_grafana-log-select-pod.png)
40+
41+
After clicking on "Run Query", you should be able to see logs for JupyterHub pod as shown below:
42+
43+
![Grafana Select Loki](/img/how-tos/6_grafana-view-pod-logs.png)
44+
45+
You can also filter by time by clicking on the time filter on top right (next to "Run query").
46+
47+
## Common Queries
48+
49+
The approach above can be used to access a wide variety of logs on Nebari. Below are some common queries.
50+
51+
### JupyterLab Server Logs
52+
53+
Each user will have their own JupyterLab instance (which may or may not be running at any given time) which will contain its own set of logs. To view the logs for a JupyterLab server, use `pod` label and begin typing the username of interest. The pod name will be `jupyter-{username}`.
54+
55+
### Conda-Store Logs
56+
57+
Conda-store runs multiple pods on the backend. The conda-store server runs continuously while conda-store-workers are only started when an environment is being built. Therefore, worker pods may not always exist. Generally, user requests and access logs will be in the server pod, while logs related to environment builds will be in a worker pod. In the list of conda-store pods shown below, you'll also see pods for `minio`, `postgresql`, and `redis`. These are used internally by conda-store are not likely to have any logs of interest.
58+
59+
- `nebari-conda-store-server-[id]`
60+
- `nebari-conda-store-worker-[id]`
61+
- `nebari-conda-store-minio-[id]`
62+
- `nebari-conda-store-postgresql-postgresql-0`
63+
- `nebari-conda-store-redis-master-0`
64+
65+
### Deployed app logs (via jhub-apps)
66+
67+
If you have `jhub-apps` enabled on your deployment, you can view the logs to debug deployed apps.
68+
69+
To see the logs from **all deployed apps**, use the label filter `container` = `notebook`. The main container in each deployed app pod is named `notebook`.
70+
71+
To see **logs from a specific app**, use the `pod` label and begin typing either the name of the user running the app or the app name to find the correct pod. App pods are named with the convention `jupyter-[username]--[app_name]-[pod_id]`.
72+
73+
## Additional Information
74+
75+
- [Understand Log Query Structure](https://grafana.com/docs/loki/latest/query/log_queries/)
76+
- [Use the Query Editor](https://grafana.com/docs/grafana/latest/datasources/loki/query-editor/#choose-a-query-editing-mode)

0 commit comments

Comments
 (0)