Skip to content

Add a Custom App Store Catalog#

Overview#

An App Catalog is a structured git repository that contains all the necessary information app store needs to install an app. The Manifest is the most important one. But the app can also contain other app metadata information for the UI, like a README, or a license (see the manifest appInfo specification field). The catalog of built-in apps that is delivered along with EDA can be found here.

Catalog Structure#

The structure of a catalog is as follows:

vendors/
    <vendor-1-name>
        apps/
            <app-1-name>/
                manifest.yaml
                README.md
                LICENSE
                ... # Other useful files, which can be referenced in the manifest and used in the UI.
            <app-2-name>/
                ...
    <vendor-2-name>/
        apps/
            ...
    ...

The manifest of an App must be called manifest.yaml and be placed in vendors/<vendor-name>/apps/<app-name>/manifest.yaml in the git repository.

App Versioning#

Apps will have multiple versions. To version the Apps in the Catalog, git tags are used. A structured git tag will be seen as an installable App (with a certain version) for the App Store, which can then be installed from the UI.

Any tag in the form of vendors/<vendor-name>/apps/<app-name>/<version> will be registered as an installable App by the App Store.

The version field should conform to Semantic Versioning 2.0, prefixed with a "v". For example: v0.1, v0.1.0-alpha.

Adding a Catalog to the App Store#

Creating a Credentials Secret#

Before you can add a Catalog to the App Store, you must create a Kubernetes secret that contains the credentials to connect to the Catalog git repository over HTTPS. This can be done using the following resource where you replace the data with the correct base64 encoded values.

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: your-creds # A unique secret name
data:
  username: <base64(username)> # Base64 encoded username
  password: <base64(password or token)> # Base64 encoded password/token
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: your-creds # A unique secret name
data:
  username: <base64(username)> # Base64 encoded username
  password: <base64(password or token)> # Base64 encoded password/token
EOF

Creating the Catalog#

You can create your own Catalog using the following resource. This uses the above created secret as authSecretRef.

apiVersion: appstore.eda.nokia.com/v1
kind: Catalog
metadata:
  name: your-catalog # name of your catalog
spec:
  title: Your Awesome Catalog # UI name of your catalog, optional
  remoteURL: https://<your-catalog>.git # link to your git repository.
  authSecretRef: your-creds # reference to valid credentials for the git repository
  skipTLSVerify: {true|false}
kubectl apply -f - <<EOF
apiVersion: appstore.eda.nokia.com/v1
kind: Catalog
metadata:
  name: your-catalog # name of your catalog
spec:
  title: Your Awesome Catalog # UI name of your catalog, optional
  remoteURL: https://<your-catalog>.git # link to your git repository.
  authSecretRef: your-creds # reference to valid credentials for the git repository
  skipTLSVerify: {true|false}
EOF