[HN Gopher] Show HN: Chart Preview - Preview environments for He...
       ___________________________________________________________________
        
       Show HN: Chart Preview - Preview environments for Helm charts on
       every PR
        
       I'm a software engineer who accidentally became my team's
       Kubernetes person -- and eventually the bottleneck for every Helm
       chart PR.  I built Chart Preview so reviewers could see Helm chart
       changes running without waiting on me.  A few years ago, my team
       needed to implement HA for an existing product, which meant
       deploying on Kubernetes and OpenShift. I spent months learning
       Kubernetes, Helm, and the surrounding ecosystem. After that,
       Kubernetes largely became "my thing" on the team.  We later
       published public Helm charts for the product, and customers started
       submitting PRs. Those PRs would often sit for months -- not because
       the changes were bad, but because testing them meant manually
       spinning up a Kubernetes cluster, deploying the chart with the
       proposed changes, running through test scenarios, and coordinating
       verification with product and QA. Since I was the only one who
       could reliably set up those environments, everything waited on me.
       I kept thinking: what if the PR itself showed the changes working?
       What if reviewers could just click a link and see it deployed?
       That idea became Chart Preview.  Chart Preview deploys your Helm
       chart to a real Kubernetes cluster when you open a PR, provides a
       unique preview URL for that PR, and cleans everything up
       automatically when the PR closes.  I started by solving a problem I
       was personally hitting, rather than surveying the whole market
       upfront. As I built more of it, I looked at existing preview tools
       and noticed that while there are solid solutions for previewing
       container-based applications, Helm-specific workflows introduce
       different challenges -- chart dependencies, layered values files,
       and opinionated chart structures. That pushed me to focus Chart
       Preview on being Helm-native first, rather than adapting a
       container preview workflow to fit Helm.  Under the hood, it's built
       in Go using the Helm v3 SDK. The architecture is an API server with
       workers pulling jobs from a PostgreSQL queue -- no Kubernetes
       operator, just services talking directly to the Kubernetes API.
       Each preview runs in its own namespace with deny-all
       NetworkPolicies, ResourceQuotas, and LimitRanges. GitHub
       integration is done via a GitHub App for check runs and webhooks,
       with GitLab supported via the REST API.  There were a few
       interesting challenges along the way. Injecting preview hostnames
       into Ingress resources without corrupting manifests took several
       iterations. Helm uninstall doesn't always clean everything up, so
       deleting the entire namespace turned out to be the safest fallback.
       Handling rapid pushes to the same PR required build numbering so
       the latest push always wins. And while the Helm SDK is powerful,
       it's under-documented -- I spent a lot of time reading Helm's
       source code.  I've been building and testing this for a few months
       using real charts like Grafana, podinfo, and WordPress to validate
       the workflow. It's early, but it works, and now I'm trying to
       understand whether other teams have the same pain point I did.  You
       can try it by installing the GitHub App here:
       https://github.com/apps/chart-preview  I'd love feedback on a few
       things:  Does this solve a real problem for your team, or is shared
       staging "good enough"?  What's missing that would make you actually
       use it?  Are there Helm charts this wouldn't work for? (Cluster-
       scoped resources are intentionally blocked.)  Happy to answer
       questions about the implementation.
        
       Author : chartpreview
       Score  : 15 points
       Date   : 2025-12-20 17:23 UTC (5 hours ago)
        
       | mrj wrote:
       | Congrats! I could see the value of this, for sure. I handle this
       | problem by spinning up a preview environment in a namespace. Each
       | branch gets its own and a script takes care of setting up
       | namespaces for a couple of shared resources for staging (rabbit
       | and temporal).
       | 
       | It was a lot of work setting that up though. Preview environments
       | based on a helm deploy makes sense. I wish this had been
       | available before I did all that.
        
       ___________________________________________________________________
       (page generated 2025-12-20 23:01 UTC)