Welcome to Indra on Cloud. This first post is a quick note on how the blog itself is built, because the architecture is the point.
The constraints
The GKE cluster we run is busy (and, honestly, tight on memory). We didn’t want a blog adding load to it. We also wanted:
- Fast pages and good SEO
- A workflow where publishing a post is just
git push - Near-zero running cost
The shape
The blog is a static Astro site. At build time everything becomes plain HTML, CSS, and optimized images, no server rendering, no database.
git push → CI builds Astro → dist/ synced to gs://softion-blog-indra
→ Cloud Run (nginx) serves the bucket → you
The built files live in a private GCS bucket. A tiny Cloud Run service running nginx mounts that bucket read-only and serves it. The service scales to zero when nobody is reading. You stop paying for traffic you don’t have.
Adding a post
Drop a markdown file in src/content/posts/:
---
author: "Muhammad Indrawan"
pubDatetime: 2026-07-20T00:00:00.000Z
title: "My post"
description: "One-line summary for SEO and social cards"
tags: ["kubernetes"]
---
Your content here.
Commit, push, done. The build validates the frontmatter, so a malformed post can’t ship.
More soon.