<?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>DEV Community: Kapil Bhalodiya</title>
    <description>The latest articles on DEV Community by Kapil Bhalodiya (@kapilbhalodiya).</description>
    <link>https://dev.to/kapilbhalodiya</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%2F3357276%2F2ff0dbfc-93c6-444b-a45f-272d653f63b2.png</url>
      <title>DEV Community: Kapil Bhalodiya</title>
      <link>https://dev.to/kapilbhalodiya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kapilbhalodiya"/>
    <language>en</language>
    <item>
      <title>🚀 How I Passed the CKAD Exam</title>
      <dc:creator>Kapil Bhalodiya</dc:creator>
      <pubDate>Thu, 17 Jul 2025 05:19:48 +0000</pubDate>
      <link>https://dev.to/kapilbhalodiya/how-i-passed-the-ckad-exam-5215</link>
      <guid>https://dev.to/kapilbhalodiya/how-i-passed-the-ckad-exam-5215</guid>
      <description>&lt;p&gt;&lt;strong&gt;Real-world preparation tips, resources, and practice scenarios to crack the Kubernetes CKAD certification&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Passing the &lt;strong&gt;Certified Kubernetes Application Developer (CKAD)&lt;/strong&gt; exam was a big milestone in my DevOps journey. This blog post is a complete guide based on my real-world experience—designed to help you succeed in your first attempt too.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What is CKAD?
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;CKAD&lt;/strong&gt; exam tests your ability to design, build, and run applications on Kubernetes. It's hands-on, performance-based, and 2 hours long, with about 15-20 scenario-based questions.&lt;/p&gt;

&lt;p&gt;Key areas it covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pod design&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Multi-container pods&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Services &amp;amp; Networking&lt;/li&gt;
&lt;li&gt;State persistence&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⏳ My Preparation Timeline
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Activity&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1–2&lt;/td&gt;
&lt;td&gt;Understand exam structure, set up local lab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3–4&lt;/td&gt;
&lt;td&gt;Practice each topic using &lt;code&gt;kubectl&lt;/code&gt; and YAML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5–6&lt;/td&gt;
&lt;td&gt;Attempt mock exams, simulate real exam conditions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Final revision, focus on speed &amp;amp; shortcuts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🛠️ My Study Resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📘 Courses
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kodekloud.com/courses/certified-kubernetes-application-developer/" rel="noopener noreferrer"&gt;Kubernetes for Developers – CKAD (by Mumshad Mannambeth)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/certified-kubernetes-application-developer/" rel="noopener noreferrer"&gt;Udemy: CKAD Course by School of Devops&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📚 Docs You Should Bookmark (Yes, you can use them during the exam!)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/" rel="noopener noreferrer"&gt;Kubernetes Official Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://training.linuxfoundation.org/certification/certified-kubernetes-application-developer-ckad/" rel="noopener noreferrer"&gt;CKAD Exam Curriculum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/reference/kubectl/cheatsheet/" rel="noopener noreferrer"&gt;kubectl Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧪 Practice Labs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kodekloud.com/" rel="noopener noreferrer"&gt;KodeKloud Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dgkanatsios/CKAD-exercises" rel="noopener noreferrer"&gt;Github Exercise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://killer.sh/ckad/" rel="noopener noreferrer"&gt;Killer.sh Simulator&lt;/a&gt; – &lt;em&gt;official practice simulator&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Pro Tips That Helped Me
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Master &lt;code&gt;kubectl&lt;/code&gt; Autocomplete&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;kubectl completion bash&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;kubectl
&lt;span class="nb"&gt;complete&lt;/span&gt; &lt;span class="nt"&gt;-F&lt;/span&gt; __start_kubectl k
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. &lt;strong&gt;Use Imperative Commands&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create deployment nginx &lt;span class="nt"&gt;--image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nginx &lt;span class="nt"&gt;--dry-run&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="nt"&gt;-o&lt;/span&gt; yaml &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; nginx.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Saves time and helps avoid YAML syntax errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Keep a Notebook of Common Snippets&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I created a personal cheat sheet of YAML templates for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pods&lt;/li&gt;
&lt;li&gt;Deployments&lt;/li&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;ConfigMaps&lt;/li&gt;
&lt;li&gt;Secrets&lt;/li&gt;
&lt;li&gt;PersistentVolumeClaims&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Practice Fast File Navigation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /etc/kubernetes/manifests/
vi myfile.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;:set number&lt;/code&gt; in Vim&lt;/li&gt;
&lt;li&gt;Copy-paste YAML snippets smartly using mouse or middle-click&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎯 Exam Strategy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start with the easiest questions first&lt;/li&gt;
&lt;li&gt;Skip long multi-step tasks and come back later&lt;/li&gt;
&lt;li&gt;Use bookmarks (&lt;code&gt;CTRL+F&lt;/code&gt;) to search within docs fast&lt;/li&gt;
&lt;li&gt;Always validate your answers using:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get &amp;lt;resource&amp;gt; &lt;span class="nt"&gt;-o&lt;/span&gt; yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📦 My Lab Setup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu VM (min 2 CPU, 4GB RAM)&lt;/li&gt;
&lt;li&gt;Minikube or KIND (Kubernetes IN Docker)&lt;/li&gt;
&lt;li&gt;VSCode + terminal&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tmux&lt;/code&gt; or &lt;code&gt;split&lt;/code&gt; terminal view&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Cracking the CKAD exam was not just about knowing Kubernetes—it was about becoming confident in using it practically.&lt;/p&gt;

&lt;p&gt;If you're aiming for the exam:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Don’t just study. &lt;strong&gt;Simulate.&lt;/strong&gt; Recreate scenarios and break things—then fix them.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧵 Stay Connected
&lt;/h2&gt;

&lt;p&gt;I’m sharing more DevOps + Kubernetes tips on &lt;a href="https://linkedin.com/in/kapil-bhalodiya" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Feel free to DM if you're preparing—I'd be happy to help!&lt;/p&gt;




</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>docker</category>
      <category>learning</category>
    </item>
    <item>
      <title>🚀 Secure Your Deployments: A DevSecOps + GitOps CI/CD Pipeline with Jenkins, ArgoCD, and Kubernetes</title>
      <dc:creator>Kapil Bhalodiya</dc:creator>
      <pubDate>Tue, 15 Jul 2025 16:37:56 +0000</pubDate>
      <link>https://dev.to/kapilbhalodiya/secure-your-deployments-a-devsecops-gitops-cicd-pipeline-with-jenkins-argocd-and-kubernetes-2jl2</link>
      <guid>https://dev.to/kapilbhalodiya/secure-your-deployments-a-devsecops-gitops-cicd-pipeline-with-jenkins-argocd-and-kubernetes-2jl2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A complete breakdown of how I automated code quality, security, containerization, GitOps deployment, and monitoring — using only open-source tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🚀 Why I Built This Pipeline
&lt;/h2&gt;

&lt;p&gt;In today’s cloud-native era, simply deploying code isn’t enough.&lt;br&gt;
We need to:&lt;/p&gt;

&lt;p&gt;✅ Ensure code quality&lt;br&gt;
✅ Scan for security vulnerabilities&lt;br&gt;
✅ Automate deployments&lt;br&gt;
✅ Monitor everything&lt;br&gt;
✅ Get feedback instantly&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%2Fkoq205mowh9cj1el91mp.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%2Fkoq205mowh9cj1el91mp.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, I decided to build a DevSecOps + GitOps pipeline that ties together:&lt;/p&gt;

&lt;p&gt;🔁 Jenkins for CI/CD&lt;/p&gt;

&lt;p&gt;📦 Docker + GitHub + DockerHub&lt;/p&gt;

&lt;p&gt;🔍 SonarQube, Trivy, OWASP Dependency Check&lt;/p&gt;

&lt;p&gt;☸️ Kubernetes + ArgoCD&lt;/p&gt;

&lt;p&gt;📈 Prometheus, Grafana, Loki, Alertmanager&lt;/p&gt;

&lt;p&gt;💬 Slack + Gmail notifications&lt;/p&gt;
&lt;h2&gt;
  
  
  🎥 See It in Action
&lt;/h2&gt;

&lt;p&gt;Watch the pipeline executing:&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%2F7555w1zced59mv0gqqjj.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%2F7555w1zced59mv0gqqjj.gif" alt=" " width="600" height="342"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🧠 Pipeline Flow Breakdown
&lt;/h2&gt;

&lt;p&gt;Let's walk through each step in this real-world production-ready CI/CD setup.&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 1. Developer Pushes Code to GitHub
&lt;/h2&gt;

&lt;p&gt;Triggers a Jenkins multibranch pipeline via GitHub webhook&lt;/p&gt;
&lt;h2&gt;
  
  
  🟡 2. Jenkins CI Begins — With Parallel Security Gates
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;parallel {
  stage('SonarQube') {
    steps {
      sh 'sonar-scanner -Dsonar.projectKey=my-app ...'
    }
  }
  stage('Trivy Scan') {
    steps {
      sh 'trivy fs . --exit-code 1'
    }
  }
  stage('OWASP Check') {
    steps {
      sh './dependency-check/bin/dependency-check.sh -s .'
    }
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;✅ Code quality, container vulnerabilities, and dependency checks all run in parallel&lt;/p&gt;
&lt;h2&gt;
  
  
  🔵 3. Docker Build + Push
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t &amp;lt;image-name&amp;gt;:&amp;lt;Image-tage&amp;gt; .
docker push &amp;lt;image-name&amp;gt;:&amp;lt;Image-tage&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Built containers are pushed to DockerHub or any secure private registry.&lt;/p&gt;
&lt;h2&gt;
  
  
  🟠 4. Jenkins CD Updates Kubernetes Manifests
&lt;/h2&gt;

&lt;p&gt;Jenkins updates the Kubernetes deployment.yaml with the new Docker image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sed -i -E 's|^(\\s*tag:) .*|\\1 "${imageTag}"|' values.yaml
git commit -am "update image tag"
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This commit lands in a separate Infra GitHub Repo, which is continuously watched by ArgoCD.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔴 5. ArgoCD (GitOps) Deploys to Kubernetes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ArgoCD syncs automatically with the updated manifest repo.&lt;/li&gt;
&lt;li&gt;It deploys the new version into the Kubernetes cluster.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🟣 6. Monitoring &amp;amp; Logging Kicks In
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prometheus&lt;/strong&gt; scrapes metrics from the cluster and app.&lt;br&gt;
&lt;strong&gt;Grafana&lt;/strong&gt; Dashboards display:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application performance&lt;/li&gt;
&lt;li&gt;Pod CPU/memory usage&lt;/li&gt;
&lt;li&gt;Business metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Loki&lt;/strong&gt; collects logs&lt;br&gt;
&lt;strong&gt;Alertmanager&lt;/strong&gt; sends alerts on failure, high latency, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  📨 7. Instant Notifications
&lt;/h2&gt;

&lt;p&gt;Pipeline stages notify:&lt;/p&gt;

&lt;p&gt;✅ Gmail for critical alerts&lt;/p&gt;

&lt;p&gt;✅ Slack #ci-cd for success/failure, build times&lt;/p&gt;

&lt;p&gt;Example Slack message:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;em&gt;Docker image built and pushed&lt;/em&gt;&lt;br&gt;
🚀 &lt;em&gt;ArgoCD deployed version to cluster&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🧪 Challenges I Faced
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Managing parallel Jenkins stages with proper failure handling&lt;/li&gt;
&lt;li&gt;Avoiding secret exposure in git history&lt;/li&gt;
&lt;li&gt;Setting up ArgoCD auto-sync correctly&lt;/li&gt;
&lt;li&gt;Tuning Prometheus scraping and Grafana alert rules&lt;/li&gt;
&lt;li&gt;Handling secure scanning without breaking pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💡 What I Learned
&lt;/h2&gt;

&lt;p&gt;🔐 Security gates should be integrated early (shift-left) in CI&lt;/p&gt;

&lt;p&gt;☸️ GitOps brings traceability and rollback safety&lt;/p&gt;

&lt;p&gt;📈 Observability is critical for real production setups&lt;/p&gt;

&lt;p&gt;📬 Notifications save time during active development cycles&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Try It Yourself
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; GitHub Infra Repo (with manifests): [&lt;a href="https://github.com/Kapil-Bhalodiya/E-Commerce/infra" rel="noopener noreferrer"&gt;https://github.com/Kapil-Bhalodiya/E-Commerce/infra&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;  ArgoCD app config: [&lt;a href="https://github.com/Kapil-Bhalodiya/E-Commerce/infra/config/applications.yaml" rel="noopener noreferrer"&gt;https://github.com/Kapil-Bhalodiya/E-Commerce/infra/config/applications.yaml&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This pipeline is more than a pet project — it’s a blueprint for building production-ready, secure, and scalable deployment workflows using only open-source tools.&lt;/p&gt;

&lt;p&gt;If you're starting your DevOps journey or want to adopt GitOps at scale, this setup might help you avoid months of trial and error.&lt;/p&gt;

&lt;p&gt;💬 Feel free to drop your thoughts, suggestions, or questions in the comments.&lt;br&gt;
I’m open to feedback and collaborations!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>gitops</category>
      <category>cicd</category>
      <category>jenkins</category>
    </item>
  </channel>
</rss>
