-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFD - Add Nebari Configuration Options for Air-Gapped or Secure Deployments #52
Comments
I propose adding a "Nebari Secure Deployment Guide" to this RFD. This would take the form of one or more nebari-config.yaml files which each utilize inline comments to comprehensively document configuration parameters relevant to various aspects of security. For example, one config file may demonstrate how to override the default docker container locations with a custom-specified repository. This config file could be named e.g. "nebari-config-custom-docker-repo.yaml". Another example could specify the aboe docker repository along with AMI IDs and elimination of AWS internet gateway. This config file could be called e.g. "nebari-config-aws-airgap.yaml". These are only examples: further discussion can refine exactly what configuration goes into each yaml file and how the files are named. These files could then be used in associated CI/CD pipelines to validate that the configuration state they describe continues to be supported by Nebari as new versions are released. I propose that the work to hook up this CI/CD mechanism is not part of this RFD. I do not have a recommended location for these nebari-config.yaml files yet. |
Somewhat related, I know @viniciusdc was working on a way to auto generate documentation from the code. We could potentially add the documentation describing for each new nebari-config setting in the pydantic models themselves. Do you have an issue that shows what you were working on @viniciusdc? |
I think this is fine and your proposed method in #2618 makes sense.
I think this syntax would be quite awkward. As much as possible, prebaking stuff like enabling other repos into your AMI would solve this. For running a script on startup, there is the
Slight nitpick, but rather than |
The original intent of the Add aws_launch_template PR was to make it easy on the user to run commands and customized AmazonLinux AMIs using launch_template/user_data sections, with less crisscrossing of config variable options and more built-in logic to reduce the risk of blocking nodes from joining the cluster (e.g. missing or faulty user-defined bootstrap.sh commands). Your replacement PR includes the same launch_template/user_data approach as originally proposed in PR and still includes the inline scripting option with the pre_bootstrap_command/node_prebootstrap_command var. The main differences I see between the PRs is that your rendition moves the pre-bootstrap command option to the When specifying an AMI Our original PR#2621 was not engaging users to specify |
Hi @joneszc, Thanks for the valuable follow-up. Indeed, I took the liberty of expanding the PR to be a bit more generic in the sense of ami customization. As the draft suggests, that was just a small passthrough to see how the config would be exposed to a user, in which I was already considering the scope of a "security" deployment option or set of settings that lead to that in the future.
It's worth noticing that I've kept your original option to set the
I thought about that, and I concur the name needs to be more accurate since it's not exactly what it says it is. Still, at the same time, I will enforce that this can only be passed when the AMI type is set to CUSTOM, and, as mentioned by you as well, that's something that I didn't have the time to add to that PR yet, but it was the original goal. However, on a counter suggestion, what about
That's also different from the PR's intention. The main goal was to clean up the handling logic only from within the Terraform resources; the reason it shows up to users right now is mainly due to a current narrow distinction between what should be passed down as a Terraform variable and what should be allowed in the
You mentioned this exciting prospect. Right now, in any of the given PRs, we are "hardcoding" that as part of the template file, which, while not harmful, is not preferable. So maybe the best course of action would be to leverage the data_user as a path to a template file and only guarantee a set of variables to these templates, such as certificate, cluster_name, etc. |
I could see calling the variable "user_data" if you weren't including the Since you are, in effect, requiring users to manually enter the bootstrap.sh command when setting |
@viniciusdc @dcmcand I believe this RFD has served its purpose and can be closed. The changes discussed here have been implemented, merged, and are slated for release 2024.9.1 |
Title
Addition of Nebari Configuration Options for Deploying Nebari in Air-Gapped and/or Secure Environments
Summary
There are currently a number of options available to optimize Nebari configurations for deploying in AWS air-gapped networks, private subnets, or secure environments
For example:
internal
as opposed tointernet-facing
while also pointing to existing subnets:Custom images / private registry #2097
However, configuration options could be expanded to enable:
User benefit
Design Proposal
Note that this would also resolve the functionality to set private container registries/mirrors by adding containerd configs/imports:
Alternatives or approaches considered (if any)
In addition to using node pre-bootstrap commands to override containerd configs for setting private registry mirrors, increased terraform and helm override options could be enabled to specify container images and tags to reflect custom-built or privately-hosted container-images.
Best practices
User impact
gpu: <true/false>
(setting a custom AMI ID would trigger the terraform logic to automatically switch theami_type
value to "CUSTOM", as required by AWS EKS).Unresolved questions
The text was updated successfully, but these errors were encountered: