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].
Complete the following items before you perform this task:
- Create a Kubernetes-deployable application that contains
- 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.
Complete the following procedures to import your files, create, and test your first release:
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.
Import your application files to Replicated using one of the following types:
Type Description Standard manifest files We 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 charts If your application is already packaged using Helm charts, see Adding Helm Charts to a Release. Kubernetes Operators If 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.
(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.
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.
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.
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:
(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:
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.
Functionality Description 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 Portal Customize 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 Control Limit access to a single namespace in a cluster. Defining Preflight Checks and Support Bundles Define 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 Backups Enable snapshots so that end users can backup and restore their application configuration and data. Adding Cluster Ingress Options Configure how traffic gets to your application using cluster ingress options. Using Kubernetes Installer TLS certificates Share 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 Resources Include and exclude resources based on a customer's configuration choices, such as an external database or an embedded database. Cleaning Up Kubernetes Jobs Clean up completed Kubernetes jobs to prevent errors with future Kubernetes job updates.
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:
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.
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.