Deploy an Application
Applications deploy through two objects: an application profile (picks the target cluster) and an application manifest (describes what to run).
Before You Start
- Complete Deploy a Kubernetes Cluster.
- Confirm your cluster is ready:
astroctl infra k8s get
Note the cluster name — you need it in Step 1.
Step 1: Create an Application Profile
A profile points your application at a cluster. Save this as profile.yaml:
apiVersion: platform.astropulse.io/v1
kind: ApplicationProfile
spec:
profileName: hello-world-profile # unique name for this profile
clusterName: aws-dev-cluster # your cluster name — run: astroctl infra k8s get
Apply it:
astroctl app profile apply -f profile.yaml
Confirm it exists:
astroctl app profile get
Step 2: Create an Application Manifest
Save this as app.yaml:
apiVersion: platform.astropulse.io/v1
kind: Application
spec:
name: hello-world
profileName: hello-world-profile # must match the profile you created above
source:
type: image
image:
registry: docker.io # optional — default: docker.io
repository: astropulse/latency # <registry-user>/<image-name>
tag: v1.0.0 # image tag
namespace: hello-world # optional — auto-generated from name if omitted
syncType: auto # auto (default) | manual
Step 3: Validate and Deploy
Validate without deploying:
astroctl app apply -f app.yaml --dry-run
Deploy:
astroctl app apply -f app.yaml
Step 4: Verify It's Running
Check status:
astroctl app status hello-world
Watch deployment events:
astroctl app events hello-world
Watch Kubernetes events:
astroctl app events hello-world --k8s
View logs:
astroctl app logs hello-world
A healthy application shows Status: Healthy and Sync: Synced.
Deploy from Helm
Use the helm source type for Helm chart deployments:
apiVersion: platform.astropulse.io/v1
kind: Application
spec:
name: nginx
profileName: hello-world-profile # must match your profile
namespace: nginx
syncType: auto
source:
type: helm
helm:
repo:
repoURL: https://charts.bitnami.com/bitnami
chartName: nginx
chartVersion: 15.0.0
Deploy with the same command:
astroctl app apply -f app.yaml
Common Commands
# List all applications
astroctl app get
# Check an app's status
astroctl app status <APP_NAME>
# View application events
astroctl app events <APP_NAME>
# View Kubernetes events
astroctl app events <APP_NAME> --k8s
# View logs
astroctl app logs <APP_NAME>
# Delete an application
astroctl app delete <APP_NAME>
Direct Kubernetes access:
astroctl infra k8s set-context aws-dev-cluster
kubectl get pods
The profileName on an application cannot be changed after the application is deployed. Create a new application with a different name to change the target profile.
Not sure about all the fields? Run the template commands to get fully annotated YAML:
astroctl app profile template # application profile
astroctl app template # application manifest
Add --schema to see field types, required/optional status, and valid values.
Install the GitHub App first so the platform can access your repository:
astroctl integrations github install
See GitHub Integration for details.
You can deploy applications from the AstroPulse Console without writing any YAML.