Deploy applications
This guide covers declaring Argo CD Applications in your Platform configuration after a connector is enabled. Platform reconciles these declarations into ArgoCDApplication objects and syncs them to your Argo CD instance.
Prerequisites​
- A connector is already configured and enabled on the target cluster. See Connect to Argo CD or Connect to Akuity.
Application templates​
An ArgoCDApplicationTemplate is a reusable Argo CD ApplicationSpec. Create one when you want to deploy the same application definition across multiple tenant clusters without duplicating configuration.
- Platform UI
- YAML
Click Argo CD Templates in the left sidebar.
Click .
In the Basics section, enter a Display Name for the template. The ArgoCD Application Template ID is auto-generated from the display name and is the identifier you reference in your applications. Optionally add a Description.
In the ArgoCD Application Spec section, fill in the YAML editor with the Argo CD ApplicationSpec.
Click .
apiVersion: storage.loft.sh/v1
kind: ArgoCDApplicationTemplate
metadata:
name: app-template
spec:
template:
spec:
source:
repoURL: "https://github.com/acme/app-charts"
targetRevision: "main"
path: "app"
project: default
syncPolicy:
automated:
prune: true
selfHeal: true
Deploy to a tenant cluster​
Applications deployed to a tenant cluster are declared in the cluster's vcluster.yaml under deploy.argoCD.applications. Each entry can target:
vcluster(default): the tenant cluster itselfhost: the control plane cluster the tenant cluster runs on (see Deploying to the control plane cluster)
- Platform UI
- YAML
- New tenant cluster
- Existing tenant cluster
Select your project from the projects dropdown at the top of the left navigation bar.
Navigate to Tenant Clusters and click .
Optionally select a cluster template, then click .
Select the ArgoCD Apps tab in the cluster creation form.
Click .
In the Basics section, enter a Display Name for the application. The Argo CD Application ID is auto-generated from the display name and uniquely identifies the application in Argo CD.
In the Destination section, choose where to deploy:
- Select Deploy to vCluster to deploy into the tenant cluster itself.
- Select Deploy to control plane cluster to deploy into the control plane cluster the tenant cluster runs on. The control plane cluster must already have an Argo CD connector configured.
Fill in the Target Namespace for the selected destination.
In the Source section, select Template and choose an
ArgoCDApplicationTemplatefrom the dropdown, or select Inline application spec to define the Argo CD ApplicationSpec directly in the YAML editor.Complete the remaining cluster configuration and click .
Select your project from the projects dropdown at the top of the left navigation bar.
Navigate to Tenant Clusters and open the tenant cluster where you want to deploy an application.
Select the ArgoCD Apps tab in the cluster detail view.
Click .
In the Basics section, enter a Display Name for the application. The Argo CD Application ID is auto-generated from the display name and uniquely identifies the application in Argo CD.
In the Destination section, choose where to deploy:
- Select Deploy to vCluster to deploy into the tenant cluster itself.
- Select Deploy to control plane cluster to deploy into the control plane cluster the tenant cluster runs on. The control plane cluster must already have an Argo CD connector configured.
Fill in the Target Namespace for the selected destination.
In the Source section, select Template and choose an
ArgoCDApplicationTemplatefrom the dropdown, or select Inline application spec to define the Argo CD ApplicationSpec directly in the YAML editor.Click .
Add the deploy.argoCD.applications block to the tenant cluster's vcluster.yaml. Set target: vcluster to deploy into the tenant cluster (this is the default) or target: host to deploy into the control plane cluster it runs on.
- Template reference
- Inline spec
deploy:
argoCD:
applications:
- name: myapp
displayName: "My Application"
target: vcluster # or "host" to target the control plane cluster
destinationNamespace: default
template:
name: app-template # references an ArgoCDApplicationTemplate
deploy:
argoCD:
applications:
- name: grafana
displayName: "Grafana"
target: vcluster # or "host" to target the control plane cluster
destinationNamespace: monitoring
inline:
source:
repoURL: "https://github.com/acme/charts"
targetRevision: HEAD
path: grafana
project: default
syncPolicy:
automated:
prune: true
selfHeal: true
Deploying to the control plane cluster​
Setting target: host deploys the application onto the control plane cluster rather than inside the tenant cluster. Use this for shared infrastructure — monitoring agents, logging collectors, or networking components — that belongs on the underlying cluster rather than inside a tenant cluster.
target: hosttarget: host allows configuration inside a tenant cluster to affect workloads on the control plane cluster. Before enabling this, consider:
- Who controls the tenant cluster configuration? If tenants can edit
vcluster.yamldirectly, they can deploy arbitrary workloads onto the control plane cluster. Restrict this to platform admins or use cluster templates to limit what values tenants can set. - The control plane cluster must have a connector. If the control plane cluster does not have an Argo CD connector configured, applications with
target: hostwill fail to deploy. - Applications are deployed into a specific namespace. The
destinationNamespacefield determines where the application lands on the control plane cluster. Ensure that namespace exists and that deploying into it is intentional.
This is a platform-admin-level capability. Do not expose it to end users without proper guardrails.
target: hostThe control plane cluster the tenant cluster runs on must already be registered with an Argo CD connector. Complete the connector setup for the control plane cluster first (see Connect to Argo CD or Connect to Akuity).
Deploy to a control plane cluster​
Applications deployed directly onto a control plane cluster are created as ArgoCDApplication objects in the project namespace. This is the recommended pattern for shared infrastructure that should live on the underlying cluster rather than inside a tenant cluster.
- Platform UI
- YAML
Click Clusters in the left sidebar under the infrastructure section.
Click the name of the control plane cluster to open its detail page.
Select the ArgoCD Apps tab in the cluster header.
Click .
In the Basics section, enter a Display Name for the application. The Argo CD Application ID is auto-generated from the display name.
In the Destination section, enter the Target Namespace on the control plane cluster where the application should be deployed. Leave it empty to use the namespace defined by the selected template or inline spec.
In the Source section, select Template and choose an
ArgoCDApplicationTemplatefrom the dropdown, or select Inline application spec to define the Argo CD ApplicationSpec directly in the YAML editor.Click .
Create an ArgoCDApplication object in the project namespace. Use spec.destination.cluster to target the control plane cluster by name.
- Template reference
- Inline spec
apiVersion: storage.loft.sh/v1
kind: ArgoCDApplication
metadata:
name: shared-infra
namespace: p-my-project # replace with your project namespace
spec:
displayName: "Shared Infrastructure"
destination:
cluster:
name: loft-cluster # replace with your control plane cluster name
namespace: infra # omit to fall back to the namespace defined in the template
templateRef:
name: infra-template # references an ArgoCDApplicationTemplate
apiVersion: storage.loft.sh/v1
kind: ArgoCDApplication
metadata:
name: cluster-monitoring
namespace: p-my-project # replace with your project namespace
spec:
displayName: "Cluster Monitoring"
destination:
cluster:
name: loft-cluster # replace with your control plane cluster name
namespace: monitoring # omit to fall back to the namespace defined in the inline spec
template:
spec:
source:
repoURL: "https://github.com/acme/charts"
targetRevision: HEAD
path: monitoring
project: default
syncPolicy:
automated:
prune: true
selfHeal: true
Disabling integrations.argoCD.enabled on a tenant cluster, or removing spec.argoCD from a control plane cluster, removes the cluster from Argo CD and deletes all ArgoCDApplication objects managed by Platform. Any applications deployed by the integration will be removed from Argo CD.