Manage BYOC Cloud Accounts¶
View and manage your customers' BYOC Cloud Accounts for BYOC deployments.
What is BYOC?¶
BYOC (Bring Your Own Cloud) is a deployment model where your customers' applications are deployed and managed within their own cloud accounts rather than in your infrastructure. This approach addresses critical customer requirements around data sovereignty, security compliance, and cost control while still providing a fully-managed SaaS experience.
BYOC Operations¶
Self-served BYOC Setup¶
The Customer Portal can be used by customers to connect and manage their BYOC cloud accounts.
Setup Customer Accounts on behalf of customer¶
You can also work with your customer to perform an assisted setup of their Cloud Account.
Responsibility model¶
In a BYOC deployment, responsibilities are split across three parties:
- Customer account owner: Runs the onboarding flow in the target account, approves IAM and identity setup, and owns cloud quotas, organization policies, and network constraints in that account.
- SaaS provider: Enables BYOC for the service, guides or assists the customer through onboarding, and operates the resulting instances through Omnistrate.
- Omnistrate: Provides the onboarding artifacts, bootstraps the deployment cell, installs platform components, and orchestrates lifecycle operations in the connected account.
Lifecycle of a BYOC account¶
For most BYOC services, the lifecycle looks like this:
- The customer connects their cloud account from the Customer Portal or through an assisted flow.
- The first instance in a given account and region bootstraps the deployment cell for that location.
- Later instances in the same account and region typically reuse that deployment cell instead of creating a new cluster every time.
- The account can only be offboarded after all instances in that account are deleted.
For more background on deployment cells, see Deployment Cells.
Self-serve vs assisted onboarding¶
Both patterns are supported:
- Self-serve: The customer runs the onboarding flow directly from the Customer Portal.
- Assisted: Your team coordinates with the customer and helps execute the onboarding steps in their cloud account.
The underlying Omnistrate bootstrap flow is the same in both cases. The main difference is who drives the cloud-console or Cloud Shell steps.
CTL workflow for BYOA cloud accounts¶
If you prefer to onboard customer accounts from the CLI, use the provider-specific getting-started guides:
- AWS account onboarding with CTL
- GCP account onboarding with CTL
- Azure account onboarding with CTL
- Nebius account onboarding with CTL
- BYOC On-Premise for customer-owned Kubernetes clusters
The common BYOA lifecycle commands are:
# Create a customer onboarding instance
omnistrate-ctl account customer create [provider flags] --service <service> --environment <environment> --plan <byoa-plan>
# List and inspect customer onboarding instances
omnistrate-ctl account customer list [flags]
omnistrate-ctl account customer describe <customer-account-instance-id>
# Update or delete a customer onboarding instance
omnistrate-ctl account customer update <customer-account-instance-id> [flags]
omnistrate-ctl account customer delete <customer-account-instance-id>
# Create a BYOA deployment with that onboarding instance
omnistrate-ctl instance create ... --customer-account-id <customer-account-instance-id>
In production environments, account customer create defaults to the calling user's subscription unless you explicitly pass --subscription-id or --customer-email.
Account Tags¶
Cloud accounts support custom tags — free-form key/value pairs stored on the account configuration. The account configuration is the definitive store for these tags: every deployment cell running in the account exposes them as the $sys.deploymentCell.accountTags system parameter, which can steer conditional amenities, amenity Helm chart values, and service plan configuration.
Setting tags with CTL¶
All account command sets accept a --tags flag with comma-separated key=value pairs:
# Tag your own cloud account at onboarding time
omnistrate-ctl account create my-account --aws-account-id=123456789012 \
--tags "env=prod,team=platform"
# Replace the tag set on an existing account
omnistrate-ctl account update my-account --tags "env=prod,omnistrate.com/cost-center=cc-1234"
# Tag a customer BYOA account at onboarding time — the tags flow through the
# onboarding instance to the customer's backing account configuration
omnistrate-ctl account customer create --service <service> --environment <environment> \
--plan <byoa-plan> --aws-account-id=<customer-account> --tags "tier=enterprise"
# Replace the tag set on a customer's backing account configuration
omnistrate-ctl account customer update <customer-account-instance-id> --tags "tier=enterprise,region-pref=eu"
Tags appear in account describe, account list, and account customer describe output, and in the corresponding API responses (customTags).
Semantics¶
- Update replaces the whole tag set.
--tagsonaccount updateandaccount customer updateis a full replacement, not a merge — include every tag you want to keep. - BYOA instance tags write to the account. For BYOA account onboarding instances, custom tags set through the instance APIs (create or metadata update) are written to the backing account configuration, and reads return the account configuration's tags — the instance never keeps a separate tag set. An account shared by multiple onboarding instances has one tag set; the last write wins.
- Key format. Tag keys may contain dots and slashes (for example
omnistrate.com/cost-center); reference such keys with bracket notation in system parameter expressions. Keys used to filter layered chart values scopes must use only letters, digits, underscores, and dots. - Duplicate keys are rejected, both by the CLI and the API.
BYOC On-Premise Kubernetes Accounts¶
BYOC On-Premise connects a customer-owned Kubernetes cluster instead of a cloud account. For the full setup flow, see BYOC On-Premise.
Retrying onboarding safely¶
When onboarding fails partway through, or when bootstrap resources are deleted manually later, avoid trying to stitch old and new bootstrap state together.
Recommended approach:
- Re-run the current onboarding flow for the exact target account and cloud provider.
- If the connected account was partially onboarded and then manually modified, disconnect or offboard it and onboard again cleanly.
- For GCP, treat deleted-and-recreated projects, removed workload identity pools/providers, or mismatched onboarding kits as fresh onboarding events.
- Do not assume a previous bootstrap in another region, another environment, or another cloud account can be reused automatically.
CloudFormation Controls¶
For AWS BYOC accounts, the customer account owner can use the customer-owned CloudFormation onboarding stack to manage Omnistrate access. AgentInfrastructureMutationEnabled controls AWS infrastructure mutation permissions. For BYOC PrivateLink host clusters, DataplaneKubernetesAccessRole switches the dataplane agent between administrative and read-only Kubernetes access, while K8sDebugAccessEnabled controls the network path for Kubernetes debug access. DataplaneKubernetesAccessTargets and K8sDebugAccessTargets independently scope the Kubernetes controls by region or host cluster. See AWS CloudFormation Account Controls.
BYOC PrivateLink Accounts¶
Management traffic uses AWS PrivateLink. The private-registry artifact delivery and no-internet topology described below require the corresponding features to be enabled for the SaaS Provider organization and deployment cell.
Omnistrate-managed VPC¶
The simplest topology: Omnistrate provisions the VPC, subnets, security group, and the management VPC Endpoint inside the customer's account on first deployment, including a NAT gateway for networks with outbound egress. The customer only grants the bootstrap role via CloudFormation — no manual VPC or VPCE setup is required.
For deployments without internet access, workload private subnets reach AWS services and the configured private Amazon ECR registry through VPC endpoints, without a NAT gateway or default Internet route.
For managed VPCs without internet access, Omnistrate creates the required endpoints and private DNS. For customer-owned VPCs, the customer supplies them before deployment.
Managed endpoint-only networks include Route53 API access for external-dns. After bootstrap is updated to a version with Route53 endpoint support, existing eligible deployment cells receive the endpoint on their next VPC infrastructure reconcile; restarting a pod or syncing only amenities does not update VPC endpoints.
The Allow new cloud-native network creation account setting permits Omnistrate to create VPCs on demand. If network creation is disabled, deployments must reuse an existing customer-supplied VPC.
- Customer Portal: enable Allow new cloud-native network creation on the AWS account form.
-
omnistrate-ctl: pass--allow-create-new-cloud-native-networkonaccount customer create:omnistrate-ctl account customer create \ --service=<service> \ --environment=<environment> \ --plan=<plan> \ --customer-email=<[email protected]> \ --aws-account-id=<AWS_ACCOUNT_ID> \ --allow-create-new-cloud-native-network
With network creation allowed, the first instance in each region triggers Omnistrate to create the deployment cell's VPC and network resources. Later instances in the same region reuse the same network.
Imported VPC requirements for BYOC PrivateLink¶
Customers typically bring their own VPC when they need to comply with internal network governance — for example, reusing an existing CIDR plan that fits Transit Gateway / Direct Connect routing, attaching the dataplane to a pre-approved security group and firewall posture, sharing a NAT gateway or egress proxy with other workloads, or operating under a policy that prohibits the SaaS provider from creating new VPCs in their account.
When the customer brings their own VPC for a PrivateLink account, Omnistrate validates its connectivity but does not create its routes, VPC endpoints, or DNS zones.
The following requirements apply before any instance is deployed:
| # | Requirement | Details |
|---|---|---|
| 1 | VPC & subnet tags | Tag the VPC and the subnets where deployment instances should run with omnistrate.com/managed-by = omnistrate. The tag is both the IAM permission gate and the subnet selector for EKS nodegroup placement — tag only the subnets where you want deployment instances to be placed. |
| 2 | DNS | Enable enableDnsSupport and enableDnsHostnames on the VPC. |
| 3 | AWS service and artifact connectivity | Either approved outbound egress from every workload private subnet or the complete endpoint set below. |
| 4 | Management VPC Endpoint | Create a single Interface VPC Endpoint targeting the PrivateLink service Omnistrate provides, with: |
• Tag Name = omnistrate-byoc-private-vpce-<provisioner-hc-id> | ||
| • Security group allowing inbound TCP 8443–8506 from the VPC CIDR | ||
• Tag every security group attached to the VPCE with omnistrate.com/managed-by = omnistrate. Omnistrate uses this tag as the IAM permission gate when adding or removing Kubernetes debug access ingress rules. | ||
| 5 | Cross-region (if applicable) | If the customer's VPC and the PrivateLink service live in different AWS regions, pass --service-region to aws ec2 create-vpc-endpoint (or service_region in the Terraform aws_vpc_endpoint resource). Do not enable private DNS — AWS does not support it for cross-region interface endpoints. |
| 6 | Subnet tags (optional) | Private subnets: tag kubernetes.io/role/internal-elb = 1. Public subnets: tag kubernetes.io/role/elb = 1. Not mandatory for PrivateLink deployments, but recommended if you plan to use internal load balancers. |
Note
Omnistrate hands the customer the VPCE service name and the provisioner host-cluster ID after the account is onboarded; both are needed to create the management VPC Endpoint.
With outbound egress¶
Every selected workload private subnet must have a 0.0.0.0/0 route through a NAT gateway, NAT instance, transit gateway, VPN gateway, or AWS Network Firewall or Gateway Load Balancer endpoint. The egress firewall or proxy must allow HTTPS and DNS access to:
- the regional Auto Scaling, EC2, EKS, EKS Auth, Elastic Load Balancing, CloudWatch Logs, and STS services;
- the selected private ECR registry's API and registry hostnames;
- the S3 URLs returned by ECR for image and OCI Helm chart layers;
- the fixed
us-west-2deployment-artifact S3 path.
If workloads manage DNS records, also allow HTTPS access to the Route53 API at route53.amazonaws.com, used by external-dns and cert-manager DNS-01 challenges.
AWS service VPC Endpoints are optional with this model. The provisioner management VPC Endpoint remains mandatory.
Without internet access¶
If any selected workload private subnet does not have the supported outbound route described above, create the complete endpoint set. A partial combination of subnet egress and endpoints does not pass validation.
| Scope | Type | Service name | Required configuration |
|---|---|---|---|
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.autoscaling | available, private DNS enabled, attachment to at least one subnet, and TCP 443 allowed from workload subnet CIDRs |
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.ec2 | Same as above |
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.ecr.api | Same as above |
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.ecr.dkr | Same as above |
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.eks | Same as above |
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.eks-auth | Same as above |
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.elasticloadbalancing | Same as above |
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.logs | Same as above |
| Dataplane region | Interface | com.amazonaws.<dataplane-region>.sts | Same as above |
Global Route53 API, served from us-east-1 | Interface | com.amazonaws.route53 | Required for workloads that manage DNS records. In us-east-1, enable private DNS. In other regions, set service_region to us-east-1, disable private DNS, and provide the Route53 private DNS alias below. The endpoint must be available, attached to at least one subnet, and allow TCP 443 from workload subnet CIDRs. |
| Dataplane region | Gateway | com.amazonaws.<dataplane-region>.s3 | Associate it with every route table used by a selected workload private subnet; the endpoint policy must allow ECR layer downloads (see below) |
| Registry region, when different | Interface | com.amazonaws.<registry-region>.ecr.api | Set service_region to the registry region; do not enable private DNS; provide the private DNS aliases listed below |
| Registry region, when different | Interface | com.amazonaws.<registry-region>.ecr.dkr | Same as above |
| Registry region, when different | Interface | com.amazonaws.<registry-region>.s3 | Same as above; required for ECR layer URLs |
us-west-2, when different from the dataplane region | Interface | com.amazonaws.us-west-2.s3 | Required for deployment artifacts; omit a duplicate when the registry region is also us-west-2 |
S3 endpoint policies must allow ECR layer downloads and, when used, uploaded deployment-artifact downloads. A restrictive policy can pass topology checks but still fail image, OCI chart, and uploaded-artifact downloads.
For each cross-region interface endpoint, associate a private hosted zone with the VPC and create aliases for the canonical AWS names:
api.ecr.<region>.amazonaws.comfor ECR API;dkr.ecr.<region>.amazonaws.comand*.dkr.ecr.<region>.amazonaws.comfor ECR DKR;s3.<region>.amazonaws.comand*.s3.<region>.amazonaws.comfor S3; androute53.amazonaws.comfor the Route53 API outsideus-east-1. Create a private hosted zone namedroute53.amazonaws.comand anAalias at the zone apex targeting the interface endpoint's DNS name and hosted-zone ID.
Endpoint-only preflight verifies the service names, endpoint types and regions, available state, same-region private DNS, interface endpoint subnet attachments, TCP 443 security-group coverage, S3 route-table associations, and cross-region private DNS aliases. Validation reports the missing service or property without changing the imported VPC.
Route53 connectivity is a workload requirement, not part of imported-VPC artifact endpoint preflight. Passing preflight does not guarantee that external-dns can reach Route53 or create DNS records. Verify Route53 API access from the component that manages DNS records; missing connectivity can leave ingress hostnames unresolved even when the ingress controller and load balancer are healthy.
How workloads access the private registry¶
Workloads use the canonical <account-id>.dkr.ecr.<registry-region>.amazonaws.com hostname, with the endpoint DNS and routing configured above. Omnistrate handles authorization for its managed artifacts. For your own charts, images, and Terraform sources, see Private Registries for BYOC PrivateLink.
Account Offboarding¶
When a customer no longer needs your SaaS Product or wants to disconnect their cloud account, you can offboard their BYOC account. This removes all Omnistrate-managed resources from the customer's cloud account and severs the trust relationship.
Prerequisites¶
Before a BYOC account can be offboarded:
- The customer must delete all deployment instances running in their cloud account. Active instances must be terminated before the account can be offboarded.
Warning
Offboarding is a destructive operation. All deployment cells, networking, and control plane components in the customer's cloud account are permanently removed. Ensure the customer has backed up any data they need to retain.
Offboarding Steps¶
Offboarding from the Customer Portal¶
Customers offboard their BYOC account directly from the Customer Portal:
- Navigate to your cloud account settings in the Customer Portal.
- Delete the cloud account configuration.
- Confirm the offboarding operation.
- Wait for Omnistrate to automatically remove all managed resources from your account.
What offboarding cleans up¶
When you offboard a customer's BYOC account, Omnistrate removes the following resources from the customer's cloud:
- Control plane agents and system nodes
- Monitoring infrastructure
- Networking resources (VPCs, subnets, and security groups created by Omnistrate) — only if you are not using a Bring Your Own Network deployment model
- Deployment cells and their underlying Kubernetes clusters
Customer-side cleanup¶
After the offboarding process completes, the customer should remove the onboarding permissions from their cloud account. For cloud-specific cleanup steps, see Offboarding.
Note
The cloud-provider-specific onboarding permissions are not automatically removed during offboarding. The customer must clean these up manually.