<?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: Jution Candra Kirana</title>
    <description>The latest articles on DEV Community by Jution Candra Kirana (@jutionck).</description>
    <link>https://dev.to/jutionck</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%2F881264%2Fd03f09f0-219f-462d-bcb0-e22c72091ea7.jpeg</url>
      <title>DEV Community: Jution Candra Kirana</title>
      <link>https://dev.to/jutionck</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jutionck"/>
    <language>en</language>
    <item>
      <title>🚀 [Free or Affordable] Next.js Portfolio Template – Build Your Personal Site in Minutes!</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Thu, 26 Jun 2025 09:27:21 +0000</pubDate>
      <link>https://dev.to/jutionck/free-or-affordable-nextjs-portfolio-template-build-your-personal-site-in-minutes-4p9d</link>
      <guid>https://dev.to/jutionck/free-or-affordable-nextjs-portfolio-template-build-your-personal-site-in-minutes-4p9d</guid>
      <description>&lt;h1&gt;
  
  
  🚀 Next.js Portfolio Template – Build Your Personal Site in Minutes!
&lt;/h1&gt;

&lt;p&gt;Hi Devs! 👋&lt;/p&gt;

&lt;p&gt;Building a great portfolio website shouldn't take hours of boilerplate work.&lt;br&gt;&lt;br&gt;
That’s why I created this &lt;strong&gt;Next.js Portfolio Template&lt;/strong&gt; — a plug-and-play, modern, responsive solution to help you launch your personal site in &lt;em&gt;minutes&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What’s Inside?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;⚙️ &lt;strong&gt;Built with Next.js + TailwindCSS&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;Fully responsive&lt;/strong&gt; (desktop/tablet/mobile)
&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;SEO-friendly&lt;/strong&gt; and fast
&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;Prebuilt Pages&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Home&lt;/li&gt;
&lt;li&gt;About Me&lt;/li&gt;
&lt;li&gt;Projects&lt;/li&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Blog&lt;/li&gt;
&lt;li&gt;Contact
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;📝 &lt;strong&gt;Markdown-powered blog system&lt;/strong&gt;
&lt;/li&gt;

&lt;li&gt;🚀 &lt;strong&gt;Deploy-ready&lt;/strong&gt; to Vercel in one click&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎥 Live Demo
&lt;/h2&gt;

&lt;p&gt;Watch the full preview:&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://youtu.be/Lc2vrTBppxw" rel="noopener noreferrer"&gt;https://youtu.be/Lc2vrTBppxw&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📥 Download
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Get it now for only Rp9.900 (~$0.60)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
🔗 &lt;a href="https://lynk.id/jutionck/2e0p52r0lx16" rel="noopener noreferrer"&gt;https://lynk.id/jutionck/2e0p52r0lx16&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Source code (.zip)&lt;/li&gt;
&lt;li&gt;✅ Simple usage guide&lt;/li&gt;
&lt;li&gt;✅ Free minor updates&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  👀 Who is This For?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Students building their first portfolio
&lt;/li&gt;
&lt;li&gt;Freelancers &amp;amp; developers needing fast setups
&lt;/li&gt;
&lt;li&gt;Job seekers applying for dev positions
&lt;/li&gt;
&lt;li&gt;Creators sharing projects &amp;amp; blogs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🙌 Get Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download the template&lt;/li&gt;
&lt;li&gt;Open in your code editor&lt;/li&gt;
&lt;li&gt;Customize content (texts, colors, images)&lt;/li&gt;
&lt;li&gt;Deploy with &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; or your own host&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💬 Let’s Connect
&lt;/h2&gt;

&lt;p&gt;Feel free to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leave feedback in the comments&lt;/li&gt;
&lt;li&gt;Fork the template and make it better&lt;/li&gt;
&lt;li&gt;Tag me if you build with it!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading, and happy building! 🚀&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;P.S. I'm working on more templates like this. Stay tuned for updates!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>nextjs</category>
      <category>portfolio</category>
      <category>webdev</category>
      <category>template</category>
    </item>
    <item>
      <title>Kubernetes: Exec</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Fri, 18 Oct 2024 08:35:57 +0000</pubDate>
      <link>https://dev.to/jutionck/kubernetes-exec-4723</link>
      <guid>https://dev.to/jutionck/kubernetes-exec-4723</guid>
      <description>&lt;p&gt;Let's return to the &lt;code&gt;docker&lt;/code&gt; material for a moment. In Docker, you can enter a running container using the &lt;code&gt;docker exec&lt;/code&gt; command. Similarly, in Kubernetes, you can enter a container within a pod using the &lt;code&gt;kubectl exec&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catatan&lt;/strong&gt;: Since a pod can have more than one container, you can specify the container you want to enter by using the &lt;code&gt;-c {container_name}&lt;/code&gt; option. The full command looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;nama_pod&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;nama_container&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; /bin/sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, if you want to enter the container that was created earlier, the command would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; sample-nginx &lt;span class="nt"&gt;--&lt;/span&gt; /bin/sh

/ &lt;span class="c"&gt;# ls&lt;/span&gt;
bin                   home                  proc                  sys
dev                   lib                   root                  tmp
docker-entrypoint.d   media                 run                   usr
docker-entrypoint.sh  mnt                   sbin                  var
etc                   opt                   srv
/ &lt;span class="c"&gt;#&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Kubernetes: Pod</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Fri, 18 Oct 2024 08:30:39 +0000</pubDate>
      <link>https://dev.to/jutionck/kubernetes-pod-20i7</link>
      <guid>https://dev.to/jutionck/kubernetes-pod-20i7</guid>
      <description>&lt;p&gt;Before continuing, make sure you have installed the &lt;code&gt;kubernetes&lt;/code&gt;extension shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fjwaj7sxzjbn0m48os7as.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fjwaj7sxzjbn0m48os7as.png" alt="Kuberneted Extension" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have it installed, create a new file. Here, we will create a file named &lt;code&gt;pod.yaml&lt;/code&gt;. Since you have installed the Kubernetes extension, you don't need to write everything out manually. Just type &lt;code&gt;pod&lt;/code&gt; and then press &lt;code&gt;tab&lt;/code&gt;, and a pod template will appear as follows:&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="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Pod&lt;/span&gt;
&lt;span class="na"&gt;metadata&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;myapp&lt;/span&gt;
  &lt;span class="na"&gt;labels&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;myapp&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&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;myapp&lt;/span&gt;
      &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;Image&amp;gt;&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;limits&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;128Mi'&lt;/span&gt;
          &lt;span class="na"&gt;cpu&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;500m'&lt;/span&gt;
      &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;containerPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;Port&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's no need to memorize the above structure. If you've learned &lt;code&gt;docker&lt;/code&gt;, this will be familiar.&lt;/p&gt;

&lt;p&gt;In this practice, we will create a pod with the &lt;code&gt;nginx&lt;/code&gt; container:&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="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Pod&lt;/span&gt;
&lt;span class="na"&gt;metadata&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;sample-nginx&lt;/span&gt;
  &lt;span class="na"&gt;labels&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;sample-nginx&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&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;sample-nginx&lt;/span&gt;
      &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx:alpine&lt;/span&gt;
      &lt;span class="na"&gt;resources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;limits&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;memory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;10Mi'&lt;/span&gt;
          &lt;span class="na"&gt;cpu&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;10m'&lt;/span&gt;
      &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;containerPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, to create the pod defined above, use the commands explained earlier in the POD section.&lt;/p&gt;

&lt;p&gt;So, the command will be like this (&lt;em&gt;the &lt;code&gt;pod.yaml&lt;/code&gt; file in this practice is located in the sample folder&lt;/em&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; sample/pod.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If successful, you will see the following information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pod/sample-nginx created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, check the pod using the following command:&lt;br&gt;
&lt;/p&gt;

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

NAME           READY   STATUS               RESTARTS   AGE
sample-nginx   0/1     ContainerCreating    0          89s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Focus on the &lt;code&gt;STATUS&lt;/code&gt;. Here are some common statuses that may appear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ContainerCreating&lt;/code&gt;: Kubernetes is preparing the container for the pod. This process includes pulling the required image (like nginx:alpine), creating the container, and connecting it to the cluster's network. If the pod remains in this status for too long, there may be issues downloading the image or starting the container.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Running&lt;/code&gt;: The pod is running, and the container inside it is active. This status indicates that everything is functioning normally.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Pending&lt;/code&gt;: The pod is not yet ready to run because one of the preparation steps (like scheduling or image pulling) has not been completed. This usually happens if there are issues scheduling the pod to a node.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Succeeded&lt;/code&gt;: The pod has completed successfully, usually used for pods with jobs or cron jobs that have finished executing their tasks.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Failed&lt;/code&gt;: The pod has failed to run. The reasons can vary, such as configuration errors or issues with the container itself.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CrashLoopBackOff&lt;/code&gt;: The pod continuously fails to start, and Kubernetes is trying to restart the container. This indicates that the container is encountering problems each time it attempts to run.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, you can check the details of the created container by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe pod sample-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After hitting [enter], you will see detailed information about the container.&lt;/p&gt;

&lt;p&gt;Next, we will try port-forwarding, which should have been covered in the docker material.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl port-forward pod/sample-nginx 8080:80

Forwarding from 127.0.0.1:8080 -&amp;gt; 80
Forwarding from &lt;span class="o"&gt;[&lt;/span&gt;::1]:8080 -&amp;gt; 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please open your browser to access &lt;code&gt;nginx&lt;/code&gt;. Since we have done &lt;code&gt;port-forward&lt;/code&gt;, the access will no longer be to port &lt;code&gt;:80&lt;/code&gt; but to port &lt;code&gt;:8080&lt;/code&gt;. The complete URL will be &lt;code&gt;localhost:8080&lt;/code&gt;, and the result will be as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Flpt2c92ipvn12rauolus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Flpt2c92ipvn12rauolus.png" alt="Nginx Run on Web" width="800" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>beginners</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Kubernetes: Install Tools</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Fri, 18 Oct 2024 04:24:46 +0000</pubDate>
      <link>https://dev.to/jutionck/kubernetes-install-tools-5dik</link>
      <guid>https://dev.to/jutionck/kubernetes-install-tools-5dik</guid>
      <description>&lt;h2&gt;
  
  
  Minikube
&lt;/h2&gt;

&lt;p&gt;In this practice, we will be using &lt;code&gt;minikube&lt;/code&gt;. For more details about minikube, you can check the following URL: &lt;a href="https://minikube.sigs.k8s.io/docs/" rel="noopener noreferrer"&gt;https://minikube.sigs.k8s.io/docs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the installation steps on that website, as the documentation is clear, so no need to write it here hhi :XD.&lt;/p&gt;

&lt;p&gt;Once installed, you can start &lt;code&gt;minikube&lt;/code&gt; with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;minikube start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If successful, you'll see something like this:I&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;➜  ~ minikube start
😄  minikube v1.33.1 on Darwin 14.6.1
🆕  Kubernetes 1.30.0 is now available. If you would like to upgrade, specify: &lt;span class="nt"&gt;--kubernetes-version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;v1.30.0
✨  Using the docker driver based on existing profile
👍  Starting &lt;span class="s2"&gt;"minikube"&lt;/span&gt; primary control-plane node &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"minikube"&lt;/span&gt; cluster
🚜  Pulling base image v0.0.44 ...
🔄  Restarting existing docker container &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="s2"&gt;"minikube"&lt;/span&gt; ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait until the process finishes. Once done, you'll see the following information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;...
🏄  Done! kubectl is now configured to use &lt;span class="s2"&gt;"minikube"&lt;/span&gt; cluster and &lt;span class="s2"&gt;"default"&lt;/span&gt; namespace by default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since &lt;code&gt;minikube&lt;/code&gt; runs on docker, you can verify it using the &lt;code&gt;docker ps -a&lt;/code&gt; command to see that minikube will create one running container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Minikube&lt;/code&gt; is a tool meant for learning purposes and is designed to mimic Kubernetes as closely as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubectl
&lt;/h2&gt;

&lt;p&gt;Next, an equally important tool is &lt;code&gt;kubectl&lt;/code&gt;. You should have &lt;code&gt;kubectl&lt;/code&gt; installed as well. For more information and installation instructions, visit the following URL: &lt;a href="https://kubernetes.io/docs/tasks/tools/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/tasks/tools/&lt;/a&gt;. Follow the instructions according to your operating system.&lt;/p&gt;

&lt;p&gt;Once installed, you can verify by running &lt;code&gt;kubectl version&lt;/code&gt;, which should output something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Client Version: v1.30.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.26.1
WARNING: version difference between client &lt;span class="o"&gt;(&lt;/span&gt;1.30&lt;span class="o"&gt;)&lt;/span&gt; and server &lt;span class="o"&gt;(&lt;/span&gt;1.26&lt;span class="o"&gt;)&lt;/span&gt; exceeds the supported minor version skew of +/-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, we will check if &lt;code&gt;minikube&lt;/code&gt; has been set up as a cluster by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl config current-context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If successful, the output will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;minikube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Kubernetes: Architecture</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Fri, 18 Oct 2024 04:14:20 +0000</pubDate>
      <link>https://dev.to/jutionck/kubernetes-architecture-55d6</link>
      <guid>https://dev.to/jutionck/kubernetes-architecture-55d6</guid>
      <description>&lt;p&gt;&lt;a href="https://media.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%2Fvxmkggevofaepvhv3iya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fvxmkggevofaepvhv3iya.png" alt="Cluster Architecture" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Master
&lt;/h3&gt;

&lt;p&gt;The Master is the central controller responsible for managing all &lt;code&gt;Nodes&lt;/code&gt; in the Kubernetes cluster. It consists of several components working together to orchestrate and manage applications in the form of containers.&lt;/p&gt;

&lt;h4&gt;
  
  
  ETCD
&lt;/h4&gt;

&lt;p&gt;The first component is &lt;code&gt;etcd&lt;/code&gt;, which can be thought of as the "heart" of Kubernetes. &lt;code&gt;etcd&lt;/code&gt; serves as a &lt;code&gt;database&lt;/code&gt; where all essential information about the cluster is stored. It keeps the configuration and status of applications and nodes in the cluster. If any changes occur, &lt;code&gt;etcd&lt;/code&gt; logs them, ensuring that the system is always aware of what’s happening.&lt;/p&gt;

&lt;h4&gt;
  
  
  API Server
&lt;/h4&gt;

&lt;p&gt;The second component is the &lt;code&gt;API Server&lt;/code&gt;, which acts as the main gateway for communication with Kubernetes. All commands and interactions with the Kubernetes cluster go through the API Server. You can interact with Kubernetes via:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard&lt;/strong&gt;: A web-based interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI (Command Line Interface)&lt;/strong&gt;: Such as kubectl to run commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API&lt;/strong&gt;: Allows other programs to control the cluster automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API Server processes commands, such as creating a pod or modifying configurations, and informs other components to execute the task.&lt;/p&gt;

&lt;h4&gt;
  
  
  Scheduler
&lt;/h4&gt;

&lt;p&gt;The third component is the &lt;code&gt;Scheduler&lt;/code&gt;, which is the "brain" responsible for deciding where a pod (the unit of containers running the application) should be placed in the cluster. The scheduler considers each node’s capacity, like CPU and memory usage, and selects the best node to run the pod.&lt;/p&gt;

&lt;h4&gt;
  
  
  Controller Manager
&lt;/h4&gt;

&lt;p&gt;The fourth component is the &lt;code&gt;Controller Manager&lt;/code&gt;, which ensures that the &lt;code&gt;Kubernetes cluster&lt;/code&gt; functions as intended. For example, if a pod dies, the &lt;code&gt;Controller Manager&lt;/code&gt; is responsible for creating a new one to ensure the application keeps running.&lt;/p&gt;

&lt;h3&gt;
  
  
  Node
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Nodes&lt;/code&gt; are the computers or machines where the application containers are running. Each node has several crucial components that help run and monitor applications.&lt;/p&gt;

&lt;h4&gt;
  
  
  Container Runtime
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;The Container Runtime&lt;/code&gt; is the engine that runs the &lt;code&gt;containers&lt;/code&gt;, such as &lt;code&gt;Docker&lt;/code&gt;, &lt;code&gt;containerd&lt;/code&gt;, or &lt;code&gt;CRI-O&lt;/code&gt;. It is the container runtime that runs the application containers inside the pods. Kubernetes supports multiple container runtimes, enabling the flexibility to run applications inside containers.&lt;/p&gt;

&lt;h4&gt;
  
  
  Kubelet
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;The Kubelet&lt;/code&gt; is an agent running on every node. Its job is to ensure that all the pods scheduled by the scheduler are running properly on the node. Kubelet regularly checks the pods and reports their status back to the &lt;code&gt;API Server&lt;/code&gt;. If there are issues, like a failed pod, Kubelet will either try to fix it or notify the master.&lt;/p&gt;

&lt;h4&gt;
  
  
  Kube-Proxy
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;Kube-Proxy&lt;/code&gt; is responsible for managing network traffic within the cluster. It ensures that the pods can communicate with each other, whether within the same node or across different nodes. Additionally, Kube-Proxy helps route traffic from outside the cluster to the correct pods.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes Master-Node
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Worker Node 1&lt;/th&gt;
&lt;th&gt;Worker Node 2&lt;/th&gt;
&lt;th&gt;Worker Node 3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kubelet&lt;/td&gt;
&lt;td&gt;Kubelet&lt;/td&gt;
&lt;td&gt;Kubelet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kube-Proxy&lt;/td&gt;
&lt;td&gt;Kube-Proxy&lt;/td&gt;
&lt;td&gt;Kube-Proxy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Container Runtime&lt;/td&gt;
&lt;td&gt;Container Runtime&lt;/td&gt;
&lt;td&gt;Container Runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pods&lt;/td&gt;
&lt;td&gt;Pods&lt;/td&gt;
&lt;td&gt;Pods&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  POD
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Pod&lt;/code&gt; is the smallest unit in Kubernetes, where one pod can contain more than one container. Each pod has its own IP address, and pods are ephemeral. Ephemeral means that they are not permanent and can be recreated by Kubernetes if needed.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>containers</category>
    </item>
    <item>
      <title>Kubernetes: Introduction</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Fri, 18 Oct 2024 03:59:48 +0000</pubDate>
      <link>https://dev.to/jutionck/introduction-1oge</link>
      <guid>https://dev.to/jutionck/introduction-1oge</guid>
      <description>&lt;p&gt;Once upon a time, there was a creature known as &lt;code&gt;Kubernetes&lt;/code&gt; or &lt;code&gt;k8s&lt;/code&gt;. Its creator, let’s call it &lt;code&gt;Google&lt;/code&gt;, had vast experience in managing hundreds or even thousands of servers. Google's products, as we know, are accessed by people all over the world, and their performance remains stable. Now, back to &lt;code&gt;Kubernetes&lt;/code&gt;. Kubernetes itself is an open-source orchestration tool designed to manage containers, usually for applications at a fairly large scale or beyond.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F5fbm66td7029v74dzjg5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F5fbm66td7029v74dzjg5.gif" alt="Like an Orchestration" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kubernetes can ensure no downtime for your application, or at least minimize downtime. It has gained popularity along with the increasing adoption of containers and microservices.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Question??????????&lt;/strong&gt; So, can small applications use &lt;code&gt;Kubernetes&lt;/code&gt;?
&lt;/h4&gt;

&lt;p&gt;Small applications can certainly use Kubernetes, but there are several factors to consider before deciding whether Kubernetes is the right solution:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Complexity&lt;/strong&gt;: Kubernetes is a powerful tool but can be more complex than simpler solutions like Docker Compose. For small applications, it might take more effort to set up and maintain Kubernetes compared to the benefits you’ll get.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overhead&lt;/strong&gt;: Kubernetes requires additional resources to run the control plane, nodes, and networking, which can be excessive for small applications that only need a few containers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Even though the application is small now if the plan is for it to grow and scale quickly, Kubernetes can provide automation, scalability, and reliability advantages for the future.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational&lt;/strong&gt; cost: Managing Kubernetes requires higher operational time and expense, both in infrastructure and in the team maintaining it. Small applications that don’t need high scalability may find more cost-effective solutions elsewhere.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The answer depends on the application's long-term needs. If the small application doesn’t require many containers or high scalability, Kubernetes might feel overkill. However, if there’s a long-term plan to scale, Kubernetes could be a solid investment.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Pssst... the answer above is from ChatGPT... :XD&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But in essence, the point is to adjust it to your needs... and of course, money hahaha.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fi3vhseibr28kelvrt51n.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fi3vhseibr28kelvrt51n.gif" alt="Container Scalling" width="607" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>kubernetes</category>
      <category>container</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Day 7 - Golang Unit Testing</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Mon, 04 Sep 2023 06:09:58 +0000</pubDate>
      <link>https://dev.to/jutionck/day-7-golang-unit-testing-2ipi</link>
      <guid>https://dev.to/jutionck/day-7-golang-unit-testing-2ipi</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/o3DUM3hHaqU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 6 - Golang Authentication With JWT</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Mon, 04 Sep 2023 06:09:26 +0000</pubDate>
      <link>https://dev.to/jutionck/day-6-golang-authentication-with-jwt-3mfg</link>
      <guid>https://dev.to/jutionck/day-6-golang-authentication-with-jwt-3mfg</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/IPYL4XHIe-I"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 5 - Golang Middleware Log With Logrus</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Mon, 04 Sep 2023 06:08:29 +0000</pubDate>
      <link>https://dev.to/jutionck/day-5-golang-middleware-log-with-logrus-jn6</link>
      <guid>https://dev.to/jutionck/day-5-golang-middleware-log-with-logrus-jn6</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/t1XIahgBfgk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 4 - Golang Database With GORM</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Mon, 04 Sep 2023 06:07:34 +0000</pubDate>
      <link>https://dev.to/jutionck/day-4-golang-database-with-gorm-15kj</link>
      <guid>https://dev.to/jutionck/day-4-golang-database-with-gorm-15kj</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/CfTepX2o4Z0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 3 - Golang Database With SQLC</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Mon, 04 Sep 2023 04:56:00 +0000</pubDate>
      <link>https://dev.to/jutionck/day-3-golang-database-with-sqlc-pn0</link>
      <guid>https://dev.to/jutionck/day-3-golang-database-with-sqlc-pn0</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/twY0cz2y69Q"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 2 - Golang Database Native (PostgreSQL)</title>
      <dc:creator>Jution Candra Kirana</dc:creator>
      <pubDate>Mon, 04 Sep 2023 04:53:30 +0000</pubDate>
      <link>https://dev.to/jutionck/day-2-golang-database-native-postgresql-58fm</link>
      <guid>https://dev.to/jutionck/day-2-golang-database-native-postgresql-58fm</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/8sCpRpk2z-k"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
