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 contact the Customer Success team by emailing [email protected].

Prerequisites

Complete the following items before you perform this task:

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:

    TypeDescription
    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 Create a Release. To import using the replicated CLI, see Managing Releases with the CLI.
    Helm chartsIf your application is already packaged using Helm charts, see Adding Helm Charts to a Release.
    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.

    note

    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 Promoting Releases. For information about installation, see Overview of Installing an Application.

Next, iterate on your release.

Iterating Your Releases

To iterate on the release of your production application:

  1. (Recommended) 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. See Creating and Editing Configuration Fields.
    2. Map the values to the application. See Mapping User-Supplied Values.
      note

      Skip this step if you are using Kubernetes Operators.

  2. Promote the updated release. Update and test the application in your development environment. See Updating Releases and Updating an Application.

  3. Configure additional manifest functionality and custom resources, and iterate as needed. This is a suggested order, but you can configure these functions in any order. These functions can be used with Kubernetes Operators.

    Update the release and application, testing it in your development environment after each iteration.

    FunctionalityDescription
    Add Database Configuration OptionsEnable database options and set stateful services.
    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.
    Creating 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.
    note

    Continue to iterate by updating the release and application, and then testing it in the admin console until you are ready to share the application with your customers.

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. 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.