Deployments
This section covers deploying containerized applications on the Ybor Platform. Whether you're deploying new applications or migrating existing ones, you'll use PlatformApplication manifests and ArgoCD to manage your deployments in a GitOps workflow.
The Deployment Model
Applications on the Ybor Platform are deployed using a GitOps workflow with three components:
- PlatformApplication Manifest — A Kubernetes Custom Resource that declares your application's desired state
- Kustomize Overlays — Environment-specific configurations (dev, staging, production)
- ArgoCD — Continuous deployment that syncs your manifests to the cluster
┌─────────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐
│ Application Repo │ │ .platform Repo │ │ Kubernetes Cluster │
│ │ │ │ │ │
│ .platform/ │────►│ kubernetes/ │────►│ PlatformApplication │
│ kubernetes/ │ │ your-app/ │ │ Deployment, Service │
│ base/ │ │ dev/ │ │ Ingress, Secrets... │
│ dev/ │ │ stg/ │ │ │
│ stg/ │ │ │ │ │
└─────────────────────────┘ └─────────────────────────┘ └─────────────────────────┘
│ ▲ ▲
│ Build workflow │ ArgoCD watches │ Operator reconciles
└───────────────────────────────┘ │
│
This model ensures consistent, traceable, and auditable deployments across environments.
What is a PlatformApplication?
A PlatformApplication is a Kubernetes Custom Resource Definition (CRD) that provides a simplified, declarative way to deploy and manage applications. It abstracts away the complexity of Kubernetes resources and cloud provider configurations.
Why PlatformApplications?
Instead of managing multiple Kubernetes resources manually:
You define a single PlatformApplication resource, and the Platform Application Operator creates and manages all necessary resources automatically.
What Does the Operator Do?
The Platform Application Operator runs in your Kubernetes cluster and continuously reconciles your desired state. It:
- Watches for PlatformApplication resources
- Creates Kubernetes resources (Deployments, Services, Ingress, etc.)
- Configures cloud resources and IAM permissions
- Syncs secrets from cloud secret stores
- Monitors health and updates status
- Cleans up all resources when the PlatformApplication is deleted
Prerequisites
Before deploying applications, ensure you have:
- Container images published to Artifactory (see Builds)
- Access to your organization's
.platformrepository - ArgoCD access for your target environments
- For secrets: Access to your cloud secret store (AWS Secrets Manager, Azure Key Vault, GCP Secret Manager)
Recommended Knowledge
- Basic Kubernetes concepts (Pods, Services, Deployments)
- YAML syntax
- Familiarity with ArgoCD or kubectl
In This Section
Getting Started
- Walkthrough — Progressive tutorial building up PlatformApplication features step-by-step
- ArgoCD Integration — GitOps deployment setup and workflow
Reference
- Platform Folder Anatomy — Structure of your repository's
.platformfolder - Platform Repository Anatomy — Structure of the organization's
.platformrepository - Platform Dispatch Action — GitHub Action for triggering deployments
- Troubleshooting — Common issues and solutions
Deployment Approaches
- ArgoCD (Recommended)
- kubectl
Store your manifests in Git, and ArgoCD automatically syncs them to your cluster. This provides:
- Declarative, version-controlled deployments
- Automatic reconciliation
- Audit trail of all changes
- Easy rollbacks
See ArgoCD Integration for setup instructions.
Apply manifests directly to your cluster using kubectl apply. This is useful for:
- Learning and experimentation
- Quick prototyping
- Environments without ArgoCD
Requires the kubectl CLI and direct cluster access.
Getting Started
We recommend following the Walkthrough to learn PlatformApplications progressively:
- Basic Deployment — Deploy a container with minimal configuration
- Ingress Configuration — Expose your application externally
- Configuration Management — Add environment variables
- Secret Injection — Integrate cloud secret stores
For migrating existing applications, see Migrating Legacy Applications — Deployments.