Skip to content

Create Argo CD Applications

This page shows the two supported ways to create Argo CD Application resources on Kupe Cloud:

  • use the Argo CD UI
  • apply Argo CD resources inside your managed cluster for a fully Git-driven workflow

Use project: <tenant> and the registered destination name <tenant>-<cluster-slug> in your Application spec. Do not use the raw Kubernetes API server URL here.

This is the simplest way to create a first application.

If your repo is private:

  1. Open Settings and then Repositories.
  2. Select Connect Repo.
  3. Enter the repository URL and credentials.
  4. Set the project to your tenant project.
  1. Open Applications and select New App.
  2. Set Project to <tenant>.
  3. Set the source repository, revision, and path.
  4. Set Destination to the registered cluster name <tenant>-<cluster-slug>.
  5. Set the target namespace for the workload.
  6. Choose the sync policy that fits the environment.
  7. Create the application.

For a quick first deployment, the in-cluster example below works well with kupecloud/hello-kupe.

Option 2: Apply resources in your managed cluster

Section titled “Option 2: Apply resources in your managed cluster”

This path keeps the Argo CD resources in Git and lets you apply them to the managed cluster like any other Kubernetes object.

The sync layer exports supported Argo CD resources from the managed cluster argocd namespace into the central Argo CD namespace.

If the repo is private, create a repository Secret like this:

apiVersion: v1
kind: Secret
metadata:
name: app-repo
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repository
kupe.cloud/component: argocd
type: Opaque
stringData:
name: app-repo
type: git
url: https://github.com/<org>/<repo>.git
project: <tenant>
username: git
password: <token>
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: <tenant>
source:
repoURL: https://github.com/<org>/<repo>.git
path: deploy/
targetRevision: main
destination:
name: <tenant>-<cluster-slug>
namespace: workload
syncPolicy:
automated:
prune: true
selfHeal: true

Apply the manifests with your cluster kubeconfig:

Terminal window
kubectl --kubeconfig ./<cluster>-oidc.kubeconfig apply -f application.yaml

If you also created a repository Secret:

Terminal window
kubectl --kubeconfig ./<cluster>-oidc.kubeconfig apply -f repo-secret.yaml

After creating the resources, confirm:

  • the application appears in Argo CD under your tenant project
  • the destination resolves to the expected managed cluster
  • sync status becomes Synced
  • health becomes Healthy
  • workloads start in the target namespace

If you created a repository Secret, also confirm the repo connection succeeds in Argo CD.

  • project name must match your tenant name
  • destination name must match the registered cluster name format <tenant>-<cluster-slug>
  • tenant-scoped in-cluster sync supports Application resources and repository Secrets
  • repository Secrets must include both argocd.argoproj.io/secret-type: repository and kupe.cloud/component: argocd