<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Chiqo Rifky Saputra</title>
    <description>The latest articles on Forem by Chiqo Rifky Saputra (@chiqors).</description>
    <link>https://forem.com/chiqors</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F513439%2Fb315ef00-78fa-48e8-a322-fa0d7a8865f0.jpeg</url>
      <title>Forem: Chiqo Rifky Saputra</title>
      <link>https://forem.com/chiqors</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chiqors"/>
    <language>en</language>
    <item>
      <title>How I Built a Federated FHIR Ecosystem for Indonesia’s Healthcare Network</title>
      <dc:creator>Chiqo Rifky Saputra</dc:creator>
      <pubDate>Tue, 28 Oct 2025 11:38:31 +0000</pubDate>
      <link>https://forem.com/chiqors/how-i-built-a-federated-fhir-ecosystem-for-indonesias-healthcare-network-4m74</link>
      <guid>https://forem.com/chiqors/how-i-built-a-federated-fhir-ecosystem-for-indonesias-healthcare-network-4m74</guid>
      <description>&lt;p&gt;When we talk about &lt;strong&gt;digital healthcare in Indonesia&lt;/strong&gt;, one of the biggest challenges is &lt;strong&gt;data fragmentation&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Each district or hospital often runs its own system — making it difficult to share clinical data securely and consistently across regions.&lt;/p&gt;

&lt;p&gt;In this post, I’ll share:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;🧩 The background and goals of the project
&lt;/li&gt;
&lt;li&gt;🏗️ The architecture and technology choices we made
&lt;/li&gt;
&lt;li&gt;⚙️ The challenges we faced around scale, cost, and security
&lt;/li&gt;
&lt;li&gt;🌐 Our future direction toward a hybrid on-premise model&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  I. Introduction
&lt;/h2&gt;

&lt;p&gt;In 2024, the &lt;strong&gt;Oxford University Clinical Research Unit (OUCRU)&lt;/strong&gt; and the &lt;strong&gt;Indonesian Ministry of Health&lt;/strong&gt; launched a national initiative to improve healthcare data interoperability using &lt;strong&gt;FHIR (Fast Healthcare Interoperability Resources)&lt;/strong&gt; standards.&lt;/p&gt;

&lt;p&gt;I joined this project as a &lt;strong&gt;DevOps Engineer&lt;/strong&gt;, responsible for designing and maintaining the entire infrastructure.&lt;br&gt;&lt;br&gt;
My main mission: to build a &lt;strong&gt;federated ecosystem&lt;/strong&gt; where each district could manage its own FHIR data — while still communicating seamlessly with others across the national network.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 To enable healthcare data to move where it’s needed, when it’s needed — safely, efficiently, and transparently.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Goal&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Systems across districts must exchange health data seamlessly using FHIR standards.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scalability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The architecture should handle new districts as the network grows.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Protect patient data under Indonesia’s health data regulations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost Efficiency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Optimize Google Cloud resources for a non-profit budget.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Automation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Everything must be reproducible, version-controlled, and automated (IaC, CI/CD).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  II. System Overview
&lt;/h2&gt;

&lt;p&gt;At a high level, the ecosystem consists of &lt;strong&gt;multiple district FHIR servers&lt;/strong&gt;, each managed independently by their respective local governments.&lt;br&gt;
These servers are connected through a &lt;strong&gt;peer-to-peer FHIR federation&lt;/strong&gt;, where every district’s &lt;strong&gt;FHIR Gateway&lt;/strong&gt; can securely request and exchange data with other districts when needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧭 Architecture at a Glance
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3c2nat8pooatmlosmt7t.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3c2nat8pooatmlosmt7t.gif" alt="High-Level Architecture Diagram" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each district deploys a &lt;strong&gt;FHIR Gateway&lt;/strong&gt; that serves as both a &lt;strong&gt;secure API proxy&lt;/strong&gt; and an &lt;strong&gt;access control layer&lt;/strong&gt; for its internal FHIR server.&lt;br&gt;
Requests between districts occur &lt;strong&gt;directly over HTTPS&lt;/strong&gt;, with each gateway responsible for authentication, authorization, and audit logging of all inbound and outbound data exchanges.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FHIR Gateway:&lt;/strong&gt; The communication core — validates all requests, enforces access control, and ensures compliance with inter-district data policies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peer-to-Peer Federation:&lt;/strong&gt; Gateways communicate directly across clouds or environments (e.g., Google Cloud, AWS, on-premise), enabling interoperability without centralized dependency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Sovereignty:&lt;/strong&gt; Each district maintains full control of its infrastructure, credentials, and FHIR data — ensuring local ownership and compliance with national regulations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We began our rollout on &lt;strong&gt;Google Cloud Platform (GCP)&lt;/strong&gt; for its scalability, tooling, and healthcare compliance readiness.&lt;br&gt;
The availability of a &lt;strong&gt;Jakarta region&lt;/strong&gt; ensures that all workloads and patient data remain &lt;strong&gt;within Indonesia’s borders&lt;/strong&gt;, fully aligned with &lt;strong&gt;national health data protection requirements&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This foundation allowed us to &lt;strong&gt;prototype rapidly&lt;/strong&gt; while staying compliant with &lt;strong&gt;data residency and sovereignty laws&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Cloud-Native Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run&lt;/strong&gt; and &lt;strong&gt;GKE&lt;/strong&gt; — containerized microservices for FHIR Gateway and supporting APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud SQL&lt;/strong&gt; &amp;amp; &lt;strong&gt;BigQuery&lt;/strong&gt; — structured storage and analytics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Storage&lt;/strong&gt; — object and unstructured data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM + VPC Service Controls&lt;/strong&gt; — fine-grained security and network isolation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compute Engine&lt;/strong&gt; — for legacy or specialized workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We follow &lt;strong&gt;12-factor app principles&lt;/strong&gt; to keep services &lt;strong&gt;modular, portable, and cloud-agnostic&lt;/strong&gt;, making it easy to deploy on &lt;strong&gt;AWS&lt;/strong&gt; or &lt;strong&gt;on-prem Kubernetes&lt;/strong&gt; as other districts join the federation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🧩 &lt;em&gt;In the next part of this series, I’ll share how our open-source tools and public services power this peer-to-peer FHIR federation layer.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  III. Challenges Along the Way
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu92o8z1mnvclih2r6t8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu92o8z1mnvclih2r6t8.png" alt="Development Workflow / Whiteboard Sketch" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building a &lt;strong&gt;federated FHIR ecosystem&lt;/strong&gt; from the ground up was both thrilling and overwhelming.&lt;/p&gt;

&lt;p&gt;We were effectively laying down the &lt;strong&gt;first foundation of its kind&lt;/strong&gt; — connecting healthcare districts that had never interoperated at this scale before.&lt;/p&gt;

&lt;h3&gt;
  
  
  Some key challenges we faced
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🧩 &lt;strong&gt;Data governance:&lt;/strong&gt; Each district had its own compliance rules and data sovereignty policies that had to be respected&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Tool maturity:&lt;/strong&gt; There was no ready-made “federated FHIR” blueprint — we had to design our own gateway patterns, auth flows, and governance models&lt;/li&gt;
&lt;li&gt;🔐 &lt;strong&gt;System complexity:&lt;/strong&gt; Every networking and security configuration had long-reaching effects across environments&lt;/li&gt;
&lt;li&gt;⏱️ &lt;strong&gt;Time pressure:&lt;/strong&gt; Balancing design exploration with production deadlines, while keeping uptime and patient data integrity intact&lt;/li&gt;
&lt;li&gt;💰 &lt;strong&gt;Cost awareness:&lt;/strong&gt; Cloud resources, network egress, and FHIR store usage can scale quickly — we had to constantly review and right-size deployments to stay within budget&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To manage all of this, we adopted a &lt;strong&gt;lightweight agile workflow&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used &lt;strong&gt;GitHub Projects&lt;/strong&gt; to organize sprints, issues, and milestones — giving full visibility across developers, DevOps, and domain experts&lt;/li&gt;
&lt;li&gt;Practiced &lt;strong&gt;continuous iteration&lt;/strong&gt; — shipping small, testable increments instead of massive releases&lt;/li&gt;
&lt;li&gt;Embedded &lt;strong&gt;infra-as-code and CI/CD&lt;/strong&gt; from day one, so every change was reproducible and easy to roll back&lt;/li&gt;
&lt;li&gt;Regularly reviewed &lt;strong&gt;cloud spend and utilization dashboards&lt;/strong&gt; to catch early cost spikes before they became problems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It wasn’t always smooth — there were plenty of late-night debugging sessions and architecture pivots — but the result was a &lt;strong&gt;production-ready, scalable federation&lt;/strong&gt; that could truly transform how districts share health data securely and efficiently.&lt;/p&gt;




&lt;h2&gt;
  
  
  IV. How Federation Works
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdnegvlx0zt0vy61tz3tl.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdnegvlx0zt0vy61tz3tl.gif" alt="Federation Request Flow Diagram" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the core of the federated ecosystem is &lt;strong&gt;peer-to-peer interoperability&lt;/strong&gt; between districts — allowing each region to exchange patient data securely, without relying on a central hub.&lt;/p&gt;

&lt;p&gt;When a healthcare worker in &lt;strong&gt;District A&lt;/strong&gt; initiates a completeness check (for example, to retrieve a patient’s vaccination history stored in &lt;strong&gt;District B&lt;/strong&gt;), the &lt;strong&gt;FHIR Search &amp;amp; Sync service&lt;/strong&gt; interacts with the &lt;strong&gt;local FHIR Gateway&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If data is missing, the gateway issues a &lt;strong&gt;federated HTTPS request&lt;/strong&gt; directly to the &lt;strong&gt;FHIR Gateway of District B&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;District B’s gateway validates the incoming request, fetches the relevant records from its internal services or FHIR API, and returns the data securely to District A.&lt;/p&gt;

&lt;p&gt;Finally, District A’s system updates its &lt;strong&gt;FHIR Store&lt;/strong&gt; through the &lt;strong&gt;Healthcare API&lt;/strong&gt; to complete the record.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key design principles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🧩 &lt;strong&gt;Federated &amp;amp; autonomous:&lt;/strong&gt; Each district operates independently — managing its own FHIR Gateway, credentials, and data policies under local government control&lt;/li&gt;
&lt;li&gt;🔁 &lt;strong&gt;Gateway-to-Gateway communication:&lt;/strong&gt; Districts exchange data directly using &lt;strong&gt;FHIR REST APIs over HTTPS&lt;/strong&gt;, ensuring interoperability without central dependency&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;Controlled trust model:&lt;/strong&gt; Authentication and authorization are managed through &lt;strong&gt;gateway-specific credentials&lt;/strong&gt; (e.g., JWT tokens or mutual TLS) issued and rotated by each local authority&lt;/li&gt;
&lt;li&gt;📜 &lt;strong&gt;Traceable &amp;amp; auditable:&lt;/strong&gt; Every completeness request and response is logged for audit, compliance, and monitoring&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Future-ready evolution:&lt;/strong&gt; The architecture is designed to later integrate &lt;strong&gt;Pub/Sub or Kafka&lt;/strong&gt; for event-driven federation, providing asynchronous messaging, queuing, and resilience at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This &lt;strong&gt;peer-to-peer FHIR federation&lt;/strong&gt; enables secure collaboration between semi-autonomous regions — balancing &lt;strong&gt;local data sovereignty&lt;/strong&gt; with &lt;strong&gt;national interoperability&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  V. Automation and DevOps Practices
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwvd4hjtgowjsz85lrgw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwvd4hjtgowjsz85lrgw.gif" alt="CI/CD Pipeline Flow Diagram" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Automation was a &lt;strong&gt;non-negotiable&lt;/strong&gt; from day one.&lt;/p&gt;

&lt;p&gt;As the &lt;strong&gt;sole infrastructure engineer&lt;/strong&gt;, I needed to ensure that our growing number of IT developers — working on various services, APIs, and data flows — could confidently build and deploy without creating operational bottlenecks.&lt;/p&gt;

&lt;p&gt;That meant building a system where &lt;strong&gt;every environment could be rebuilt, tested, and deployed automatically&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We standardized on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Terraform&lt;/strong&gt; for provisioning and managing infrastructure on GCP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; for centralized collaboration and version control&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; for CI/CD pipelines handling builds, tests, and infrastructure updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Almost all our deployment services are &lt;strong&gt;containerized&lt;/strong&gt; and follow &lt;strong&gt;Twelve-Factor App principles&lt;/strong&gt;, ensuring consistency across environments — whether deployed on &lt;strong&gt;Cloud Run&lt;/strong&gt;, &lt;strong&gt;Compute Engine&lt;/strong&gt;, or our future &lt;strong&gt;on-premise Kubernetes&lt;/strong&gt; clusters.&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚙️ &lt;strong&gt;Our Automation Highlights&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure as Code:&lt;/strong&gt; Modular Terraform stacks for networking, monitoring, and FHIR environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD Pipelines:&lt;/strong&gt; Automated image builds, vulnerability scans (via &lt;em&gt;Trivy&lt;/em&gt;), and Terraform plan/apply workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containerization:&lt;/strong&gt; Each microservice packaged in Docker for portable and reproducible deployments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version Control &amp;amp; Review:&lt;/strong&gt; All changes flow through GitHub PRs with automated linting and review checks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets Management:&lt;/strong&gt; Managed via Google Secret Manager with short-lived tokens and auto-rotation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Health Checks &amp;amp; Verification:&lt;/strong&gt; Every deployment validated before promotion to production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These practices made our ecosystem &lt;strong&gt;repeatable, auditable, and resilient&lt;/strong&gt; — essential for healthcare-grade infrastructure where reliability and traceability matter as much as speed.&lt;/p&gt;




&lt;h2&gt;
  
  
  VI. Cost Optimization &amp;amp; Observability
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0h4iq9ybhdvp3li8tezw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0h4iq9ybhdvp3li8tezw.png" alt="Cost Breakdown or Monitoring Dashboard Screenshot" width="622" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Operating on a &lt;strong&gt;non-profit budget&lt;/strong&gt; meant we had to be creative and efficient.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚙️ &lt;strong&gt;Right-sized compute:&lt;/strong&gt; Cloud Run autoscaling &amp;amp; preemptible VMs for batch jobs
&lt;/li&gt;
&lt;li&gt;💾 &lt;strong&gt;BigQuery cost controls:&lt;/strong&gt; Partitioned tables, caching, and dry-run queries
&lt;/li&gt;
&lt;li&gt;🧹 &lt;strong&gt;Storage lifecycle:&lt;/strong&gt; Automatically moving data to Nearline after 30 days
&lt;/li&gt;
&lt;li&gt;💰 &lt;strong&gt;Budget alerts:&lt;/strong&gt; Email notifications for spending thresholds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allowed us to maintain great performance while keeping costs sustainable.&lt;/p&gt;




&lt;h2&gt;
  
  
  VII. Future Direction: Hybrid &amp;amp; On-Premise
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7g96ggd2vwndg7cp4ddu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7g96ggd2vwndg7cp4ddu.png" alt="Federated FHIR networking" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As more districts join the federation, &lt;strong&gt;regulatory and cost considerations&lt;/strong&gt; push us toward a &lt;strong&gt;hybrid model&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Our next milestones:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Move sensitive FHIR data &lt;strong&gt;on-premise&lt;/strong&gt;, while keeping analytics and orchestration in the cloud
&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Kubernetes (GKE / K3s)&lt;/strong&gt; and &lt;strong&gt;Docker&lt;/strong&gt; for consistent deployment
&lt;/li&gt;
&lt;li&gt;Implement &lt;strong&gt;secure tunnels (Cloud VPN / Interconnect)&lt;/strong&gt; for remote district connections
&lt;/li&gt;
&lt;li&gt;Add &lt;strong&gt;local caching and sync mechanisms&lt;/strong&gt; for regions with unstable internet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal: a flexible, federated system that can operate anywhere — from Jakarta to the most rural clinics.&lt;/p&gt;




&lt;h2&gt;
  
  
  VIII. Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;This project is still evolving, but it already marks a major step forward in Indonesia’s healthcare digital transformation.&lt;br&gt;&lt;br&gt;
We’re proving that &lt;strong&gt;federated, standards-based interoperability&lt;/strong&gt; isn’t just a theory — it’s achievable, even under real-world constraints. Kudos to IT Team for collaborating and going hard on this one! You could check out more about &lt;a class="mentioned-user" href="https://dev.to/budiwidhiyanto"&gt;@budiwidhiyanto&lt;/a&gt; as the fullstack engineer in this work.&lt;/p&gt;

&lt;p&gt;If you’re working on healthcare interoperability, FHIR, or cloud-native DevOps in complex environments,&lt;br&gt;&lt;br&gt;
I’d love to connect and exchange ideas 👋&lt;/p&gt;

&lt;p&gt;📎 &lt;strong&gt;Connect with me:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/chiqors" rel="noopener noreferrer"&gt;LinkedIn @chiqors&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🧠 &lt;em&gt;Thanks for reading!&lt;/em&gt;&lt;br&gt;&lt;br&gt;
If this story resonates or you’re interested in FHIR, DevOps, or cloud architecture,&lt;br&gt;&lt;br&gt;
don’t forget to leave a ❤️ or follow — I’ll be posting part 2 soon!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>fhir</category>
      <category>healthcare</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Building Your First Cloud-Native Kubernetes Cluster: A Beginner's Journey with Talos Linux and Cilium</title>
      <dc:creator>Chiqo Rifky Saputra</dc:creator>
      <pubDate>Fri, 05 Sep 2025 15:30:10 +0000</pubDate>
      <link>https://forem.com/chiqors/building-your-first-cloud-native-kubernetes-cluster-a-beginners-journey-with-talos-linux-and-2i0o</link>
      <guid>https://forem.com/chiqors/building-your-first-cloud-native-kubernetes-cluster-a-beginners-journey-with-talos-linux-and-2i0o</guid>
      <description>&lt;p&gt;&lt;em&gt;Transform your single VPS into a production-ready Kubernetes powerhouse&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🎯 &lt;strong&gt;Who This Guide Is For&lt;/strong&gt;: This is a starter guide specifically designed for learners with &lt;strong&gt;one VPS or cloud server&lt;/strong&gt; for educational purposes. If you have multiple physical machines in a homelab setup, you'll need different configurations and networking approaches.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🙏 &lt;strong&gt;Inspiration &amp;amp; Credits&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before we dive into this exciting journey, I want to give proper credit to &lt;strong&gt;Mischa van den Burg&lt;/strong&gt; for his inspiring videos that motivated this comprehensive guide:&lt;/p&gt;

&lt;p&gt;🎯 &lt;a href="https://youtu.be/WfDwFvl5XBo?si=ohOJw5nfRB8UDtmF" rel="noopener noreferrer"&gt;"The Kubernetes Homelab That Prints Job Offers - 2025"&lt;/a&gt; - His insights about how Kubernetes creates incredible learning opportunities and reignites passion for cloud-native computing.&lt;/p&gt;

&lt;p&gt;🤔 &lt;a href="https://www.youtube.com/watch?v=cAD6QaJTVyw" rel="noopener noreferrer"&gt;"How To Learn Kubernetes in 2025"&lt;/a&gt; - Perfect for those still deciding whether it's worth learning Kubernetes despite its complexity. If you have the passion to learn cloud-native computing, this is a great starting point!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Why This Matters&lt;/strong&gt;: As Mischa demonstrates, building real-world Kubernetes projects isn't just about learning—it's about creating opportunities that can transform your career in DevOps and cloud engineering. Even with the complexity, the passion for cloud-native technology makes the journey worthwhile.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🌟 Introduction: Welcome to the Cloud-Native Revolution
&lt;/h2&gt;

&lt;p&gt;Imagine you're building a smart city. Traditional infrastructure is like having individual houses scattered everywhere—each with its own utilities, security systems, and maintenance crews. Cloud-native architecture, powered by Kubernetes, is like creating a modern apartment complex where everything is centralized, automated, and efficiently managed.&lt;/p&gt;

&lt;p&gt;Today, we're going to build your first Kubernetes cluster using two incredible technologies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Talos Linux&lt;/strong&gt;: Think of it as the ultimate apartment building manager—secure, automated, and never sleeps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cilium&lt;/strong&gt;: The smart networking system that connects everything with lightning speed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of this guide, you'll have a production-ready Kubernetes cluster running on a single VPS that can scale and adapt to your needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 Why Kubernetes? Understanding the "Why" Before the "How"
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkiezzevhwj3vxtpcxmrc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkiezzevhwj3vxtpcxmrc.jpg" alt="Comparison Image: Traditional restaurant vs modern food court" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Restaurant Analogy
&lt;/h3&gt;

&lt;p&gt;Imagine you own a restaurant. In the old days (traditional deployment), you had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One chef doing everything&lt;/li&gt;
&lt;li&gt;If the chef gets sick, the restaurant closes&lt;/li&gt;
&lt;li&gt;During rush hour, customers wait forever&lt;/li&gt;
&lt;li&gt;Scaling means hiring more chefs and buying more kitchens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Kubernetes, your restaurant becomes a smart food court:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multiple specialized stations&lt;/strong&gt; (containers) handle different tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic scaling&lt;/strong&gt;: More pizza stations appear during lunch rush&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-healing&lt;/strong&gt;: If one station breaks, another takes over instantly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource sharing&lt;/strong&gt;: All stations share the same utilities efficiently&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎯 &lt;strong&gt;Kubernetes Benefits&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Benefit&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🔄 Auto-Scaling&lt;/td&gt;
&lt;td&gt;Automatically adjusts resources&lt;/td&gt;
&lt;td&gt;📊 Efficiency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🛡️ Self-Healing&lt;/td&gt;
&lt;td&gt;Restarts failed containers&lt;/td&gt;
&lt;td&gt;🚀 Fast Recovery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📦 Portability&lt;/td&gt;
&lt;td&gt;Run anywhere consistently&lt;/td&gt;
&lt;td&gt;💰 Cost-Effective&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚀 Fast Deployment&lt;/td&gt;
&lt;td&gt;Deploy in seconds, not hours&lt;/td&gt;
&lt;td&gt;⚡ Speed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔧 Declarative&lt;/td&gt;
&lt;td&gt;Describe desired state&lt;/td&gt;
&lt;td&gt;🎯 Reliability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🌐 Service Discovery&lt;/td&gt;
&lt;td&gt;Apps find each other automatically&lt;/td&gt;
&lt;td&gt;🔗 Connectivity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Why Kubernetes is Essential for Modern Applications
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Your app can grow from 10 to 10,000 users seamlessly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt;: If something breaks, Kubernetes fixes it automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficiency&lt;/strong&gt;: Maximum resource utilization means lower costs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portability&lt;/strong&gt;: Run anywhere—cloud, on-premises, or hybrid&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Productivity&lt;/strong&gt;: Focus on code, not infrastructure&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🛡️ Enter Talos Linux: The Security-First Operating System
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl3uijzk6xxbbdpmq2eba.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl3uijzk6xxbbdpmq2eba.jpg" alt="Security Comparison: Medieval castle vs modern bank vault" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fortress Analogy
&lt;/h3&gt;

&lt;p&gt;Traditional Linux servers are like medieval castles with many doors, windows, and secret passages. Each entry point is a potential security risk. Talos Linux is like a modern bank vault:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single API entrance&lt;/strong&gt;: Only one way in, heavily guarded&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No SSH backdoors&lt;/strong&gt;: No secret passages for attackers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immutable&lt;/strong&gt;: The vault structure can't be modified from inside&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-updating&lt;/strong&gt;: Automatically upgrades its security systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🥊 &lt;strong&gt;Traditional Linux vs Talos Linux&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Traditional Linux&lt;/th&gt;
&lt;th&gt;Talos Linux&lt;/th&gt;
&lt;th&gt;Winner&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🚪 Access Method&lt;/td&gt;
&lt;td&gt;SSH Access&lt;/td&gt;
&lt;td&gt;🔐 API Only&lt;/td&gt;
&lt;td&gt;🛡️ Talos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🛠️ Shell Access&lt;/td&gt;
&lt;td&gt;Full Shell&lt;/td&gt;
&lt;td&gt;🚫 No Shell&lt;/td&gt;
&lt;td&gt;🛡️ Talos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📝 System State&lt;/td&gt;
&lt;td&gt;Mutable&lt;/td&gt;
&lt;td&gt;🔒 Immutable&lt;/td&gt;
&lt;td&gt;🛡️ Talos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔧 Updates&lt;/td&gt;
&lt;td&gt;Manual Updates&lt;/td&gt;
&lt;td&gt;🤖 Auto Updates&lt;/td&gt;
&lt;td&gt;🛡️ Talos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎯 Attack Surface&lt;/td&gt;
&lt;td&gt;Large&lt;/td&gt;
&lt;td&gt;🛡️ Minimal&lt;/td&gt;
&lt;td&gt;🛡️ Talos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔍 Debugging&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;API-based&lt;/td&gt;
&lt;td&gt;🤝 Depends&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Talos Linux Advantages
&lt;/h3&gt;

&lt;p&gt;✅ &lt;strong&gt;Zero Attack Surface&lt;/strong&gt;: No shell, no SSH, no unnecessary services&lt;br&gt;
✅ &lt;strong&gt;API-Driven&lt;/strong&gt;: Everything managed through secure APIs&lt;br&gt;
✅ &lt;strong&gt;Immutable&lt;/strong&gt;: OS can't be tampered with at runtime&lt;br&gt;
✅ &lt;strong&gt;Kubernetes-Native&lt;/strong&gt;: Built specifically for container workloads&lt;br&gt;
✅ &lt;strong&gt;Minimal Resources&lt;/strong&gt;: Tiny footprint means more resources for your apps&lt;/p&gt;
&lt;h2&gt;
  
  
  🕸️ Cilium: The Neural Network of Your Cluster
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs25nufwtnkhm2333iytm.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs25nufwtnkhm2333iytm.webp" alt="Network Comparison: Traffic lights vs AI traffic system" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  The Smart City Traffic System Analogy
&lt;/h3&gt;

&lt;p&gt;Traditional networking (kube-proxy) is like having traffic lights at every intersection—functional but slow. Cilium is like having an AI traffic management system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;eBPF Technology&lt;/strong&gt;: Like having sensors everywhere that make instant decisions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Bottlenecks&lt;/strong&gt;: Traffic flows smoothly without stopping at every light&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Built-in&lt;/strong&gt;: Automatically blocks suspicious vehicles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability&lt;/strong&gt;: Real-time monitoring of all traffic patterns&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  ⚡ &lt;strong&gt;Cilium eBPF Superpowers&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Performance&lt;/th&gt;
&lt;th&gt;Security&lt;/th&gt;
&lt;th&gt;Observability&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🚀 Kernel Speed&lt;/td&gt;
&lt;td&gt;🛡️ L3/L4/L7 Security&lt;/td&gt;
&lt;td&gt;🔍 Deep Observability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚡ Zero-Copy Networking&lt;/td&gt;
&lt;td&gt;🔒 Network Policies&lt;/td&gt;
&lt;td&gt;📊 Real-time Metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔄 Load Balancing&lt;/td&gt;
&lt;td&gt;🚫 DDoS Protection&lt;/td&gt;
&lt;td&gt;👁️ Traffic Visualization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📈 High Throughput&lt;/td&gt;
&lt;td&gt;🔐 Encryption&lt;/td&gt;
&lt;td&gt;🐛 Network Debugging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎯 Low Latency&lt;/td&gt;
&lt;td&gt;🛡️ Identity-based Security&lt;/td&gt;
&lt;td&gt;📈 Performance Analytics&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Why Cilium Over Traditional CNI
&lt;/h3&gt;

&lt;p&gt;🚀 &lt;strong&gt;Performance&lt;/strong&gt;: eBPF runs in kernel space—blazingly fast&lt;br&gt;
🔒 &lt;strong&gt;Security&lt;/strong&gt;: Network policies enforced at the kernel level&lt;br&gt;
📊 &lt;strong&gt;Observability&lt;/strong&gt;: Deep insights into network traffic&lt;br&gt;
🔄 &lt;strong&gt;Load Balancing&lt;/strong&gt;: Replaces kube-proxy with better performance&lt;/p&gt;
&lt;h2&gt;
  
  
  🏗️ Our Architecture: The Blueprint
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa0u5x4w8i3jod5yxpwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa0u5x4w8i3jod5yxpwb.png" alt="Architecture Diagram: Single-node Kubernetes cluster" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're building a single-node Kubernetes cluster that acts as both control plane and worker. Think of it as a studio apartment that's perfectly organized—compact but fully functional.&lt;/p&gt;
&lt;h2&gt;
  
  
  🏗️ &lt;strong&gt;Architecture Stack&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Features&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🌐 &lt;strong&gt;Infrastructure&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;VPS (Single Node)&lt;/td&gt;
&lt;td&gt;Your cloud server foundation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🛡️ &lt;strong&gt;Operating System&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Talos Linux (Immutable)&lt;/td&gt;
&lt;td&gt;• API-driven management&lt;br&gt;• Zero attack surface&lt;br&gt;• Automatic updates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚙️ &lt;strong&gt;Orchestration&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Kubernetes Control Plane + Worker&lt;/td&gt;
&lt;td&gt;• etcd (cluster database)&lt;br&gt;• API Server (cluster brain)&lt;br&gt;• Scheduler (workload placement)&lt;br&gt;• Kubelet (node agent)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🕸️ &lt;strong&gt;Networking&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Cilium CNI (eBPF)&lt;/td&gt;
&lt;td&gt;• Pod-to-pod communication&lt;br&gt;• Load balancing&lt;br&gt;• Network security policies&lt;br&gt;• Observability with Hubble&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📦 &lt;strong&gt;Applications&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Your Workloads&lt;/td&gt;
&lt;td&gt;• Web services&lt;br&gt;• Databases&lt;br&gt;• APIs&lt;br&gt;• Microservices&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  🛠️ Prerequisites: What You'll Need
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dvsbmt4f74x8vjzm13b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dvsbmt4f74x8vjzm13b.png" alt="Prerequisites Checklist" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before we start building, make sure you have:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📋 &lt;strong&gt;Checklist:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;A VPS&lt;/strong&gt; (DigitalOcean, Linode, Vultr, etc.) with at least 2GB RAM (this is for starter, you can upgrade later)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;💡 Recommended: Onidel VPS&lt;/strong&gt; - Perfect for Kubernetes learning with excellent netboot support for Talos Linux. Get &lt;strong&gt;25% off&lt;/strong&gt; your first invoice: &lt;a href="https://onidel.com/?referral=1569312" rel="noopener noreferrer"&gt;HERE&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Alternative providers:&lt;/em&gt; &lt;strong&gt;&lt;em&gt;DigitalOcean, Linode, Vultr&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;talosctl&lt;/strong&gt; installed on your local machine&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;kubectl&lt;/strong&gt; for Kubernetes management&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;helm&lt;/strong&gt; for package management&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Basic terminal knowledge&lt;/strong&gt; (don't worry, we'll guide you through everything!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Installing Required Tools
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install talosctl (macOS)&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;siderolabs/tap/talosctl

&lt;span class="c"&gt;# Install kubectl&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;kubectl

&lt;span class="c"&gt;# Install helm&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;helm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  🚀 Step-by-Step Setup Guide
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Phase 0: Preparing Your Configuration
&lt;/h3&gt;

&lt;p&gt;First, let's create our Talos configuration patch. This is like creating the blueprint for our smart building:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create &lt;code&gt;patch.yaml&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Talos Linux Configuration Patch for Single Node VPS with Cilium CNI&lt;/span&gt;
&lt;span class="c1"&gt;# This patch configures Talos for a single-node setup with custom networking and storage&lt;/span&gt;

&lt;span class="c1"&gt;# Machine-specific configuration&lt;/span&gt;
&lt;span class="na"&gt;machine&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;install&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;disk&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/dev/vda&lt;/span&gt; &lt;span class="c1"&gt;# Primary disk for VPS installation&lt;/span&gt;
  &lt;span class="na"&gt;network&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;interfaces&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;interface&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;eth0&lt;/span&gt; &lt;span class="c1"&gt;# Primary network interface on VPS&lt;/span&gt;

&lt;span class="c1"&gt;# Cluster configuration&lt;/span&gt;
&lt;span class="na"&gt;cluster&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Allow workloads to be scheduled on control plane (single node setup)&lt;/span&gt;
  &lt;span class="na"&gt;allowSchedulingOnControlPlanes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# Required for single node - control plane acts as worker too&lt;/span&gt;

  &lt;span class="na"&gt;network&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;cni&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;none&lt;/span&gt; &lt;span class="c1"&gt;# Disable default CNI - Cilium will provide networking&lt;/span&gt;
  &lt;span class="na"&gt;proxy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;disabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# Disable kube-proxy - Cilium will handle load balancing with eBPF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Phase 1: Talos Linux Installation
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiaagxe78duwjdl3um2s1.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiaagxe78duwjdl3um2s1.webp" alt="Talos Installation Process" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 0: Preparing Your VPS for Talos Installation
&lt;/h4&gt;

&lt;p&gt;Before generating the configuration, you need to ensure your VPS can boot Talos Linux. You have several options:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔧 &lt;strong&gt;Installation Methods:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1: ISO Mounting&lt;/strong&gt; (Most Common)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the Talos Linux ISO from:

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/siderolabs/talos/releases" rel="noopener noreferrer"&gt;GitHub releases&lt;/a&gt; (official releases)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://factory.talos.dev/" rel="noopener noreferrer"&gt;Talos Linux Factory&lt;/a&gt; (custom images for specific platforms)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Mount it through your VPS provider's control panel&lt;/li&gt;
&lt;li&gt;Boot from the mounted ISO&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Option 2: Netboot&lt;/strong&gt; (Provider-Specific)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some providers like &lt;strong&gt;&lt;a href="https://onidel.com/" rel="noopener noreferrer"&gt;Onidel VPS&lt;/a&gt;&lt;/strong&gt; offer netboot options&lt;/li&gt;
&lt;li&gt;Check your VPS control panel for "Custom OS" or "Netboot" features&lt;/li&gt;
&lt;li&gt;Configure it to boot Talos Linux directly from the network&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Option 3: Siderolabs Booter&lt;/strong&gt; (Advanced)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the &lt;a href="https://github.com/siderolabs/booter" rel="noopener noreferrer"&gt;siderolabs/booter&lt;/a&gt; tool for PXE boot&lt;/li&gt;
&lt;li&gt;Perfect for automated deployments or multiple machines&lt;/li&gt;
&lt;li&gt;Requires network boot capability on your VPS
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Example: Using siderolabs booter (if your VPS supports PXE)&lt;/span&gt;
docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;--network&lt;/span&gt; host &lt;span class="se"&gt;\&lt;/span&gt;
  ghcr.io/siderolabs/booter:v0.1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Important&lt;/strong&gt;: Make sure your VPS successfully boots into the Talos Linux installation environment before proceeding to the next step. You should see the Talos maintenance mode interface.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Step 1: Generate Talos Configuration
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Replace YOUR_VPS_IP with your actual VPS IP address&lt;/span&gt;
talosctl gen config talos-cilium-single-node-cluster https://YOUR_VPS_IP:6443 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--config-patch&lt;/span&gt; @patch.yaml &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output-dir&lt;/span&gt; ./out
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What's happening here?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We're creating configuration files for our cluster&lt;/li&gt;
&lt;li&gt;The patch file customizes the setup for our single-node scenario&lt;/li&gt;
&lt;li&gt;All generated files go into the &lt;code&gt;./out&lt;/code&gt; directory&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 2: Apply Configuration to Your VPS
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# This installs Talos Linux on your VPS&lt;/span&gt;
talosctl apply &lt;span class="nt"&gt;-f&lt;/span&gt; ./out/controlplane.yaml &lt;span class="nt"&gt;-n&lt;/span&gt; YOUR_VPS_IP &lt;span class="nt"&gt;-i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;⏰ Wait Time&lt;/strong&gt;: Your VPS will reboot and install Talos Linux. This takes about 5-10 minutes. Grab a coffee! ☕&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4vim3ne9xvmw9yrx9d6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4vim3ne9xvmw9yrx9d6.png" alt="Coffee Break" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3: Bootstrap the Kubernetes Cluster
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# This starts the Kubernetes control plane&lt;/span&gt;
talosctl bootstrap &lt;span class="nt"&gt;-n&lt;/span&gt; YOUR_VPS_IP &lt;span class="nt"&gt;-e&lt;/span&gt; YOUR_VPS_IP &lt;span class="nt"&gt;--talosconfig&lt;/span&gt; ./out/talosconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What's bootstrapping?&lt;/strong&gt;&lt;br&gt;
Think of it as turning on the power in your smart building. All the systems come online and start talking to each other.&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 4: Get Your Kubernetes Access Key
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# This downloads the key to access your cluster&lt;/span&gt;
talosctl &lt;span class="nt"&gt;-n&lt;/span&gt; YOUR_VPS_IP &lt;span class="nt"&gt;-e&lt;/span&gt; YOUR_VPS_IP &lt;span class="nt"&gt;--talosconfig&lt;/span&gt; ./out/talosconfig kubeconfig ./out/kubeconfig

&lt;span class="c"&gt;# Set up your local environment&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;KUBECONFIG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./out/kubeconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Step 5: Verify Kubernetes is Running
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You should see something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME                STATUS     ROLES           AGE   VERSION
talos-xxx-xxx       NotReady   control-plane   1m    v1.28.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Don't panic about "NotReady"!&lt;/strong&gt; This is normal—we haven't installed networking yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 2: Installing Cilium CNI
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkj70ig952wk83ejie0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkj70ig952wk83ejie0w.png" alt="Cilium Installation" width="761" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we're going to install the nervous system of our cluster—the networking layer.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Add Cilium Repository
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm repo add cilium https://helm.cilium.io/
helm repo update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 2: Install Cilium with Optimized Settings
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm &lt;span class="nb"&gt;install &lt;/span&gt;cilium cilium/cilium &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--version&lt;/span&gt; 1.18.1 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--namespace&lt;/span&gt; kube-system &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; ipam.mode&lt;span class="o"&gt;=&lt;/span&gt;kubernetes &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; securityContext.capabilities.ciliumAgent&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; securityContext.capabilities.cleanCiliumState&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; cgroup.autoMount.enabled&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; cgroup.hostRoot&lt;span class="o"&gt;=&lt;/span&gt;/sys/fs/cgroup &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; operator.replicas&lt;span class="o"&gt;=&lt;/span&gt;1 &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;kubeProxyReplacement&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; hubble.relay.enabled&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; hubble.ui.enabled&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;k8sServiceHost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YOUR_VPS_IP &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="nv"&gt;k8sServicePort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;6443
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔧 &lt;strong&gt;Understanding the Cilium Configuration Parameters&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Let me break down what each of these parameters does and why they're crucial for our Talos + Cilium setup:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;📦 Basic Installation Settings&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--version 1.18.1                    # Specific Cilium version for stability
--namespace kube-system              # Install in the system namespace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;🧠 IP Address Management (IPAM)&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--set ipam.mode=kubernetes           # Let Kubernetes handle IP allocation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why this matters&lt;/strong&gt;: Instead of Cilium managing IPs directly, we let Kubernetes do it. Think of it like letting the hotel concierge assign room numbers instead of guests picking their own!&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;🔐 Security Capabilities&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}"
--set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What these do&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NET_ADMIN&lt;/strong&gt;: Manage network interfaces and routing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SYS_ADMIN&lt;/strong&gt;: System administration tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NET_RAW&lt;/strong&gt;: Create raw sockets for network operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CHOWN/FOWNER&lt;/strong&gt;: Change file ownership&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KILL&lt;/strong&gt;: Terminate processes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPC_LOCK&lt;/strong&gt;: Lock memory pages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why so many permissions?&lt;/strong&gt; Cilium needs deep system access to manage networking at the kernel level. It's like giving a master key to the building superintendent!&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;📁 Control Groups (cgroups) Configuration&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--set cgroup.autoMount.enabled=false # Don't auto-mount cgroups
--set cgroup.hostRoot=/sys/fs/cgroup  # Use host's cgroup filesystem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Talos-specific&lt;/strong&gt;: Since Talos manages the system differently than traditional Linux, we need to tell Cilium exactly where to find the cgroup filesystem.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;⚖️ Single-Node Optimizations&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--set operator.replicas=1            # Only one operator instance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why only 1?&lt;/strong&gt; In a multi-node cluster, you'd want multiple operators for high availability. But with just one node, multiple operators would just waste resources!&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;🔄 Kube-Proxy Replacement&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--set kubeProxyReplacement=true      # Replace kube-proxy entirely
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Game changer&lt;/strong&gt;: This is where Cilium shines! Instead of using the traditional kube-proxy, Cilium handles all service load balancing with eBPF - much faster and more efficient!&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;👁️ Observability with Hubble&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--set hubble.relay.enabled=true      # Enable Hubble relay
--set hubble.ui.enabled=true         # Enable Hubble web UI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What's Hubble?&lt;/strong&gt; Think of it as a security camera system for your network traffic. You can see exactly what's talking to what, when, and why!&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;🌐 API Server Connection&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--set k8sServiceHost=YOUR_VPS_IP     # Your VPS public IP
--set k8sServicePort=6443            # Kubernetes API port
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Critical for single-node&lt;/strong&gt;: Tells Cilium how to reach the Kubernetes API server from outside the cluster.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 &lt;strong&gt;Pro Tip: Parameter Customization&lt;/strong&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  🎯 &lt;strong&gt;Key Parameters You Might Want to Adjust&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Customization Tip&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;k8sServiceHost&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;API server connection&lt;/td&gt;
&lt;td&gt;→ Your actual VPS IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator.replicas&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Operator instances&lt;/td&gt;
&lt;td&gt;→ Scale with node count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hubble.ui.enabled&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Web UI for monitoring&lt;/td&gt;
&lt;td&gt;→ Disable if not needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kubeProxyReplacement&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Performance mode&lt;/td&gt;
&lt;td&gt;→ Keep true for eBPF benefits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;securityContext.capabilities&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;System permissions&lt;/td&gt;
&lt;td&gt;→ Don't change unless you know why&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Remember&lt;/strong&gt;: Each parameter serves a specific purpose in making Cilium work seamlessly with Talos Linux. Don't randomly change them unless you understand the implications!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do all these settings do?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;kubeProxyReplacement=true&lt;/code&gt;: Cilium replaces kube-proxy for better performance&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;hubble.ui.enabled=true&lt;/code&gt;: Gives us a beautiful network monitoring dashboard&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;operator.replicas=1&lt;/code&gt;: Optimized for single-node deployment&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 3: Verify Everything is Working
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check if Cilium pods are running&lt;/span&gt;
kubectl get pods &lt;span class="nt"&gt;-n&lt;/span&gt; kube-system &lt;span class="nt"&gt;-l&lt;/span&gt; k8s-app&lt;span class="o"&gt;=&lt;/span&gt;cilium

&lt;span class="c"&gt;# Check node status (should now be Ready!)&lt;/span&gt;
kubectl get nodes

&lt;span class="c"&gt;# Check Cilium status&lt;/span&gt;
cilium status &lt;span class="nt"&gt;--wait&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Success looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME                STATUS   ROLES           AGE   VERSION
talos-xxx-xxx       Ready    control-plane   5m    v1.28.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqulmyb3c326js8w3896.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqulmyb3c326js8w3896.png" alt="Success Celebration" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0mll0ko6ygrqwjofkts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0mll0ko6ygrqwjofkts.png" alt=" " width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Congratulations! What You've Built
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7132ankwctzpdi2w00yb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7132ankwctzpdi2w00yb.png" alt=" " width="800" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You've just created a production-ready Kubernetes cluster with:&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 &lt;strong&gt;Achievement Unlocked!&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Achievement&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🛡️ &lt;strong&gt;Security&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Talos Linux with zero attack surface&lt;/td&gt;
&lt;td&gt;✅ Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚡ &lt;strong&gt;Performance&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Cilium with eBPF networking&lt;/td&gt;
&lt;td&gt;✅ Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎯 &lt;strong&gt;Efficiency&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Single-node control plane + worker&lt;/td&gt;
&lt;td&gt;✅ Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏗️ &lt;strong&gt;Architecture&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Cloud-native ready infrastructure&lt;/td&gt;
&lt;td&gt;✅ Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;👁️ &lt;strong&gt;Observability&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Built-in monitoring with Hubble&lt;/td&gt;
&lt;td&gt;✅ Complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚀 &lt;strong&gt;Ready for&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Production workloads and scaling&lt;/td&gt;
&lt;td&gt;🎉 &lt;strong&gt;Ready!&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🔍 Understanding What You Built
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Magic Behind the Scenes
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Talos Linux&lt;/strong&gt; is running as your OS, managing everything through APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kubernetes&lt;/strong&gt; is orchestrating containers and managing resources&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cilium&lt;/strong&gt; is handling all networking with eBPF superpowers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your cluster&lt;/strong&gt; can now run any containerized application&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🛣️ &lt;strong&gt;Your Journey Ahead&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Next Steps&lt;/th&gt;
&lt;th&gt;Popular Tools&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🌐 &lt;strong&gt;Web Applications&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Deploy websites and APIs&lt;/td&gt;
&lt;td&gt;React, Vue, Node.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🗄️ &lt;strong&gt;Databases&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Persistent data storage&lt;/td&gt;
&lt;td&gt;PostgreSQL, MongoDB, Redis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📊 &lt;strong&gt;Monitoring&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Observability stack&lt;/td&gt;
&lt;td&gt;Prometheus, Grafana, Alerting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔄 &lt;strong&gt;CI/CD Pipeline&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Automated deployments&lt;/td&gt;
&lt;td&gt;GitLab, GitHub Actions, ArgoCD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🚪 &lt;strong&gt;Ingress Controllers&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;External access&lt;/td&gt;
&lt;td&gt;Traefik, NGINX, Istio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔐 &lt;strong&gt;Security Hardening&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Advanced security&lt;/td&gt;
&lt;td&gt;Network policies, RBAC, Vault&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📈 &lt;strong&gt;Scaling&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Handle more traffic&lt;/td&gt;
&lt;td&gt;HPA, VPA, Cluster Autoscaler&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  💡 &lt;strong&gt;Wisdom Gained&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Lesson&lt;/th&gt;
&lt;th&gt;Key Insight&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1️⃣ &lt;strong&gt;Approachability&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Kubernetes isn't scary with the right guidance&lt;/td&gt;
&lt;td&gt;🎯 Confidence boost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2️⃣ &lt;strong&gt;Security First&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Talos makes security simple and automatic&lt;/td&gt;
&lt;td&gt;🛡️ Peace of mind&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3️⃣ &lt;strong&gt;Performance&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;eBPF networking is truly game-changing&lt;/td&gt;
&lt;td&gt;⚡ Speed &amp;amp; efficiency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4️⃣ &lt;strong&gt;Efficiency&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Single-node clusters are surprisingly powerful&lt;/td&gt;
&lt;td&gt;💪 Resource optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5️⃣ &lt;strong&gt;Accessibility&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Modern infrastructure is accessible to everyone&lt;/td&gt;
&lt;td&gt;🌟 Democratized tech&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  🤝 Join the Community
&lt;/h2&gt;

&lt;p&gt;You're now part of the cloud-native community! Here are some great resources:&lt;/p&gt;

&lt;h2&gt;
  
  
  🌍 &lt;strong&gt;Community Resources&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;What You'll Find&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🛡️ &lt;strong&gt;Talos Linux&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://talos.dev" rel="noopener noreferrer"&gt;talos.dev&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Official docs, guides, API reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🕸️ &lt;strong&gt;Cilium&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://cilium.io" rel="noopener noreferrer"&gt;cilium.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;eBPF tutorials, networking guides&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚙️ &lt;strong&gt;Kubernetes&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://kubernetes.io" rel="noopener noreferrer"&gt;kubernetes.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Complete K8s documentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🏛️ &lt;strong&gt;CNCF&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://cncf.io" rel="noopener noreferrer"&gt;cncf.io&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Cloud-native landscape &amp;amp; projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;💬 &lt;strong&gt;Discord/Slack&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Community channels&lt;/td&gt;
&lt;td&gt;Real-time help &amp;amp; discussions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📚 &lt;strong&gt;Documentation&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Official docs&lt;/td&gt;
&lt;td&gt;Step-by-step tutorials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎥 &lt;strong&gt;YouTube&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Video content&lt;/td&gt;
&lt;td&gt;Conferences, demos, deep-dives&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  💡 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Building your first Kubernetes cluster is like learning to drive—it seems overwhelming at first, but once you understand the basics, a whole world of possibilities opens up. You've just built something that many enterprises pay thousands of dollars for, using open-source tools and a single VPS.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🌟 &lt;strong&gt;"The future of infrastructure is declarative, automated, and secure. You're now equipped with the knowledge to be part of that future."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Happy clustering! 🚀&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Did this guide help you build your first Kubernetes cluster? Share your experience in the comments below, and don't forget to follow for more cloud-native tutorials!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags&lt;/strong&gt;: #Kubernetes #TalosLinux #Cilium #CloudNative #DevOps #Containers #eBPF #Infrastructure #Tutorial #Beginner&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>taloslinux</category>
      <category>vps</category>
      <category>devops</category>
    </item>
    <item>
      <title>How to Install a NodeJS Server on Shared Hosting (cPanel/DirectAdmin) Without SSH Access</title>
      <dc:creator>Chiqo Rifky Saputra</dc:creator>
      <pubDate>Sat, 14 Nov 2020 05:40:18 +0000</pubDate>
      <link>https://forem.com/chiqors/cara-instalasi-server-nodejs-pada-shared-hosting-cpanel-directadmin-tanpa-akses-kontrol-ssh-17k</link>
      <guid>https://forem.com/chiqors/cara-instalasi-server-nodejs-pada-shared-hosting-cpanel-directadmin-tanpa-akses-kontrol-ssh-17k</guid>
      <description>&lt;p&gt;Lately, many web developers have found it difficult to host applications built with a "&lt;strong&gt;NodeJS&lt;/strong&gt;" server, especially users of shared hosting who rely on &lt;strong&gt;cPanel/DirectAdmin&lt;/strong&gt; for their needs and do not have &lt;strong&gt;SSH access&lt;/strong&gt; for server installations.&lt;/p&gt;

&lt;p&gt;CloudLinux has released a new feature called NodeJS Selector, which allows cPanel/DirectAdmin users to run NodeJS programs.&lt;/p&gt;

&lt;p&gt;Several &lt;strong&gt;NodeJS&lt;/strong&gt; versions are available, from version 6, 8, 9, up to the latest (recommended).&lt;/p&gt;




&lt;p&gt;Before we begin the installation, here’s what you need to prepare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;cPanel/DirectAdmin Panel&lt;/strong&gt;: Your shared hosting account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A provider that offers the NodeJS feature&lt;/strong&gt;: Some providers now allow their customers to host NodeJS applications. If your provider does not offer this, unfortunately, this tutorial may not be for you.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Installation/Setup Steps:&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Log in to your panel (cPanel/DirectAdmin).
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flkt53u5tbp42uhb6lgwx.png" alt="Alt Text" width="700" height="475"&gt;
&lt;/li&gt;
&lt;li&gt;Create a new NodeJS application by clicking the “Create Application” button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8jge1fosskecmx83mpes.png" alt="Alt Text" width="700" height="166"&gt;
&lt;/li&gt;
&lt;li&gt;Select a &lt;strong&gt;NodeJS&lt;/strong&gt; version; using the latest (Recommended) version is advisable.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Application mode&lt;/b&gt;: You can choose whether this is for development or production.&lt;br&gt;
&lt;b&gt;Application root&lt;/b&gt;: This is the folder where your NodeJS application will be stored, or the name of your project folder. For example: &lt;strong&gt;nodejs&lt;/strong&gt;&lt;br&gt;
&lt;b&gt;Application URL&lt;/b&gt;: This is used to set the URL where the NodeJS app will be accessed. Here, I have the default option from my hosting domain name "chiqors.xyz". If I add "nodejs" as the URL name, the final URL to access the application will be "&lt;a href="http://chiqors.xyz/nodejs" rel="noopener noreferrer"&gt;http://chiqors.xyz/nodejs&lt;/a&gt;".&lt;br&gt;
&lt;b&gt;Application startup file&lt;/b&gt;: This is the initial file that NodeJS will read. In this case, you can enter index.js.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then, click the “Create” button.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpwpykaudkxiim946l4x1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpwpykaudkxiim946l4x1.png" alt="Alt Text" width="700" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Your NodeJS application has now been created and can be accessed at &lt;a href="http://yourdomain.com/nodejs" rel="noopener noreferrer"&gt;http://yourdomain.com/nodejs&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F06v7u5cgchgakd289sdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F06v7u5cgchgakd289sdg.png" alt="Alt Text" width="700" height="148"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can view the detailed information of the created App URL by clicking the "pencil" icon, which will bring up a display like this:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8lfbi5v8abh2h4mg7ipt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8lfbi5v8abh2h4mg7ipt.png" alt="Alt Text" width="700" height="202"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;There is a message “&lt;/em&gt;&lt;em&gt;Enter to the virtual environment&lt;/em&gt;&lt;em&gt;”. This is intended for those who have SSH access to check the NodeJS server system, such as viewing the node/npm versions in use. However, I will not be covering that setup.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure the NodeJS application is running correctly. Test it by clicking the “Start” button (Make sure to save first).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the status is started (meaning NodeJS is running), test the URL you created.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyts9jl2yia29gttj17yb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyts9jl2yia29gttj17yb.png" alt="Alt Text" width="119" height="64"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;This means you have successfully run the NodeJS app you created.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Congratulations, you have successfully installed NodeJS on your shared hosting. It's also important to know what to do if you see the “&lt;strong&gt;Detected configuration files&lt;/strong&gt;” message in the app details. Typically, after creating a new app, you need to upload your “&lt;strong&gt;package.json&lt;/strong&gt;” file to your project folder.&lt;/p&gt;

&lt;p&gt;Navigate to the URL/Folder you created and upload the “&lt;strong&gt;package.json&lt;/strong&gt;” file you have prepared! Once you've done that, it will look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi5lh330s56dije5p9h83.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi5lh330s56dije5p9h83.png" alt="Alt Text" width="608" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have uploaded the &lt;code&gt;package.json&lt;/code&gt; file, you can now access the command for “&lt;strong&gt;npm install&lt;/strong&gt;”. Please use this feature according to your needs. You can also use this to import your existing &lt;strong&gt;NodeJS&lt;/strong&gt; project folder for deployment to your hosting.&lt;/p&gt;




&lt;p&gt;Hopefully, this guide will be useful for aspiring web developers who use JavaScript as a backend programming language. Thank you for reading, and don't forget to leave a like as a sign of your support! See you in the next tutorial :)&lt;/p&gt;

</description>
      <category>node</category>
      <category>sharedhosting</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Exploring Product Design Idea Development</title>
      <dc:creator>Chiqo Rifky Saputra</dc:creator>
      <pubDate>Sat, 14 Nov 2020 05:20:57 +0000</pubDate>
      <link>https://forem.com/chiqors/menjelajahi-pengembangan-ide-desain-produk-4n86</link>
      <guid>https://forem.com/chiqors/menjelajahi-pengembangan-ide-desain-produk-4n86</guid>
      <description>&lt;p&gt;Have you ever created a product from scratch to launch? Have you ever experienced situations and conditions where they couldn't support your product development? This time, I'll present important material for aspiring product producers and programmers.&lt;/p&gt;

&lt;p&gt;You're probably still confused about what needs to be done first and what comes next. There are &lt;strong&gt;"5 key words"&lt;/strong&gt; that you need to know.&lt;/p&gt;

&lt;h2&gt;
  
  
  General Material Definition
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Design, Sprint, Thinking&lt;br&gt;&lt;br&gt;
Design Thinking &amp;amp; Design Sprint&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;From these materials, let's discuss them one by one in general terms.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Design?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxyak6uglboqyufwho8yb.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxyak6uglboqyufwho8yb.jpeg" alt="Design Concept" width="700" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Design is a work process that has a user perspective and drives development based on your customers' specific needs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Methods and approaches differ depending on what you are developing but whether that involves processes in the healthcare sector or product development at a company we can say with certainty that design will help you to find new solutions."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  2. Sprint?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F58zcyxcd5g04fvuxfp2p.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F58zcyxcd5g04fvuxfp2p.jpeg" alt="Sprint Concept" width="700" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sprint (in the IT world) is an iteration of a continuous development cycle. In a Sprint, the planned amount of work must be completed by the team and ready for review.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Thinking?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F66jcsua3y0qrzv7qhhwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F66jcsua3y0qrzv7qhhwl.png" alt="Thinking Process" width="700" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thinking is a cognitive activity that you use to process information, solve problems, make decisions, and create new ideas.&lt;/p&gt;

&lt;p&gt;There are several types of thinking such as: Creative, Analytical, Critical, Concrete, Abstract, Divergent, Convergent, Sequential, and Holistic.&lt;/p&gt;

&lt;p&gt;These 3 materials are just introductory materials. Let's move on to the main material on design development. But before getting to the core material, I want to present terminology (case examples) that are similar to the material to be presented.&lt;/p&gt;
&lt;h3&gt;
  
  
  Case Example
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fibq9vbn2e4frr2f7pe0c.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fibq9vbn2e4frr2f7pe0c.jpeg" alt="Cooking Example" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's say you have a cooking course to learn. You've prepared the tools required for it. You're confident and ready to learn! But you don't know where to start. Because you don't know where and when you should begin or do things.&lt;/p&gt;
&lt;h3&gt;
  
  
  Solution?
&lt;/h3&gt;

&lt;p&gt;With the help of food recipes, you can start learning how to solve problems to cook your favorite food.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This case is similar to when we design solution ideas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Humans have different ways of thinking about solving their problems. Just like how people go to school - they can either walk or use vehicles to reach their destination.&lt;/p&gt;
&lt;h3&gt;
  
  
  Design Thinking?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F14vh6w7k97u4fj33j29a.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F14vh6w7k97u4fj33j29a.jpeg" alt="Design Thinking Process" width="700" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Design Thinking is the tools, information, data, and problems needed to discover/understand user stories/requests to build design application thinking.&lt;/p&gt;


&lt;h3&gt;
  
  
  Design Sprint?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0jkv3gnsup3x7hufrmhx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0jkv3gnsup3x7hufrmhx.jpeg" alt="Design Sprint Overview" width="700" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The core of this material is &lt;strong&gt;Design Sprint&lt;/strong&gt;. Design Sprint is a &lt;strong&gt;framework&lt;/strong&gt; (recipe) for teams of various sizes to solve and test design problems in 4–5 days. The idea is to define bigger problems into next problems that teams can solve or to understand problems to create user stories.&lt;/p&gt;
&lt;h4&gt;
  
  
  Background
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffcdajexyuz1zew2uka55.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffcdajexyuz1zew2uka55.jpeg" alt="Jake Knapp Background" width="500" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jake Knapp created the Design Sprint process at Google in 2010. He drew inspiration from many places, including product development culture and his own experience building products like Gmail and Hangouts.&lt;/p&gt;

&lt;p&gt;The term product design has been widely used and popularized by IDEO, Apple, Google, and many other creative companies. IDEO pioneered the framework and methodology of design thinking, which Apple later adopted into their products. For quite a long time, this methodology remained buried as if it were a &lt;em&gt;secret recipe&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;However, Google Ventures, which oversees many startups, tried to implement a practical version of design thinking, which became known as &lt;strong&gt;Design Sprint&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Definition from the Founder's Experience Story
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"At Google Ventures, we do product design work with startups all the time. Since we want to move fast and they want to move fast, we've optimized a process that gets us predictably good results in five days or less. We call it a product design sprint, and it's great for getting unstuck or accelerating projects that are already in motion."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"The sprint is a five-day process for answering critical business questions through design, prototyping, and testing ideas with customers."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"We've found that magic happens when we use big whiteboards to solve problems. The room itself becomes a sort of shared brain for the team"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;-Jake Knapp, Author of SPRINT and one of the inventors of the Design Sprint&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  General History of Innovation and Technology
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbm34hvnwut0amiygwa91.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbm34hvnwut0amiygwa91.jpeg" alt="Industry Innovation" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the era of Industry 1.0, innovation to solve existing problems using technology was a time when we all had many ideas that we could find solutions for, because technology was indeed thriving in that era.&lt;/p&gt;
&lt;h2&gt;
  
  
  Things Needed to Run Design Sprint
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Open-Minded Thinking
&lt;/h3&gt;

&lt;p&gt;The most important thing in this method is being Open-Minded. It would also be useful to watch this TED Talk by Tim Brown, where he urges designers to think broadly.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/UAinLaT42xY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;IDEO CEO Tim Brown mentions, &lt;em&gt;"Any organization that wants to innovate, wants to be prepared to innovate, I think, has to have a few things in place. Perhaps the most important thing is methods for having an open mind"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Open-Minded isn't just about listening but also being able to adapt when there's new information or ideas. Similar to different perspectives like the very famous quote, &lt;em&gt;"Is the glass half full or half empty?"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;One meaning of that quote is positive and negative thinking. &lt;strong&gt;Malcolm Gladwell&lt;/strong&gt; in his books like &lt;em&gt;The Tipping Point&lt;/em&gt; and &lt;em&gt;Blink&lt;/em&gt; always challenges us to see other perspectives from common human viewpoints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Minimize Group Brainstorming
&lt;/h3&gt;

&lt;p&gt;Sometimes it's very interesting when we discuss in a group, then ideas are discussed sporadically.&lt;/p&gt;

&lt;p&gt;Sometimes before the presentation of ideas is finished, they're already challenged and criticized in such a way that it erodes genuine and unique ideas. And in the end, what happens is consensus/agreement, and usually such agreements are &lt;em&gt;win-win solutions&lt;/em&gt;, not strong and characteristic solution ideas.&lt;/p&gt;

&lt;p&gt;The spirit of design sprint is to &lt;em&gt;minimize group brainstorming&lt;/em&gt;, where the portion for individuals is very large without having to be disturbed or criticized first, and afterwards give each team member the opportunity to present ideas, opinions, solutions as a whole, listen carefully to all presentations and &lt;em&gt;keep cooling down&lt;/em&gt; until truly understanding the presentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design Sprint Method
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2veuzk0p9x4gxw4c47zn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2veuzk0p9x4gxw4c47zn.png" alt="Design Sprint 1.0 vs 2.0" width="700" height="195"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Comparison between Design Sprint 1.0 vs Design Sprint 2.0&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The abbreviation from this image is the initial front name of days in English (Monday-Tuesday-Wednesday-Thursday-Friday). Version 2.0 will continue for 4 days compared to 5 days. &lt;strong&gt;What about the remaining day?&lt;/strong&gt; We'll discuss that later. What will be presented is the latest version (2.0).&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 1 (Monday) - Map &amp;amp; Ask Experts
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqpnoh3tdlg0imjb1t3fh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqpnoh3tdlg0imjb1t3fh.png" alt="Monday - Map" width="700" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Basically, "Monday" is the day where all stakeholders (all members) together brainstorm about the problems faced and generate several solutions that can be implemented.&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 2 (Tuesday) - Sketch &amp;amp; Decide
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhr2djet87veq3s7kc3w3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhr2djet87veq3s7kc3w3.png" alt="Tuesday - Sketch" width="700" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tuesday is the day where all team members choose the best solutions to be applied to the product idea to be created. And on this day, some members can also draw storyboards (system flow ideas for the product) to be made.&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 3 (Wednesday) - Prototype
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F78k4auacwrnp4c0fenmx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F78k4auacwrnp4c0fenmx.jpeg" alt="Wednesday - Prototype" width="700" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wednesday is the day for the team to create their ideas by making prototypes (can be in the form of design drawings or interaction designs). Interaction flow designs can be made using several software options such as: Adobe XD, Figma, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 4 (Thursday) - Test
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcova4m8tkp8i4mbbgs9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcova4m8tkp8i4mbbgs9l.png" alt="Thursday - Test" width="700" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today is the day to test the design ideas that have been created by the prototyping team from ideas that have been implemented in the previous days. The purpose of today is to evaluate the product ideas to be made and created for prospective users. The most important stakeholders involved are Testers and Customer Support.&lt;/p&gt;

&lt;h3&gt;
  
  
  So, what about the remaining day?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk1uzhtv12ctg6o3crf2z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk1uzhtv12ctg6o3crf2z.jpeg" alt="Friday - Follow up" width="700" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The remaining day can usually be used for &lt;strong&gt;Sprint Retrospective&lt;/strong&gt; (Meeting about Design Sprint) or &lt;strong&gt;Testing Extension&lt;/strong&gt; (Additional Prototyping Testing Time). Testing Extension can occur if the number of testers is too large for one day. Sprint Retrospective is usually used by almost all startups or companies. It's done to evaluate the sprint that has been conducted for a week, to know the smoothness, problems, etc. Usually, this is used as an option if the design sprint will be done again or is sufficient for further development.&lt;/p&gt;

&lt;h4&gt;
  
  
  Is this the last day for design sprint?
&lt;/h4&gt;

&lt;p&gt;Not yet, if user feedback and results are not good in terms of tester experience. The purpose of Design Sprint is to generate/define user stories that you can use in further development to build applications called "SDLC" (&lt;em&gt;Software Development Life Cycle&lt;/em&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Roles in Design Sprint
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fignedfxop8uvojoe79vh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fignedfxop8uvojoe79vh.png" alt="Design Sprint Roles" width="700" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Design Sprint cannot be done without a team. Let's look at some of the most important roles for Design Sprint.&lt;/p&gt;

&lt;p&gt;Stakeholders can have various roles, which can be adjusted by the Sprint Master, as shown in this image.&lt;br&gt;
Decider can be a leader who will create the product (CEO, Product Owner, Project Manager, etc.)&lt;br&gt;
Facilitator can be a manager or product manager.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0c5hnug5bf0dlmfj1l18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0c5hnug5bf0dlmfj1l18.png" alt="Additional Roles" width="500" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there are many more, such as: Tester, Secretary, Scrum Master, UI/UX Designer, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Design Sprint 2.0 Widely Implemented?
&lt;/h2&gt;

&lt;p&gt;Many companies such as Spotify, Mozilla, and Slack from Microsoft Teams have already implemented it for their products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpqmj0yfxqymtll90y8k2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpqmj0yfxqymtll90y8k2.jpeg" alt="Slack Example" width="700" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is an example of a product from Slack. They have created an application for message communication from Mars Robot NASA to NASA's Jet Propulsion Laboratory team. You can see the original article here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, Design Sprint will help the entire team get clear goals and direction. Using this method is very helpful in creating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New products&lt;/li&gt;
&lt;li&gt;Product feature additions, such as creating professional websites or creating features for professional websites&lt;/li&gt;
&lt;li&gt;Workflows&lt;/li&gt;
&lt;li&gt;Business and solving problems with existing products&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well, from here, isn't it quite simplified even for programmers? Especially in the process of creating websites or new features within them. Existing ideas must really be needed and validated before they can be immediately executed.&lt;/p&gt;

&lt;p&gt;And to implement Design Sprint, we need to create a clear team structure with each person's work, and a Sprint Master who can control all teams until the design sprint is completed.&lt;/p&gt;

&lt;p&gt;Without validation, existing features or products won't last long.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Presentation Material Module&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.slideshare.net/ChiqoSaputra/exploring-design-development-20-part-1" rel="noopener noreferrer"&gt;https://www.slideshare.net/ChiqoSaputra/exploring-design-development-20-part-1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.belighted.com/design-sprint" rel="noopener noreferrer"&gt;https://www.belighted.com/design-sprint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.letshackity.com/en/sprint-design-sprint-vs-design-thinking-agile-scrum-lean-startup-methodologies/" rel="noopener noreferrer"&gt;http://www.letshackity.com/en/sprint-design-sprint-vs-design-thinking-agile-scrum-lean-startup-methodologies/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@iosipratama/product-design-sprint-101-bahasa-indonesia-4b2acde80540" rel="noopener noreferrer"&gt;https://medium.com/@iosipratama/product-design-sprint-101-bahasa-indonesia-4b2acde80540&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.invisionapp.com/inside-design/design-sprint-2/" rel="noopener noreferrer"&gt;https://www.invisionapp.com/inside-design/design-sprint-2/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ajsmart.com/design-sprint-2-0/" rel="noopener noreferrer"&gt;https://ajsmart.com/design-sprint-2-0/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>designthinking</category>
      <category>designsprint</category>
      <category>development</category>
      <category>management</category>
    </item>
  </channel>
</rss>
