Managing and Upgrading Existing Customer Deployments with Omnistrate¶
Omnistrate provides a powerful feature to adopt, manage, and upgrade existing customer application installations directly from the Omnistrate Command Line Interface (CLI). This allows your support and operations teams to centralize the management of both new and existing deployments, streamlining the entire lifecycle from a single control plane.
This document outlines the process of adopting an existing customer deployment (specifically a Helm-based application running on a Kubernetes cluster) and managing its upgrade path.
Note
Currently, Omnistrate supports adopting Helm-based applications running on Kubernetes clusters. Future versions will expand support to other deployment types.
Core Concepts¶
- Deployment Cell: In Omnistrate, a Deployment Cell is a fundamental building block representing an isolated environment where your application runs. In this context, a customer's existing Kubernetes cluster is treated as a Deployment Cell.
- Adoption: This is the process of bringing an existing, unmanaged customer cluster and application under Omnistrate's management. This is a two-step process: first adopting the cluster (Cell), and then adopting the application (Instance) running within it.
- Omnistrate Agent: A lightweight agent that gets installed in the customer's cluster. It establishes a secure, reverse-tunnel connection back to your control plane, allowing for management without requiring the customer to open inbound firewall ports.
- Instance: Represents a specific application deployment, such as a Helm release, that has been adopted and is now managed by Omnistrate.
Step-by-Step Guide¶
Step 1: Create a Customer User (if not already done)¶
Before adopting a customer's deployment, ensure that the customer has a registered user account in the Omnistrate UI. This is necessary to link the deployment cell to their account. If the customer does not have an account, you can create one using the Omnistrate UI.
Note
Make sure to enable Auto Verify User
to ensure the customer account is activated immediately.
Step 2: Adopt the Customer's Kubernetes Cluster (Deployment Cell)¶
The first step is to register the customer's existing Kubernetes cluster with Omnistrate. This is done using the omctl deployment-cell adopt
command. For more details see the Adopt Deployment Cells Guide.
-
Run the Adopt Command: Execute the following command, providing details about the customer's cluster.
omctl deployment-cell adopt \ --cloud-provider aws \ --description "Adopted Customer Cluster" \ --id "example-cluster" \ --region "us-east-1" \ --customer-email "customer.email@example.com"
--id
: A unique, memorable name for this deployment cell.--cloud-provider
&--region
: The location of the customer's cluster. Can be omitted for on-premises clusters.--customer-email
: The email of the customer as registered in the Omnistrate portal, linking the cell to their account.
-
Provide the Agent Installation Kit to the Customer: Running the command successfully initiates the adoption process and generates an
Agent Installation Kit
(e.g.,example-cluster.tar
). This compressed file contains the necessary manifests for the customer to install the Omnistrate agent.The status of the cell will be
PENDING_ADOPTION
until the agent is installed.
Step 3: Customer Installs the Omnistrate Agent¶
The customer must perform this one-time installation in their cluster.
- The customer untars the installation kit (
example-cluster.tar
). - The kit includes a
README.md
file with simplekubectl
commands. - The customer runs the provided
kubectl apply
commands, which creates a new namespace (e.g.,dataplane-agent
) and deploys the Omnistrate agent.
Step 4: Verify Cluster Adoption¶
Once the agent is running, it will connect back to your Control Plane. You can verify this from your CLI:
The STATUS
should now show as HEALTHY
and RUNNING
, indicating that Omnistrate can now manage the cluster.
Step 5: Adopt the Application Instance (Helm Chart)¶
With the cluster managed, you can now adopt the specific application running inside it.
-
Create an Adoption Configuration File: Create a YAML file (e.g.,
adoption-config.yaml
) to describe the Helm release(s) you want to adopt.Note
This file should include the Helm chart repository, release name, namespace, and any necessary credentials. Please ensure that the credentials are set correctly to allow the deployment cell to access the Helm chart repository. This example includes multiple Helm charts for the application platform version.
resourceAdoptionConfiguration: mainApp: helmAdoptionConfiguration: chartRepoURL: "oci://registry-1.docker.io/mycompanydev" releaseName: "app" releaseNamespace: "my-app" username: "admin" password: "dckr_pat_xyz123" runtimeConfiguration: wait: false waitForJobs: false supportService: helmAdoptionConfiguration: chartRepoURL: "oci://registry-1.docker.io/mycompanydev" releaseName: "support-svc" releaseNamespace: "my-app" username: "admin" password: "dckr_pat_xyz123" runtimeConfiguration: wait: false waitForJobs: false
-
Get a list of all the supported platform versions for this service on Omnistrate
omctl service-plan list-versions --service-id s-xK8FMLq7R9 --plan-id pt-nB3Wz6yhKp -f="environment:Prod,service_name:My Application Platform"
✓ Service plan versions retrieved successfully
+-------------+---------------+-----------------------------------+---------------------+--------------+-------------------------+---------+--------------------+
| ENVIRONMENT | PLAN_ID | PLAN_NAME | RELEASE_DESCRIPTION | SERVICE_ID | SERVICE_NAME | VERSION | VERSION_SET_STATUS |
+-------------+---------------+-----------------------------------+---------------------+--------------+-------------------------+---------+--------------------+
| Prod | pt-nB3Wz6yhKp | My Application Enterprise | 3.2.1 | s-xK8FMLq7R9 | My Application Platform | 3.0 | Preferred |
| Prod | pt-nB3Wz6yhKp | My Application Enterprise | 3.1.4 | s-xK8FMLq7R9 | My Application Platform | 2.0 | Active |
| Prod | pt-nB3Wz6yhKp | My Application Enterprise | 2.5.8 | s-xK8FMLq7R9 | My Application Platform | 1.0 | Active |
+-------------+---------------+-----------------------------------+---------------------+--------------+-------------------------+---------+--------------------+
-
Run the Instance Adopt Command: Execute the
instance adopt
command, referencing the cluster and the configuration file. The following command adopts a 2.5.8 application installation running on theexample-cluster
deployment cell, using theadoption-config.yaml
file to specify the Helm charts and their configurations.omctl instance adopt \ --host-cluster-id example-cluster \ --service-id s-xK8FMLq7R9 \ --service-plan-id pt-nB3Wz6yhKp \ --service-plan-version 1.0 \ --primary-resource-key mainApp \ -f adoption-config.yaml
This command registers the specified Helm charts as a single manageable instance. Omnistrate automatically discovers and stores the currently deployed Helm values.
Step 6: Manage and Upgrade the Adopted Instance¶
Once adopted, the application instance is a native deployment instance on Omnistrate.
-
Secure Remote Access: To debug or run pre-upgrade scripts, you can securely access the customer's cluster from your local machine. For more details, see the Remotely Access Deployment Cells Guide.
This command fetches a temporary
kubeconfig
by establishing a secure reverse-tunnel. You can now usekubectl
andhelm
as if you were directly on the cluster, without any network changes on the customer's side. -
Perform an Upgrade: Upgrading the instance is now a standard Omnistrate procedure.
- Generate both existing chart values and the proposed chart values for the upgrade. The following command generates both the existing chart values and the chart values proposed from the target tier version as setup in your service template on Omnistrate.
# MAKE SURE TO REPLACE THE INSTANCE ID WITH THE ACTUAL INSTANCE ID FROM THE PREVIOUS ADOPTION STEP omctl instance version-upgrade <INSTANCE ID> --existing-configuration existing.yaml --proposed-configuration proposed-config.yaml --generate-configuration --target-tier-version 1.0 # CHANGE THE TARGET TIER VERSION TO MATCH THE TARGET PLATFORM VERSION
- Run any pre-upgrade scripts or checks as needed.
Using the Secure Remote Access feature, you have direct access to the Kubernetes cluster to run any necessary pre-upgrade scripts or checks.
- Upgrade the instance with the default template values.
You can trigger an upgrade to a new version with the default args and the platform will use the values setup in the service template for that particular platform version.
omctl instance version-upgrade <INSTANCE_ID> \ --target-tier-version 2.0 # Eg: Upgrading from 2.5.8 (Tier version 1.0) to 3.1.4 (Tier version 2.0)
- Upgrade the instance with modified values.
If you need to override the default values, you can provide a custom values file. This allows you to specify any modifications needed for the upgrade. For example, if you have a modified values file named
modified-values.yaml
, you can run the following command:omctl instance version-upgrade <INSTANCE_ID> \ --target-tier-version 2.0 \ --upgrade-configuration-override modified-values.yaml
- Applying modifications to existing values for the same platform version.
If you need to modify the existing values for the same platform version, you can use the same command as above but specify the target tier version same as the current version.
omctl instance version-upgrade <INSTANCE_ID> \ --target-tier-version 1.0 \ --upgrade-configuration-override modified-values.yaml
- Debug any installation issues.
If the upgrade fails or is taking too long, you can either use the Secure Remote Access to directly check the status using
kubectl
orhelm
commands. In addition, the helm client logs and the actual chart values being applied are available through theinstance debug
command: -
Centralized View:
Use
omctl instance list
to see a consolidated list of all customer deployments, both newly created and adopted, providing a single pane of glass for managing your entire fleet.