Skip to main content

How to Package and Distribute a Production Application

Your application can be packaged and distributed as a set of standard Kubernetes manifests, Helm charts, or Kubernetes Operators. (While an operator is technically deployed either using plain Kubernetes manifests or a Helm chart, we list it separately because of the advanced image management work needed to effectively deliver Operators into customer environments.)

These manifests include your application manifests, and can include custom resources used to invoke various app manager functions. Packaging refers to the act of authoring, testing, iterating on, and accepting a set of Kubernetes manifests for release to your customers with Replicated.

Because of the depth and breadth of extensions available in the Replicated platform, we recommend packaging and testing your application in small iterations before releasing to customers. With the interdependencies and synergies among Replicated features, it can be helpful to know which ones to explore first. Some integrations, like image management and preflight checks, are required or highly recommended. From that point, other features can generally be integrated in any order.

If you have questions about this workflow, you can post a question on our Community site.


Complete the following items before you perform this task:

  • Create a Kubernetes-deployable application that contains deployment.yaml and services.yaml files.
  • Set up a development server.
  • Create your account in the Replicated vendor portal. See Creating a Vendor Account.
  • (Recommended) Complete a tutorial to package, distribute, and install a sample application:
  • (Recommended) Send a questionnaire to your customers to gather information about their environments. See Customer Application Deployment Questionnaire.

Creating and Testing Your Initial Release

The following diagram is a visual representation of the steps that follow for creating and testing your first release. You will iterate many times before distributing your application to customers.

Initial Release Workflow

View a larger version of this image

Complete the following procedures to import your files, create, and test your first release:

  1. Push your images to the Replicated private registry if you plan to host your images on that registry. See Push Images to the Replicated Private Registry in Connecting to an Image Registry.

    If you are using a different image option, skip this step and proceed to the next step.

  2. Import your application files to Replicated using one of the following types:

    Standard manifest filesWe recommend using standard manifest YAML files unless you are already using Helm or Kubernetes Operators.

    To import using the Replicated vendor portal, see Creating Releases with Standard Manifest Files.
    Helm chartsIf your application is already packaged using Helm charts, see Creating Releases with Helm Charts.
    Kubernetes OperatorsIf you are already using Kubernetes Operators, see Package the Kubernetes Operator Application.

    Skip connecting to a private registry and skip creating a Configuration screen in the admin console.

    You can use any of the other packaging functions, depending on your needs. Create a license file, and promote and test each iteration.
  3. (Required) If you are using private images, either connect to an external private registry or update the image tags to point to the Replicated private registry. See Connecting to an Image Registry.


    Skip this step if your images are open-source or public, or if you are using Kubernetes Operators.

  4. If you are providing your users with a cluster hosted on a VM, you must configure and test a Kubernetes installer. See Creating a Kubernetes Installer.

  5. Create a license file in the vendor portal that contains entitlement information for your customer. You also need a license file to test your application in the admin console. See Creating a Customer.

  6. Promote the release and test it by installing the release in a development environment with the license file that you created. You can use the environment that you created during one of the recommended tutorials. For information about promoting a release, see Creating Releases with Helm Charts or Creating Releases with Standard Manifest Files. For information about installation, see Overview of Installing an Application.

Next, add functionality to your release.

Adding Functionality to Your Releases

Add functionality to your releases. The following table gives a suggested order, but you can add functionality in any order. These functions can be used with Kubernetes Operators, except where noted.

Update, promote, and test each release in your development environment until you are ready to share the application with your customers.

Creating and Editing Configuration Fields

Mapping User-Supplied Values
Create a basic Configuration screen in the Replicated admin console to collect required or optional values from your users that are used to access the application:

1. Define custom fields.

2. Map the values to the application.

Note: Skip this step if you are using Kubernetes Operators.
Adding Persistent Data Stores

Integrate persistent stores, such as databases, queues, and caches.

Add options for your users to either embed a database instance with the application, or connect your application to an external database instance that they manage.

Customizing the Admin Console and Download PortalCustomize the appearance of the admin console for end users, including branding, application status, URLs, adding ports and port forwarding, and adding custom graphs.
Configuring Role-Based Access ControlLimit access to a single namespace in a cluster.
Defining Preflight Checks and Support BundlesDefine preflight checks to test for system compliance during the installation process and reduce the number of support escalations.

Enable support bundles to collect and analyze troubleshooting data from your customers' clusters to help you diagnose problems with application deployments.
Configuring BackupsEnable snapshots so that end users can backup and restore their application configuration and data.
Adding Cluster Ingress OptionsConfigure how traffic gets to your application using cluster ingress options.
Using Kubernetes Installer TLS certificatesShare the Kubernetes installer TLS certificate with other Kubernetes resources.
Enabling and Configuring Identity Service (Beta)Control access to the application for Kubernetes installer-created clusters.
Including Conditional ResourcesInclude and exclude resources based on a customer's configuration choices, such as an external database or an embedded database.
Cleaning Up Kubernetes JobsClean up completed Kubernetes jobs to prevent errors with future Kubernetes job updates.

Distributing Your Application

To distribute your production application:

  1. Promote the release to the desired channel in the vendor portal. You can use the default channels or edit them, or create a custom channel. See Creating and Editing Channels.

  2. (Recommended) To support installations with the kots CLI, provide your users with a template of the ConfigValues file for the release. See Downloading the ConfigValues File.

  3. Share with each customer the license file that you created and the installation command available in the vendor portal. See Sharing the License Files and Application Releases.