-
Notifications
You must be signed in to change notification settings - Fork 10
Addressing issue 89: incorporating SUP on App Registry as OCI Registry #123
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
Merged
arne-broering
merged 30 commits into
pre-draft
from
issue-89-app-registry-as-oci-registry
Dec 10, 2025
Merged
Changes from 12 commits
Commits
Show all changes
30 commits
Select commit
Hold shift + click to select a range
c552d8d
iniital commit to integrate SUP
arne-broering 6c67ddc
integrating SUP decision
arne-broering 54ade4c
editing formal App Registry spec
arne-broering cf80f39
editing formal App Registry spec
arne-broering 45f1e5c
editing formal App Registry spec
arne-broering cb08b22
editing formal App Registry spec
arne-broering 8a8ae18
editing formal App Registry spec
arne-broering ca68501
editing formal App Registry spec
arne-broering 14c73a3
editing formal App Registry spec
arne-broering 3ec997d
editing formal App Registry spec
arne-broering 189817d
editing formal App Registry spec
arne-broering b0a4aeb
adjusting rest of spec to latest adjustments on the Application Registry
arne-broering 9aecef2
addressing PR comment about no specification language in concept section
arne-broering af1b2e5
addressing PR review comments
arne-broering 59620e5
addressing PR review comments
arne-broering 58a8563
renamed the files & folders which were renamed in the nav
arne-broering 5528706
renamed the files & folders which were renamed in the nav
arne-broering 92b2e42
removed incorrect sentence from technical lexicon
arne-broering 171d87b
changed overview figure
arne-broering 1e57df5
Removed 'Marketplace' term and adjusted 'Application Catalog' term usage
arne-broering 1030d8c
added note for authentication
arne-broering 43a53a3
changed application overview
arne-broering 056331a
add digest option
arne-broering 7033e13
removing folder structure requirement
arne-broering a632556
fixing pages error
arne-broering 0ae0969
removed link to private GitHub repo
arne-broering 631ee9f
addressing various view comments from Sivanoc
arne-broering 4a9fb04
addressing more review comments from Sivanoc
arne-broering fee8f41
final corrections
arne-broering f4dcf3c
merging
arne-broering File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 6 additions & 1 deletion
7
src/specification/application-package/resources/index.md.jinja2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,32 +1,44 @@ | ||
| # Application Registry | ||
|
|
||
| This section describes the Application Registry and the exchange of an [application package](./application-package.md) from an Application Developer to the Workload Fleet Manager (WFM). | ||
| The margo specification differentiates 4 kinds of registries: *Application Registries*, *Component Registries*, and *Container Registries* as well as *Marketplaces*. | ||
|
|
||
| The Application Developer SHALL use a [Git repository](https://git-scm.com/) to share an [application package](./application-package.md). This Git repository is considered the Application Registry. | ||
| 1. An **Application Registry** hosts Application Packages that define through their [Application Description](../../specification/application-package/application-description.md) the application as one or multiple [Components](../../personas-and-definitions/technical-lexicon.md#component). | ||
| 2. A **Component Registry** hosts the [Components](../../personas-and-definitions/technical-lexicon.md#component) (which are deployable as *workloads*) and are provided as **Helm Charts** or **Compose Archives**. | ||
| 3. A **Container Registry** hosts container images referenced by those Components. | ||
| 4. A **Marketplace** lists applications to advertise them and enable purchasing for end users. | ||
|
|
||
| The connectivity between the Workload Fleet Manager and the Application Registry SHALL be read-only. | ||
| Out of these 4 registries, **only the Application Registry interface is in scope** of the margo specification and its API definition can be found [here](../../specification/application-package/application-registry.md). | ||
|
|
||
| Upon installation request from the End User, the Workload Fleet Manager SHALL retrieve the [application package](./application-package.md) using a ``git pull`` request from the Application Registry. | ||
| The diagram below illustrates these functionalities and relationships of registries within margo. | ||
|
|
||
| The Workload Fleet Manager reads in the application description file, ``margo.yaml``, and presents a user interface that allows the specification of parameters available according to ``margo.yaml``. | ||
| ```mermaid | ||
| flowchart | ||
| A[WFM, or internal Application Catalog] -- Application Descriptions link to --> B[Component Registry] | ||
| C[Application Registry] -- Application Descriptions link to --> B | ||
| B -- hosted Components links to --> D[Container Registry] | ||
| A -->|pulls Application Package | C | ||
| F[App Developer] -->|uploads Application Package to| C | ||
| G["Marketplace"] -- points to Application Package --> C | ||
| C -->|hosts 0..*| E@{ shape: docs, label: "Application Packages"} | ||
| C -->|validates token| H[Authentication Service] | ||
| A -->|requests token| H | ||
| style H stroke-dasharray: 3 6 | ||
|
|
||
| The End User then specifies the configuration parameters for the [application package](./application-package.md). | ||
| style B fill:#ABC | ||
| style C fill:#ABC | ||
| style D fill:#ABC | ||
| style G fill:#ABC | ||
| ``` | ||
|
|
||
| Then, the [application package](./application-package.md) is ready to be passed on to the installation process. | ||
| As shown in the figure above, an `Application Developer` uploads an [Application package](application-package.md) to an Application Registry. From there, it is available to a `Workload Fleet Manager` (WFM). | ||
| The WFM acts as a client to pull an [Application Package](application-package.md) from the Application Registry. It would then list this Application Package on its UI (e.g., an internal `Application Catalog`) to enable the usage on its managed devices. | ||
|
|
||
| > **Note** | ||
| > The specifics of the installation process are still under discussion: this could be for example a GitOps based approach. | ||
| An `Authentication Service` manages access control for the Application Registry. Hence, the WFM requests a token from there to include it into its requests to the Application Registry. The received token is then validated by the Application Registry through interaction with the Authentication Service. | ||
arne-broering marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| During this process the containers referenced in the application manifest ([Helm Chart](https://helm.sh/docs/) or [Compose](https://github.com/compose-spec/compose-spec/blob/master/03-compose-file.md)) are retrieved from container/Helm registries. | ||
| The Application Registry's API is compliant with the [OCI Registry API (v1.1.0)](https://github.com/opencontainers/distribution-spec/blob/v1.1.0/spec.md). A hosted Application Package is provided by listing its parts as layers in an [image manifests](https://github.com/opencontainers/image-spec/blob/v1.0.1/manifest.md)) that can be requested through the API. | ||
arne-broering marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| At a minimum, a Margo-compliant Workload Fleet Manager SHALL provide a way for an end user to manually set up a connection between the Workload Fleet Manager and an application registry. This is required so as not to prohibit an end user from being able to install any Margo-compliant application they wish, including applications developed by the end user. | ||
|
|
||
| The Workload Fleet Manager MAY provide enhanced user experience options such as the pre-configuring of application registries to monitor. These can include application registries from third-party application vendors or their own applications. | ||
| ## Relevant Links | ||
| * The technical reference of the Application Registry API is defined [here](../../specification/application-package/application-registry.md). | ||
|
|
||
| ## Secure Access to the Application Package | ||
|
|
||
| It is expected the connection between the Workload Fleet Manager and the Application developer’s application registry is secured using standard secure connectivity best practices. Some standard practices include the following: | ||
|
|
||
| - Basic authentication via HTTPS | ||
| - Bearer token authentication | ||
| - TLS certifications | ||
| * A reference implementation of the Application Registry is described [here](https://github.com/margo/app-package-definition-wg/blob/main/application-registry-example/app_registry_as_oci_registry.md) and includes sample applications and configuration for demonstration. It utilizes an open source OCI Registry and the [ORAS tool](https://oras.land/docs/) as the client. | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.