<?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: Hamza Shaukat</title>
    <description>The latest articles on DEV Community by Hamza Shaukat (@hamza_shaukat_00279f7fa91).</description>
    <link>https://dev.to/hamza_shaukat_00279f7fa91</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%2F2251626%2Fecbc7049-54c9-4796-a6ed-0d330c810d6b.jpg</url>
      <title>DEV Community: Hamza Shaukat</title>
      <link>https://dev.to/hamza_shaukat_00279f7fa91</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hamza_shaukat_00279f7fa91"/>
    <language>en</language>
    <item>
      <title>Sidecar Pod</title>
      <dc:creator>Hamza Shaukat</dc:creator>
      <pubDate>Thu, 23 Jan 2025 16:42:27 +0000</pubDate>
      <link>https://dev.to/hamza_shaukat_00279f7fa91/sidecar-pod-5e8j</link>
      <guid>https://dev.to/hamza_shaukat_00279f7fa91/sidecar-pod-5e8j</guid>
      <description>&lt;h1&gt;
  
  
  Sidecar Pod 🚀
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;sidecar pattern&lt;/strong&gt; is used when you want to enhance or extend the functionality of a main container without modifying it. 💯&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Use Sidecars? 🤔
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✨ Separation of Concerns
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Main container&lt;/strong&gt;: Focuses on its core application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sidecar&lt;/strong&gt;: Handles supporting functions independently.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Use Cases 💠
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Logging&lt;/strong&gt;: Collecting and forwarding logs from the main container.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring&lt;/strong&gt;: Gathering metrics and telemetry data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proxy/Ambassador&lt;/strong&gt;: Managing network traffic or API calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration Sync&lt;/strong&gt;: Updating configurations without restarting the main container.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Benefits 🌟
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modularity&lt;/strong&gt;: Easy to add/remove functionality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintainability&lt;/strong&gt;: Update sidecar without touching the main application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusability&lt;/strong&gt;: Same sidecar can be used with different main containers.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Example YAML: Sidecar Pod Configuration 📝
&lt;/h3&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;sidecar-pod&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;main-container&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;busybox:stable&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sh"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-c"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;echo&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'Hello&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;from&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;busybox'&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;/output-dir/data.txt&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;while&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;true;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;do&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sleep&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;5;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;done"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;volumeMounts&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;shared-volumes&lt;/span&gt;
      &lt;span class="na"&gt;mountPath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/output-dir&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;side-car&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;busybox:stable&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sh"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-c"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;while&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;true;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;do&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;cat&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;/input-dir/data.txt;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sleep&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;5;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;done"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;volumeMounts&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;shared-volumes&lt;/span&gt;
      &lt;span class="na"&gt;mountPath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/input-dir&lt;/span&gt;

  &lt;span class="na"&gt;volumes&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;shared-volumes&lt;/span&gt;
    &lt;span class="na"&gt;emptyDir&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Useful Commands 🖥️
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Check Nodes:
&lt;/h3&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;h3&gt;
  
  
  Describe Pod:
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check Logs:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl logs sidecar-pod &lt;span class="nt"&gt;-c&lt;/span&gt; side-car
kubectl logs &amp;lt;pod-name&amp;gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &amp;lt;container-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  If Configuration Changes are Made: 🔄
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Additional Command:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe pod sidecar-pod | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;💡 &lt;strong&gt;Tip&lt;/strong&gt;: Sidecars are a powerful way to decouple functionalities in Kubernetes pods, making your architecture more scalable and maintainable!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Multi Container Pod</title>
      <dc:creator>Hamza Shaukat</dc:creator>
      <pubDate>Thu, 23 Jan 2025 16:40:50 +0000</pubDate>
      <link>https://dev.to/hamza_shaukat_00279f7fa91/multi-container-pod-415i</link>
      <guid>https://dev.to/hamza_shaukat_00279f7fa91/multi-container-pod-415i</guid>
      <description>&lt;h2&gt;
  
  
  Sample YAML used in the demo
&lt;/h2&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-pod&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;app.kubernetes.io/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-container&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;busybox:1.28&lt;/span&gt;
    &lt;span class="na"&gt;env&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;FIRSTNAME&lt;/span&gt;
      &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Piyush"&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sh'&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-c'&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;echo&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;The&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;app&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;is&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;running!&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sleep&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;3600'&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;initContainers&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;init-myservice&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;busybox:1.28&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sh'&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-c'&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;until&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;nslookup&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;myservice.default.svc.cluster.local;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;do&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;echo&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;waiting&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;myservice;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sleep&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;2;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;done'&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;init-mydb&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;busybox:1.28&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sh'&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-c'&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;until&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;nslookup&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;mydb.default.svc.cluster.local;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;do&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;echo&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;waiting&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;mydb;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sleep&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;2;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;done'&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Commands
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;k create -f 8.yaml
k get pods
k logs myapp-pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Specific Logs
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;k logs myapp-pod  -c  init-myservice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Deploy and Expose Nginx
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;k create deploy nginx-deploy --image nginx --port 80
k get deploy 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;k expose  deploy nginx-deploy --name myservice   --port 80

k logs myapp-pod  -c  init-myservice
k exec -it myapp-pod -- printenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Kubernetes Rollouts</title>
      <dc:creator>Hamza Shaukat</dc:creator>
      <pubDate>Thu, 23 Jan 2025 16:36:49 +0000</pubDate>
      <link>https://dev.to/hamza_shaukat_00279f7fa91/kubernetes-rollouts-3k0k</link>
      <guid>https://dev.to/hamza_shaukat_00279f7fa91/kubernetes-rollouts-3k0k</guid>
      <description>&lt;h2&gt;
  
  
  Key Features 🌟
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Zero-Downtime Updates 🔄
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Enables application updates without service interruption&lt;/li&gt;
&lt;li&gt;Gradually replaces old pods with new ones&lt;/li&gt;
&lt;li&gt;Maintains application availability during updates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Version Control 📝
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Manages different versions of your application&lt;/li&gt;
&lt;li&gt;Keeps track of deployment history&lt;/li&gt;
&lt;li&gt;Enables easy rollback if issues occur&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Traffic Management 🚦
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Controls how traffic is shifted to new versions&lt;/li&gt;
&lt;li&gt;Supports various deployment strategies:

&lt;ul&gt;
&lt;li&gt;Rolling updates (default)&lt;/li&gt;
&lt;li&gt;Blue-green deployments&lt;/li&gt;
&lt;li&gt;Canary releases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Health Monitoring 🏥
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Monitors new pods during deployment&lt;/li&gt;
&lt;li&gt;Automatically stops rollout if issues detected&lt;/li&gt;
&lt;li&gt;Ensures system stability&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resource Management ⚙️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Controls resource allocation during updates&lt;/li&gt;
&lt;li&gt;Prevents system overload&lt;/li&gt;
&lt;li&gt;Maintains performance standards&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sample Deployment Configuration 📄
&lt;/h2&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;apps/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;Deployment&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-deployment&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;app&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;tier&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&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;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;alnafi-app&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&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;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;alnafi-app&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;nginx-container&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&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Essential Commands 💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Deployment Management
&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;# Apply deployment with recording&lt;/span&gt;
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; &amp;lt;file.yaml&amp;gt; &lt;span class="nt"&gt;--record&lt;/span&gt;

&lt;span class="c"&gt;# Check pod status&lt;/span&gt;
kubectl get pod

&lt;span class="c"&gt;# Check rollout status&lt;/span&gt;
kubectl rollout status deployment/&amp;lt;deployment-name&amp;gt;

&lt;span class="c"&gt;# View rollout history&lt;/span&gt;
kubectl rollout &lt;span class="nb"&gt;history &lt;/span&gt;deployment/&amp;lt;deployment-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Update &amp;amp; Rollback
&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;# Update container image&lt;/span&gt;
kubectl &lt;span class="nb"&gt;set &lt;/span&gt;image deployment myapp-deployment nginx-container&lt;span class="o"&gt;=&lt;/span&gt;nginx:1.22-alpine

&lt;span class="c"&gt;# Apply rolling update&lt;/span&gt;
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; rolling.yaml

&lt;span class="c"&gt;# View specific revision history&lt;/span&gt;
kubectl rollout &lt;span class="nb"&gt;history &lt;/span&gt;deployment/&amp;lt;deployment-name&amp;gt; &lt;span class="nt"&gt;--revision&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2

&lt;span class="c"&gt;# Rollback to previous deployment&lt;/span&gt;
kubectl rollout undo deploy myapp-deployment

&lt;span class="c"&gt;# View deployment history&lt;/span&gt;
kubectl rollout &lt;span class="nb"&gt;history &lt;/span&gt;deployment myapp-deployment

&lt;span class="c"&gt;# Rollback to specific version&lt;/span&gt;
kubectl rollout undo deploy myapp-deployment &lt;span class="nt"&gt;--to-revision&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>RHCSA Administration Script</title>
      <dc:creator>Hamza Shaukat</dc:creator>
      <pubDate>Thu, 05 Dec 2024 19:09:22 +0000</pubDate>
      <link>https://dev.to/hamza_shaukat_00279f7fa91/rhcsa-administration-script-3pfd</link>
      <guid>https://dev.to/hamza_shaukat_00279f7fa91/rhcsa-administration-script-3pfd</guid>
      <description>&lt;p&gt;Overview This Bash script provides a robust set of tools for Linux system administration, designed to simplify complex management tasks.&lt;br&gt;
Features&lt;/p&gt;

&lt;p&gt;🔐 User and Group Management&lt;/p&gt;

&lt;p&gt;🚀 Service Control - 🌐 Network Configuration&lt;/p&gt;

&lt;p&gt;📦 Package Management&lt;/p&gt;

&lt;p&gt;🔥 Firewall Administration&lt;/p&gt;

&lt;p&gt;⏰ Job Scheduling&lt;/p&gt;

&lt;p&gt;💽 Advanced LVM Management&lt;/p&gt;

&lt;p&gt;📂 Filesystem Management&lt;/p&gt;

&lt;p&gt;🗃️ RAID Configuration&lt;/p&gt;

&lt;p&gt;🛡️SELinux Management&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash

# Define colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color

# Helper function to pause and return to menu
pause() {
    read -p "Press [Enter] key to continue..."
}

# Manage Users and Groups
manage_users_groups() {
    echo -e "${GREEN}Manage Users and Groups...${NC}"
    echo "1. Add User"
    echo "2. Delete User"
    echo "3. Set User Password"
    echo "4. Add Group"
    echo "5. Delete Group"
    echo "6. Assign User to Group"
    read -p "Select an option: " ug_option
    case $ug_option in
        1)
            read -p "Enter username: " username
            sudo useradd "$username"
            echo "User $username added."
            ;;
        2)
            read -p "Enter username to delete: " username
            sudo userdel "$username"
            echo "User $username deleted."
            ;;
        3)
            read -p "Enter username to set password: " username
            sudo passwd "$username"
            ;;
        4)
            read -p "Enter group name: " group
            sudo groupadd "$group"
            echo "Group $group added."
            ;;
        5)
            read -p "Enter group name to delete: " group
            sudo groupdel "$group"
            echo "Group $group deleted."
            ;;
        6)
            read -p "Enter username: " username
            read -p "Enter group name: " group
            sudo usermod -aG "$group" "$username"
            echo "User $username added to group $group."
            ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Manage Services
manage_services() {
    echo -e "${GREEN}Manage Services...${NC}"
    echo "1. Start Service"
    echo "2. Stop Service"
    echo "3. Restart Service"
    echo "4. Enable Service"
    echo "5. Disable Service"
    echo "6. Check Service Status"
    read -p "Select an option: " service_option
    read -p "Enter service name: " service
    case $service_option in
        1) sudo systemctl start "$service" ;;
        2) sudo systemctl stop "$service" ;;
        3) sudo systemctl restart "$service" ;;
        4) sudo systemctl enable "$service" ;;
        5) sudo systemctl disable "$service" ;;
        6) sudo systemctl status "$service" ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Manage Network
manage_network() {
    echo -e "${GREEN}Manage Network...${NC}"
    echo "1. View Network Configuration"
    echo "2. Restart Network"
    read -p "Select an option: " net_option
    case $net_option in
        1) ip addr show ;;
        2) sudo systemctl restart NetworkManager ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Manage Packages
manage_packages() {
    echo -e "${GREEN}Manage Packages...${NC}"
    echo "1. Install Package"
    echo "2. Remove Package"
    echo "3. Update System"
    read -p "Select an option: " pkg_option
    case $pkg_option in
        1)
            read -p "Enter package name to install: " pkg
            sudo yum install -y "$pkg"
            ;;
        2)
            read -p "Enter package name to remove: " pkg
            sudo yum remove -y "$pkg"
            ;;
        3) sudo yum update -y ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Manage Firewall
manage_firewall() {
    echo -e "${GREEN}Manage Firewall...${NC}"
    echo "1. Start Firewall"
    echo "2. Stop Firewall"
    echo "3. Enable Firewall"
    echo "4. Disable Firewall"
    echo "5. Add Firewall Rule"
    echo "6. Remove Firewall Rule"
    read -p "Select an option: " fw_option
    case $fw_option in
        1) sudo systemctl start firewalld ;;
        2) sudo systemctl stop firewalld ;;
        3) sudo systemctl enable firewalld ;;
        4) sudo systemctl disable firewalld ;;
        5)
            read -p "Enter rule (e.g., port/service): " rule
            sudo firewall-cmd --permanent --add-service="$rule"
            sudo firewall-cmd --reload
            ;;
        6)
            read -p "Enter rule to remove (e.g., port/service): " rule
            sudo firewall-cmd --permanent --remove-service="$rule"
            sudo firewall-cmd --reload
            ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Manage Jobs (cron, at)
manage_jobs() {
    echo -e "${GREEN}Manage Jobs...${NC}"
    echo "1. Schedule Cron Job"
    echo "2. Schedule At Job"
    read -p "Select an option: " job_option
    case $job_option in
        1)
            echo "Enter cron job in the format: * * * * * /path/to/script"
            read -p "Enter cron job: " cronjob
            (crontab -l 2&amp;gt;/dev/null; echo "$cronjob") | crontab -
            echo "Cron job scheduled."
            ;;
        2)
            echo "Enter the command to schedule (e.g., ls)"
            read -p "Enter command: " cmd
            read -p "Enter time (e.g., now + 1 minute): " time
            echo "$cmd" | at "$time"
            echo "At job scheduled."
            ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Advanced LVM Management
manage_lvm_advanced() {
    echo -e "${GREEN}Advanced LVM Management...${NC}"
    echo "1. Create Physical Volume (PV)"
    echo "2. Create Volume Group (VG)"
    echo "3. Create Logical Volume (LV)"
    echo "4. Extend Logical Volume"
    read -p "Select an option: " lvm_option
    case $lvm_option in
        1)
            read -p "Enter disk (e.g., /dev/sdb): " disk
            sudo pvcreate "$disk"
            echo "Physical Volume created on $disk."
            ;;
        2)
            read -p "Enter volume group name: " vg_name
            read -p "Enter physical volume (e.g., /dev/sdb): " pv
            sudo vgcreate "$vg_name" "$pv"
            echo "Volume Group $vg_name created."
            ;;
        3)
            read -p "Enter logical volume name: " lv_name
            read -p "Enter volume group: " vg
            read -p "Enter size (e.g., 10G): " size
            sudo lvcreate -L "$size" -n "$lv_name" "$vg"
            echo "Logical Volume $lv_name created."
            ;;
        4)
            read -p "Enter logical volume path (e.g., /dev/vg/lv): " lv_path
            read -p "Enter size to extend (e.g., +5G): " size
            sudo lvextend -L "$size" "$lv_path"
            sudo resize2fs "$lv_path"
            echo "Logical Volume extended."
            ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Advanced Filesystem Management
manage_filesystems_advanced() {
    echo -e "${GREEN}Advanced Filesystem Management...${NC}"
    echo "1. Create Filesystem"
    echo "2. Resize Filesystem"
    read -p "Select an option: " fs_option
    case $fs_option in
        1)
            read -p "Enter partition or volume (e.g., /dev/sdb1): " partition
            sudo mkfs.ext4 "$partition"
            echo "Filesystem created on $partition."
            ;;
        2)
            read -p "Enter filesystem path (e.g., /dev/vg/lv): " fs_path
            sudo resize2fs "$fs_path"
            echo "Filesystem resized."
            ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Advanced RAID Management
manage_raid_advanced() {
    echo -e "${GREEN}Advanced RAID Management...${NC}"
    echo "1. Create RAID Array"
    echo "2. Remove RAID Array"
    read -p "Select an option: " raid_option
    case $raid_option in
        1)
            read -p "Enter RAID level (e.g., 0, 1, 5): " level
            read -p "Enter devices (e.g., /dev/sd{b,c,d}): " devices
            sudo mdadm --create --verbose /dev/md0 --level="$level" --raid-devices=$(echo "$devices" | wc -w) $devices
            echo "RAID array created."
            ;;
        2)
            read -p "Enter RAID array (e.g., /dev/md0): " array
            sudo mdadm --stop "$array"
            sudo mdadm --remove "$array"
            echo "RAID array removed."
            ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Manage SELinux
manage_selinux() {
    echo -e "${GREEN}SELinux Management...${NC}"
    echo "1. View SELinux Status"
    echo "2. Change SELinux Mode"
    echo "3. Manage SELinux Contexts"
    read -p "Select an option: " selinux_option
    case $selinux_option in
        1) sudo sestatus ;;
        2)
            echo "Change SELinux Mode (enforcing, permissive, disabled)"
            read -p "Enter mode: " mode
            sudo setenforce "$mode"
            ;;
        3)
            echo "Manage SELinux Contexts"
            # Add SELinux context management logic
            ;;
        *)
            echo -e "${RED}Invalid option.${NC}"
            ;;
    esac
    pause
}

# Main Menu
while true; do
    echo -e "${GREEN}RHCSA Administration Script${NC}"
    echo "1. Manage Users and Groups"
    echo "2. Manage Services"
    echo "3. Manage Network"
    echo "4. Manage Packages"
    echo "5. Manage Firewall"
    echo "6. Manage Jobs"
    echo "7. Advanced LVM Management"
    echo "8. Advanced Filesystem Management"
    echo "9. Advanced RAID Management"
    echo "10. SELinux Management"
    echo "11. Exit"
    read -p "Select an option: " choice
    case $choice in
        1) manage_users_groups ;;
        2) manage_services ;;
        3) manage_network ;;
        4) manage_packages ;;
        5) manage_firewall ;;
        6) manage_jobs ;;
        7) manage_lvm_advanced ;;
        8) manage_filesystems_advanced ;;
        9) manage_raid_advanced ;;
        10) manage_selinux ;;
        11) exit 0 ;;
        *) echo -e "${RED}Invalid option selected.${NC}" ;;
    esac
done

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
``&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br&gt;
vim admin_script.sh&lt;/p&gt;

&lt;p&gt;chmod +x admin_script.sh&lt;/p&gt;

&lt;p&gt;sudo ./admin_script.sh&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DevOps vs SRE</title>
      <dc:creator>Hamza Shaukat</dc:creator>
      <pubDate>Thu, 05 Dec 2024 18:26:45 +0000</pubDate>
      <link>https://dev.to/hamza_shaukat_00279f7fa91/devops-vs-sre-49dh</link>
      <guid>https://dev.to/hamza_shaukat_00279f7fa91/devops-vs-sre-49dh</guid>
      <description>&lt;p&gt;&lt;strong&gt;Focus and Objectives&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevOps: 🚀 Speed and Collaboration – Focuses on uniting dev and ops teams to deliver software faster and with higher quality.&lt;/p&gt;

&lt;p&gt;SRE: ⚙️ Reliability and Stability – Applies software engineering principles to ensure system uptime and performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team Structure&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DevOps: 🌍 Collaborative Culture – Works across teams, often without dedicated roles.

SRE: 👨‍💻 Specialized Engineers – Focused team ensuring system reliability and operational excellence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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