Why I Built a Kubernetes Deployment Tool ![rw-book-cover](https://i0.wp.com/eric.mann.blog/wp-content/uploads/2026/01/create-a-featured-image-for-a-blog-post-about-a.png?fit=1024%2C768&ssl=1) 🔗 **Source:** [Why I Built a Kubernetes Deployment Tool](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) > [!note]+ Document Notes > tags: [Kubernetes, PHP, DevOps] > author: Eric Mann > source: Eric Mann's Blog > reference: [https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/] > date created: 2026-01-07 00:00 > > # 🏷️ Title: Why I built a Kubernetes deployment tool > <!-- deep-read:sections start --> ## 🧭 Table of Contents - [📝 Summary](#-summary) - [📖 Main Content](#-main-content) - [🗒️ Notes](#️-notes) - [📚 References](#-references) - [🗣️ Paraphrase](#️-paraphrase) - [📰 Newsletter](#-newsletter) - [✅ Action Items](#-action-items) - [🧪 Hypotheses](#-hypotheses) - [📊 Methodology](#-methodology) - [❓ Questions](#-questions) - [🔮 Future Research](#-future-research) - [💡 Implications](#-implications) - [🧠 Learning Styles Assessment](#-learning-styles-assessment) - [📊 Accessibility Assessment](#-accessibility-assessment) - [🌍 DEIB Assessment](#-deib-assessment) - [✅ Logical Validity](#-logical-validity) - [🛡️ DARVO Analysis](#-darvo-analysis) - [🎯 Conclusion](#-conclusion) ### 🔗 References - Include links cited in or relevant to the article. ## 📝 Summary - What happened: Eric Mann introduces Displace, a CLI and infrastructure platform that turns Docker Compose-style configs into production-ready Kubernetes deployments. - Why it matters: It shrinks the gap between local dev and production, especially for PHP teams who struggle with Kubernetes complexity. - Key stakeholders: PHP/Laravel and WordPress developers, platform/SRE teams, and orgs adopting Kubernetes. - Risks and tradeoffs: Reliance on an abstraction layer; eventual need to understand raw Kubernetes for complex edge cases. - Bottom line: Displace aims to let teams ship to Kubernetes in days instead of months, plus consulting for harder migrations. ## 📖 Main Content - Core argument: The jump from `docker-compose up` to production Kubernetes is unreasonably hard and slow for most teams, even experienced ones. Developers “drown in YAML” and often fall back to unsafe shortcuts like running production as if it were their laptop. - Solution: Displace provides a translation layer: you keep thinking in Docker Compose concepts, and the tool maps them to Kubernetes primitives (Deployments, Services, PersistentVolumeClaims, CronJobs, etc.). It wraps standard tools rather than replacing them, so teams can later “graduate” to direct Kubernetes use. - Example: A Laravel app (DailyMedToday) with PostgreSQL, Redis, queues, and backups moves from local Docker Compose to production Kubernetes “in an afternoon, not weeks.” - PHP angle: PHP developers don’t need a “40-hour Kubernetes course”; they need conceptual mapping and a smoother path. Mann is also giving PHP Tek talks on this bridge and on semantic search in Laravel using the same app. - Business angle: Alongside the tool, he offers consulting to get teams to production Kubernetes quickly for Laravel, WordPress at scale, and other workloads. ### 🗒️ Notes - Author has 20+ years of production deployment experience, including high-traffic PHP infrastructure and security writing, and has “seen a lot of deployment strategies come and go.” - Persistent pattern: devs have great local setups via Docker Compose, but production Kubernetes introduces: - New resource types (Deployments, Services, Ingresses, ConfigMaps, Secrets, PersistentVolumeClaims). - A steep terminology and configuration learning curve. - Weeks or months spent on infrastructure rather than features. - Common failure mode: smart teams mirror local environments in production using Docker Compose or ad-hoc Bash scripts, bypassing Kubernetes or using it unsafely. - Displace: - CLI plus infrastructure platform. - Translates Compose concepts directly into Kubernetes resources. - Built on standard ecosystem tools rather than a proprietary stack. - Lets you “build what you need; Displace handles the deployment.” - Still compatible with underlying tools when teams later manage Kubernetes directly. - Case study: DailyMedToday (Laravel + PostgreSQL + Redis + queues + nightly backup CronJob): - Local: Docker Compose on localhost. - Production: Displace deploys to a Kubernetes cluster with a “quick command.” - Migration-time claim: one afternoon instead of weeks. - Applicability: - Works for Laravel, WordPress, and other PHP apps. - Expanding to non-PHP workloads. - Education: - Two PHP Tek talks: - Conceptual bridge from Docker Compose to Kubernetes. - Semantic search/embeddings in Laravel using DailyMedToday as live example. - Emphasis on showing that “Docker Compose concepts map directly to Kubernetes primitives” so the mental model transfers. - Services offered: - Consulting for: - Migrating Laravel monoliths. - Deploying WordPress at scale. - New greenfield apps. - Positioning: production Kubernetes in days, not months. - Vision: “The PHP ecosystem deserves better infrastructure tooling.” Displace and associated consulting aim to fill this gap. - Call to action: - Meet at PHP Tek. - Try Displace (CLI is free for core concepts; paid workflows for cloud). - Follow along on X and Mastodon. - Prompt to reflect: “What infrastructure problems are slowing your team down?” ## 📚 References - “Why I built a Kubernetes deployment tool” (primary article): https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/ - PHP Tek conference: https://tek.phparch.com/ - Kubernetes (project home): https://kubernetes.io/ - Docker Compose: https://docs.docker.com/compose/ - Laravel framework: https://laravel.com/ - WordPress: https://wordpress.org/ - php[architect] magazine: https://www.phparch.com/ ## 🗣️ Paraphrase - Paragraph A paraphrase: Modern dev teams are efficient locally with Docker Compose but hit a wall in production because Kubernetes is conceptually heavy, YAML-heavy, and slow to learn, so they often either avoid it or misuse it. - Paragraph B paraphrase: Displace abstracts Kubernetes by mapping familiar Docker Compose ideas onto correct Kubernetes resources, demonstrated on a Laravel app, and is paired with consulting and talks aimed especially at PHP developers who want Kubernetes results without becoming full-time SREs. ## 📰 Newsletter For many WordPress and PHP teams, Kubernetes still feels like an overcomplicated detour between “it works on my machine” and “it’s reliable in production.” In his new article, Eric Mann introduces Displace, a deployment tool that turns familiar Docker Compose concepts into production-ready Kubernetes resources—no 40‑hour crash course required. Mann walks through deploying a Laravel app with PostgreSQL, Redis, queues, and scheduled backups from localhost to a Kubernetes cluster in an afternoon. The same patterns apply to WordPress: think Services, volumes, and CronJobs, but generated from a higher-level config instead of hand-crafted YAML. If you’re exploring Kubernetes for WordPress or PHP apps, this is a practical perspective on where abstraction helps, where you’ll still need to understand the platform, and how to avoid running your production like a glorified laptop. ## ✅ Action Items #### DevRel - Clarify positioning of Displace in talks and docs as “Compose-to-Kubernetes bridge” for PHP and WordPress developers. - Create demo repos (Laravel + WordPress) that mirror real-world production patterns using Displace. - Publish quickstarts and copy-paste snippets for common stacks (WordPress + Redis + object cache; Laravel + Horizon, etc.). - Track adoption via signups, CLI usage, and conference workshop conversions. - Collect developer feedback on confusing Kubernetes concepts to inform future content. #### OSPO - Document how Displace interacts with upstream Kubernetes and any open source components it uses. - Establish guidance for teams using similar abstraction layers while maintaining license compliance and security scanning. - Define an SBOM approach that includes tools like Displace in the delivery pipeline. #### Community - Host office hours or online meetups for PHP/Laravel/WordPress devs experimenting with Kubernetes. - Encourage maintainers of PHP apps to publish reference “production on Kubernetes” configurations, with or without Displace. - Gather stories about infra pain points to prioritize future tooling and documentation. #### WordPress - Core: Capture common Kubernetes deployment topologies for WordPress (single site, multisite, high-scale) as examples. - Core Performance: Explore how container- and cluster-level tuning (caching, object cache, PHP-FPM) impacts end-user performance metrics. - Core AI: Consider Kubernetes-backed demos of AI features (vector search, embedding services) as part of future reference architectures. - **Core Program Team:** Coordinate with hosting and meta teams on guidance for WordPress-on-Kubernetes best practices. - Mobile: Ensure app backends deployed via Kubernetes are reliable and well-instrumented for mobile clients. - Playground: Experiment with Playground-based labs that simulate “from Docker Compose to Kubernetes” WordPress migrations. - Community: Offer WordCamp sessions introducing Kubernetes to WordPress devs via Compose mappings. - Training: Build step-by-step lessons on containerizing and deploying WordPress to a cluster. - Marketing: Highlight success stories of WordPress scaled on Kubernetes, especially from PHP-focused tooling like Displace. - Support: Add docs around debugging WordPress issues unique to Kubernetes environments (storage, health checks, scaling). - Design: Provide UX examples for admin tools that surface Kubernetes health and logs in a WordPress-friendly way. - Documentation: Expand HelpHub/DevHub with modern deployment patterns including containers and clusters. - Photos / TV / Polyglots / Accessibility / Meta / CLI / Hosting / Tide / Openverse / Themes / Plugins: - Incorporate Kubernetes and container-aware guidance where relevant (e.g., plugin file write assumptions, external storage, cron behavior, health endpoints). #### The WPOCC - Sponsor experiments that document “WordPress on Kubernetes” reference architectures for small and medium orgs. - Fund short-term maintainer and documentation sprints focused on deployment reliability. - Pilot microgrants for plugins that remove common Kubernetes friction (config, logging, health checks). ### FAIR - Clarify what parts of tools like Displace are self-hostable and what require external services. - Encourage transparent pricing and governance for infra abstractions that WordPress projects may depend on. - Promote templates (charters, agreements) for engagements between hosts, tool vendors, and open-source communities. ## 🧪 Hypotheses - H1: PHP teams using a Compose-to-Kubernetes abstraction can reach stable production deployments significantly faster than teams starting from raw Kubernetes. - H2: Framing Kubernetes concepts in Docker Compose terms improves comprehension and retention for PHP developers. - H3: PHP teams that adopt Displace-like tools will spend more engineering time on features and less on infra debugging. - H4: WordPress deployments on Kubernetes using structured patterns (e.g., via Displace) will show fewer security misconfigurations than ad-hoc Docker Compose in production. ### 📊 Methodology - Compare deployment timelines and incident rates across teams: - Control: teams learning Kubernetes directly. - Treatment: teams using Displace or a similar abstraction. - Use surveys and comprehension tests to measure how well developers understand core Kubernetes primitives after learning through Compose analogies. - Analyze incident data and postmortems for production Docker Compose vs. structured Kubernetes deployments for PHP/WordPress. ### ❓ Questions - How far can abstractions like Displace go before teams must learn Kubernetes internals? - What are the most common misconfigurations for PHP apps on Kubernetes today? - How should PHP and WordPress communities document “good enough” production patterns that balance safety and simplicity? - Could these patterns be standardized as official examples or blueprints? ### 🔮 Future Research - Systematic case studies of PHP/WordPress migrations from VMs or Compose to Kubernetes. - Tooling that combines infrastructure translation (Compose → Kubernetes) with best-practice security hardening for PHP workloads. - Metrics frameworks for “time-to-safe-production” as a first-class outcome in DevOps. ### 💡 Implications - Practice: Teams can adopt Kubernetes without a dedicated platform team if tooling bridges local and production concepts well. - Policy: Organizations may formalize “approved abstraction layers” that allow innovation while keeping infra secure. - Security: Moving away from hand-rolled scripts and ad-hoc Compose in production should reduce certain classes of vulnerabilities. - Education: Training for PHP developers can shift from generic Kubernetes theory to concept-mapping and applied patterns. - Funding: There’s room to fund infra tools that focus on specific language ecosystems like PHP, rather than only generic platforms. ### 🧠 Learning Styles Assessment - Reading level estimate: Approx. upper high school / early college (Flesch-Kincaid ~11–13) given technical vocabulary but short, clear sentences. #### 👀 Visual learners - Present: Mostly text; conceptual contrasts (local vs. production) are described, not drawn. - Improve: Add diagrams of Docker Compose vs. Kubernetes resource mapping, sample architecture for the Laravel app, and before/after deployment flows. #### 🔊 Aural learners - Present: None explicitly. - Improve: Short audio summary of the article and recorded versions of the PHP Tek talks. #### 🗣️ Verbal learners - Present: Clear definitions-by-example of concepts (e.g., mapping Services and volumes). - Improve: More analogies and a small glossary comparing Compose and Kubernetes terms. #### 🧩 Kinesthetic learners - Present: High-level description of using Displace, but no step-by-step tutorial in the article. - Improve: Hands-on labs: “Start from this docker-compose.yml; deploy to Kubernetes using these commands.” #### 🧠 Logical learners - Present: Cause-and-effect reasoning about why teams struggle and how a translation layer helps. - Improve: Tables mapping Compose fields to Kubernetes equivalents, and decision trees for when to customize underlying resources. #### 🧑‍🤝‍🧑 Social learners - Present: Invitation to meet at PHP Tek and follow along on social platforms. - Improve: Guided group workshops and Q&A sessions for teams doing their first Kubernetes deployment. #### 🧘‍♀️ Solitary learners - Present: Article is well-suited to solo reading and reflection on team infra pain points. - Improve: Self-check questions and small exercises (“Map your current Compose file to Kubernetes primitives”). #### 🌿 Naturalistic learners - Present: No explicit environmental focus. - Improve: Discussion of resource efficiency, scaling, and potential sustainability benefits of better infra utilization. ### 📊 Accessibility Assessment #### Screen reader semantics - Present: Blog posts typically have headings and paragraphs; likely acceptable basic structure. - Improve: Ensure heading hierarchy is logical; add descriptive alt text for any future diagrams. #### Keyboard navigation - Present: Standard blog layouts tend to be navigable but specifics are unknown. - Improve: Confirm visible focus states and a “skip to content” link. #### Contrast and readability - Present: Unknown; many blogs are adequate but vary. - Improve: Verify contrast ratios; maintain generous line spacing and font sizes. #### Text resizing and reflow - Present: Likely responsive design. - Improve: Confirm content reflows without horizontal scrolling at 200% zoom and respect motion preferences. #### Media and captions - Present: This article is text-only. - Improve: Add captions/transcripts for any future videos or talks embedded. #### Forms and interactions - Present: Minimal interaction beyond reading. - Improve: If sign-up or contact forms exist, ensure labels, clear errors, and large clickable targets. #### Standards reference - Map any gaps to WCAG 2.2 AA (contrast, keyboard operability, reflow, focus visibility, etc.). ### 🌍 DEIB Assessment #### Cultural breadth - Present: Focused on PHP and Kubernetes; not region-specific. - Improve: Include examples from different team sizes, regions, and hosting environments. #### Inclusive language - Present: Neutral and professional; avoids stereotypes. - Improve: Add more plain-language explanations for readers from non-DevOps backgrounds. #### Neurodiversity support - Present: Short, focused sections and clear narrative. - Improve: More subheadings, bullets summarizing key points, and consistent patterns for mapping concepts. #### Representation - Present: Single-author, experience-driven narrative; no visuals of people. - Improve: When adding imagery, use diverse representation and alt text that notes it. #### Psychological safety - Present: Encouraging tone; normalizes struggling with infra complexity. - Improve: Explicitly state that production shortcuts are common but solvable; invite questions without judgment. ### ✅ Logical Validity #### Strong reasoning - Inductive reasoning: From repeated observation of teams struggling with Kubernetes, the author infers a systemic problem and proposes a tool to address it. This is reasonable because he cites decades of experience and concrete examples. - Causal reasoning: Asserts that Kubernetes complexity causes delays and risky shortcuts; aligns with common industry reports. #### Fallacies - Possible survivorship/experience bias: Most evidence is anecdotal from the author’s own consulting and jobs. This doesn’t invalidate the claims but could be strengthened with broader data. #### Tone of voice - Tone: Pragmatic, empathetic, solution-oriented. The article balances authority (“I’ve been deploying… for twenty years”) with humility and practical help. ### 🛡️ DARVO Analysis - Deny: No denial or minimization of problems; instead, it highlights them. - Attack: No attacks on individuals or groups; criticism is aimed at complexity and tooling gaps. - Reverse victim/offender: None; the piece doesn’t frame the author or tool as a victim, but as a helper for teams struggling with infra. ## 🎯 Conclusion The article argues that the current path from Docker Compose to production Kubernetes is too slow and painful for many PHP teams. Displace steps in as a translation layer and deployment helper, leveraging familiar concepts to generate correct Kubernetes resources and get applications into production much faster. For readers, the next steps are to examine where infra work is blocking product progress and consider tools and patterns—like Displace or similar approaches—that narrow that gap. ## 🧱 Refactor Appendix (append after 🎯 Conclusion) ### 📚 Literature Split Pad - Purpose: Stage Konik CEE units that become per-source Literature notes. - Split level: **H3**. - Include verbatim quotes under 25 words and a [view highlight] link. ### [H1] Compose-to-Kubernetes bridge speeds PHP adoption > [!quote] [Why I built a Kubernetes deployment tool](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) by [[Eric Mann]] via [[Eric Mann's Blog]]. Published 2026-01-06. Accessed 2026-01-07. > “The gap between docker-compose up and production Kubernetes shouldn’t require a platform engineering team.” Two lines: Displace is proposed as a bridge from familiar Docker Compose workflows to production Kubernetes. Useful when evaluating abstractions for PHP/WordPress infra. [view highlight](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) #xref #articleseed ID:rw_[MISSING] ### [H2] PHP teams need mapping, not more Kubernetes > [!quote] [Why I built a Kubernetes deployment tool](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) > “PHP developers don’t need another 40-hour Kubernetes course. They need someone to show them the translation layer.” Two lines: Shifts education focus from raw Kubernetes depth to concept mapping from Docker Compose. Guides curriculum and tooling design for PHP infra. [view highlight](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) #xref ID:rw_[MISSING] --- ### 🔖 Atomic Split Pad (Zettel Candidates) - Purpose: Promote reusable claims into Atomic notes. - Split level: **H4**. - Each item: one idea, present tense, specific, testable. #### [Z1] Compose-to-Kubernetes translation accelerates deployments - When PHP teams keep thinking in Compose concepts but deploy to Kubernetes via a translation tool, time-to-production shrinks. - Links: [[Kubernetes-Adoption]] [[PHP-Infrastructure]] #### [Z2] PHP infra education benefits from concept mappings - Teaching Kubernetes as a mapping from Docker Compose primitives improves approachability for PHP developers. - Links: [[Developer-Education]] [[Containers-and-Orchestration]] --- ### ✏️ Fleeting Queue (Extract by Selection) - Purpose: Capture quick actions or sparks for Fleeting notes. - Extraction: **Select one line** → “Refactor: Extract selection to new note (content only).” - Keep each line short and self-contained. - [F1] Draft a WordPress-on-Kubernetes reference using Compose-to-Kubernetes mapping—https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/ #fleeting #inbox - [F2] Design a workshop showing Displace-style workflows for Laravel and WordPress teams—https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/ #fleeting #inbox - [F3] Compare incident rates between Docker-Compose-in-production vs Kubernetes with a translation layer—https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/ #fleeting #inbox --- <!-- deep-read:sections end --> [[3. Resources/Readwise/Full Document Contents/Articles/Why I Built a Kubernetes Deployment Tool|Full Document Contents]] ## Document Notes tags: #Kubernetes #PHP #DevOps author: Eric Mann source: Eric Mann's Blog reference: [https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/] date created: 2026-01-07 00:00 # 🏷️ Title: Why I built a Kubernetes deployment tool ## 🧭 Table of Contents - [[#📝 Summary]] - [[#📖 Main Content]] - [[#🗒️ Notes]] - [[#📚 References]] - [[#🗣️ Paraphrase]] - [[#📰 Newsletter]] - [[#✅ Action Items]] - [[#🧪 Hypotheses]] - [[#📊 Methodology]] - [[#❓ Questions]] - [[#🔮 Future Research]] - [[#💡 Implications]] - [[#🧠 Learning Styles Assessment]] - [[#📊 Accessibility Assessment]] - [[#🌍 DEIB Assessment]] - [[#✅ Logical Validity]] - [[#🛡️ DARVO Analysis]] - [[#🎯 Conclusion]] ### 🔗 References - Include links cited in or relevant to the article. ## 📝 Summary - What happened: Eric Mann introduces Displace, a CLI and infrastructure platform that turns Docker Compose-style configs into production-ready Kubernetes deployments. - Why it matters: It shrinks the gap between local dev and production, especially for PHP teams who struggle with Kubernetes complexity. - Key stakeholders: PHP/Laravel and WordPress developers, platform/SRE teams, and orgs adopting Kubernetes. - Risks and tradeoffs: Reliance on an abstraction layer; eventual need to understand raw Kubernetes for complex edge cases. - Bottom line: Displace aims to let teams ship to Kubernetes in days instead of months, plus consulting for harder migrations. ## 📖 Main Content - Core argument: The jump from `docker-compose up` to production Kubernetes is unreasonably hard and slow for most teams, even experienced ones. Developers “drown in YAML” and often fall back to unsafe shortcuts like running production as if it were their laptop. - Solution: Displace provides a translation layer: you keep thinking in Docker Compose concepts, and the tool maps them to Kubernetes primitives (Deployments, Services, PersistentVolumeClaims, CronJobs, etc.). It wraps standard tools rather than replacing them, so teams can later “graduate” to direct Kubernetes use. - Example: A Laravel app (DailyMedToday) with PostgreSQL, Redis, queues, and backups moves from local Docker Compose to production Kubernetes “in an afternoon, not weeks.” - PHP angle: PHP developers don’t need a “40-hour Kubernetes course”; they need conceptual mapping and a smoother path. Mann is also giving PHP Tek talks on this bridge and on semantic search in Laravel using the same app. - Business angle: Alongside the tool, he offers consulting to get teams to production Kubernetes quickly for Laravel, WordPress at scale, and other workloads. ### 🗒️ Notes - Author has 20+ years of production deployment experience, including high-traffic PHP infrastructure and security writing, and has “seen a lot of deployment strategies come and go.” - Persistent pattern: devs have great local setups via Docker Compose, but production Kubernetes introduces: - New resource types (Deployments, Services, Ingresses, ConfigMaps, Secrets, PersistentVolumeClaims). - A steep terminology and configuration learning curve. - Weeks or months spent on infrastructure rather than features. - Common failure mode: smart teams mirror local environments in production using Docker Compose or ad-hoc Bash scripts, bypassing Kubernetes or using it unsafely. - Displace: - CLI plus infrastructure platform. - Translates Compose concepts directly into Kubernetes resources. - Built on standard ecosystem tools rather than a proprietary stack. - Lets you “build what you need; Displace handles the deployment.” - Still compatible with underlying tools when teams later manage Kubernetes directly. - Case study: DailyMedToday (Laravel + PostgreSQL + Redis + queues + nightly backup CronJob): - Local: Docker Compose on localhost. - Production: Displace deploys to a Kubernetes cluster with a “quick command.” - Migration-time claim: one afternoon instead of weeks. - Applicability: - Works for Laravel, WordPress, and other PHP apps. - Expanding to non-PHP workloads. - Education: - Two PHP Tek talks: - Conceptual bridge from Docker Compose to Kubernetes. - Semantic search/embeddings in Laravel using DailyMedToday as live example. - Emphasis on showing that “Docker Compose concepts map directly to Kubernetes primitives” so the mental model transfers. - Services offered: - Consulting for: - Migrating Laravel monoliths. - Deploying WordPress at scale. - New greenfield apps. - Positioning: production Kubernetes in days, not months. - Vision: “The PHP ecosystem deserves better infrastructure tooling.” Displace and associated consulting aim to fill this gap. - Call to action: - Meet at PHP Tek. - Try Displace (CLI is free for core concepts; paid workflows for cloud). - Follow along on X and Mastodon. - Prompt to reflect: “What infrastructure problems are slowing your team down?” ## 📚 References - “Why I built a Kubernetes deployment tool” (primary article): https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/ - PHP Tek conference: https://tek.phparch.com/ - Kubernetes (project home): https://kubernetes.io/ - Docker Compose: https://docs.docker.com/compose/ - Laravel framework: https://laravel.com/ - WordPress: https://wordpress.org/ - php[architect] magazine: https://www.phparch.com/ ## 🗣️ Paraphrase - Paragraph A paraphrase: Modern dev teams are efficient locally with Docker Compose but hit a wall in production because Kubernetes is conceptually heavy, YAML-heavy, and slow to learn, so they often either avoid it or misuse it. - Paragraph B paraphrase: Displace abstracts Kubernetes by mapping familiar Docker Compose ideas onto correct Kubernetes resources, demonstrated on a Laravel app, and is paired with consulting and talks aimed especially at PHP developers who want Kubernetes results without becoming full-time SREs. ## 📰 Newsletter For many WordPress and PHP teams, Kubernetes still feels like an overcomplicated detour between “it works on my machine” and “it’s reliable in production.” In his new article, Eric Mann introduces Displace, a deployment tool that turns familiar Docker Compose concepts into production-ready Kubernetes resources—no 40‑hour crash course required. Mann walks through deploying a Laravel app with PostgreSQL, Redis, queues, and scheduled backups from localhost to a Kubernetes cluster in an afternoon. The same patterns apply to WordPress: think Services, volumes, and CronJobs, but generated from a higher-level config instead of hand-crafted YAML. If you’re exploring Kubernetes for WordPress or PHP apps, this is a practical perspective on where abstraction helps, where you’ll still need to understand the platform, and how to avoid running your production like a glorified laptop. ## ✅ Action Items #### DevRel - Clarify positioning of Displace in talks and docs as “Compose-to-Kubernetes bridge” for PHP and WordPress developers. - Create demo repos (Laravel + WordPress) that mirror real-world production patterns using Displace. - Publish quickstarts and copy-paste snippets for common stacks (WordPress + Redis + object cache; Laravel + Horizon, etc.). - Track adoption via signups, CLI usage, and conference workshop conversions. - Collect developer feedback on confusing Kubernetes concepts to inform future content. #### OSPO - Document how Displace interacts with upstream Kubernetes and any open source components it uses. - Establish guidance for teams using similar abstraction layers while maintaining license compliance and security scanning. - Define an SBOM approach that includes tools like Displace in the delivery pipeline. #### Community - Host office hours or online meetups for PHP/Laravel/WordPress devs experimenting with Kubernetes. - Encourage maintainers of PHP apps to publish reference “production on Kubernetes” configurations, with or without Displace. - Gather stories about infra pain points to prioritize future tooling and documentation. #### WordPress - Core: Capture common Kubernetes deployment topologies for WordPress (single site, multisite, high-scale) as examples. - Core Performance: Explore how container- and cluster-level tuning (caching, object cache, PHP-FPM) impacts end-user performance metrics. - Core AI: Consider Kubernetes-backed demos of AI features (vector search, embedding services) as part of future reference architectures. - **Core Program Team:** Coordinate with hosting and meta teams on guidance for WordPress-on-Kubernetes best practices. - Mobile: Ensure app backends deployed via Kubernetes are reliable and well-instrumented for mobile clients. - Playground: Experiment with Playground-based labs that simulate “from Docker Compose to Kubernetes” WordPress migrations. - Community: Offer WordCamp sessions introducing Kubernetes to WordPress devs via Compose mappings. - Training: Build step-by-step lessons on containerizing and deploying WordPress to a cluster. - Marketing: Highlight success stories of WordPress scaled on Kubernetes, especially from PHP-focused tooling like Displace. - Support: Add docs around debugging WordPress issues unique to Kubernetes environments (storage, health checks, scaling). - Design: Provide UX examples for admin tools that surface Kubernetes health and logs in a WordPress-friendly way. - Documentation: Expand HelpHub/DevHub with modern deployment patterns including containers and clusters. - Photos / TV / Polyglots / Accessibility / Meta / CLI / Hosting / Tide / Openverse / Themes / Plugins: - Incorporate Kubernetes and container-aware guidance where relevant (e.g., plugin file write assumptions, external storage, cron behavior, health endpoints). #### The WPCC - Sponsor experiments that document “WordPress on Kubernetes” reference architectures for small and medium orgs. - Fund short-term maintainer and documentation sprints focused on deployment reliability. - Pilot microgrants for plugins that remove common Kubernetes friction (config, logging, health checks). ### FAIR - Clarify what parts of tools like Displace are self-hostable and what require external services. - Encourage transparent pricing and governance for infra abstractions that WordPress projects may depend on. - Promote templates (charters, agreements) for engagements between hosts, tool vendors, and open-source communities. ## 🧪 Hypotheses - H1: PHP teams using a Compose-to-Kubernetes abstraction can reach stable production deployments significantly faster than teams starting from raw Kubernetes. - H2: Framing Kubernetes concepts in Docker Compose terms improves comprehension and retention for PHP developers. - H3: PHP teams that adopt Displace-like tools will spend more engineering time on features and less on infra debugging. - H4: WordPress deployments on Kubernetes using structured patterns (e.g., via Displace) will show fewer security misconfigurations than ad-hoc Docker Compose in production. ### 📊 Methodology - Compare deployment timelines and incident rates across teams: - Control: teams learning Kubernetes directly. - Treatment: teams using Displace or a similar abstraction. - Use surveys and comprehension tests to measure how well developers understand core Kubernetes primitives after learning through Compose analogies. - Analyze incident data and postmortems for production Docker Compose vs. structured Kubernetes deployments for PHP/WordPress. ### ❓ Questions - How far can abstractions like Displace go before teams must learn Kubernetes internals? - What are the most common misconfigurations for PHP apps on Kubernetes today? - How should PHP and WordPress communities document “good enough” production patterns that balance safety and simplicity? - Could these patterns be standardized as official examples or blueprints? ### 🔮 Future Research - Systematic case studies of PHP/WordPress migrations from VMs or Compose to Kubernetes. - Tooling that combines infrastructure translation (Compose → Kubernetes) with best-practice security hardening for PHP workloads. - Metrics frameworks for “time-to-safe-production” as a first-class outcome in DevOps. ### 💡 Implications - Practice: Teams can adopt Kubernetes without a dedicated platform team if tooling bridges local and production concepts well. - Policy: Organizations may formalize “approved abstraction layers” that allow innovation while keeping infra secure. - Security: Moving away from hand-rolled scripts and ad-hoc Compose in production should reduce certain classes of vulnerabilities. - Education: Training for PHP developers can shift from generic Kubernetes theory to concept-mapping and applied patterns. - Funding: There’s room to fund infra tools that focus on specific language ecosystems like PHP, rather than only generic platforms. ### 🧠 Learning Styles Assessment - Reading level estimate: Approx. upper high school / early college (Flesch-Kincaid ~11–13) given technical vocabulary but short, clear sentences. #### 👀 Visual learners - Present: Mostly text; conceptual contrasts (local vs. production) are described, not drawn. - Improve: Add diagrams of Docker Compose vs. Kubernetes resource mapping, sample architecture for the Laravel app, and before/after deployment flows. #### 🔊 Aural learners - Present: None explicitly. - Improve: Short audio summary of the article and recorded versions of the PHP Tek talks. #### 🗣️ Verbal learners - Present: Clear definitions-by-example of concepts (e.g., mapping Services and volumes). - Improve: More analogies and a small glossary comparing Compose and Kubernetes terms. #### 🧩 Kinesthetic learners - Present: High-level description of using Displace, but no step-by-step tutorial in the article. - Improve: Hands-on labs: “Start from this docker-compose.yml; deploy to Kubernetes using these commands.” #### 🧠 Logical learners - Present: Cause-and-effect reasoning about why teams struggle and how a translation layer helps. - Improve: Tables mapping Compose fields to Kubernetes equivalents, and decision trees for when to customize underlying resources. #### 🧑‍🤝‍🧑 Social learners - Present: Invitation to meet at PHP Tek and follow along on social platforms. - Improve: Guided group workshops and Q&A sessions for teams doing their first Kubernetes deployment. #### 🧘‍♀️ Solitary learners - Present: Article is well-suited to solo reading and reflection on team infra pain points. - Improve: Self-check questions and small exercises (“Map your current Compose file to Kubernetes primitives”). #### 🌿 Naturalistic learners - Present: No explicit environmental focus. - Improve: Discussion of resource efficiency, scaling, and potential sustainability benefits of better infra utilization. ### 📊 Accessibility Assessment #### Screen reader semantics - Present: Blog posts typically have headings and paragraphs; likely acceptable basic structure. - Improve: Ensure heading hierarchy is logical; add descriptive alt text for any future diagrams. #### Keyboard navigation - Present: Standard blog layouts tend to be navigable but specifics are unknown. - Improve: Confirm visible focus states and a “skip to content” link. #### Contrast and readability - Present: Unknown; many blogs are adequate but vary. - Improve: Verify contrast ratios; maintain generous line spacing and font sizes. #### Text resizing and reflow - Present: Likely responsive design. - Improve: Confirm content reflows without horizontal scrolling at 200% zoom and respect motion preferences. #### Media and captions - Present: This article is text-only. - Improve: Add captions/transcripts for any future videos or talks embedded. #### Forms and interactions - Present: Minimal interaction beyond reading. - Improve: If sign-up or contact forms exist, ensure labels, clear errors, and large clickable targets. #### Standards reference - Map any gaps to WCAG 2.2 AA (contrast, keyboard operability, reflow, focus visibility, etc.). ### 🌍 DEIB Assessment #### Cultural breadth - Present: Focused on PHP and Kubernetes; not region-specific. - Improve: Include examples from different team sizes, regions, and hosting environments. #### Inclusive language - Present: Neutral and professional; avoids stereotypes. - Improve: Add more plain-language explanations for readers from non-DevOps backgrounds. #### Neurodiversity support - Present: Short, focused sections and clear narrative. - Improve: More subheadings, bullets summarizing key points, and consistent patterns for mapping concepts. #### Representation - Present: Single-author, experience-driven narrative; no visuals of people. - Improve: When adding imagery, use diverse representation and alt text that notes it. #### Psychological safety - Present: Encouraging tone; normalizes struggling with infra complexity. - Improve: Explicitly state that production shortcuts are common but solvable; invite questions without judgment. ### ✅ Logical Validity #### Strong reasoning - Inductive reasoning: From repeated observation of teams struggling with Kubernetes, the author infers a systemic problem and proposes a tool to address it. This is reasonable because he cites decades of experience and concrete examples. - Causal reasoning: Asserts that Kubernetes complexity causes delays and risky shortcuts; aligns with common industry reports. #### Fallacies - Possible survivorship/experience bias: Most evidence is anecdotal from the author’s own consulting and jobs. This doesn’t invalidate the claims but could be strengthened with broader data. #### Tone of voice - Tone: Pragmatic, empathetic, solution-oriented. The article balances authority (“I’ve been deploying… for twenty years”) with humility and practical help. ### 🛡️ DARVO Analysis - Deny: No denial or minimization of problems; instead, it highlights them. - Attack: No attacks on individuals or groups; criticism is aimed at complexity and tooling gaps. - Reverse victim/offender: None; the piece doesn’t frame the author or tool as a victim, but as a helper for teams struggling with infra. ## 🎯 Conclusion The article argues that the current path from Docker Compose to production Kubernetes is too slow and painful for many PHP teams. Displace steps in as a translation layer and deployment helper, leveraging familiar concepts to generate correct Kubernetes resources and get applications into production much faster. For readers, the next steps are to examine where infra work is blocking product progress and consider tools and patterns—like Displace or similar approaches—that narrow that gap. ## 🧱 Refactor Appendix (append after 🎯 Conclusion) ### 📚 Literature Split Pad - Purpose: Stage Konik CEE units that become per-source Literature notes. - Split level: **H3**. - Include verbatim quotes under 25 words and a [view highlight] link. ### [H1] Compose-to-Kubernetes bridge speeds PHP adoption > [!quote] [Why I built a Kubernetes deployment tool](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) by [[Eric Mann]] via [[Eric Mann's Blog]]. Published 2026-01-06. Accessed 2026-01-07. > “The gap between docker-compose up and production Kubernetes shouldn’t require a platform engineering team.” Two lines: Displace is proposed as a bridge from familiar Docker Compose workflows to production Kubernetes. Useful when evaluating abstractions for PHP/WordPress infra. [view highlight](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) #xref #articleseed ID:rw_[MISSING] ### [H2] PHP teams need mapping, not more Kubernetes > [!quote] [Why I built a Kubernetes deployment tool](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) > “PHP developers don’t need another 40-hour Kubernetes course. They need someone to show them the translation layer.” Two lines: Shifts education focus from raw Kubernetes depth to concept mapping from Docker Compose. Guides curriculum and tooling design for PHP infra. [view highlight](https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/) #xref ID:rw_[MISSING] --- ### 🔖 Atomic Split Pad (Zettel Candidates) - Purpose: Promote reusable claims into Atomic notes. - Split level: **H4**. - Each item: one idea, present tense, specific, testable. #### [Z1] Compose-to-Kubernetes translation accelerates deployments - When PHP teams keep thinking in Compose concepts but deploy to Kubernetes via a translation tool, time-to-production shrinks. - Links: [[Kubernetes-Adoption]] [[PHP-Infrastructure]] #### [Z2] PHP infra education benefits from concept mappings - Teaching Kubernetes as a mapping from Docker Compose primitives improves approachability for PHP developers. - Links: [[Developer-Education]] [[Containers-and-Orchestration]] --- ### ✏️ Fleeting Queue (Extract by Selection) - Purpose: Capture quick actions or sparks for Fleeting notes. - Extraction: **Select one line** → “Refactor: Extract selection to new note (content only).” - Keep each line short and self-contained. - [F1] Draft a WordPress-on-Kubernetes reference using Compose-to-Kubernetes mapping—https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/ #fleeting #inbox - [F2] Design a workshop showing Displace-style workflows for Laravel and WordPress teams—https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/ #fleeting #inbox - [F3] Compare incident rates between Docker-Compose-in-production vs Kubernetes with a translation layer—https://eric.mann.blog/why-i-built-a-kubernetes-deployment-tool/ #fleeting #inbox --- ## 🧰 Template Library (paste into Note Refactor → Refactored Note Template) ### 📝 Fleeting — Refactored Note Template (Konik-ready) --- type: fleeting status: inbox created: {{date:YYYY-MM-DD}} {{time:HH:mm}} process_by: {{date:YYYY-MM-DD}} # review within 24–48 hrs source_title: [MISSING] source_link: author: [MISSING] source_type: article|paper|video|podcast|thread reading_stage: inspectional|analytical|syntopical project: tags: #fleeting #inbox --- # 📝 Fleeting Note — {{title}} ## 🧠 One-liner (my words) - State the single idea in one short sentence. ## 🧭 Context & cue - Where did this arise? Page/timecode/speaker. - Trigger: quote, data point, claim, or question. ## 🧪 Adler checks (quick) - What is this about as a whole? - What is said in detail, and how? - Is it true? Evidence for or against? - So what? Impact or next move. ## 🔎 Bias & reliability snapshot - Possible bias or framing? - What evidence would change my view? ## 🧩 Konik bridge - Draft a claim header for promotion. ### [H1] 5–10-word present-tense claim > [!quote] [{{source_title}}]({{source_link}}) by [[{{author}}]]. Accessed {{date:YYYY-MM-DD}}. > “Short quote under ~25 words.” One line on why this matters. [view highlight]({{source_link}}) #xref ID:rw_[MISSING] ## 🧰 Next moves (pick 1–2) - [ ] Promote to *Literature* with citation. - [ ] Draft *Atomic* claim from [H1]. - [ ] Park as testable question. ## ✅ Processing checklist - [ ] Rewrote in my words. - [ ] Decided: trash | keep | convert. - [ ] Linked to at least one related note. - [ ] Tagged and moved out of inbox. --- ### 📚 Literature — Refactored Note Template (Konik-ready) --- type: literature status: draft created: {{date:YYYY-MM-DD}} {{time:HH:mm}} adler_level: inspectional|analytical|syntopical reading_stage: inspectional|analytical|syntopical source_title: [MISSING] author: [MISSING] year: publisher_or_journal: edition_or_volume: doi: url: accessed: {{date:YYYY-MM-DD}} citekey: project: tags: #literature #reading --- # 📚 Literature Note — {{title}} ## 🧰 Action Inbox - [H1] Short action — context/{{url}} #articleseed - [H2] Short action — context/{{url}} #xref - [H3] Short action — context/{{url}} #share ## 🧭 Bib Capsule - Title, author, year, venue, and link. - One-line scope: what the work attempts. ## 🧠 Author’s Thesis (their words) - Core claim briefly. Include page/timecode. ## 🧩 Key Arguments - Argument A — method/evidence — page/time. - Argument B — method/evidence — page/time. - Argument C — method/evidence — page/time. ## 🧪 Evaluation (Adler) - What is this about as a whole? - How is it argued? Fairly and clearly? - Is it true or plausible? Why? - So what? Practical or theoretical impact. ## 🗒️ Notes (Konik CEE units) ### [H1] 5–10-word present-tense claim > [!quote] [{{source_title}}]({{url}}) by [[{{author}}]] via [[{{publisher_or_journal}}]]. Published {{year}}. Accessed {{accessed}}. > “Verbatim highlight under ~25 words.” Two lines: context and use. Link to data if relevant. [view highlight]({{url}}#H1) #xref #articleseed ID:rw_[MISSING] ### [H2] 5–10-word present-tense claim > [!quote] [{{source_title}}]({{url}}) by [[{{author}}]] via [[{{publisher_or_journal}}]]. Published {{year}}. Accessed {{accessed}}. > “Verbatim highlight under ~25 words.” Two lines: context and use. [view highlight]({{url}}#H2) #xref ID:rw_[MISSING] ## 🔖 Zettel Candidates #### [Z1] 5–10-word present-tense claim - One-line context and page/time. #### [Z2] 5–10-word present-tense claim - One-line context and page/time. ## 🏷️ Tag Coverage #articleseed: 0 • #xref: 0 • #share: 0 • #bmf: 0 • #addendum: 0 ## ✅ Processing Checklist - [ ] Thesis captured in my words. - [ ] 1–3 Zettel candidates drafted. - [ ] Action Inbox pruned to high-signal items. - [ ] Cross-links added and filed. --- ### 🔖 Atomic (Zettel) — Refactored Note Template (Konik-ready) --- type: atomic id: {{date:YYYYMMDDHHmm}}-{{title}} status: evergreen created: {{date:YYYY-MM-DD}} {{time:HH:mm}} origin: reading|thinking|experiment proof_state: conjecture|working|supported|refuted source_literature: [[Source-Literature-Note]] citekey: project: tags: #zettel #idea --- # 🔖 {{title}} <!-- 5–10 words, present tense, specific --> ## 🧠 Claim - One idea only. Clear and testable. ## 🧾 Evidence & Pointers (Konik) - [H#] from [[{{source_literature}}]] — page/time — brief rationale. - ID:rw_[MISSING] — link to highlight or dataset. > [!quote] Evidence snippet (≤25 words) if essential. > Cite page/time. Keep it minimal. ## 🔍 Scope & Conditions - When this holds. Boundaries and exceptions. ## 🔗 Links - Broader: [[Parent-Concept]] - Narrower: [[Specific-Case]] - Related: [[Parallel-Idea]] ## 🧪 Tests / Falsifiers - One check that could disconfirm the claim. - Simple study or observation plan. ## 🧰 Implications - Practice, policy, or design moves in one line each. ## 🔙 Backlinks - From: [[{{source_literature}}]] • Context line. ## ✅ Maintenance - [ ] Links in and out. - [ ] Title still precise? - [ ] Proof state updated. ## Highlights - Both talks exist because I’ve learned that PHP developers don’t need another 40-hour Kubernetes course. They need someone to show them the translation layer. Docker Compose concepts map directly to Kubernetes primitives. Services are still Services. Volumes become PersistentVolumeClaims. The mental model transfers, if someone shows you how. ([View Highlight](https://read.readwise.io/read/01keda54cdcyawm3ky17dqrvcs)) - Tags: 👻 ai highlighted ## New Highlights added 2026-02-28 at 7:48 PM - Both talks exist because I’ve learned that PHP developers don’t need another 40-hour Kubernetes course. They need someone to show them the translation layer. Docker Compose concepts map directly to Kubernetes primitives. Services are still Services. Volumes become PersistentVolumeClaims. The mental model transfers, if someone shows you how. ([View Highlight](https://read.readwise.io/read/01keda54cdcyawm3ky17dqrvcs)) - Tags: 👻 ai highlighted