Skip to main content

Deploy a Kubernetes Cluster

AstroPulse supports two first-cluster paths:

  • Provision a new cluster on AWS, GCP, or Azure.
  • Register an existing cluster from any provider or on-premises environment.
Developer plan

Free accounts can provision 1 cluster and register 3 existing clusters. See pricing.

Before You Start

Make sure you have:

  • Completed Set Up AstroPulse.
  • Selected the correct organization with astroctl whoami.
  • Access to the cloud account or Kubernetes cluster you want to use.
  • kubectl installed if you plan to verify the cluster directly.
Prefer to ask Nova?

Open /nova in the console or run astroctl nova, then ask Nova to create a plan for provisioning a new cluster or registering an existing one. Nova can help choose the right path and generate the starting YAML.

Option 1: Provision a New Cluster

Step 1: Connect your cloud account

Connect the cloud provider that will host the cluster:

# AWS EKS
astroctl cloud aws connect --account-id <aws-account-id> --region <region> --cluster-name <cluster-name>

# Google GKE
astroctl cloud gcp connect --project-id <project-id> --region <region> --cluster-name <cluster-name>

# Azure AKS
astroctl cloud azure connect --subscription-id <subscription-id> --resource-group <resource-group> --region <region> --cluster-name <cluster-name>

Provider-specific setup details:

Step 2: Generate cluster YAML

Open the AstroPulse Console, then go to Infrastructure > New Cluster.

The wizard walks you through provider, region, cluster name, Kubernetes version, node groups, machine type, and network settings. At the end, download or copy the generated cluster.yaml.

Why generate from the console first?

The console gives you valid provider-specific defaults and produces YAML you can keep in source control for repeatable cluster creation.

Step 3: Validate and apply

Validate the cluster configuration without creating resources:

astroctl infra kubernetes apply -f cluster.yaml --dry-run

Apply the configuration:

astroctl infra kubernetes apply -f cluster.yaml

The short alias also works:

astroctl infra k8s apply -f cluster.yaml

Step 4: Track progress

Stream real-time progress:

astroctl infra kubernetes progress stream <cluster-name>

Cluster provisioning usually takes several minutes. If you disconnect, run the same command again to catch up with the current operation.

Step 5: Verify the cluster

List clusters:

astroctl infra kubernetes get

Set your local Kubernetes context:

astroctl infra k8s set-context <cluster-name>
kubectl get nodes

Option 2: Register an Existing Cluster

If you already have a Kubernetes cluster, register it instead of provisioning a new one:

astroctl infra kubernetes register --cluster-name <cluster-name>

This installs a lightweight agent that creates a secure reverse tunnel back to AstroPulse. You can also dry-run the registration manifest:

astroctl infra kubernetes register --cluster-name <cluster-name> --dry-run

For split-team workflows and advanced options, see Bring Your Own Kubernetes Cluster.

Useful References

Next Step

Continue with Deploy an Application.