Skip to content

Commit d68e289

Browse files
authored
Merge branch 'main' into local-deploy-explain-domain
2 parents 6ce2d28 + 53fae55 commit d68e289

29 files changed

+191
-421
lines changed

docs/community/maintainers/release-process.md

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,24 +47,15 @@ For example, the first Nebari CalVer release was `2022.10.1`. If a hotfix releas
4747

4848
We use the following guidelines to manage `git` branches by assigning certain roles to particular branches.
4949

50-
- [`develop`](https://github.com/nebari-dev/nebari/tree/develop) - Represents the active development branch and is the _default_ branch on the GitHub repository.
50+
- [`main`](https://github.com/nebari-dev/nebari/tree/main) - Represents the active development branch and is the _default_ branch on the GitHub repository.
5151

52-
- [`main`](https://github.com/nebari-dev/nebari/tree/main) - Represents a production-ready state of the code-base, with an appropriate tag to match the most recent release.
52+
## Release Tags
5353

54-
- `release/YYYY-MM-releaseNumber` - Represents the branch for the upcoming release and only briefly exist while actively preparing for the release.
54+
- `YYYY-MM-releaseNumber` - Represents the tag for a particular release.
5555

5656
### Process
5757

58-
Although this process is captured in the [release checklist template](https://github.com/nebari-dev/nebari/issues/new?assignees=&labels=type%3A+release+%F0%9F%8F%B7&template=release-checklist.md&title=%5BRELEASE%5D+%3Cversion%3E), it's worth making clear how branches are managed.
59-
60-
- Active development occurs against the `develop` branch.
61-
- When it's time for a release, the Release Captain will create the release branch `release/YYYY-MM-releaseNumber` and prepare the branch for the release. At times, this might mean cherry-picking commits that are needed for this release and at other times, this might mean merging `develop` into this release branch.
62-
- As soon as this release branch is ready, the Release Captain can open a pull request against `main`. From here, all of the changes that are included in the release should be visible in the "Files changed" section of the pull request.
63-
- Once CI passes, all manual tests are successful and the team is happy with the changes, the Release Captain can complete the release checklist and cut the release.
64-
65-
#### Hotfixes
66-
67-
In the event that a patch or hotfix release is needed, release process is the same as outlined above. The only difference is that the commits that are merged into the hotfix release branch will need to be cherry-picked from the `develop` branch.
58+
The release process is captured in the [release checklist template](https://github.com/nebari-dev/nebari/blob/main/.github/ISSUE_TEMPLATE/release-checklist.md). In the event that a patch or hotfix release is needed, release process is the same as outlined above.
6859

6960
## Related packages
7061

docs/community/maintainers/reviewer-guidelines.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Only maintainers can merge pull requests. Please follow these guidelines:
6262
- If the contribution is made to the `nebari-dev/nebari` repository, then you'll need to trigger the Kubernetes tests
6363
by commenting `/bot run tests` on the PR.
6464
- If the contribution is made to the `nebari-dev/nebari-docs` repository, then make sure to check the Netlify build and preview.
65-
- In case of merge conflicts, ask the PR submitter to rebase on `develop`.
65+
- In case of merge conflicts, ask the PR submitter to rebase on `main`.
6666
- Squashing commits or cleaning up commit messages of a PR that you consider too messy is OK.
6767
Remember to retain the original author’s name when doing this.
6868
- When you want to reject a PR: if it’s very straightforward, you can close it and explain why. If it’s not,

docs/community/nebari-tests.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ To test on cloud Kubernetes, deploy Nebari in the normal way on the cloud, but m
9191
- [Use a development branch](#use-a-development-branch) to specify the Docker images based on the latest development code in `nebari-config.yaml`.
9292

9393
:::warning
94-
Testing your contribution by deploying Nebari on the cloud (AWS, GCP, Azure, and Digital Ocean) can consume a lot of time and resources.
94+
Testing your contribution by deploying Nebari on the cloud (AWS, GCP, and Azure) can consume a lot of time and resources.
9595
Always prefer local testing when possible.
9696
It will be easier to debug, may be quicker to deploy, and is likely to be less expensive.
9797
:::

docs/docs/explanations/advanced-configuration.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,6 @@ domain: demo.nebari.dev
265265

266266
`provider`: Determines the cloud provider used to deploy infrastructure related resources on Nebari. Possible values are:
267267

268-
- `do` for DigitalOcean
269268
- `aws` for Amazon Web Services
270269
- `gcp` for Google Could Provider
271270
- `azure` for Microsoft Azure
@@ -316,7 +315,7 @@ The CI/CD workflow that is best for you will depend on your organization, but th
316315
- 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.
317316

318317
:::note
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/).
318+
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), or [GCP](https://www.nebari.dev/docs/how-tos/nebari-gcp/#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/).
320319
:::
321320

322321
### Certificates

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

Lines changed: 97 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,103 @@ amazon_web_services:
9898
permissions_boundary: arn:aws:iam::01234567890:policy/<permissions-boundary-policy-name>
9999
```
100100

101+
### EKS KMS ARN (Optional)
102+
103+
You can use AWS Key Management Service (KMS) to enhance security by encrypting Kubernetes secrets in
104+
Amazon Elastic Kubernetes Service (EKS). This approach adds an extra layer of protection for sensitive
105+
information, like passwords, credentials, and TLS keys, by applying user-managed encryption keys to Kubernetes
106+
secrets, supporting a [defense-in-depth strategy](https://aws.amazon.com/blogs/containers/using-eks-encryption-provider-support-for-defense-in-depth/).
107+
108+
Nebari supports setting an existing KMS key while deploying Nebari to implement encryption of secrets
109+
created in Nebari's EKS cluster. The KMS key must be a **Symmetric** key set to **encrypt and decrypt** data.
110+
111+
:::warning
112+
Enabling EKS cluster secrets encryption, by setting `amazon_web_services.eks_kms_arn`, is an
113+
_irreversible_ action and re-deploying Nebari to try to remove a previously set `eks_kms_arn` will fail.
114+
On the other hand, if you try to change the KMS key in use for cluster encryption, by re-deploying Nebari
115+
after setting a _different_ key ARN, the re-deploy should succeed but the KMS key used for encryption will
116+
not actually change in the cluster config and the original key will remain set. The integrity of a faulty
117+
deployment can be restored, following a failed re-deploy attempt to remove a previously set KMS key, by
118+
simply re-deploying Nebari while ensuring `eks_kms_arn` is set to the original KMS key ARN.
119+
:::
120+
121+
:::danger
122+
If the KMS key used for envelope encryption of secrets is ever deleted, then there is no way to recover
123+
the EKS cluster.
124+
:::
125+
126+
:::note
127+
After enabling cluster encryption on your cluster, you must encrypt all existing secrets with the
128+
new key by running the following command:
129+
`kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - kms-encryption-timestamp="time value"`
130+
Consult [Encrypt K8s secrets with AWS KMS on existing clusters](https://docs.aws.amazon.com/eks/latest/userguide/enable-kms.html) for more information.
131+
:::
132+
133+
Here is an example of how you would set KMS key ARN in `nebari-config.yaml`.
134+
135+
```yaml
136+
amazon_web_services:
137+
# the arn for the AWS Key Management Service key
138+
eks_kms_arn: "arn:aws:kms:us-west-2:01234567890:key/<aws-kms-key-id>"
139+
```
140+
141+
### Launch Templates (Optional)
142+
143+
Nebari supports configuring launch templates for your node groups, enabling you to customize settings like the AMI ID and pre-bootstrap commands. This is particularly useful if you need to use a custom AMI or perform specific actions before the node joins the cluster.
144+
145+
:::warning
146+
If you add a `launch_template` to an existing node group that was previously created without one, AWS will treat this as a change requiring the replacement of the entire node group. This action will trigger a reallocation of resources, effectively destroying the current node group and recreating it. This behavior is due to how AWS handles self-managed node groups versus those using launch templates with custom settings.
147+
:::
148+
149+
:::tip
150+
To avoid unexpected downtime or data loss, consider creating a new node group with the launch template settings and migrating your workloads accordingly. This approach allows you to implement the new configuration without disrupting your existing resources.
151+
:::
152+
153+
#### Configuring a Launch Template
154+
155+
To configure a launch template for a node group in your `nebari-config.yaml`, add the `launch_template` section under the desired node group:
156+
157+
```yaml
158+
amazon_web_services:
159+
region: us-west-2
160+
kubernetes_version: "1.18"
161+
node_groups:
162+
custom-node-group:
163+
instance: "m5.large"
164+
min_nodes: 1
165+
max_nodes: 5
166+
gpu: false # Set to true if using GPU instances
167+
launch_template:
168+
# Replace with your custom AMI ID
169+
ami_id: ami-0abcdef1234567890
170+
# Command to run before the node joins the cluster
171+
pre_bootstrap_command: |
172+
#!/bin/bash
173+
# This script is executed before the node is bootstrapped
174+
# You can use this script to install additional packages or configure the node
175+
# For example, to install the `htop` package, you can run:
176+
# sudo apt-get update
177+
# sudo apt-get install -y htop"
178+
```
179+
180+
**Parameters:**
181+
182+
- `ami_id` (Optional): The ID of the custom AMI to use for the nodes in this group; this assumes the AMI provided is an EKS-optimized AMI derivative. If specified, the `ami_type` is automatically set to `CUSTOM`.
183+
- `pre_bootstrap_command` (Optional): A command or script to execute on the node before
184+
it joins the Kubernetes cluster. This can be used for custom setup or configuration
185+
tasks. The format should be a single string in conformation with the shell syntax.
186+
This command is injected in the `user_data` field of the launch template. For more
187+
information, see [User Data](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html).
188+
189+
> If you're using a `launch_template` with a custom `ami_id`, there's an issue with updating the `scaling.desired_size` via Nebari configuration (terraform). To scale up, you must recreate the node group or adjust the scaling settings directly in the AWS Console UI (recommended). We are aware of this inconsistency and plan to address it in a future update.
190+
191+
:::note
192+
If an `ami_id` is not provided, AWS will use the default Amazon Linux 2 AMI for the
193+
specified instance type. You can find the latest optimized AMI IDs for Amazon EKS in your
194+
cluster region by inspecting its respective SSM parameters. For more information, see
195+
[Retrieve recommended Amazon Linux AMI IDs](https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html).
196+
:::
197+
101198
</TabItem>
102199

103200
<TabItem value="azure" label="Azure">
@@ -129,37 +226,6 @@ azure:
129226
130227
</TabItem>
131228
132-
<TabItem value="do" label="DigitalOcean">
133-
134-
DigitalOcean has a restriction with autoscaling in that the minimum nodes allowed (`min_nodes` = 1) is one but is by far the least expensive provider even accounting for `spot/pre-emptible` instances.
135-
In addition, Digital Ocean doesn't have accelerator/gpu support.
136-
137-
Digital Ocean is a good choice for trying out Nebari, but we recommend selecting a different provider for your production Nebari deployment.
138-
139-
To see available instance types refer to [Digital Ocean Instance Types](https://www.digitalocean.com/docs/droplets/).
140-
Additionally the Digital Ocean cli `doctl` has [support for listing droplets](https://www.digitalocean.com/docs/apis-clis/doctl/reference/compute/droplet/list/).
141-
142-
```yaml
143-
digital_ocean:
144-
region: nyc3
145-
kubernetes_version: "1.21.10-do.0"
146-
node_groups:
147-
general:
148-
instance: "g-4vcpu-16gb"
149-
min_nodes: 1
150-
max_nodes: 1
151-
user:
152-
instance: "g-2vcpu-8gb"
153-
min_nodes: 1
154-
max_nodes: 5
155-
worker:
156-
instance: "g-2vcpu-8gb"
157-
min_nodes: 1
158-
max_nodes: 5
159-
```
160-
161-
</TabItem>
162-
163229
<TabItem value="existing" label="Existing Kubernetes clusters">
164230
165231
Originally designed for Nebari deployments on a "local" minikube cluster, this feature has now expanded to allow users to deploy Nebari to any existing kubernetes cluster.
@@ -221,7 +287,6 @@ local:
221287
:::note
222288
Many of the cloud providers regularly update their internal **Kubernetes versions** so if you wish to specify a particular version, please check the following resources.
223289
This is _completely optional_ as Nebari will, by default, select the most recent version available for your preferred cloud provider:
224-
[Digital Ocean](https://docs.digitalocean.com/products/kubernetes/changelog/);
225290
[Google Cloud Platform](https://cloud.google.com/kubernetes-engine/docs/release-notes-stable);
226291
[Amazon Web Services](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html);
227292
[Microsoft Azure](https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions?tabs=azure-cli).

docs/docs/explanations/architecture.mdx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,7 @@ import TabItem from '@theme/TabItem';
5252
![GCP Architecture Diagram](/img/explanations/architecture-diagram-gcp.png)
5353

5454
</TabItem>
55-
<TabItem value="do" label="Digital Ocean">
5655

57-
![DO Architecture Diagram](/img/explanations/architecture-diagram-do.png)
58-
59-
</TabItem>
6056
<TabItem value="aws" label="Amazon AWS">
6157

6258
![AWS Architecture Diagram](/img/explanations/architecture-diagram-aws.png)

docs/docs/faq.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ If you'd like to retain the latest version of an environment and only remove spe
4848
## How do I use preemptible and spot instances on Nebari?
4949

5050
A preemptible or spot VM is an instance that you can create and run at a much lower price than normal instances. Azure
51-
and Google Cloud platform use the term preemptible, while AWS uses the term spot, and Digital Ocean doesn't support
52-
these types of instances. However, the cloud provider might stop these instances if it requires access to those
51+
and Google Cloud platform use the term preemptible, while AWS uses the term spot.
52+
However, the cloud provider might stop these instances if it requires access to those
5353
resources for other tasks. Preemptible instances are excess Cloud Provider's capacity, so their availability varies with
5454
usage.
5555

@@ -84,10 +84,6 @@ Spot instances aren't supported at this moment.
8484
8585
Preemptible instances aren't supported at this moment.
8686
87-
##### Digital Ocean
88-
89-
Digital Ocean doesn't support these type of instances.
90-
9187
## Why doesn't my code recognize the GPU(s) on Nebari?
9288
9389
First be sure you chose a [GPU-enabled server when you selected a profile][selecting a profile]. Next, if you're using PyTorch, see [Using GPUs on Nebari][using gpus]. If it's still not working for you, be sure your environment includes a GPU-specific version of either PyTorch or TensorFlow, i.e. `pytorch-gpu` or `tensorflow-gpu`. Also note that `tensorflow>=2` includes both CPU and GPU capabilities, but if the GPU is still not recognized by the library, try removing `tensorflow` from your environment and adding `tensorflow-gpu` instead.

docs/docs/get-started/cloud-providers.mdx

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,8 @@ import TabItem from '@theme/TabItem';
3636
For detailed instructions on how to deploy Nebari on **GCP** visit the [How to deploy Nebari on GCP][nebari-gcp] section.
3737

3838
</TabItem>
39-
<TabItem value="do" label="Digital Ocean">
4039

41-
<div class="text--center">
42-
<img src="/img/get-started/started-digital-ocean-logo.png" width={420} />
43-
</div>
44-
45-
[DigitalOcean](https://docs.digitalocean.com/products/kubernetes/) is a cloud hosting provider that offers cloud computing services and Infrastructure as a Service (IaaS) known for its pricing and scalability.
4640

47-
For detailed instructions on how to deploy Nebari on **Digital Ocean** visit the [How to deploy Nebari on Digital Ocean][nebari-do] section.
48-
49-
</TabItem>
5041
<TabItem value="aws" label="Amazon AWS">
5142

5243
<div class="text--center">
@@ -75,7 +66,6 @@ For detailed instructions on how to deploy Nebari on **Azure** visit the [How to
7566

7667
[nebari-aws]: /how-tos/nebari-aws.md
7768
[nebari-azure]: /how-tos/nebari-azure.md
78-
[nebari-do]: /how-tos/nebari-do.md
7969
[nebari-gcp]: /how-tos/nebari-gcp.md
8070
[nebari-local]: /how-tos/nebari-local.md
8171
[nebari-how-tos]: /how-tos/index.mdx

docs/docs/get-started/deploy.mdx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ If you are not sure which option to choose, a cloud installation is likely your
2929
:::note
3030
The cloud installation is based on Kubernetes, but knowledge of Kubernetes is **NOT** required nor is in-depth knowledge about the specific provider required either.
3131

32-
Currently, Nebari supports [Amazon AWS][nebari-aws], [DigitalOcean][nebari-do], [Google GCP][nebari-gcp], and [Azure][nebari-azure].
32+
Currently, Nebari supports [Amazon AWS][nebari-aws], [Google GCP][nebari-gcp], and [Azure][nebari-azure].
3333
:::
3434

3535
</TabItem>
@@ -73,14 +73,12 @@ For instructions on installing and deploying Nebari on a particular cloud provid
7373

7474
- [Deploying Nebari on AWS][nebari-aws]
7575
- [Deploying Nebari on Azure][nebari-azure]
76-
- [Deploying Nebari on Digital Ocean][nebari-do]
7776
- [Deploying Nebari on GCP][nebari-gcp]
7877

7978
<!-- Internal links -->
8079

8180
[nebari-aws]: /how-tos/nebari-aws.md
8281
[nebari-azure]: /how-tos/nebari-azure.md
83-
[nebari-do]: /how-tos/nebari-do.md
8482
[nebari-gcp]: /how-tos/nebari-gcp.md
8583
[nebari-local]: /how-tos/nebari-local.md
8684
[nebari-deploy]: /get-started/deploy.mdx

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ Already made your mind about deployment? Check our handy how-to-guides:
9898

9999
- [Deploying Nebari on AWS][nebari-aws]
100100
- [Deploying Nebari on Azure][nebari-azure]
101-
- [Deploying Nebari on Digital Ocean][nebari-do]
102101
- [Deploying Nebari on GCP][nebari-gcp]
103102
- [Deploying Nebari on a local cluster][nebari-local]- using [`kind`](https://kind.sigs.k8s.io/) no cloud required
104103

@@ -107,7 +106,6 @@ Already made your mind about deployment? Check our handy how-to-guides:
107106
[advanced-configuration]: /explanations/advanced-configuration.md
108107
[nebari-aws]: /how-tos/nebari-aws.md
109108
[nebari-azure]: /how-tos/nebari-azure.md
110-
[nebari-do]: /how-tos/nebari-do.md
111109
[environment-management]: /how-tos/nebari-environment-management.md
112110
[nebari-extension-system]: /how-tos/nebari-extension-system.md
113111
[nebari-gcp]: /how-tos/nebari-gcp.md

0 commit comments

Comments
 (0)