Skip to content

Conversation

@Racer159
Copy link
Contributor

@Racer159 Racer159 commented Apr 1, 2025

  • One-line PR description: Allow Zarf deploy-time configuration to be stored and referenced in a registry (i.e. is named / versioned)
  • Other comments:

@Racer159 Racer159 marked this pull request as draft April 1, 2025 20:16
Signed-off-by: Wayne Starr <me@racer159.com>
@Racer159 Racer159 force-pushed the 23-zarf-named-configs branch from a3ca308 to ee488b3 Compare April 1, 2025 20:56
Racer159 added 6 commits April 1, 2025 17:18
Signed-off-by: Wayne Starr <me@racer159.com>
Signed-off-by: Wayne Starr <me@racer159.com>
Signed-off-by: Wayne Starr <me@racer159.com>
Signed-off-by: Wayne Starr <me@racer159.com>
Signed-off-by: Wayne Starr <me@racer159.com>
Signed-off-by: Wayne Starr <me@racer159.com>

### Non-Goals

- Provide configuration outside of the deployment of the package (i.e. geared towards the Ashton persona)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been using these names in proposals though not sure if there is an easy way for folks to get context on them in the project.

Ashton - Zarf Deployer
Jacquline - Zarf SRE
Ezra - Zarf Creator

Should these be removed or exist somewhere they can be discovered easily?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like @soltysh expressed elsewhere, I agree that we'll make the project more accessible to contributors by talking about users by what they want to achieve with the product rather than with project-specific jargon. "As a Zarf user, I want to do X with Y feature, so I can Z" remains user-focused without being opaque to someone without project-specific context.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm all for switching to explicit role, rather than a name. For someone reading not being familiar with those personas it's hard to understand what they mean. Being explicit lowers the entry bar for contributors.

Copy link
Contributor

@mkcp mkcp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work, named configs are shaping up well. Still some details to consider


## Summary

This ZEP proposes to allow configuration specific to a Zarf package deployment to be named, versioned and published to a registry so that it can simplify the deployment experience for end users.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean 👍


This ZEP proposes to allow configuration specific to a Zarf package deployment to be named, versioned and published to a registry so that it can simplify the deployment experience for end users.

## Motivation
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clear and user-focused. Nice work


### Non-Goals

- Provide configuration outside of the deployment of the package (i.e. geared towards the Ashton persona)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like @soltysh expressed elsewhere, I agree that we'll make the project more accessible to contributors by talking about users by what they want to achieve with the product rather than with project-specific jargon. "As a Zarf user, I want to do X with Y feature, so I can Z" remains user-focused without being opaque to someone without project-specific context.

### Non-Goals

- Provide configuration outside of the deployment of the package (i.e. geared towards the Ashton persona)
- Include security relevant deployment configuration in the registry (i.e. package signing keys)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


#### Story 1

**As** Jacquline **I want** to be able to pre-bake package configuration **so that** I can provide a more declarative package to Ashton.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recommend making the user personae more generic per above. Focus on the specific workflow that user would want to achieve.

zep-number: 0023
authors:
- "@racer159"
status: implementable
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's nudge this back to provisional until we converge on a few more implementation details. Ideally we can prove this out with an experimental branch first, but that's not necessary in all cases.

**And When** I deploy that package
**Then** the chart will be in the `new-namespace` namespace.

To allow multiple configured packages to be created from one base package. This has the potential though to introduce Zarf package sprawl and could clog a registry with references to Zarf packages that are mostly the same.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good callout and considerations for cache + disk storage and deduplication.


##### Unit tests

Unit tests would need to be added to ensure that the config was passed into the package deploy library interface correctly.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What kinds of validation can we run to ensure that the Named Configuration passed in is correct and complete?

## Design Details

<!-- This is negotiable and would like to hear others' thoughts on a local format for named configs vs having them be OCI-only -->
Named configs would be created and published through a set of new CLI commands (`zarf config create` and `zarf config publish`). This would pull together any referenced files or necessary artifacts and either create a local `tar.zst` or publish an OCI reference similar to a package. This config would then be referenced and applied during a package deployment.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have some concerns about the scope creep here. In a perfect world, what would land in scope for MVP (minimum viable product) and an MLP (minimum lovable product) implementation?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll add my two cents as well. I'm struggling to understand the usefulness of this approach. In most scenarios (gitops based) you have a script that is responsible for deploying your application, which means with ZEP-0021 you'll be able to keep the values file next to the script checked into the repository. So why the extra step to publish this to an OCI registry?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants