blog: add "Terraform and Kubernetes: A Practical Guide for 2026" - #20751
blog: add "Terraform and Kubernetes: A Practical Guide for 2026"#20751workprentice[bot] wants to merge 2 commits into
Conversation
Adds a new blog post (HowTo + FAQ schema) covering the operating model for managing Kubernetes infrastructure in 2026: what Terraform's kubernetes provider does well, its documented plan-time and provider-ordering limits, how a general-purpose language changes testing and CRD handling, where AI agents fit into the workflow, and a fair look at when Terraform remains the right choice. Also adds a reciprocal link from the 2024 YAML/Terraform/Pulumi post to keep the two posts' scopes clearly distinguished (manifest authoring vs. the wider infrastructure operating model).
Pre-merge Review — Last updated 2026-08-11T00:20:25ZTip Summary: This PR adds a new SEO/comparison blog post, "Terraform and Kubernetes: A Practical Guide for 2026," plus a one-line cross-link from the existing "YAML, Terraform, or Pulumi" post — the same shape as the sibling comparison posts it deliberately splits from (manifest-authoring lives there; provisioning/testing/policy/agents live here). The post is unusually well-sourced: nearly every load-bearing claim about the Review confidence:
Investigation log
✏️ 1 one-click style suggestion is posted inline — apply it from the Files changed tab. 🔍 Verification trail66 claims extracted · 58 verified · 1 unverifiable · 2 contradicted
📊 Editorial balanceSection depth, mention distribution, recommendation steering
🚨 Outstanding in this PRThese must be resolved or refuted before merging.
Important Please don't hide, resolve, or delete this comment! It breaks things! 📖 How pre-merge review works — the full lifecycle, short-circuits, and escape hatches. |
|
Social Media Reviewcontent/blog/terraform-kubernetes/index.mdX — PASSLinkedIn — FAIL
Bluesky — FAIL
Suggested copyLinkedIn (703/2950 chars) — backticks stripped, everything else unchanged:
Bluesky (243/300 chars) — split into two paragraphs at the colon, no other changes:
Suggestions (advisory)These are stylistic notes — they don't block the post. X
Updated for commit |
|
Your site preview for commit 6106a6d is ready! 🎉 http://www-testing-pulumi-docs-origin-pr-20751-6106a6d8.s3-website.us-west-2.amazonaws.com Changed pages: |
|
@claude #update-review |
There was a problem hiding this comment.
🧹 Optional style suggestions from the pre-merge review — apply or dismiss; none of them block.
Generated by Claude Code
| Fair comparisons cut both ways, and there are good reasons a team keeps using Terraform for Kubernetes: | ||
|
|
||
| - **Provider and module catalog breadth.** Terraform's registry has the largest catalog of providers and community modules of any IaC tool, and that matters for teams integrating many third-party systems alongside Kubernetes. | ||
| - **A single tool across the whole estate.** Teams that have already standardized on Terraform for networking, IAM, and managed services often prefer one state model and one pipeline rather than introducing a second tool just for Kubernetes. |
There was a problem hiding this comment.
[style] difficulty qualifier — drops 'just', no meaning lost
| - **A single tool across the whole estate.** Teams that have already standardized on Terraform for networking, IAM, and managed services often prefer one state model and one pipeline rather than introducing a second tool just for Kubernetes. | |
| - **A single tool across the whole estate.** Teams that have already standardized on Terraform for networking, IAM, and managed services often prefer one state model and one pipeline rather than introducing a second tool for Kubernetes. |
|
🤖 Review updated on @CamSoper's request. |
|
@workprentice, you still working this one? |
What
New blog post: Terraform and Kubernetes: A Practical Guide for 2026 — targets the exact-match head query "terraform kubernetes" (13 impressions / 0 clicks / avg position 45.6 in the last 90 days, currently landing on the homepage, per GSC — a genuine green-field opportunity), and closes part of the Kubernetes-topic GEO gap flagged on the board card.
Also adds a single reciprocal link from the 2024 post (
content/blog/yaml-terraform-pulumi-...index.md) to the new one, so the two stay clearly scoped from each other.Why /blog/ and not /docs/iac/guides/
The card allowed either location. I checked
layouts/partials/schema/graph-builder.html: the additive HowTo schema entity is gated to.Type "blog"only:A
content/docs/page can never carry that HowTo entity, and the card explicitly asks for step-by-step HowTo schema. So this had to be a blog post.Anti-cannibalization
Two adjacent posts already exist:
/blog/ai-agents-on-kubernetes/(merged 2026-07-28) — agent runtime on K8s.content/blog/gpu-kubernetes-ai-workloads/— PR blog: GPU Kubernetes infrastructure for AI workloads #20631, still open — GPU/accelerator substrate. I did not link to it or add it torelated_postssince it's unmerged and the slug doesn't exist on master yet. Once blog: GPU Kubernetes infrastructure for AI workloads #20631 merges, someone should add a reciprocal link from that post to this one./blog/yaml-terraform-pulumi-whats-the-smart-choice-for-deployment-automation-with-kubernetes/(2024) — highest overlap risk, since it already has an H2-equivalent section on the Terraform Kubernetes provider for manifest authoring. This new post is scoped to the wider operating model (provisioning, testing, policy, AI agents) instead, with an explicit callout distinguishing the two near the top, and a link from the new post pointing back to the 2024 one for the authoring comparison. I added the reciprocal link from the 2024 post as well.category: general / no feature image
feature_imageis required for every published category exceptgeneral(and drafts), and the lint script enforces exact dimensions (1884×1256), background color, and apulumi-blog-feature-imagePNG Software tag that only the/blog-feature-imageskill or a designer can produce legitimately. I don't have a way to generate a compliant image without forging that provenance tag, so I usedcategory: general— the same escape hatch PR #20631 used with all gates green. Follow-up requested: a designed feature image and recategorization totutorialsorbest-practicesonce one exists.Byline data inconsistency
Used
authors: [pulumi-content-team]per the card's "Pulumi Content Team" byline requirement. Note:data/team/team/has two overlapping profiles —content-team.toml(idcontent-team, statusactive, never used by any post) andpulumi-content-team.toml(idpulumi-content-team, statusinactive, but already used successfully bycontent/blog/best-terraform-alternatives/index.md). I followed the working precedent (pulumi-content-team) rather than the "active" one, since it's the one actually exercised in a shipped post. Worth reconciling those two profiles at some point.Corrected Profound baseline (vs. the card)
Measured 2026-08-07 against Profound's Infrastructure as Code category, Kubernetes topic:
Fact-checking
All Pulumi Kubernetes provider claims (Server-Side Apply default since v4.0, await annotations, Helm Chart/Release tradeoffs, crd2pulumi, testing/mocks/Automation API, CrossGuard) and Terraform claims (provider v3.2.1, the two verbatim HashiCorp quotes on plan-time API access and provider-credential ordering,
terraform test+mock_providerGA status) were checked against the current registry docs and HashiCorp's own provider documentation, not asserted from memory. No unverified claims (no named "Kubernetes policy" product, no formal deprecation of unversioned yaml/kustomize APIs, no cost comparison vs. HCP Terraform).Structural schema checks (done manually;
make lintneeds Node, unavailable on this box)grep -nE '^[0-9]+\.'.##/###heading ending in?is an intended FAQPage entry; no non-FAQ heading ends in?— confirmed viagrep -nE '^#{2,3} .*\?$'.title52 chars (≤60),meta_desc150 chars (<160),categoryis a valid scalar fromdata/blog_categories.yaml, all tags exist indata/blog_tags.yaml, both author ids verified indata/team/team/.🧠 This PR was created by workprentice.