<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes on Dev &amp; Platform Engineering Hub</title><link>https://rhidayat.work/topics/kubernetes/</link><description>Recent content in Kubernetes on Dev &amp; Platform Engineering Hub</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Rachmat Hidayat</copyright><lastBuildDate>Mon, 10 Aug 2026 01:15:00 +0000</lastBuildDate><atom:link href="https://rhidayat.work/topics/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>Kubernetes Ep 15: Production Helm Charts &amp; Package Deployment</title><link>https://rhidayat.work/series/kubernetes/15-production-helm-chart-deployment/</link><pubDate>Mon, 10 Aug 2026 01:15:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/15-production-helm-chart-deployment/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Managing dozens of static YAML manifests across multiple environments (dev, staging, prod) leads to repetitive code and configuration drift. &lt;strong&gt;Helm&lt;/strong&gt; is the official package manager for Kubernetes, enabling templating, parameterization, versioned releases, and one-click upgrades.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 14: Health Checks &amp; Zero-Downtime Rolling Updates</title><link>https://rhidayat.work/series/kubernetes/14-probes-healthchecks-and-rolling-updates/</link><pubDate>Mon, 10 Aug 2026 01:10:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/14-probes-healthchecks-and-rolling-updates/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 In production, a container might be in a &lt;code&gt;Running&lt;/code&gt; state according to Docker, yet completely unable to serve HTTP traffic due to a deadlock, database connection timeout, or slow boot sequence. &lt;strong&gt;Probes&lt;/strong&gt; and &lt;strong&gt;Rolling Updates&lt;/strong&gt; guarantee zero-downtime application deployments.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 13: RBAC, ServiceAccounts &amp; Security</title><link>https://rhidayat.work/series/kubernetes/13-rbac-service-accounts-and-security/</link><pubDate>Mon, 10 Aug 2026 01:05:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/13-rbac-service-accounts-and-security/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Security in Kubernetes follows the Principle of Least Privilege. &lt;strong&gt;Role-Based Access Control (RBAC)&lt;/strong&gt; regulates who (Users, Groups, or ServiceAccounts) can perform which actions (verbs: &lt;code&gt;get&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, &lt;code&gt;create&lt;/code&gt;, &lt;code&gt;delete&lt;/code&gt;) on which resources (nouns: &lt;code&gt;pods&lt;/code&gt;, &lt;code&gt;services&lt;/code&gt;, &lt;code&gt;secrets&lt;/code&gt;).
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 12: Namespaces, Resource Quotas &amp; LimitRanges</title><link>https://rhidayat.work/series/kubernetes/12-namespaces-resource-quotas-and-limits/</link><pubDate>Mon, 10 Aug 2026 01:00:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/12-namespaces-resource-quotas-and-limits/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 In enterprise environments, a single Kubernetes cluster is shared across multiple development teams, environments (dev, staging, prod), and microservices. Without resource governance, a single misbehaving application can consume all cluster CPU and memory, crashing critical workloads.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 11: Jobs, CronJobs &amp; Batch Processing</title><link>https://rhidayat.work/series/kubernetes/11-jobs-cronjobs-and-batch-processing/</link><pubDate>Mon, 10 Aug 2026 00:55:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/11-jobs-cronjobs-and-batch-processing/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Unlike Deployments and StatefulSets—which are designed to keep long-running processes alive indefinitely—&lt;strong&gt;Jobs&lt;/strong&gt; and &lt;strong&gt;CronJobs&lt;/strong&gt; are designed for &lt;strong&gt;run-to-completion batch tasks&lt;/strong&gt;. When the workload process terminates with exit code 0, Kubernetes marks the Pod as &lt;code&gt;Completed&lt;/code&gt;.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 10: DaemonSets &amp; Cluster Node Agents</title><link>https://rhidayat.work/series/kubernetes/10-daemonsets-and-cluster-monitoring/</link><pubDate>Mon, 10 Aug 2026 00:50:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/10-daemonsets-and-cluster-monitoring/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 While Deployments distribute Pods across nodes based on available capacity, &lt;strong&gt;DaemonSets&lt;/strong&gt; ensure that a copy of a specific Pod runs on &lt;strong&gt;all (or selected) worker nodes&lt;/strong&gt; in the cluster. As nodes are added to or removed from the cluster, DaemonSet Pods are added or garbage-collected automatically.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 9: StatefulSets &amp; Stateful Database Deployments</title><link>https://rhidayat.work/series/kubernetes/09-statefulsets-and-database-deployments/</link><pubDate>Mon, 10 Aug 2026 00:45:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/09-statefulsets-and-database-deployments/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 While Deployments are designed for interchangeable, stateless application replicas, stateful workloads like PostgreSQL clusters, Redis Sentinels, Kafka brokers, and Elasticsearch nodes require &lt;strong&gt;stable network identities&lt;/strong&gt;, &lt;strong&gt;dedicated persistent volumes per replica&lt;/strong&gt;, and &lt;strong&gt;strict ordered deployment &amp;amp; scaling&lt;/strong&gt;. This is where &lt;strong&gt;StatefulSets&lt;/strong&gt; shine.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 8: Persistent Volumes, PVCs &amp; StorageClasses</title><link>https://rhidayat.work/series/kubernetes/08-volumes-pv-pvc-and-storageclass/</link><pubDate>Mon, 10 Aug 2026 00:40:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/08-volumes-pv-pvc-and-storageclass/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Containers are designed to be stateless and ephemeral. To run stateful applications like PostgreSQL, MySQL, Redis, or Elasticsearch, Kubernetes provides storage abstractions that decouple persistent storage infrastructure from application workload definitions.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 7: ConfigMaps, Secrets &amp; Environment Variables</title><link>https://rhidayat.work/series/kubernetes/07-configmaps-secrets-and-env-vars/</link><pubDate>Mon, 10 Aug 2026 00:35:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/07-configmaps-secrets-and-env-vars/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The Twelve-Factor App methodology mandates strict separation of application code from configuration settings. &lt;strong&gt;ConfigMaps&lt;/strong&gt; store non-sensitive configuration data (URLs, log levels), while &lt;strong&gt;Secrets&lt;/strong&gt; store sensitive values (passwords, API tokens, TLS keys).
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 6: Ingress Controllers &amp; HTTP Path Routing</title><link>https://rhidayat.work/series/kubernetes/06-ingress-controllers-and-routing/</link><pubDate>Mon, 10 Aug 2026 00:30:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/06-ingress-controllers-and-routing/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 While L4 Kubernetes Services handle IP and port-level load balancing, modern web applications require Layer 7 HTTP/HTTPS routing features: URL path matching (&lt;code&gt;/api&lt;/code&gt; vs &lt;code&gt;/app&lt;/code&gt;), hostname routing (&lt;code&gt;api.example.com&lt;/code&gt;), SSL/TLS termination, and header rewriting. This is handled by &lt;strong&gt;Ingress&lt;/strong&gt;.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 5: Networking Services (ClusterIP, NodePort, LoadBalancer)</title><link>https://rhidayat.work/series/kubernetes/05-services-clusterip-nodeport-loadbalancer/</link><pubDate>Mon, 10 Aug 2026 00:25:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/05-services-clusterip-nodeport-loadbalancer/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Pods are ephemeral—they are created, destroyed, and rescheduled dynamically, causing their IP addresses to change constantly. A &lt;strong&gt;Kubernetes Service&lt;/strong&gt; provides a stable, persistent virtual IP (VIP), DNS name, and load balancing frontend across a dynamic set of backend Pods.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 4: Deployments, ReplicaSets &amp; Self-Healing Scaling</title><link>https://rhidayat.work/series/kubernetes/04-deployments-replicasets-and-scaling/</link><pubDate>Mon, 10 Aug 2026 00:20:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/04-deployments-replicasets-and-scaling/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 While Pods are the basic building blocks of Kubernetes, you should rarely deploy bare Pods directly. Instead, production applications use &lt;strong&gt;Deployments&lt;/strong&gt;, a higher-level abstraction that manages &lt;strong&gt;ReplicaSets&lt;/strong&gt; to guarantee high availability, self-healing, and seamless scaling.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 3: kubectl CLI &amp; Launching Your First Pod</title><link>https://rhidayat.work/series/kubernetes/03-kubectl-cli-and-first-pod/</link><pubDate>Mon, 10 Aug 2026 00:15:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/03-kubectl-cli-and-first-pod/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The &lt;strong&gt;&lt;code&gt;kubectl&lt;/code&gt;&lt;/strong&gt; command-line interface is the primary tool platform engineers and developers use to interact with Kubernetes clusters. In this episode, we&amp;rsquo;ll configure &lt;code&gt;kubectl&lt;/code&gt; and deploy our first atomic Kubernetes primitive: the &lt;strong&gt;Pod&lt;/strong&gt;.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 2: Architecture - Control Plane &amp; Worker Nodes</title><link>https://rhidayat.work/series/kubernetes/02-architecture-control-plane-and-worker-nodes/</link><pubDate>Mon, 10 Aug 2026 00:10:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/02-architecture-control-plane-and-worker-nodes/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 A Kubernetes cluster consists of two primary logical layers: the &lt;strong&gt;Control Plane&lt;/strong&gt; (the cluster&amp;rsquo;s brain) and &lt;strong&gt;Worker Nodes&lt;/strong&gt; (the muscle that runs application containers). Understanding how these components communicate is crucial for cluster administration and troubleshooting.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 1: Introduction to Kubernetes &amp; Containers</title><link>https://rhidayat.work/series/kubernetes/01-introduction-to-kubernetes-and-containers/</link><pubDate>Mon, 10 Aug 2026 00:05:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/01-introduction-to-kubernetes-and-containers/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The evolution of modern infrastructure has transitioned from physical bare-metal servers to Virtual Machines (VMs), lightweight OCI Containers, and ultimately automated Container Orchestration platforms like &lt;strong&gt;Kubernetes&lt;/strong&gt;.
&lt;/div&gt;</description></item><item><title>Kratix Ep 10: Observability and Operations</title><link>https://rhidayat.work/series/kratix/10-observability-and-operations/</link><pubDate>Sun, 09 Aug 2026 21:40:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/10-observability-and-operations/</guid><description>Operating a multi-cluster architecture introduces a massive observability challenge. If a Kratix Pipeline fails, the logs are in the Platform cluster. If the physical database fails, the logs are in the Worker cluster. In this episode, we build a centralized monitoring stack using Prometheus and Grafana.</description></item><item><title>Kratix Ep 9: Promise CI/CD with GitHub Actions</title><link>https://rhidayat.work/series/kratix/09-promise-cicd-github-gitlab/</link><pubDate>Sun, 09 Aug 2026 21:30:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/09-promise-cicd-github-gitlab/</guid><description>Platform Engineers write code too. When you build a complex Promise, you must compile the Pipeline container, lint the YAML, and safely deploy it to the Platform Cluster. In this episode, we build a robust GitHub Actions CI/CD pipeline to automate the lifecycle of Kratix Promises.</description></item><item><title>Kratix Ep 7: Secrets Management with ESO and Vault</title><link>https://rhidayat.work/series/kratix/07-secrets-management-eso-vault/</link><pubDate>Sun, 09 Aug 2026 21:10:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/07-secrets-management-eso-vault/</guid><description>GitOps has one fatal flaw: You cannot commit secrets to a Git repository. When Kratix generates a Redis password during a Pipeline execution, how does it securely deliver that password to the Worker Cluster? In this episode, we solve the GitOps secrets problem using HashiCorp Vault and ESO.</description></item><item><title>Kratix Ep 6: FluxCD GitOps Integration</title><link>https://rhidayat.work/series/kratix/06-fluxcd-gitops-integration/</link><pubDate>Sun, 09 Aug 2026 21:00:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/06-fluxcd-gitops-integration/</guid><description>If your organization prefers Flux over ArgoCD, Kratix supports it natively without any modifications to the Platform Cluster. Because Kratix simply writes standard YAML to a Git repository, any GitOps controller can act as the delivery agent. In this episode, we configure FluxCD on the Worker Cluster.</description></item><item><title>Kratix Ep 5: ArgoCD GitOps Integration</title><link>https://rhidayat.work/series/kratix/05-argocd-gitops-integration/</link><pubDate>Sun, 09 Aug 2026 20:50:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/05-argocd-gitops-integration/</guid><description>In this episode, we learn HOW to execute the GitOps pull model in practice. We will configure ArgoCD on a Worker Cluster to continuously sync the Redis StatefulSet YAML generated by our Kratix Pipeline, ensuring you understand the mechanics of the State Store.</description></item><item><title>Kratix Ep 4: Core Concepts Deep Dive (How-To)</title><link>https://rhidayat.work/series/kratix/04-kratix-core-concepts-deep-dive/</link><pubDate>Sun, 09 Aug 2026 20:40:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/04-kratix-core-concepts-deep-dive/</guid><description>Enough theory. It&amp;rsquo;s time to look at the YAML. In this episode, we build the E-Commerce Redis Promise line-by-line. We will examine the API schema, the Pipeline configuration, and the Destination selectors that make multi-cluster deployment possible, ensuring you understand exactly how Kratix executes your logic.</description></item><item><title>Kratix Ep 2: Multi-Cluster Architecture &amp; IaC</title><link>https://rhidayat.work/series/kratix/02-multi-cluster-architecture-and-iac/</link><pubDate>Sun, 09 Aug 2026 20:20:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/02-multi-cluster-architecture-and-iac/</guid><description>In this episode, we deeply analyze the &amp;lsquo;Where&amp;rsquo; of the 5W1H framework. We will map out the Hub and Spoke topology, learn why Kratix intentionally isolates the Platform Cluster from the Worker Clusters for security, and explore how traditional Infrastructure-as-Code (like Terraform) executes inside this GitOps-driven model.</description></item><item><title>Crossplane Ep 15: Building an IDP with Backstage</title><link>https://rhidayat.work/series/crossplane/advanced/15-building-an-idp-with-backstage/</link><pubDate>Sun, 09 Aug 2026 19:40:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/advanced/15-building-an-idp-with-backstage/</guid><description>We have built the APIs, the translation engine, the GitOps pipeline, and the security webhooks. But developers still have to write YAML to request a database. In this final episode, we integrate Crossplane with Backstage to create the ultimate Internal Developer Portal (IDP).</description></item><item><title>Crossplane Ep 14: Custom Composition Webhooks</title><link>https://rhidayat.work/series/crossplane/advanced/14-custom-composition-webhooks/</link><pubDate>Sun, 09 Aug 2026 19:30:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/advanced/14-custom-composition-webhooks/</guid><description>OpenAPI schema validation (like &lt;code&gt;type: integer&lt;/code&gt;) is too basic for enterprise security. What if you need to enforce that a database&amp;rsquo;s storage size is an even number, or that the requested environment matches a specific regex? In this episode, we write a Kubernetes Validating Webhook in Go to intercept and inspect Crossplane Claims.</description></item><item><title>Crossplane Ep 13: Provider Families and Performance</title><link>https://rhidayat.work/series/crossplane/advanced/13-provider-family-and-performance/</link><pubDate>Sun, 09 Aug 2026 19:20:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/advanced/13-provider-family-and-performance/</guid><description>If you install the monolithic &lt;code&gt;provider-aws&lt;/code&gt; package into a small EKS cluster, your Kubernetes API server might crash. AWS has over 1,000 resources, meaning Crossplane will inject 1,000 CRDs and run a massive Go controller in memory. In this episode, we learn how to architect high-performance Crossplane clusters using Provider Families.</description></item><item><title>Crossplane Ep 12: GitOps with ArgoCD and Crossplane</title><link>https://rhidayat.work/series/crossplane/advanced/12-gitops-with-argocd-and-crossplane/</link><pubDate>Sun, 09 Aug 2026 19:10:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/advanced/12-gitops-with-argocd-and-crossplane/</guid><description>If you are running &lt;code&gt;kubectl apply -f my-database.yaml&lt;/code&gt; from your laptop, you are doing it wrong. In modern Platform Engineering, no human should ever talk directly to the Kubernetes API. In this episode, we configure ArgoCD to automatically deploy Crossplane XRs directly from a GitHub repository.</description></item><item><title>Crossplane Ep 11: Writing Composition Functions in Go</title><link>https://rhidayat.work/series/crossplane/advanced/11-writing-composition-functions-in-go/</link><pubDate>Sun, 09 Aug 2026 19:00:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/advanced/11-writing-composition-functions-in-go/</guid><description>In Episode 10, we learned that Composition Functions allow us to escape the limitations of YAML. In this episode, we will write a custom Go program that dynamically generates an array of AWS Subnets based on a single integer provided by the Application Developer.</description></item><item><title>Crossplane Ep 10: Introduction to Composition Functions</title><link>https://rhidayat.work/series/crossplane/intermediate/10-composition-functions-introduction/</link><pubDate>Sun, 09 Aug 2026 18:40:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/intermediate/10-composition-functions-introduction/</guid><description>YAML is excellent for configuration, but terrible for programming. As your Platform scales, you will inevitably need &lt;code&gt;for&lt;/code&gt; loops, complex &lt;code&gt;if/else&lt;/code&gt; logic, and external API calls. In this final intermediate episode, we introduce Composition Functions—the architecture that allows you to write Crossplane logic in Turing-complete languages.</description></item><item><title>Crossplane Ep 9: Troubleshooting Sync Errors</title><link>https://rhidayat.work/series/crossplane/intermediate/09-troubleshooting-crossplane-sync-errors/</link><pubDate>Sun, 09 Aug 2026 18:30:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/intermediate/09-troubleshooting-crossplane-sync-errors/</guid><description>When you run &lt;code&gt;terraform apply&lt;/code&gt;, you get immediate red text in your console if an AWS API call fails. Because Crossplane is an asynchronous control loop, &lt;code&gt;kubectl apply&lt;/code&gt; always succeeds immediately. When a database fails to boot 10 minutes later, how do you find the error? In this episode, we learn the Crossplane troubleshooting cascade.</description></item><item><title>Crossplane Ep 8: Managing Dependencies Between Resources</title><link>https://rhidayat.work/series/crossplane/intermediate/08-managing-dependencies-between-resources/</link><pubDate>Sun, 09 Aug 2026 18:20:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/intermediate/08-managing-dependencies-between-resources/</guid><description>If a Composition provisions both an AWS VPC and a Subnet, the Subnet physically cannot be created until the VPC exists and returns an ID. In Terraform, you use implicit dependency mapping (e.g., &lt;code&gt;vpc_id = aws_vpc.main.id&lt;/code&gt;). In Crossplane, we manage this using Cross-Resource References and Selector matching.</description></item><item><title>Crossplane Ep 7: Environment Configs</title><link>https://rhidayat.work/series/crossplane/intermediate/07-environment-configs/</link><pubDate>Sun, 09 Aug 2026 18:10:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/intermediate/07-environment-configs/</guid><description>If your company has three clusters (Development, Staging, and Production), you do not want to write three different Compositions for the same RDS database. In this episode, we learn how to use Crossplane EnvironmentConfigs to inject global context (like AWS Account IDs, VPC IDs, and Regions) dynamically into your Compositions.</description></item><item><title>Crossplane Ep 6: Patching and Transforms</title><link>https://rhidayat.work/series/crossplane/intermediate/06-patching-and-transforms/</link><pubDate>Sun, 09 Aug 2026 18:00:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/intermediate/06-patching-and-transforms/</guid><description>In Episode 5, we hardcoded our RDS instance size to 20GB. If a developer asked for 50GB in their Claim, Crossplane ignored it. In this episode, we explore the Patcher, learning how to dynamically route data from the Composite Resource (XR) into the physical Managed Resources (MRs).</description></item><item><title>Crossplane Ep 5: Compositions</title><link>https://rhidayat.work/series/crossplane/fundamental/05-compositions/</link><pubDate>Sun, 09 Aug 2026 17:50:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/fundamental/05-compositions/</guid><description>In Episode 4, we built an API (XRD) but it didn&amp;rsquo;t actually create any AWS infrastructure. In this final fundamental episode, we write a Composition. This is the &amp;rsquo;translation engine&amp;rsquo; that instructs Crossplane exactly which physical Managed Resources to create when a developer requests our custom API.</description></item><item><title>Crossplane Ep 4: Composite Resources (XR)</title><link>https://rhidayat.work/series/crossplane/fundamental/04-composite-resources-xr/</link><pubDate>Sun, 09 Aug 2026 17:40:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/fundamental/04-composite-resources-xr/</guid><description>Managed Resources (MRs) are too low-level for application developers. In this episode, we learn how to define a Composite Resource Definition (XRD). This allows Platform Engineers to design a brand new, highly abstracted Custom Kubernetes API tailored exactly to their company&amp;rsquo;s needs.</description></item><item><title>Crossplane Ep 3: Managed Resources (MR)</title><link>https://rhidayat.work/series/crossplane/fundamental/03-managed-resources-mr/</link><pubDate>Sun, 09 Aug 2026 17:30:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/fundamental/03-managed-resources-mr/</guid><description>A Managed Resource (MR) is the foundational building block of Crossplane. It is a 1-to-1 representation of a physical cloud object (like an S3 Bucket or an RDS Instance) stored as a Custom Resource in Kubernetes. In this episode, we provision our first AWS resource directly via kubectl.</description></item><item><title>Crossplane Ep 2: Providers and Credentials</title><link>https://rhidayat.work/series/crossplane/fundamental/02-providers-and-credentials/</link><pubDate>Sun, 09 Aug 2026 17:20:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/fundamental/02-providers-and-credentials/</guid><description>Crossplane is useless on its own. To orchestrate AWS, Azure, or GCP, we must install Providers. In this episode, we install the official Upbound AWS Provider, configure Kubernetes Secrets to store our IAM credentials, and bind them to a ProviderConfig.</description></item><item><title>Crossplane Ep 1: The Kubernetes Native Control Plane</title><link>https://rhidayat.work/series/crossplane/fundamental/01-the-kubernetes-native-control-plane/</link><pubDate>Sun, 09 Aug 2026 17:10:00 +0000</pubDate><guid>https://rhidayat.work/series/crossplane/fundamental/01-the-kubernetes-native-control-plane/</guid><description>To understand Crossplane, you must first understand the Kubernetes Control Loop. In this episode, we explore the theoretical difference between CLI-driven IaC (Terraform) and Control Plane IaC (Crossplane). We will then install Crossplane into a local cluster using Helm.</description></item><item><title>CKS Deep Guide: Cluster Hardening &amp; Runtime Security</title><link>https://rhidayat.work/series/kubernetes-certification-path/cks/01-cks-cluster-hardening-and-runtime-security/</link><pubDate>Sun, 09 Aug 2026 16:15:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes-certification-path/cks/01-cks-cluster-hardening-and-runtime-security/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The &lt;strong&gt;Certified Kubernetes Security Specialist (CKS)&lt;/strong&gt; is the pinnacle performance exam testing your ability to secure containerized workloads, harden Kubernetes clusters, and detect runtime attacks.
&lt;/div&gt;</description></item><item><title>CKAD Deep Guide: Application Design &amp; Deployment Strategies</title><link>https://rhidayat.work/series/kubernetes-certification-path/ckad/01-ckad-application-design-and-deployment-strategies/</link><pubDate>Sun, 09 Aug 2026 16:10:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes-certification-path/ckad/01-ckad-application-design-and-deployment-strategies/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The &lt;strong&gt;Certified Kubernetes Application Developer (CKAD)&lt;/strong&gt; exam tests your ability to design, build, expose, and troubleshoot cloud-native applications running inside Kubernetes clusters.
&lt;/div&gt;</description></item><item><title>CKA Deep Guide: Cluster Architecture, Installation &amp; etcd Backup</title><link>https://rhidayat.work/series/kubernetes-certification-path/cka/01-cka-cluster-architecture-installation-and-configuration/</link><pubDate>Sun, 09 Aug 2026 16:05:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes-certification-path/cka/01-cka-cluster-architecture-installation-and-configuration/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The &lt;strong&gt;Certified Kubernetes Administrator (CKA)&lt;/strong&gt; exam is a 100% performance-based practical exam. You must execute complex administrative tasks directly inside Linux terminal command lines within a 2-hour window.
&lt;/div&gt;</description></item><item><title>KCNA Deep Guide: Cloud Native Architecture &amp; Exam Mastery</title><link>https://rhidayat.work/series/kubernetes-certification-path/kcna/01-kcna-exam-guide-and-cloud-native-fundamentals/</link><pubDate>Sun, 09 Aug 2026 16:00:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes-certification-path/kcna/01-kcna-exam-guide-and-cloud-native-fundamentals/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The &lt;strong&gt;Kubernetes and Cloud Native Associate (KCNA)&lt;/strong&gt; certification tests your foundational understanding of the Cloud Native ecosystem, CNCF project landscape, and Kubernetes control plane mechanics.
&lt;/div&gt;</description></item><item><title>CKAD Ep 1: Multi-Container Pod Patterns &amp; Design</title><link>https://rhidayat.work/series/kubernetes-certification-path/ckad/01-ckad-application-design-and-build/</link><pubDate>Sun, 09 Aug 2026 14:00:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes-certification-path/ckad/01-ckad-application-design-and-build/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Multi-container Pod patterns allow containers to share storage and network namespaces to extend functionality without modifying application source code. Designing these patterns under time pressure is a core domain of the CKAD exam.
&lt;/div&gt;</description></item><item><title>KCNA Ep 3: Container Orchestration &amp; Workload Primitives</title><link>https://rhidayat.work/series/kubernetes-certification-path/kcna/03-kcna-container-orchestration-and-workloads/</link><pubDate>Sun, 09 Aug 2026 13:15:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes-certification-path/kcna/03-kcna-container-orchestration-and-workloads/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Workload resources define how application containers are scheduled, scaled, and managed across a Kubernetes cluster. Understanding when to choose a Deployment vs a StatefulSet, DaemonSet, or Job is essential for the KCNA exam.
&lt;/div&gt;</description></item><item><title>KCNA Ep 2: Kubernetes Fundamentals &amp; Architecture</title><link>https://rhidayat.work/series/kubernetes-certification-path/kcna/02-kcna-kubernetes-fundamentals-and-architecture/</link><pubDate>Sun, 09 Aug 2026 13:10:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes-certification-path/kcna/02-kcna-kubernetes-fundamentals-and-architecture/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 A Kubernetes cluster is divided into a Control Plane (the brain) and Worker Nodes (the muscle). Understanding how these components communicate via the declarative REST API is a core requirement for the KCNA exam.
&lt;/div&gt;</description></item><item><title>KCNA Ep 1: CNCF Ecosystem &amp; Cloud Native Architecture</title><link>https://rhidayat.work/series/kubernetes-certification-path/kcna/01-kcna-exam-guide-and-cloud-native-ecosystem/</link><pubDate>Sun, 09 Aug 2026 13:05:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes-certification-path/kcna/01-kcna-exam-guide-and-cloud-native-ecosystem/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The Kubernetes and Cloud Native Associate (KCNA) exam is a multiple-choice certification designed to test your foundational knowledge of the cloud-native ecosystem. In this first episode, we explore the CNCF landscape, cloud-native architecture patterns, and containerization principles.
&lt;/div&gt;</description></item><item><title>K8s Ep 1: Architecture &amp; Your First Multi-Node Local Cluster Setup</title><link>https://rhidayat.work/series/kubernetes/fundamental/01-architecture-and-local-setup/</link><pubDate>Sun, 09 Aug 2026 08:10:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/fundamental/01-architecture-and-local-setup/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Many Kubernetes tutorials overwhelm you with hours of theory before ever touching a terminal. Here, we embrace the &lt;strong&gt;HowToForge&lt;/strong&gt; philosophy: we build it first, then we dissect how it works.
&lt;/div&gt;</description></item></channel></rss>