Skip to main content

Your Startup Needs a Deployment Platform, Not a Platform Team

· 8 min read
Rajesh RC
Founder

Many startups begin with one application and a hosted deployment service. That is usually the right decision. The team can ship without first building networking, deployment automation, or an operations layer.

The requirements change as the company adds services, environments, enterprise customers, private networking, and infrastructure ownership. The team still needs a short path to production, but the applications now need to run in infrastructure the company controls.

AstroPulse gives growing engineering teams a repeatable path from code to production in infrastructure they control, without requiring them to build the platform themselves.

From code in an editor through Astro Platform services to a healthy application, with one platform reused across multiple services

From code in the editor to a healthy application, with one platform reused across multiple services.

Push to Your Own Domain: Managed Add-ons + Custom Domains

· 8 min read
Rajesh RC
Founder
TL;DR

Our earlier build-your-own-PaaS blueprint wired up ingress, TLS, and DNS by hand. Now it's three managed add-ons and one domain verification: install NGINX + cert-manager + ExternalDNS, verify a domain once, and every container image you deploy comes up on your own domain with real, auto-renewing HTTPS. Do it from the console, the CLI, or just ask your AI. All three drive the same platform.

The AstroPulse console — clusters, applications, add-ons, and domains in one place

Three ways to follow along. Each step below leads with the console walkthrough, with the CLI and AI equivalents in the tabs underneath:

  • Console: point and click; the walkthroughs below are the real UI.
  • CLI: astroctl …, copy-paste ready.
  • AI: ask Nova in the console, or connect your editor's assistant to the AstroPulse MCP (platform.astropulse.io/mcp) and describe what you want. For building an image straight from a repo, the astro-deploy MCP does that too.

Before you start: one cluster with cloud identity

You need exactly one thing: a Kubernetes cluster connected to AstroPulse, running with the cloud's own identity — IRSA on AWS, Workload Identity on GCP/Azure. That identity is what lets ExternalDNS manage DNS and cert-manager solve ACME challenges without ever handling a cloud credential.

The easy path is to let AstroPulse provision the cluster. It wires that identity up for you:

Connect your cloud, then provision (identity configured for you)
$ # one-time: connect your cloud account astroctl cloud aws connect --account-id 123456789012 --region us-east-1 --cluster-name prod # provision the cluster — IRSA / Workload Identity is set up automatically astroctl infra k8s apply -f cluster.yaml

Already run your own cluster? Register it instead, then set up the identity per the add-on docs:

Terminal
$ astroctl infra k8s register --cluster-name my-cluster

Step 1: Install the three add-ons

On your cluster's Add-ons tab, choose Install Add-on and pick from the catalog. Each installs with production-sensible defaults; you tune only what matters.

Installing an add-on from the catalog — pick it, review the defaults, install
  • NGINX Ingress: routes public traffic. The default terminates TLS at the ingress (there's a passthrough option for backends that terminate their own). On a cloud cluster it comes up behind a real LoadBalancer with the right provider annotations already set.
  • cert-manager: issues and renews TLS certificates. Turn on Create a Let's Encrypt ClusterIssuer and add a contact email for real, auto-renewing public certificates, with no manual cert wrangling.
  • ExternalDNS: publishes DNS records for your apps. Pick your DNS provider and set the domain filter to your zone (e.g. example.com). It uses the cluster identity from the prerequisite step, so no keys are ever stored.

Prefer YAML? The same add-ons apply declaratively. Copy-paste the example manifests:

Apply add-ons and watch them go healthy
$ astroctl infra k8s addons apply -f nginx-ingress.yaml astroctl infra k8s addons apply -f cert-manager.yaml astroctl infra k8s addons apply -f external-dns.yaml astroctl infra k8s addons get prod # all add-ons + health

Installed together, they compose into automatic, production-grade HTTPS: cert-manager solves the ACME challenge through NGINX, ExternalDNS creates the DNS record, and NGINX terminates TLS at the edge with the issued certificate. Certificates renew themselves.

Step 2: Verify your domain, once

In Settings → Domains, add a domain you control and publish the TXT record it shows you. Once it verifies, every internet-facing app can serve on it, on a hostname you choose (shop.example.com) or an auto-generated one.

Adding a domain, publishing the TXT record, and watching it verify
Claim and verify a domain
$ astroctl domain add example.com # prints the TXT record to publish astroctl domain verify example.com # run once DNS has propagated

See Custom Domains for the details.

Step 3: Deploy a container image on your domain

Custom domains attach to Container Image applications; that's the exposure model. Here's a ready-made image so you can watch the whole thing light up:

Deploy wizard: Container Image astropulse/latency:v1.0.0, then choose a verified domain and hostname under External access
  1. Deploy Application → Container Image, image astropulse/latency:v1.0.0.
  2. Under External access, pick your verified domain and a hostname (or leave it blank to auto-generate <app>-<id>.example.com).
  3. Deploy.

Within a minute or two the app is running, its DNS record and TLS certificate are created for you, and it's live on https://<your-host>.example.com.

Deploy an image app on a verified domain
$ cat <<'EOF' | astroctl app apply -f - apiVersion: platform.astropulse.io/v1 kind: Application spec: name: latency-demo profileName: <YOUR_PROFILE_NAME> # list: astroctl app profile get source: type: image image: registry: docker.io repository: astropulse/latency tag: v1.0.0 externalAccess: domain: example.com # verified domain → latency-demo-<id>.example.com EOF

Test it locally: no cloud needed

Want to validate the wiring before touching a cloud account? The whole flow runs on a local kind cluster, with a few local swaps:

  • NGINX: install it with Expose via NodePort (Advanced settings). kind has no cloud LoadBalancer, so the controller is reachable on a node port instead. That's the only local-vs-cloud difference.
  • cert-manager: enable a self-signed ClusterIssuer: no ACME account, no public DNS, no email. It's Ready offline, which is all you need to prove the TLS path.
  • ExternalDNS: skip it locally; it needs a real cloud DNS zone.

Deploy any container image with an ingressClassName: nginx Ingress and it's reachable through NGINX exactly as it would be through a cloud LoadBalancer in production. Full steps are in the add-on docs' local testing section.

The point

The blueprint still stands if you want to own every piece. But the ingress, TLS, and DNS plumbing is now something AstroPulse installs, keeps healthy, and upgrades for you, reachable from a console, a CLI, or a sentence to your AI. Push an image, get a live URL on your own domain with real HTTPS. That's the whole idea.

The AstroPulse Journey

· 4 min read
Rajesh RC
Founder

When I started AstroPulse, the problem was easy to name and hard to live with: teams moving to the cloud were drowning in tools. Every provider had its own consoles, its own primitives, its own way to deploy an app and stand up a cluster. The work that mattered, shipping software, kept getting buried under the work of operating it.

I wanted one place to deploy an application and run a cluster, on any cloud, without learning five different platforms first. That was the beginning. Everything since has been built on top of that one idea, one layer at a time.

The AI SRE Race Is Running the Wrong Way

· 7 min read
Rajesh RC
Founder

AI diagnosis flowing through a governed approval gate into production infrastructure

The thesis

Diagnosis is a commodity. Trust is the product.

The AI SRE race will not be won by the agent that diagnoses fastest. It will be won by the system that operators trust enough to grant write access.

A personal note on where AI for operations is actually heading.

Over the past year a new category filled up fast. Depending on how you count, there are now more than a dozen credible tools that call themselves AI SREs. I have watched the space closely, partly because we are building in it, and partly because the speed of convergence is genuinely interesting.

Here is what nearly all of them do. They connect to your telemetry, your code, and your incident tooling. They correlate logs, metrics, and traces. When an alert fires, they form hypotheses, test them against the evidence, and post a likely root cause into Slack, often in under a minute. This is real progress. A few years ago none of it worked. Today most of it does.

Phase one is real

Diagnosis is real progress. But it is just phase one.

How We Designed Nova's Investigation Engine: Lessons from SRE at Scale

· 8 min read
Rajesh RC
Founder

When something breaks in production at an odd hour, the person on call has to do three things at once: understand what is happening, decide what to do about it, and be able to explain all of it the next day. Most AI incident tools help with at most one of these. They either give you more data to read, or they take action you cannot see and cannot account for afterward.

We spent the last several months building Nova's investigation engine around that gap. This post is about how we designed it, the models we borrowed from, and the trade-offs we made along the way.

Bring Your Own Kubernetes Cluster

· 5 min read
Rajesh RC
Founder

Six months in as platform lead and you have a spreadsheet you haven't shown your manager. Eleven Kubernetes clusters. EKS for production. GKE for the ML team. Two on-prem clusters behind the firewall that predate your tenure. A handful of Kind clusters developers spun up locally. Each one has its own deployment pipeline, its own credentials rotation process, its own way of answering "is this service healthy?"

Your team isn't building features anymore. You're maintaining eleven slightly different versions of the same tooling.

astroctl infra k8s register --name my-cluster

The Hardest Problems in Building Production AI Agents

· 25 min read
Rajesh RC
Founder

Every AI agent demo looks the same. The model calls a tool, gets a result, and responds. Then you run it against real infrastructure, and the demo falls apart in ways the tutorials never mention.

We have spent over a year building Nova, an AI agent that operates real infrastructure for real teams. It is not a chatbot that wraps API calls. It investigates incidents, executes remediations, and composes across dozens of integrations. This post is about what we learned: the problems that made us rebuild entire subsystems, and the patterns that survived.

One AI, Every Interface

· 6 min read
Rajesh RC
Founder

Platform teams carry operational knowledge that does not transfer easily. The debugging instincts, the service interdependencies, the deployment quirks: they accumulate over years and live in a few people's heads. When those people are unavailable, the gap shows.

We built Nova to put that knowledge into a system you can query. This post covers what the architecture looks like and what we learned building AI that actually operates infrastructure.