<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Saiyam Pathak]]></title><description><![CDATA[Saiyam Pathak]]></description><link>https://saiyampathak.com</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 23:48:57 GMT</lastBuildDate><atom:link href="https://saiyampathak.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Saiyam Pathak - Celebrating 2024]]></title><description><![CDATA[As we move into the next year, I think it’s the perfect time to reflect on and celebrate everything we have achieved this year. Everyone has their ups and downs, but that should not stop you from moving forward. Like time, the clock never stops, and ...]]></description><link>https://saiyampathak.com/saiyam-pathak-celebrating-2024</link><guid isPermaLink="true">https://saiyampathak.com/saiyam-pathak-celebrating-2024</guid><category><![CDATA[Kubernetes]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[CNCF]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sun, 29 Dec 2024 12:13:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1735473675118/76292564-6b2d-406e-a5f3-a4d5b5ace68e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As we move into the next year, I think it’s the perfect time to reflect on and celebrate everything we have achieved this year. Everyone has their ups and downs, but that should not stop you from moving forward. Like time, the clock never stops, and neither should you. As you read this, I encourage each and every one of you to reflect on your 2024 journey, celebrate your wins, embrace the lessons your struggles taught you, and step into a stronger 2025 with a renewed mindset, mission, and set of goals.</p>
<h1 id="heading-2024-highlights">2024 Highlights</h1>
<h2 id="heading-launching-buildsafe">Launching BuildSafe</h2>
<p><a target="_blank" href="https://buildsafe.dev/">BuildSafe</a>, a project designed to address compromised supply chains by helping organizations build tamper-proof, zero-CVE artifacts, has had a groundbreaking year. Its developer-friendly approach and compliance with government regulations have positioned it as a transformative tool in the cloud-native ecosystem.<br />Key milestones for BuildSafe this year:</p>
<ul>
<li><p><strong>Zero-CVE Base and Application Images:</strong> Empowered organizations to create secure, zero-CVE images, ensuring high standards of security and reliability.</p>
</li>
<li><p><strong>Hermetic Builds:</strong> Introduced seamless hermetic builds for organizations to achieve superior supply chain security.</p>
</li>
<li><p><strong>SLSA Compliance:</strong> BuildSafe provides high quality SBOM’s and also helps you achieve higher SLSA Levels.</p>
</li>
<li><p><strong>Community Growth:</strong> Built a thriving community of over 250+ members, fostering collaboration and innovation.</p>
</li>
</ul>
<p>As BuildSafe continues to evolve, the mission remains clear: to simplify supply chain security while empowering organizations to innovate securely. Join us and lets get to zero CVE and go beyond SLSA Level 3.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/buildsafedev/bsf">https://github.com/buildsafedev/bsf</a></div>
<p> </p>
<h2 id="heading-kubestronaut">Kubestronaut</h2>
<p>Kubestronaut is a title recognising individuals who have cleared the CKA, CKAD, CKS, KCNA, and KCSA certifications. This was launched at KubeCon EU 2024, and I’m honoured to be part of the CNCF certification journey. I’ve also authored two books <a target="_blank" href="https://saiyampathak.gumroad.com/l/cka"><strong>CKA</strong></a> and <a target="_blank" href="https://saiyampathak.gumroad.com/l/cksbook"><strong>CKS</strong></a> to help others on this path.</p>
<p><strong>Note - Use coupon “newyear” to avail 60% off :) Happy new year!</strong></p>
<p>Thanks to my CNCF Ambassador program, I received a coupon for these certifications and managed to complete all of them in just one week, it was a fun and intense experience!</p>
<p>This is the <a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibBu_KgCL-OSHzFFzlafKm6F&amp;si=oT6vlH5XnCgMkpeA">FREE CKS playlist</a> that I am creating and will be completed very soon in 2025.</p>
<h2 id="heading-cncf-tag-sustainability-lead">CNCF TAG Sustainability Lead</h2>
<p>I became a CNCF TAG Sustainability Lead in 2024, and I’m deeply grateful to the current TAG leads, co-chairs, and the CNCF TOC for this opportunity. This role aligns perfectly with my passion for creating impactful sustainability initiatives within the cloud-native ecosystem.</p>
<p>Notable achievements so far:</p>
<ul>
<li><p>Initiated <strong>TAG Sustainability APAC Meetings</strong> to involve more contributors from the region.</p>
</li>
<li><p>Actively contributing to sub-projects under the TAG, ensuring we achieve the sustainability goals.</p>
</li>
<li><p>Encouraging the community to use existing tools and practices to create an immediate impact.</p>
</li>
</ul>
<p>If you’re interested in sustainability, join the Slack community and explore the amazing ongoing projects!</p>
<h2 id="heading-career-transition-new-beginnings-at-loft-labs">Career Transition: New Beginnings at Loft Labs</h2>
<p>This year marked a significant shift in my professional journey. After almost four years at Civo, where I rose to the position of Field CTO, I decided it was time for a new challenge.</p>
<p>In June, I joined <strong>Loft Labs</strong> as Principal Developer Advocate. I already knew a few folks from the team and was familiar with their innovation in multi tenancy space. I even streamed a demo of vCluster on Kubesimplify back in 2021.</p>
<p>At Loft Labs, my focus is on solving Kubernetes multi-tenancy challenges, a key technology focus area highlighted at KubeCon NA, alongside reducing Kubernetes costs. It’s been an exciting journey so far, working with a visionary team to drive innovation.</p>
<h2 id="heading-content-creation-at-kubesimplify">Content Creation at Kubesimplify</h2>
<p>This year has been amazing for <strong>Kubesimplify</strong> in terms of the quality and quantity of content we’ve produced. We significantly upgraded editing and video quality to 4K, added more comprehensive courses, and conducted frequent live streams throughout the year.</p>
<h4 id="heading-highlights">Highlights:</h4>
<p><strong>Kubesimplify English</strong><br />This year was the year of courses, with two main ones I want to highlight:</p>
<ul>
<li><p><strong>WASM Course:</strong> Created in collaboration with Rishit, this is one of the best WebAssembly courses available, offering a unique cloud-native perspective.</p>
<p>  %[https://www.youtube.com/watch?v=eYekV2Do0YU&amp;t=11736s] </p>
</li>
<li><p><strong>The Complete DevOps Project:</strong></p>
<ul>
<li><p>Built a Golang application with PostgreSQL using <strong>CloudNativePG</strong>.</p>
</li>
<li><p>Instrumented the application with <strong>Prometheus</strong>, displaying metrics in <strong>Grafana</strong>.</p>
</li>
<li><p>Showcased load testing using <strong>K6</strong> and scaling with <strong>HPA</strong>.</p>
</li>
<li><p>Secured the app with <strong>Cert-Manager</strong> and <strong>Gateway API</strong> for HTTPS.</p>
</li>
<li><p>Implemented CI/CD using <strong>GitHub Actions</strong> for CI and <strong>ArgoCD</strong> for CD.</p>
</li>
<li><p>Built a zero-CVE base and application image using <strong>BuildSafe</strong>, with builds executed via <code>ko</code>.</p>
</li>
<li><p>Hosted the app on managed Kubernetes clusters (<strong>AKS</strong> or <strong>GKE</strong>) created with <code>ksctl</code>.</p>
</li>
</ul>
</li>
</ul>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc2aa4a-3f94-46a1-8559-81714f8315f5_8588x7629.png" alt /></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=kCWAwXFnYic&amp;t=45s">https://www.youtube.com/watch?v=kCWAwXFnYic&amp;t=45s</a></div>
<p> </p>
<p><strong>Spooky Halloween Series</strong><br />Inspired by Saloni’s imagination, we created a fun and spooky Kubernetes troubleshooting series. This was a labor of love to simplify Kubernetes troubleshooting for the community.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/nZx3g-XiJeU">https://youtu.be/nZx3g-XiJeU</a></div>
<p> </p>
<p><strong>Content Summary for 2024:</strong></p>
<ul>
<li><p><strong>38 videos</strong></p>
</li>
<li><p><strong>8 live streams</strong></p>
</li>
<li><p><strong>30 shorts</strong></p>
</li>
</ul>
<p><strong>Kubesimplify Hindi</strong></p>
<p>I elevated the Hindi channel to the next level with a mission not just to simplify Kubernetes but also to dive deeper into its complexities. The <strong>Kubernetes Bootcamp Live</strong> series has been a standout, with daily messages from viewers appreciating its detail and depth. This long-term commitment: 3-4 months of weekly detailed live streams, has been incredibly rewarding.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/5NXmbV50IxE?si=fnZnvCUt5OevosgH">https://youtu.be/5NXmbV50IxE?si=fnZnvCUt5OevosgH</a></div>
<p> </p>
<p>Overall stats for Kubesimplify Hindi - Although I was hoping for more on this particular channel</p>
<ul>
<li><p><strong>5 videos</strong></p>
</li>
<li><p><strong>16 shorts</strong></p>
</li>
<li><p><strong>15 live streams</strong></p>
</li>
</ul>
<p><strong>Special New Year 2025 Surprise: "Let’s Get Certified Together"</strong><br />Starting in January, I will launch a <strong>members-only live stream series</strong> to help participants achieve Kubernetes certifications. This includes access to a private Discord server for members, and to my surprise, we already have 10+ members signed up!</p>
<p>If you want please follow this livestream</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=jk0G5pxKxTk">https://www.youtube.com/watch?v=jk0G5pxKxTk</a></div>
<p> </p>
<p><strong>Note</strong>: All members-only live streams will be made public for free one month later.</p>
<h2 id="heading-conferences">Conferences</h2>
<p>Attending and speaking at conferences remains a highlight of my year. Being remote, these events provide a fantastic opportunity to meet people, share my work, and learn from others.</p>
<h4 id="heading-key-themes-of-2024-talks">Key Themes of 2024 Talks:</h4>
<ol>
<li><p><strong>Cloud-Native and AI</strong></p>
</li>
<li><p><strong>Sustainability</strong></p>
</li>
<li><p><strong>Multi-Tenancy and Cost Optimization</strong></p>
</li>
<li><p><strong>WebAssembly (WASM)</strong></p>
</li>
</ol>
<p>Below is the list of talks I have done this year:</p>
<ul>
<li><p><strong>Civo Navigate US(Feb)</strong>- <a target="_blank" href="https://www.youtube.com/watch?v=nXGHd8cBDno&amp;t=46s">Generative AI in the Kubernetes Era with Kubeflow with Saiyam Pathak</a></p>
</li>
<li><p><strong>Wasm I/O 2024(March):</strong><br />  - <a target="_blank" href="https://www.youtube.com/watch?v=Ekwd46xfQ2s">Accelerating ML Inferencing with WebAssembly &amp; Spin 2.0</a><br />  - <a target="_blank" href="https://www.youtube.com/watch?v=r_Y0cQboQJI">Sustainability with WASM? - faster, greener computing [Panel]</a><br />  - Create Production-Grade Wasm Applications on Kubernetes [Workshop]</p>
</li>
<li><p><strong>KubeCon EU 2024(March):</strong><br />  - <a target="_blank" href="https://youtu.be/LCtceKToWxU?si=0nvDbRfuVsI8L0NX">Building a Tool to Debug Minimal Container Images in Kubernetes, Docker and ContainerD</a><br />  - <a target="_blank" href="https://youtu.be/H5NES1Is7rw?si=abzmlgbgXspwnIFo">Heating Pools with Cloud Power: A New Wave in Green Computing</a></p>
</li>
<li><p><strong>KCD Pune(April)</strong> - Keynote: Let’s do Generative AI on Kubernetes (Not Recorded)</p>
</li>
<li><p><strong>KCD Hyderabad(June)</strong> - <a target="_blank" href="https://www.youtube.com/watch?v=T5Cm1Gj-0oA">Keynote: Supply Chain Security in 2024 - Saiyam Pathak, Loft Labs - KCD Hyderabad</a></p>
</li>
<li><p><strong>ContainerDays 2024(September)</strong> - <a target="_blank" href="https://youtu.be/tQYPcSGaAo4?si=YDejRYr-zGmGt60w">Building Scalable Cloud Native AI Apps with WebAssembly</a></p>
</li>
<li><p><strong>WasmCon 2024(November)</strong> - <a target="_blank" href="https://youtu.be/1zAsRC3q9D4?si=RIOMQA0ImPCaoj2E">Exploring the Landscape for Open Telemetry for Wasm</a></p>
</li>
<li><p><strong>KubeCon NA 2024(November)</strong>:<br />  - <a target="_blank" href="https://youtu.be/X-0zyyWRkiM?si=l4mAZQWN17tySzwK">Cloud Native Sustainability Speedrun: Tools from Infrastructure to Application</a><br />  - <a target="_blank" href="https://youtu.be/PfuSzPv7fSQ?si=u3Bqy8DWFqUGwdKB">The Spice Must Flow Green: CNCF's Environmental Sustainability TAG</a></p>
</li>
<li><p><strong>SOSS Community Days 2024(December)</strong> - <a target="_blank" href="https://www.youtube.com/watch?v=eD6dX-1jkb0">Cooking up Secure OCI Artifacts with SLSA</a></p>
</li>
<li><p><strong>KubeCon India 2024(December)</strong> - Cell-Based Kubernetes - The Secret to Scalable, Repeatable and Resilient Cloud Architecture</p>
</li>
</ul>
<p><strong>Meetups</strong></p>
<ul>
<li><p>CNCG Chandigarh - 10 years of Kubernetes</p>
</li>
<li><p>CNCG Delhi - <a target="_blank" href="https://www.youtube.com/watch?v=2qnLC219BIo">Secure Multi-Tenancy with vCluster and Falco</a></p>
</li>
<li><p>GDG Bengaluru - Celebrating 10 Years of Kubernetes: Innovating Multi-Tenancy with vCluster</p>
</li>
<li><p>Platform Meetup Bengaluru - Kubernetes Multi Tenancy.</p>
</li>
</ul>
<h3 id="heading-webinars">Webinars</h3>
<p>I also conducted webinars with Sysdig, SUSE, and PerfectScale, focusing on Kubernetes, sustainability, and multi-tenancy.</p>
<h3 id="heading-personal-growth">Personal Growth</h3>
<p>2024 wasn’t just about professional milestones. I prioritised health and family this year:</p>
<ul>
<li><p><strong>Health:</strong> Focused on yoga and dietary changes to maintain a healthier lifestyle.</p>
</li>
<li><p><strong>Family:</strong> Spent more quality time with my family, It’s always rewarding.</p>
</li>
</ul>
<p>Additionally, I created a lot of content for <strong>vCluster</strong> on the <a target="_blank" href="https://www.youtube.com/@loft_sh">Loft Labs YouTube channel</a>, further contributing to the community.</p>
<p>In the end I would like to say a huge thanks to the community for appreciating the content I have been creating. If you want to support, just hit that subscribe button on YouTube channels and follow us everywhere:</p>
<ul>
<li><p><a target="_blank" href="https://www.youtube.com/@kubesimplify">KubeSimplify English Youtube</a></p>
</li>
<li><p>K<a target="_blank" href="https://www.youtube.com/@kshindi">ubesimplify Hindi Youtube</a></p>
</li>
<li><p><a target="_blank" href="https://blog.kubesimplify.com/">Kubesimplify Blogs</a></p>
</li>
<li><p><a target="_blank" href="https://discord.com/invite/8s8uMRnSnH">Kubesimplify Discord</a></p>
</li>
<li><p><a target="_blank" href="https://saiyampathak.substack.com/">Newsletter</a></p>
</li>
<li><p><a target="_blank" href="https://instagram.com/kubesimplify/">Instagram</a></p>
</li>
</ul>
<p>Here’s to an even more impactful 2025! 😊</p>
]]></content:encoded></item><item><title><![CDATA[Cloud native with Saiyam — It’s not over yet!]]></title><description><![CDATA[Hello people, how are things going on? It’s been a difficult time to fully concentrate on anything. My friends are at war, my friends are suffering from COVID and this is disturbing my mental peace a lot these days. I am not a sad person but this bre...]]></description><link>https://saiyampathak.com/cloud-native-with-saiyam-its-not-over-yet</link><guid isPermaLink="true">https://saiyampathak.com/cloud-native-with-saiyam-its-not-over-yet</guid><category><![CDATA[Cloud]]></category><category><![CDATA[Kubernetes]]></category><category><![CDATA[newsletter]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Fri, 18 Mar 2022 10:00:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1647597122132/m7KPID4hI.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello people, how are things going on? It’s been a difficult time to fully concentrate on anything. My friends are at war, my friends are suffering from COVID and this is disturbing my mental peace a lot these days. I am not a sad person but this breaks my heart as I know what loss of life means, what it means to lose someone you love — everything gets destroyed. Life is a gift and you should cherish each day and spread love.</p>
<p><strong>KubeCon</strong> CFP results came in and I am giving 2 talks this season hopefully in person with my friends.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1647596739138/KAML0QWbB.png" alt="image.png" /></p>
<h2 id="heading-students-ambassador-program">Students Ambassador program</h2>
<p>The Student Ambassador program is going great, with over 100 submissions and it is going international ❤ Great to see the support from my friends in spreading the word! The applications will remain open so you can apply/share. I will keep on improving the initiative.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1647596759566/h624CJUPN.png" alt="image.png" /></p>
<h2 id="heading-videos">Videos</h2>
<ul>
<li><p><a target="_blank" href="https://youtu.be/-Zhie5KtSh4">Knative Walkthrough</a> — Knative is a serverless platform on top of Kubernetes and in this video, I go over Knative serving and Knative eventing with a demo for each of them.</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/19bvmd7ktJM">KubeVirt</a> — This is the recording from my alldaydevops session but still very valid and its adoption is increasing even more so be sure to check that out.</p>
</li>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=tVsMen_e6OI">Harvester by Techno Tim</a> — Harvester is an open source HCI solution, I have a couple of streams on my channel as well with the maintainers of the project. It is based on Kubevirt layer so make sure to check out this project.</p>
</li>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=FYqKQIthH6s">Kubernetes vcluster “clusters in clusters”</a> by my friends Lukas and Rich on Bret Fisher channel.</p>
</li>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=wul6NBU23zY">Code Coverage for BPF Programs with bpfcov</a> by Leo and Liz.</p>
</li>
</ul>
<h2 id="heading-news-and-announcements">News and Announcements</h2>
<ul>
<li><p><a target="_blank" href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/schedule/">KubeCon EU 2022 Schedule is out </a>— Check and register today!!</p>
</li>
<li><p><a target="_blank" href="https://www.cncf.io/blog/2022/03/15/backstage-project-joins-the-cncf-incubator/">Backstage project joins the CNCF Incubator</a> — open platform for building developer portals maintained by a global community</p>
</li>
<li><p><a target="_blank" href="https://www.cncf.io/blog/2022/03/10/supply-chain-security-project-in-toto-moves-to-the-cncf-incubator/">in-toto moves to CNCF incubation</a> — this is a project in supply chain security space.</p>
</li>
<li><p><a target="_blank" href="https://www.cncf.io/blog/2022/03/02/knative-accepted-as-a-cncf-incubating-project/">Knative accepted as a CNCF incubating project</a> — A huge step towards the adoption of Knative. It is an amazing project that everyone needs to check out!</p>
</li>
<li><p><a target="_blank" href="https://minikube.sigs.k8s.io/docs/tutorials/setup_minikube_gui/">minikube GUI </a>— Yes you heard it right, Minikube launched it’s most requested feature GUI (experimental), be sure to check that out.</p>
</li>
<li><p><a target="_blank" href="https://exercism.org/tracks/wasm">WASM on Exercism</a> — 21 exercises from hello world to circular ring buffer exploring WebAssembly.</p>
</li>
<li><p>Artifact Hub now checks if container images packages have been signed with cosign from sigstore.</p>
</li>
<li><p><a target="_blank" href="https://github.com/moby/buildkit/releases/tag/v0.10.0">Moby v0.10.0</a> — Making every docker build a bit better.</p>
</li>
</ul>
<h2 id="heading-awesome-march-reads">Awesome March reads</h2>
<ul>
<li><p><a target="_blank" href="https://www.openfaas.com/blog/react-app/">Hosting a React App with OpenFaaS</a> — In this post, you will learn how to deploy a React app as an openfaas function ~ by Alex Ellis</p>
</li>
<li><p><a target="_blank" href="https://thenewstack.io/how-to-run-docker-in-rootless-mode/">How to Run Docker in Rootless Mode</a> — In this article you will learn a sample set up to run Docker in rootless mode though there are other tools like podman that can help you achieve it with ease. Also, <a target="_blank" href="https://youtu.be/X3FmrCyv3jM">Sysbox</a> is another alternative that let you run rootless containers in Kubernetes. ~ by JACK WALLEN</p>
</li>
<li><p><a target="_blank" href="https://bitfieldconsulting.com/golang/scripting">Scripting with Go</a> by bitfieldconsulting — fancy shell scripts in go ;)</p>
</li>
<li><p><a target="_blank" href="https://www.fermyon.com/blog/log4sh-and-webassembly">Is WebAssembly Susceptible to Log4Shell-style Attacks?</a> by Matt butcher</p>
</li>
<li><p><a target="_blank" href="https://blog.chainguard.dev/introducing-apko-bringing-distroless-nirvana-to-alpine-linux/">Introducing apko</a> — apko enables the creation of minimal, small-attack-surface images without the complications of relying on Bazel by Ariadne Conill.</p>
</li>
<li><p><a target="_blank" href="https://blog.alexellis.io/golang-e2e-testing-case-study/">A case-study in end-to-end testing with Golang</a> — Another great blog by my friend Alex on unit testing vs e2e testing and how to improve them with Go.</p>
</li>
<li><p><a target="_blank" href="https://containerjournal.com/features/6-cncf-projects-for-ci-cd/">6 CNCF Projects for CI/CD</a> — Interesting landscape and checkout my CNCFMinutes video for Flux and Argo.</p>
</li>
<li><p><a target="_blank" href="https://thenewstack.io/model-server-the-critical-building-block-of-mlops/">Model Server: The Critical Building Block of MLOps</a> by Janakiram</p>
</li>
</ul>
<h2 id="heading-learning-resourcesrepositories">Learning resources/repositories</h2>
<ul>
<li><p><a target="_blank" href="https://github.com/chanwit/flamingo">Flamingo</a> — FSA (aka Flamingo) is the Flux Subsystem for Argo. FSA’s container image can be used as a drop-in replacement for the equivalent ArgoCD version to visualize, and manage Flux workloads, along side ArgoCD.</p>
</li>
<li><p><a target="_blank" href="https://goplay.space/">Advanced Go Playground</a> — frontend written in Go, with syntax highlighting, turtle graphics mode, and more</p>
</li>
<li><p><a target="_blank" href="https://github.com/strimzi/strimzi-kafka-operator">strimzi</a> — Apache Kafka running on Kubernetes</p>
</li>
<li><p><a target="_blank" href="https://pavangudiwada.hashnode.dev/wordpress-mysql-simple-docker-project">Simple Docker project for beginners</a> by Pavan</p>
</li>
<li><p><a target="_blank" href="https://academy.traefik.io/">Traefik Academy</a> by my friend Adrian</p>
</li>
</ul>
<h2 id="heading-learn-from-twitter">Learn from Twitter</h2>
<p></p><blockquote><p>When your apps receive a ton of traffic, how do you scale your Ingress Controller in Kubernetes?<br /><br />Here is what I do 👇 <a href="https://t.co/T6aYurE7Lj">pic.twitter.com/T6aYurE7Lj</a></p>— Daniele Polencic (@danielepolencic) <a href="https://twitter.com/danielepolencic/status/1498999951661010945?ref_src=twsrc%5Etfw">March 2, 2022</a></blockquote> <p></p>
<p></p><blockquote><p>What is SSH ?<a href="https://twitter.com/hashtag/Linux?src=hash&amp;ref_src=twsrc%5Etfw">#Linux</a> <a href="https://twitter.com/hashtag/ssh?src=hash&amp;ref_src=twsrc%5Etfw">#ssh</a> <a href="https://twitter.com/hashtag/encryption?src=hash&amp;ref_src=twsrc%5Etfw">#encryption</a> <a href="https://t.co/YDnVxAyxaU">pic.twitter.com/YDnVxAyxaU</a></p>— Rakesh Jain (@devops_tech) <a href="https://twitter.com/devops_tech/status/1499271278531809281?ref_src=twsrc%5Etfw">March 3, 2022</a></blockquote> <p></p>
<p></p><blockquote><p>Let's talk about Rust.<br /><br />A language with a steep learning curve but one of the most rewarding programming languages out there.<br /><br />It powers parts of AWS, Dropbox, and even some important blockchain projects.<br /><br />A thread. ↓ <a href="https://t.co/UbwPLrDvN4">pic.twitter.com/UbwPLrDvN4</a></p>— 🇺🇦 Oliver Jumpertz (@oliverjumpertz) <a href="https://twitter.com/oliverjumpertz/status/1501947496355885065?ref_src=twsrc%5Etfw">March 10, 2022</a></blockquote> <p></p>
<h2 id="heading-sponsored-content">Sponsored content</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1647597406125/9CjiIxmf7.png" alt="image.png" /></p>
<p>This issue is brought to you by <strong>Cloudcasa</strong>, <strong>Sysdig</strong>, <strong>Robusta, Suborbital, Armo, SlimAI</strong> and <strong>Teleport</strong> -&gt;</p>
<p><a target="_blank" href="http://cloudcasa.io/Kubernetes-backup?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Cloudcasa</a> is Free Kubernetes Backup and Cloud Migration with Cyber-Resilience as-a-Service. Mi Casa es Tu Casa!</p>
<p><a target="_blank" href="https://sysdig.com/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Sysdig</a> is driving the standard for cloud and container security. The company pioneered cloud-native runtime threat detection and response by creating Falco and Sysdig as open source standards and key building blocks of the Sysdig platform</p>
<p><a target="_blank" href="https://www.armosec.io/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">ARMO</a> assures DevOps, DevSecOps, and developers that every workload, cluster, container, and microservice is born and remains secure, from development to production and from configuration to run-time, every time. They are the creators of <a target="_blank" href="https://youtu.be/aBFc_7-8s_A?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Kubescape</a>.</p>
<p><a target="_blank" href="http://robusta.dev/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Robusta</a> — an open source platform for Kubernetes troubleshooting and automation. Robusta automates your incident response and troubleshooting — what Docker did to Day 1, Robusta does to Day 2.</p>
<p><a target="_blank" href="https://suborbital.dev/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Suborbital</a> Making cloud native WebAssembly easy.</p>
<p><a target="_blank" href="http://slim.ai/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">SlimAI</a> — giving developers the power to build better cloud-native applications with less friction, complexity, and waste.</p>
<p><a target="_blank" href="https://goteleport.com/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Teleport</a> is the easiest, most secure way to access all your infrastructure. The open-source Teleport Access Plane consolidates connectivity, authentication, authorization, and audit into a single platform.</p>
<p><strong>Latest from them</strong></p>
<ul>
<li><p><a target="_blank" href="https://sysdig.com/blog/cve-2022-0847-dirty-pipe-sysdig/">CVE-2022–0847: “Dirty Pipe” Linux Local Privilege Escalation</a> By Jason Avery ~ Sysdig</p>
</li>
<li><p><a target="_blank" href="https://blog.suborbital.dev/launching-sat-beta-1-still-tiny-still-mighty">Launching Sat Beta-1: Still tiny, still mighty</a> By Connor Hicks ~ Suborbital</p>
</li>
<li><p><a target="_blank" href="https://www.armosec.io/blog/privilege-escalation-vulnerability-cve-2022-0492-kubernetes/">CVE-2022–0492 — Privilege Escalation and Container Escape Vulnerability and its impact on Kubernetes</a> By Leonid Sandler ~ Armosec</p>
</li>
<li><p><a target="_blank" href="https://cloudcasa.io/blog/cloudcasa-adds-aws-cloud-security-posture-to-kubernetes-security-posture-reviews/">CloudCasa Adds AWS Cloud Security Posture to Kubernetes Security Posture Reviews</a> By Cloudcasa</p>
</li>
<li><p><a target="_blank" href="https://home.robusta.dev/blog/kubernetes-is-the-new-posix/">Kubernetes is the POSIX of the cloud</a> By Natan ~ Robusta</p>
</li>
<li><p><a target="_blank" href="https://thenewstack.io/the-3-ss-of-software-supply-chain-security-sboms-signing-slimming/">The 3 S’s of Software Supply Chain Security: SBOMs, Signing, Slimming</a> By John Amaral ~ SlimAI</p>
</li>
<li><p><a target="_blank" href="https://goteleport.com/blog/shell-access-docker-container-with-ssh-and-docker-exec/">SSH into Docker Container or Use Docker Exec?</a> ~ Teleport</p>
</li>
</ul>
<h2 id="heading-individual-supporters">Individual supporters</h2>
<p>Thank you to the amazing members -&gt; <a target="_blank" href="https://twitter.com/rawkode?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Rawkode</a>, <a target="_blank" href="https://twitter.com/markyjackson5?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Marky</a>, <a target="_blank" href="https://twitter.com/noelgeorgi?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Noel</a>, <a target="_blank" href="https://twitter.com/walidshaari?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Walid</a>, <a target="_blank" href="https://twitter.com/CedricKeng?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Cedric</a> , <a target="_blank" href="https://twitter.com/jackfrosch?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Jack</a> , <a target="_blank" href="https://twitter.com/blaizedsouza?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Blaize D’souza</a>, <a target="_blank" href="https://twitter.com/ChadMCrowell?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">ChadMCrowell</a>, <a target="_blank" href="https://twitter.com/danpopnyc?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Dan POP</a>, <a target="_blank" href="https://twitter.com/mborgen?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Meaux</a> and <a target="_blank" href="https://twitter.com/philshapiro?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Phil Shapiro</a></p>
<p>Special thanks to <strong>Catalogic</strong>, <strong>Sysdig</strong>, <strong>ARMO, Suborbital and Robusta</strong> for being an Org member and to <strong>SlimAI</strong> and <strong>Teleport</strong> for being a platinum member.</p>
<p>Some amazing partnerships coming up that will be announced on Twitter so keep an eye out if your org wants to grow the community and support my work then consider becoming a member as it comes with a lot of benefits(<a target="_blank" href="https://saiyampathak.com/membership?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">membership program</a>)</p>
<p>Do not forget to subscribe to my <a target="_blank" href="https://saiyampathak.com/youtube?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">YouTube channel</a></p>
<p>Thank you for reading this edition and hope you like it. Please take a minute to <strong>subscribe to the newsletter</strong> and let me know if you are doing something great that will benefit the community, I will include that.</p>
<h2 id="heading-biolinksaiyampathak">bio.link/saiyampathak</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1647597423017/01Rm6nbsh.png" alt="image.png" /></p>
]]></content:encoded></item><item><title><![CDATA[Cloud native with Saiyam — Motivating February]]></title><description><![CDATA[Hello lovely people 👋 hope you are doing good! Let’s motivate each other and help each other in growing more. I believe once you have the knowledge and experience you can empower others so that they can learn, take your mentorship and grow in their ...]]></description><link>https://saiyampathak.com/cnsfebmotivating2022</link><guid isPermaLink="true">https://saiyampathak.com/cnsfebmotivating2022</guid><category><![CDATA[Cloud]]></category><category><![CDATA[Kubernetes]]></category><category><![CDATA[newsletter]]></category><category><![CDATA[content]]></category><category><![CDATA[containers]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Tue, 15 Feb 2022 16:35:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1644942688851/8EqRgtSK3.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello lovely people 👋 hope you are doing good! Let’s motivate each other and help each other in growing more. I believe once you have the knowledge and experience you can empower others so that they can learn, take your mentorship and grow in their lives. We all need to start welcoming the newcomers in the technology field and guide them whenever we can.</p>
<p>February has been an interesting month as I had really nice conversation with the community and some organisations who are doing rad stuff in cloud native ecosystem, I personally learned a lot to understand the products they are running on the cloud and the problem they are solving. I believe talking to customers/orgs make you think more about what people are actually using to deploy their stuff for their customers and helping them solve a particular problem.</p>
<p>February is also celebrated as a love month throughout the globe, so let’s take this to cloud native level and celebrate all the projects that helped you, maintainers who made it happen, tag your favourite maintainer and favourite project on Twitter with hashtag #loveopensource and show then the love you feel for them as a maintainer or the project.</p>
<p>I am also glad to announce that I have 5 Org memberships and 2 Platinum memberships who are supporting my work with 11 individual members. Thank you all and if you want to support my work feel free to check out <a target="_blank" href="http://saiyampathak.com/membership">membership</a> for Org membership please reach out first.</p>
<p>Let’s begin with the content now!!</p>
<h2 id="heading-videos">Videos</h2>
<ul>
<li><p><a target="_blank" href="https://youtu.be/Y8j1bWxKZNA">Chaos engineering 2022 </a>— I gave this talk at Chaos carnival and it felt good as over 150+ people joined, this video gives an introduction to chaos engineering, cloud native chaos engineering, tools — Litmus and Chaos mesh and the whitepaper.</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/2B3qcyCcBXs">CNCFMinutes video</a> — ArgoCD — The best primer you can get on AgroD ;)</p>
</li>
<li><p>My friend David had great live streams on <a target="_blank" href="https://youtu.be/NMlWU72FKwY">Robusta</a> <a target="_blank" href="https://youtu.be/_vClIgPBou4">Klustered</a> check them out.</p>
</li>
<li><p>Kunal posted videos on <a target="_blank" href="https://youtu.be/17Bl31rlnRM">Docker</a> and <a target="_blank" href="https://youtu.be/KVBON1lA9N8">Kubernetes</a> — Great for beginners, check them out.</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/OnK4IKgLl24">What is SRE</a> by Nana</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/7xngnjfIlK4">Terraform Complete course</a> by Sid Palas</p>
</li>
<li><p>Check out the awesome talks from the <a target="_blank" href="https://fosdem.org/2022/schedule/track/containers/">containers devroom</a> at FOSDEM 2022</p>
</li>
</ul>
<h2 id="heading-news-and-announcements">News and Announcements</h2>
<ul>
<li><p><a target="_blank" href="https://www.cncf.io/announcements/2022/02/10/cncf-sees-record-kubernetes-and-container-adoption-in-2021-cloud-native-survey/">CNCF Sees Record Kubernetes and Container Adoption in 2021 Cloud Native Survey</a> — It shows how everyone is adopting containers and Kubernetes where more people are adopting managed Kubernetes offering from could providers.</p>
</li>
<li><p><a target="_blank" href="https://techcrunch.com/2022/02/01/docker-makes-comeback-reaching-over-50m-in-arr/">Docker makes comeback with over $50M in ARR two years into restructuring</a> — This is an interesting read on how docker in the last year made over $50million annual recurring revenue.</p>
</li>
<li><p><a target="_blank" href="https://medium.com/leaningtech/webvm-client-side-x86-virtual-machines-in-the-browser-40a60170b361">WebVM: server-less x86 virtual machines in the browser</a> — a server-less virtual Linux environment that runs unmodified Debian binaries in the browser <em>powered by CheerpX, a WebAssembly virtualization platform. <a target="_blank" href="https://webvm.io/">try here</a></em></p>
</li>
<li><p><a target="_blank" href="https://www.crn.com/slide-shows/cloud/the-20-coolest-cloud-infrastructure-companies-of-the-2022-cloud-100/1">The 20 Coolest Cloud Infrastructure Companies Of The 2022 Cloud 100</a> — Happy to see Civo listed in there :)</p>
</li>
<li><p><a target="_blank" href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/attend/scholarships/">CNCF Kubecon scholarship</a> — Apply for scholarships before 13th March.</p>
</li>
<li><p><a target="_blank" href="https://www.cncf.io/blog/2022/01/31/cncf-archives-the-opentracing-project">CNCF Archives the Opentracing Project</a></p>
</li>
<li><p><a target="_blank" href="https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/">Include diagrams in your Markdown files with Mermaid</a></p>
</li>
</ul>
<h2 id="heading-nice-february-reads1st-to-15th-feb">Nice February reads(1st to 15th Feb)</h2>
<ul>
<li><p><a target="_blank" href="https://blog.getambassador.io/ckad-cka-exam-tips-from-10-people-who-passed-the-exam-24132b1f1cc5">CKA and CKAD Exam tips</a> by <a target="_blank" href="https://didicodes.medium.com/?source=post_page-----24132b1f1cc5-----------------------------------">Edidiong Asikpo</a> — It will help you with various tips from the people who have cleared the exam in past.</p>
</li>
<li><p><a target="_blank" href="https://blog.chainguard.dev/keyless-signing-with-tekton-on-aks/">Keyless Signing with Tekton on AKS</a> — sigstore is everywhere by <a target="_blank" href="https://twitter.com/nghiatc">Nghia Tran</a></p>
</li>
<li><p><a target="_blank" href="https://www.freecodecamp.org/news/enhance-nmap-with-python/">How to Enhance Nmap with Python</a> by <a target="_blank" href="https://www.freecodecamp.org/news/author/jose-vicente-nunez/">**Jose Vicente Nunez</a>**</p>
</li>
<li><p><a target="_blank" href="https://blog.alexellis.io/primer-accessing-kubernetes-services">A Primer: Accessing services in Kubernetes</a> by <a target="_blank" href="https://twitter.com/alexellisuk">Alex Ellis</a></p>
</li>
<li><p><a target="_blank" href="https://www.armosec.io/blog/kubernetes-security-best-practices">Kubernetes Security Best Practices: Definitive Guide </a>by Armosec</p>
</li>
<li><p><a target="_blank" href="https://blog.devgenius.io/part-2-how-to-read-wasm-1f7e34e70f59">How to read WASM</a> — Follow this series to understand WebAssembly from scratch by<a target="_blank" href="https://twitter.com/Divya_Mohan02"> Divya Mohan</a></p>
</li>
<li><p><a target="_blank" href="https://blog.argoproj.io/best-practices-for-multi-tenancy-in-argo-cd-273e25a047b0">Best Practices for Multi-tenancy in Argo CD</a> by <a target="_blank" href="https://twitter.com/todaywasawesome">Dan Garfield</a></p>
</li>
</ul>
<h3 id="heading-beginners-highlight-this-is-the-section-where-i-want-to-include-and-motivate-people-who-are-just-starting">Beginners highlight — This is the section where I want to include and motivate people who are just starting!</h3>
<ul>
<li><a target="_blank" href="https://hashnode.com/post/tekton-ci-simplified-ckzleauyw0n6beks1diq6ejvv">Tekton CI simplified by</a> <a target="_blank" href="https://twitter.com/avinash_ukr">Avinash Upadhyaya</a></li>
</ul>
<h2 id="heading-learning-resourcesrepositories">Learning resources/repositories</h2>
<ul>
<li><p><a target="_blank" href="https://getmizu.io/">API traffic viewer for Kubernetes</a></p>
</li>
<li><p><a target="_blank" href="https://learnk8s.io/kubernetes-instance-calculator">Kubernetes instance calculator</a> by my friends at Learnk8s</p>
</li>
<li><p><a target="_blank" href="https://github.com/charmbracelet/glow">Read and Organize Markdown Files in Linux Terminal With Glow</a></p>
</li>
<li><p><a target="_blank" href="https://validkube.com/">Kubernetes YAML best practices, hygiene &amp; security</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/weaveworks/tf-controller">tf-controller </a>— GitOps Terraform at your own pace</p>
</li>
<li><p><a target="_blank" href="https://github.com/saiyam1814/argo-demo">ArgoCD demo repo</a> — try on your own</p>
</li>
</ul>
<h2 id="heading-learn-from-twitter">Learn from Twitter</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/I_saloni92/status/1490661872969793537">https://twitter.com/I_saloni92/status/1490661872969793537</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/Rapid_API/status/1489592584372695045">https://twitter.com/Rapid_API/status/1489592584372695045</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://twitter.com/b0rk/status/1490742033400610816">https://twitter.com/b0rk/status/1490742033400610816</a></div>
<h2 id="heading-sponsored-content">Sponsored content</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1644942480935/Kmj6FBM1d.png" alt="Screenshot 2022-02-13 at 6.14.09 PM.png" /></p>
<p>This issue is brought to you by <strong>Cloudcasa</strong>, <strong>Sysdig</strong>, <strong>Robusta, Suborbital, Armo, SlimAI</strong> and <strong>Teleport</strong> -&gt;</p>
<p><a target="_blank" href="http://CloudCasa.io/Kubernetes-backup">**Cloudcasa</a>** is Free Kubernetes Backup and Cloud Migration with Cyber-Resilience as-a-Service. Mi Casa es Tu Casa!</p>
<p><a target="_blank" href="https://sysdig.com/">**Sysdig</a>** is a cloud-native visibility and security company that provides cloud and container security for enterprises and their DevOps teams. They are the creators of Falco.</p>
<p><a target="_blank" href="https://www.armosec.io/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">**ARMO</a>** assures DevOps, DevSecOps, and developers that every workload, cluster, container, and microservice is born and remains secure, from development to production and from configuration to run-time, every time. They are the creators of <a target="_blank" href="https://youtu.be/aBFc_7-8s_A?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Kubescape</a>.</p>
<p><a target="_blank" href="http://robusta.dev/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">**Robusta</a>** — an open source platform for Kubernetes troubleshooting and automation. Robusta automates your incident response and troubleshooting — what Docker did to Day 1, Robusta does to Day 2.</p>
<p><a target="_blank" href="https://suborbital.dev/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">**Suborbital</a>** Making cloud native WebAssembly easy.</p>
<p><a target="_blank" href="http://slim.ai/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">**SlimAI</a>** — giving developers the power to build better cloud-native applications with less friction, complexity, and waste.</p>
<p><a target="_blank" href="https://goteleport.com/?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">**Teleport</a>** empowers engineers to quickly and securely access any computing resource anywhere on the planet. The Access Plane allows engineers and security professionals to unify secure access and provide visibility to infrastructure, applications, and data across all environments.</p>
<p><strong>Latest from them</strong></p>
<ul>
<li><p><a target="_blank" href="https://cloudcasa.io/blog/kubernetes-security-posture-review-and-cross-cluster-restores-with-new-cloudcasa-release/">Kubernetes Security Posture Review and Cross-Cluster Restores with New CloudCasa Release</a> — Cloudcasa</p>
</li>
<li><p><a target="_blank" href="https://sysdig.com/blog/sysdig-secure-cloud-native-infrastructure/">Sysdig Secure — When cloud provider security services are not enough</a> — Sysdig</p>
</li>
<li><p><a target="_blank" href="https://www.armosec.io/blog/cve-2022-24348-argo-kubernetes/">CVE 2022–24348 — Argo CD High Severity Vulnerability and its impact on Kubernetes</a> — Armo</p>
</li>
<li><p><a target="_blank" href="https://www.youtube.com/playlist?list=PLxKcdWncGLlNiWC71kKwDj3OZ-lS5nL0q">100 Kubernetes tools playlist</a> by Robusta</p>
</li>
<li><p><a target="_blank" href="https://www.slim.ai/blog/integrate-testing-into-your-container-pipeline.html">Integrate Testing into Your Container Pipeline</a> — SlimAI</p>
</li>
<li><p><a target="_blank" href="https://goteleport.com/blog/shared-demo-environment/">How Teleport Uses Teleport to Create and Maintain Shared Demo Environments</a> — Teleport</p>
</li>
</ul>
<h2 id="heading-individual-supporters">Individual supporters</h2>
<p>Thank you to the amazing members -&gt; <a target="_blank" href="https://twitter.com/rawkode?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Rawkode</a>, <a target="_blank" href="https://twitter.com/markyjackson5?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Marky</a>, <a target="_blank" href="https://twitter.com/noelgeorgi?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Noel</a>, <a target="_blank" href="https://twitter.com/walidshaari?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Walid</a>, <a target="_blank" href="https://twitter.com/CedricKeng?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Cedric</a> , <a target="_blank" href="https://twitter.com/jackfrosch?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Jack</a> , <a target="_blank" href="https://twitter.com/blaizedsouza?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Blaize D’souza</a>, <a target="_blank" href="https://twitter.com/ChadMCrowell?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">ChadMCrowell</a>, <a target="_blank" href="https://twitter.com/danpopnyc">Dan POP</a>, <a target="_blank" href="https://twitter.com/mborgen">Meaux</a> and <a target="_blank" href="https://twitter.com/philshapiro?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Phil Shapiro</a></p>
<p>Special thanks to <strong>Catalogic</strong>, <strong>Sysdig</strong>, <strong>ARMO, Suborbital and Robusta</strong> for being an Org member and to <strong>SlimAI</strong> and <strong>Teleport</strong> for being a platinum member.</p>
<p>Some amazing partnerships coming up that will be announced on Twitter so keep an eye out if your org wants to grow the community and support my work then consider becoming a member as it comes with a lot of benefits(<a target="_blank" href="https://saiyampathak.com/membership?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">membership program</a>)</p>
<p>Do not forget to subscribe to my <a target="_blank" href="https://saiyampathak.com/youtube?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">YouTube channel</a></p>
<p>Thank you for reading this edition and hope you like it. Please take a minute to <strong>subscribe to the newsletter</strong> and let me know if you are doing something great that will benefit the community, I will include that.</p>
<h2 id="heading-biolinksaiyampathak">bio.link/saiyampathak</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1644942667167/7hyerN-Ka.png" alt="image.png" /></p>
]]></content:encoded></item><item><title><![CDATA[Cloud native with Saiyam - 2022 second edition!]]></title><description><![CDATA[Hello people, hope you are doing good and are staying safe from the COVID19. It’s still out there and is really risky so always wear the mask and get vaccinated/boosted.
January has come to an end and It’s ok if you took a long break and have not sta...]]></description><link>https://saiyampathak.com/cloud-native-with-saiyam-2022-second-edition</link><guid isPermaLink="true">https://saiyampathak.com/cloud-native-with-saiyam-2022-second-edition</guid><category><![CDATA[newsletter]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[Kubernetes]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Tue, 01 Feb 2022 02:07:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1643681090140/C9G8IsTPd.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello people, hope you are doing good and are staying safe from the COVID19. It’s still out there and is really risky so always wear the mask and get vaccinated/boosted.</p>
<p>January has come to an end and It’s ok if you took a long break and have not started 2022 in full force. Sometimes it’s ok to take a break, relax and then come back strong. I see so many people on social media who produce great content every day, who help the community every day and I feel so good that I am in the human first circle of people.</p>
<p>Overall January has been good in terms of my work, learning and community contributions. To summarise I did</p>
<ul>
<li><p>2 Events — <a target="_blank" href="https://youtu.be/wegwfm1t-kg">A Keynote at DevSecOps conf</a> and session at Chaos Carnival.</p>
</li>
<li><p>2 Blogs — <a target="_blank" href="https://www.civo.com/blog/cloud-trends-2022">Cloud Trends 2022</a> and <a target="_blank" href="https://www.civo.com/learn/kubernetes-https-ingress-controller-with-your-own-tls-certificate">HTTPS ingress controller with your own TLS certificate</a></p>
</li>
<li><p>3 Video uploads — <a target="_blank" href="https://youtu.be/nP76IhXOCRs">Certifications are they worth it?</a> , <a target="_blank" href="https://youtu.be/X3FmrCyv3jM">Sysbox</a> and <a target="_blank" href="https://youtu.be/9pJF83gxbtY">Rancher Desktop 1.0</a>.</p>
</li>
<li><p>2 Twitter spaces — <a target="_blank" href="https://twitter.com/i/spaces/1YqKDqloeLQGV?s=20&amp;t=W99JrIOIt_ulV4_SNALvFw">Kuberentes certs AMA with Brag and Walid</a> and <a target="_blank" href="https://twitter.com/i/spaces/1yNGaYlPVMVGj?s=20&amp;t=W99JrIOIt_ulV4_SNALvFw">Startups/funding/VC’s — let’s try to understand the whole process</a>. (the recording is only available till 30 days from the actual event)</p>
</li>
<li><p>2 Newsletters (this is the second one ;) )</p>
</li>
<li><p>CFP review for KubeCon EU</p>
</li>
<li><p>Exciting stuff at Civo</p>
</li>
</ul>
<p>I have interacted with many people and also started the DevOps roadmap <a target="_blank" href="https://saiyampathak.com/discord">Discord channel</a> so that I can be with you on this journey while you are learning and getting upskilled.</p>
<p>This month was also good in terms of the response I have received for ORG membership plan — I have onboarded Armosec, Suborbital, Robusta as the new org members and I have SlimAI and Teleport as Platinum members.</p>
<p>There are individual memberships as well if any individual wants to support my work and there are 8 individuals who are already supporting my work.</p>
<h2 id="heading-videos">Videos</h2>
<ul>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=5t7-HM2jlTM">WTF are eBPF &amp; Cilium? with Liz Rice and Christopher Luciano</a> — It will blow your mind!</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/X3FmrCyv3jM">Sysbox — Next generation runc</a> — this is a super interesting project with rootless containers and the ability to run most of the VM like workload.</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/9pJF83gxbtY">Rancher Desktop 1.0</a> — Rancher desktop and nerdctl is the full docker replacement if you are looking for one.</p>
</li>
</ul>
<h2 id="heading-news-and-announcements">News and Announcements</h2>
<p>These are the announcement in the past 15 days:</p>
<ul>
<li><p><a target="_blank" href="https://dig.sysdig.com/c/pf-2021-container-security-snapshot?x=u_WFRi">Sysdig 2022 Cloud‑Native Security and Usage Report</a> — Gives a nice infographic container usage and security. Interestingly 58% of containers are running as root!</p>
</li>
<li><p><a target="_blank" href="https://github.com/prometheus/client_rust">Prometheus Rust client library</a> — Open Metrics client library allowing users to natively instrument applications.</p>
</li>
<li><p><a target="_blank" href="https://www.slim.ai/blog/slim-ai-series-a-announcement.html">Slim.AI series A announcement</a> — they are the creators of Dockerslim and taking things to next level.</p>
</li>
<li><p><a target="_blank" href="https://blog.1password.com/future-of-1password/?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=future-1p&amp;utm_ref=social">1Password has raised $620 million (USD) in the largest funding round ever for a Canadian company.</a> — I think this came out as an amazing announcement, we all love 1Password and they are doubling down on protecting the digital privacy.</p>
</li>
<li><p><a target="_blank" href="https://www.suse.com/c/rancher_blog/rancher-desktop-1-0-0-has-arrived/">Rancher Desktop 1.0.0 Has Arrived</a> — Bundled with nerdctl(docker like UI/UX cli for contained) Rancher Desktop is quickly becoming a favourite desktop application for running Kubernetes.</p>
</li>
</ul>
<h2 id="heading-nice-january-reads15th-31st-jan">Nice January reads(15th — 31st Jan)</h2>
<p>Do check out the awesome reads from the community in my <a target="_blank" href="https://www.getrevue.co/profile/saiyampathak/issues/cloud-native-with-saiyam-2022-first-edition-942587">previous newsletter</a> as well. Looks like the community has doubled down on creating awesome content!!</p>
<ul>
<li><p><a target="_blank" href="https://www.civo.com/blog/cloud-trends-2022">Cloud trends 2022</a> — These are my tailored predictions for 2022 and I think the cloud native community and some amazing startups are going to grow in this space.</p>
</li>
<li><p><a target="_blank" href="https://iximiuz.com/en/posts/kubernetes-api-call-simple-http-client/?utm_medium=social&amp;utm_source=twitter">How To Call Kubernetes API using Simple HTTP Client</a> — Ivan writes his post with so many details and with great diagrammatic representation that makes it a treat to read.</p>
</li>
<li><p><a target="_blank" href="https://blog.chainguard.dev/wtf-is-chainguard/">WTF is Chainguard ?</a> — Chainguard has been hiring amazing people from the cloud native community and building a dream team out there, this blog gives the answer to the most important question!</p>
</li>
<li><p><a target="_blank" href="https://go.dev/doc/tutorial/generics">Tutorial: Getting started with generics</a> in Go — neat introduction to Generics in Golang.</p>
</li>
<li><p><a target="_blank" href="https://opensource.googleblog.com/2022/01/Introducing%20Ephemeral%20Containers.html">Introducing Ephemeral Containers</a> — Ephemeral containers are a new type of container that is part of the Kubernetes core API and may be added to an existing Pod for administrative actions like debugging, it runs until it exits, and it won’t be restarted.</p>
</li>
<li><p><a target="_blank" href="https://blog.rewanthtammana.com/hardening-kaniko-build-process-with-linux-capabilities">Hardening Kaniko build process with Linux capabilities</a> — Kaniko is a tool to build images from Dockerfile or inside a Kubernetes cluster and this article takes a step further to harden the whole build process.</p>
</li>
<li><p><a target="_blank" href="https://tracymiranda.com/2022/01/18/there-is-such-a-thing-as-an-open-source-business-model/">There is such a thing as an open source business model</a></p>
</li>
<li><p><a target="_blank" href="https://dev.to/martinheinz/building-github-apps-with-golang-3ljo">Building GitHub Apps with Golang</a></p>
</li>
<li><p><a target="_blank" href="https://www.containiq.com/post/debugging-kubernetes-nodes-in-not-ready-state">Debugging Your Kubernetes Nodes in the ‘Not Ready’ State | nodenotready</a></p>
</li>
</ul>
<h2 id="heading-learning-resourcesrepositories">Learning resources/repositories</h2>
<ul>
<li><p><a target="_blank" href="https://github.com/TheAlgorithms/Go">Algorithms implemented in Go for beginners, following best practices.</a></p>
</li>
<li><p><a target="_blank" href="https://www.tldraw.com/">https://www.tldraw.com/</a> — Alternative to excalidraw</p>
</li>
<li><p><a target="_blank" href="https://sangkeon.github.io/opaguide/">OPA Guidebook</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/merbridge/merbridge">merbridge</a> — Use eBPF to speed up your Service Mesh like crossing an Einstein-Rosen Bridge.</p>
</li>
<li><p><a target="_blank" href="https://seb.jambor.dev/posts/systemd-by-example-the-playground/">Systemd by example playground</a> — dope and you should check this out.</p>
</li>
</ul>
<h2 id="heading-learn-from-twitter">Learn from Twitter</h2>
<p><a target="_blank" href="https://twitter.com/b0rk/status/1483466231038595087">Tweet1</a>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643680511114/--sqsxzQYX.png" alt="image.png" /></p>
<p><a target="_blank" href>Tweet2</a>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643680631860/2Q_WYGNAV.png" alt="image.png" /></p>
<h2 id="heading-sponsored-content">Sponsored content</h2>
<p><img src="https://cdn-images-1.medium.com/max/2000/0*1m-_7PeJ_7xoD_bc" alt /></p>
<p>This issue is brought to you by <strong>Robusta, Suborbital, Armo, SlimAI</strong> and <strong>Teleport</strong> -&gt;</p>
<p><a target="_blank" href="https://www.armosec.io/">**ARMO</a>** assures DevOps, DevSecOps, and developers that every workload, cluster, container, and microservice is born and remains secure, from development to production and from configuration to run-time, every time. They are the creators of <a target="_blank" href="https://youtu.be/aBFc_7-8s_A">Kubescape</a>.</p>
<p><a target="_blank" href="http://robusta.dev">Robusta</a> — an open source platform for Kubernetes troubleshooting and automation. Robusta automates your incident response and troubleshooting — what Docker did to Day 1, Robusta does to Day 2.</p>
<p><a target="_blank" href="https://suborbital.dev/">Suborbital</a> Making cloud native WebAssembly easy.</p>
<p><a target="_blank" href="http://slim.ai">SlimAI</a> — giving developers the power to build better cloud-native applications with less friction, complexity, and waste.</p>
<p><a target="_blank" href="https://goteleport.com/">**Teleport</a>** empowers engineers to quickly and securely access any computing resource anywhere on the planet. The Access Plane allows engineers and security professionals to unify secure access and provide visibility to infrastructure, applications, and data across all environments.</p>
<p><strong>Latest from them</strong></p>
<ul>
<li><p><a target="_blank" href="https://www.armosec.io/blog/cve-2022-0185-kubernetes-users/">CVE-2022–0185 </a>— What does the newest kernel exploit mean for Kubernetes users and how to detect it? — Armo</p>
</li>
<li><p><a target="_blank" href="https://home.robusta.dev/blog/kubernetes-is-complex-because-you-want-complex-things/">Kubernetes is complex because you want complex things</a> — Robusta</p>
</li>
<li><p><a target="_blank" href="https://blog.suborbital.dev/assemblyscript-vs-rust-for-your-wasm-app">AssemblyScript vs. Rust: Which Is Right for Your Wasm App?</a> — Suborbital</p>
</li>
<li><p><a target="_blank" href="https://www.slim.ai/blog/where-shift-left-goes-wrong.html">Where Shift Left Goes Wrong </a>— As if cloud infrastructure were not complex enough, there’s a whole new complication to contend with: Shifting left. — SlimAI</p>
</li>
<li><p><a target="_blank" href="https://goteleport.com/blog/modern-pam-solutions-requirements/">What a Modern PAM Solution for Cloud-Native Applications Looks Like</a> — Teleport</p>
</li>
<li><p><a target="_blank" href="https://goteleport.com/blog/how-to-use-ssh-agent-safely/">How to Use SSH Agent Safely</a> — Teleport</p>
</li>
</ul>
<h2 id="heading-my-supporters">My supporters</h2>
<p>Thank you to the amazing members -&gt; <a target="_blank" href="https://twitter.com/rawkode?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Rawkode</a>, <a target="_blank" href="https://twitter.com/markyjackson5?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Marky</a>, <a target="_blank" href="https://twitter.com/noelgeorgi?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Noel</a>, <a target="_blank" href="https://twitter.com/walidshaari?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Walid</a>, <a target="_blank" href="https://twitter.com/CedricKeng?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Cedric</a> , <a target="_blank" href="https://twitter.com/jackfrosch?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Jack</a> , <a target="_blank" href="https://twitter.com/blaizedsouza">Blaize D’souza</a>, <a target="_blank" href="https://twitter.com/ChadMCrowell">ChadMCrowell</a> and <a target="_blank" href="https://twitter.com/philshapiro">Phil Shapiro</a></p>
<p>Special thanks to <strong>ARMO, Suborbital and Robusta</strong> for being an Org member and to <strong>SlimAI</strong> and <strong>Teleport</strong> for being a platinum member.</p>
<p>Some amazing partnerships coming up that will be announced on Twitter so keep an eye out if your org wants to grow the community and support my work then consider becoming a member as it comes with a lot of benefits(<a target="_blank" href="https://saiyampathak.com/membership?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">membership program</a>)</p>
<p>Do not forget to subscribe to my <a target="_blank" href="https://saiyampathak.com/youtube?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">YouTube channel</a></p>
<p>Thank you for reading this edition and hope you like it. Please take a minute to <strong><a target="_blank" href="https://www.getrevue.co/profile/saiyampathak">subscribe to the newsletter</a></strong> and let me know if you are doing something great that will benefit the community, I will include that.</p>
]]></content:encoded></item><item><title><![CDATA[Cloud native with Saiyam — 2022 first edition!]]></title><description><![CDATA[HAPPY NEW YEAR everyone!! May this year brings a lot of happiness and hope we can meet this year in person /\
To succeed the only mantra is to do hard work and there are people in the cloud native ecosystem who are ready to help you get the direction...]]></description><link>https://saiyampathak.com/cloud-native-with-saiyam-2022-first-edition</link><guid isPermaLink="true">https://saiyampathak.com/cloud-native-with-saiyam-2022-first-edition</guid><category><![CDATA[newsletter]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[Kubernetes]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sat, 15 Jan 2022 02:22:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1643682141891/KQw2uuPzB.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>HAPPY NEW YEAR everyone!! May this year brings a lot of happiness and hope we can meet this year in person <em>/\</em></p>
<p>To succeed the only mantra is to do hard work and there are people in the cloud native ecosystem who are ready to help you get the direction. Keeping this thing in mind I created the “<a target="_blank" href="https://youtu.be/7l_n97Mt0ko">**DevOps roadmap 2022</a>**” aiming to help thousands and make them job-ready. I want more people to take benefit of the free resources available and be part of cloud native community ending up in great jobs! All this just requires dedication and hard work from your side + the will to learn. Nothing else is required and yes ANYONE can learn.</p>
<p>The video has crossed 40k+ views and I also created a GitHub repository where people are sharing their journey and progress, it is so great to see so many people coming together to learn.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643681859423/LNdDH98mR.png" alt="image.png" /></p>
<p>I also started an org membership plan that the organizations can join, this plan helps them with various benefits as mentioned on the <a target="_blank" href="https://saiyampathak.com/membership">membership page</a>(though reach out first before purchasing it). I only have 8 slots to fill in and already 3 are taken and 3 are in progress. I got a great response from the companies and they loved the plan.</p>
<h2 id="heading-videos">Videos</h2>
<p>I did my first keynote for 2021 where I gave a talk on “<a target="_blank" href="https://youtu.be/wegwfm1t-kg">Kubernetes security tools</a>”. I discussed:</p>
<ul>
<li><p>What is DevSecOps</p>
</li>
<li><p>4C’s of security</p>
</li>
<li><p>Kubernetes security</p>
</li>
<li><p>CNCF Security landscape</p>
</li>
<li><p>Falco</p>
</li>
<li><p>Terrascan</p>
</li>
<li><p>Kubescape</p>
</li>
</ul>
<p>I also uploaded another video this month — “<a target="_blank" href="https://youtu.be/nP76IhXOCRs">Certifications, are they worth it</a>?” covering my viewpoint on Certifications and their importance. I covered this topic wrt cloud and Kubernetes certs but it fits all domains.</p>
<p>I will be creating more videos in the coming weeks mostly covering CNCF projects(<a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibB658blGUEv18IhcMGL0dxC">CNCFMinutes</a>) and a few walkthrough videos just like I did for <a target="_blank" href="https://youtu.be/GJag6DwQDEA">Kubestr</a> and <a target="_blank" href="https://youtu.be/irJ5SSvEpvQ">Portainer</a>.</p>
<h2 id="heading-cks-book-update-122">CKS book update — 1.22</h2>
<p>I updated my <a target="_blank" href="https://saiyampathak.gumroad.com/l/cksbook">CKS book</a> which is helpful in preparing for Kubernetes CKS certification to Kubernetes version 1.22. Basically, I re-ran all the scenarios on Kubernetes 1.22 cluster and updated them wherever necessary.</p>
<ul>
<li><p>A new playground for 1.22</p>
</li>
<li><p>Updated a few scenarios including PodSecurityPolicy</p>
</li>
<li><p>Kind cluster addition for local practice</p>
</li>
<li><p>Added to the scenarios where containerd matters and where it will not matter that much</p>
</li>
<li><p>Colour coding change</p>
</li>
<li><p>Added images to Falco to make it more clear</p>
</li>
</ul>
<p>This is the major upgrade and is free for people who already purchased in the past, for the rest you can buy the book <a target="_blank" href="https://saiyampathak.gumroad.com/l/cksbook">here</a>.</p>
<h2 id="heading-katacoda-scenarios">Katacoda Scenarios</h2>
<p>I have been using Katacoda for a long time but now I want to help even more people by creating a few scenarios so that people can run/test things right in the browser and learn/practice quickly.</p>
<p>I have started creating scenarios and created a couple already, let me know what all scenarios you think would be beneficial for the community and I can spend some time from my weekends to create new Katacoda scenarios.</p>
<p><a target="_blank" href="https://www.katacoda.com/pathaksaiyam/scenarios/kube122">Kubernetes 1.22 + Container scenario</a></p>
<p><a target="_blank" href="https://www.katacoda.com/pathaksaiyam/scenarios/kubescape">Kubescape scenario</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643681891344/lhpHrypmey.png" alt="image.png" /></p>
<h2 id="heading-news-and-announcements">News and Announcements</h2>
<ul>
<li><p><a target="_blank" href="https://grafana.com/blog/2022/01/03/introducing-grafana-university-our-virtual-hands-on-education-platform-thats-free-and-easy-to-use/?src=tw&amp;mdm=social">Grafana University</a> — a virtual hands-on education platform that’s free and easy to use covering concepts of observability and getting hands-on with Grafana.</p>
</li>
<li><p><a target="_blank" href="https://kubernetes.io/blog/2022/01/07/kubernetes-is-moving-on-from-dockershim/">Kubernetes moving away from dockershim </a>— process and timeline for deprecation.</p>
</li>
<li><p><a target="_blank" href="http://civo.com/signup">Civo Kubernetes</a> with Cilium CNI — Now you can create Civo Kubernetes cluster with Cilium as the CNI</p>
</li>
<li><p><a target="_blank" href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/colocated-events/">CFP’s are open for KubeCon colocated events</a></p>
</li>
<li><p><a target="_blank" href="https://www.solo.io/blog/solo-announces-bumblebee/">​​BumbleBee: Build, Ship, Run eBPF tools</a></p>
</li>
<li><p><a target="_blank" href="https://www.cncf.io/blog/2022/01/11/litmuschaos-becomes-a-cncf-incubating-project/">LitmusChaos becomes a CNCF incubating project</a></p>
</li>
</ul>
<h2 id="heading-nice-january-reads">Nice January reads</h2>
<ul>
<li><p><a target="_blank" href="https://www.redhat.com/sysadmin/top-security-articles-2021">Top 10 Linux security tutorials for sysadmins from 2021</a></p>
</li>
<li><p><a target="_blank" href="https://blog.chainguard.dev/what-an-sbom-can-do-for-you/">What an SBOM Can Do for You</a></p>
</li>
<li><p><a target="_blank" href="https://kubesphere.io/blogs/install-kubernetes-containerd-multus/">Install Kubernetes 1.23, containerd, and Multus CNI the Easy Way</a></p>
</li>
<li><p><a target="_blank" href="https://iximiuz.com/en/posts/kubernetes-api-structure-and-terminology/?utm_medium=social&amp;utm_source=twitter">Working with Kubernetes API — Resources, Kinds, and Objects</a></p>
</li>
<li><p><a target="_blank" href="https://blog.crunchydata.com/blog/kube-cluster-from-scratch-on-rocky-8">Kubernetes + Postgres Cluster From Scratch on Rocky 8</a></p>
</li>
<li><p>Poly Haven — <a target="_blank" href="https://blog.polyhaven.com/how-we-handle-80tb-and-5m-page-views-a-month-for-under-400/">How we handle 80TB and 5M page views a month for under $400</a></p>
</li>
<li><p><a target="_blank" href="https://thenewstack.io/5-ai-trends-to-watch-out-for-in-2022">5 AI Trends to Watch out for in 2022</a></p>
</li>
<li><p><a target="_blank" href="https://loft.sh/blog/7-kubernetes-companies-to-watch-in-2022/">7 Kubernetes Companies to Watch in 2022</a></p>
</li>
<li><p><a target="_blank" href="https://redcanary.com/blog/ebpf-for-security/">eBPF for security: a beginner’s guide</a></p>
</li>
<li><p><a target="_blank" href="https://www.civo.com/learn/kubernetes-https-ingress-controller-with-your-own-tls-certificate">Kubernetes — HTTPS ingress controller with your own TLS certificate</a></p>
</li>
</ul>
<h2 id="heading-learning-repositories">Learning repositories</h2>
<ul>
<li><p><a target="_blank" href="https://github.com/iximiuz/client-go-examples">Kubernetes client-go examples</a></p>
</li>
<li><p><a target="_blank" href="https://github.com/teh-cmc/go-internals">go-internals</a> — it is a work-in-progress book about the internals of the Go (1.10+) programming language.</p>
</li>
<li><p><a target="_blank" href="https://github.com/defenseunicorns/zarf">Zarf</a> — Kubernetes Air Gap Buddy</p>
</li>
<li><p><a target="_blank" href="https://github.com/raesene/kube_security_lab">kube_security_lab</a> — Kubernetes Local Security Testing Lab</p>
</li>
<li><p><a target="_blank" href="https://github.com/wagoodman/dive">dive</a> — A tool for exploring each layer in a docker image</p>
</li>
</ul>
<h2 id="heading-learn-from-twitter">Learn from Twitter</h2>
<p><a target="_blank" href="https://twitter.com/Rapid_API/status/1478645950285557763?s=20&amp;t=Icm-mAzk3lCqns_2qRYMtA">Tweet1</a></p>
<p><a target="_blank" href="https://twitter.com/SaiyamPathak/status/1481700001994907649?s=20&amp;t=aI7RiEMSjC4mWKLqq6v2Gw">Tweet2</a>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643681928066/0FZDaGj1W.png" alt="image.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643681953311/juKHF8qS7.png" alt="image.png" /></p>
<h2 id="heading-sponsored-content">Sponsored content</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643681980491/tp2eeEyTh.png" alt="image.png" />
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643681987748/gv7qKh-zF.png" alt="image.png" /></p>
<p>This issue is brought to you by <strong>Armo</strong> and <strong>Teleport</strong> -&gt;</p>
<p><a target="_blank" href="https://www.armosec.io/">**ARMO</a>** assures DevOps, DevSecOps, and developers that every workload, cluster, container, and microservice is born and remains secure, from development to production and from configuration to run-time, every time. They are the creators of <a target="_blank" href="https://youtu.be/aBFc_7-8s_A">Kubescape</a>.</p>
<p><strong>Teleport</strong> empowers engineers to quickly and securely access any computing resource anywhere on the planet. The Access Plane allows engineers and security professionals to unify secure access and provide visibility to infrastructure, applications, and data across all environments.</p>
<p><strong>Latest from them</strong></p>
<p><a target="_blank" href="https://goteleport.com/security-visionaries-2022/">Security Visionaries 2022</a> — Come hear what some of the world’s foremost security researchers, practitioners and thinkers see on the security horizon for 2022.</p>
<p><a target="_blank" href="https://goteleport.com/blog/ssh-hardening-to-prevent-brute-force-attacks/">SSH Hardening Tips to Prevent Brute-Force Attacks</a></p>
<p><a target="_blank" href="https://goteleport.com/blog/security-hardening-ssh-bastion-best-practices/">SSH Bastion Host Best Practices</a></p>
<h2 id="heading-my-supporters">My supporters</h2>
<p>Thank you to the amazing members -&gt; <a target="_blank" href="https://twitter.com/danpopnyc?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">POP</a>, <a target="_blank" href="https://twitter.com/rawkode?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Rawkode</a>, <a target="_blank" href="https://twitter.com/markyjackson5?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Marky</a>, <a target="_blank" href="https://twitter.com/noelgeorgi?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Noel</a>, <a target="_blank" href="https://twitter.com/walidshaari?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Walid</a>, <a target="_blank" href="https://twitter.com/CedricKeng?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Cedric</a> , <a target="_blank" href="https://twitter.com/jackfrosch?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">Jack</a> ,<a target="_blank" href="https://twitter.com/blaizedsouza"> Blaize D’souza</a>, <a target="_blank" href="https://twitter.com/ChadMCrowell">ChadMCrowell</a> and <a target="_blank" href="https://twitter.com/philshapiro">Phil Shapiro</a></p>
<p>Special thanks to <strong>ARMO</strong> for being an Org member and to <strong>Teleport</strong> for being a platinum member.</p>
<p>Some amazing partnerships coming up that will be announced on Twitter so keep an eye if your org wants to grow the community and support my work then consider becoming a member as it comes with a lot of benefits(<a target="_blank" href="https://saiyampathak.com/membership?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">membership program</a>)</p>
<p>Do not forget to subscribe to my <a target="_blank" href="https://saiyampathak.com/youtube?utm_campaign=Cloud%20native%20with%20Saiyam&amp;utm_medium=email&amp;utm_source=Revue%20newsletter">YouTube channel</a></p>
<p>Thank you for reading this edition and hope you like it, let me know if you are doing something great that will benefit the community, I will include that.</p>
]]></content:encoded></item><item><title><![CDATA[2021 — Year I want and do not want to remember!]]></title><description><![CDATA[My 2021 story
It’s that time of the year again where I tend to look back over the year to see what all I have achieved in the past year and how I have improved myself as a human being.
Yeah 2021, sigh, a year that has changed me in every way I live, ...]]></description><link>https://saiyampathak.com/2021-year-i-want-and-do-not-want-to-remember-4229c4a32015</link><guid isPermaLink="true">https://saiyampathak.com/2021-year-i-want-and-do-not-want-to-remember-4229c4a32015</guid><category><![CDATA[life]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[community]]></category><category><![CDATA[learning]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Mon, 20 Dec 2021 15:11:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/K5IS7QLSm7U/upload/v1640016528188/WoYZxQyLH.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My 2021 story</p>
<p>It’s that time of the year again where I tend to look back over the year to see what all I have achieved in the past year and how I have improved myself as a human being.</p>
<p>Yeah 2021, sigh, a year that has changed me in every way I live, my thoughts, my life and left a deep impact on me. I will be dividing this year round up into two parts:</p>
<ul>
<li>Personal front</li>
<li>Learnings and Community</li>
</ul>
<p>Life-changing experiences: I do not want this post to be only about my personal learnings but surely want to talk about two major events that changed me in a big way are</p>
<p><strong>30th April 2021</strong>: Worst day of my life, my elder brother passed away due to COVID-19. He fought for about a month but in the end, his body gave up on fighting the virus and he left me alone in this world with tons of responsibilities. I and my brother shared a very very strong bond and we always used to help each other. He was sharp and I went to him whenever I had to clarify issues or faced any problems in my life. Now this space is so empty, all festivals, holidays and that happiness has gone. The wheel of time will never stop and it will keep on going with many events in life but him not being present with me and my family will always be felt, the tears will always be there behind the smile. This whole incident made me realise that we should love our friends/family when they are alive, be with them more than often, take care of each other, talk often, show support as this is what life is about, spreading love and happiness. Now I have realised that anyone can die anytime so leave each moment happily and there is nothing more important than friends and family.</p>
<p><strong>24th September</strong>: Best day of my life as I became a DAD!! Yes on this day my wife gave birth to our beautiful daughter “Rushika”. She is so little that it is hard to hold her in my arms but I am loving it to see her grow every day. This is an entirely new feeling of being responsible.</p>
<p>These instances have taught me:</p>
<ul>
<li>Life can end at any moment so love the people who are alive.</li>
<li>Help people as I have seen people struggle through tough times.</li>
<li>Always be kind while talking as you may never know what other person might have gone through.</li>
<li>Talk to your friends as they love you and you need to spare time for them.</li>
<li>Life after a loss is super hard but you need to live for the ones you are alive and that is the reason I moved in with my parent permanently.</li>
</ul>
<p><strong>Even after what all happened on the personal front, I was able to do a lot of stuff in the cloud native space!</strong></p>
<h3 id="heading-the-cks-book"><strong>The CKS BOOK</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016348181/ea7C02Y4N.png" alt /></p>
<p>So this year in January 2021 I wrote a book “<strong>Let’s learn CKS scenarios</strong>” which is based on Kubernetes CKS certification. I have sold more than 277 individual + 250 bulk copies generating more than 10k USD. It’s my first book and I am really happy with the response I got :)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016350791/tJLlA3Qd4.png" alt /></p>
<p>And a big part of 2022 will be writing the CKA book that was requested the most after I published this book.</p>
<h3 id="heading-streams"><strong>Streams</strong></h3>
<p>I did a lot of Youtube streaming this year with <strong>60 streams with amazing people</strong> ❤. We covered a wide variety of topics and a series of streams including:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016353083/uM7Pm3Yxv.png" alt /></p>
<p><strong>Knative series -&gt;</strong> <a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibBb77B9zyQot2kwUrMM1otq">https://youtube.com/playlist?list=PL5uLNcv9SibBb77B9zyQot2kwUrMM1otq</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016355932/GoW84JV1l.png" alt /></p>
<p><strong>Rancher-Suse Open source projects</strong>(Kubewarden, Harvester, Epinio, Opni, Rancher desktop&amp; Kim, FuseML) -&gt;</p>
<p><a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibB-7WUGePMaw3jdvmHzQ74S">https://youtube.com/playlist?list=PL5uLNcv9SibB-7WUGePMaw3jdvmHzQ74S</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016358455/92gJJRru3.png" alt /></p>
<p><strong>CI/CD week -&gt;</strong></p>
<p><a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibC0Osfk9Nhf7MgP2UNzZkDR">https://youtube.com/playlist?list=PL5uLNcv9SibB-7WUGePMaw3jdvmHzQ74S</a></p>
<p>And you can check out all the past live streams <a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibChr9andKsQt0sc6s_OHS0j">here</a> that include all of the above and Crossplane, Fission, Kubespehere, Chaos-mesh, Litmus, Thanos, Linkerd, Opstrace, SigNoz, TimscaleDb, RISC-V, Kubernetes Networking, Docker slim, kubeform , kubernetes configurator, K3ai, Okteto, Kubecost, Keptn, Teleport, KCP, Rust, CUE, ClusterAPI, Kubevirt, K0s, Talos, COSI, OpenEBS, OPA, Kyverno, vcluster, JsPolicy, GraalVM, WebAssembly!!</p>
<p>Isn’t that awesome 😎 Those who have stayed with the channel this year would have learned all of the above from amazing people in the industry!</p>
<p>Apart from this, I did post youtube uploads where I explored various cloud native technologies.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016361434/qCHAgmmJX.png" alt /></p>
<p>How do I create these videos?<br />I go through the docs and explore the product, then try to create the simplest possible explanation including a demo in less time. Example: The Portainer walkthrough is 1 hour of demo crunched in under 17 minutes and Kubestr covers all the commands possible with demo in under 13 minutes. I love doing this and many people have given positive feedback on this.</p>
<h3 id="heading-cncfminutes">CNCFMinutes</h3>
<p>Another interesting thing I started that people loved the most this year is my <a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibB658blGUEv18IhcMGL0dxC"><strong>CNCFMinutes playlist</strong></a>. My mission is to make cloud native technology easy to explore and the CNCF landscape can be daunting for newcomers or ever for people who would just like to know about a piece of software without going into much detail. This is where my CNCFminutes videos come in handy, these videos describe a CNCF project in a few minutes so that people know what the project is, its features, architecture and how it works! Again this is hours of effort that I crunch and put in a single video. As of today, there are 2<strong>0 CNCFMinutes videos</strong> that teach you about 20 different CNCF projects!</p>
<iframe src="https://www.youtube.com/embed/videoseries?list=PL5uLNcv9SibB658blGUEv18IhcMGL0dxC" width="700" height="394"></iframe>

<h3 id="heading-twitch-streams"><strong>Twitch streams</strong></h3>
<p>I also started Twitch streams aimed to do a product walkthrough LIVE on twitch but later discontinued it as I thought video uploads are better. But I did four and uploaded them to my channel.</p>
<p>Apart from my regular YouTube uploads I collaborated with other people and participated in various events, webinars and conferences. So let's get started!</p>
<h3 id="heading-events-webinars-conferences-and-collaboration"><strong>Events, Webinars, conferences and collaboration:</strong></h3>
<ul>
<li><a target="_blank" href="https://youtu.be/ridM0ABR0ys">Deploying an App in Kubernetes with Saiyam Pathak</a> : <strong>Bashwomen community</strong> <a target="_blank" href="https://medium.com/u/6993823674d5">Seema Saharan</a></li>
<li><a target="_blank" href="https://youtu.be/zMBH95BVzKY">Easy Kubernetes Volumes using Longhorn</a> : <a target="_blank" href="https://twitter.com/DoKcommunity"><strong>Data on Kubernetes</strong></a></li>
<li><a target="_blank" href="https://youtu.be/4mEyoI8kFeI">GitOps at Scale Using Fleet</a> : <strong>GitOps Days 2021</strong></li>
<li><a target="_blank" href="https://youtu.be/Vhs1p549LX4">College to career</a> and <a target="_blank" href="https://youtu.be/LBQ4zGCR4As">SWE to Cloud Roles</a> : <a target="_blank" href="https://twitter.com/kunalstwt"><strong>Kunal Kushwaha</strong></a></li>
<li><a target="_blank" href="https://youtu.be/VaZfNYj8J4A">Building a Kubernetes Based Cloud Platform at Civo [DevOps Deployed Ep. 05]</a> : <strong>DevOps directive</strong> with <a target="_blank" href="https://twitter.com/sidpalas">Sid Palas</a></li>
<li><a target="_blank" href="https://youtu.be/oh5E-ah-kUU">CNCFMinutes-Kubernetes, Flux &amp; Falco</a> : <strong>Cloud native Bangalore meetup</strong></li>
<li><a target="_blank" href="https://youtu.be/GrSPJOuG54w">Introduction to CNCF in Hindi</a> : <a target="_blank" href="https://twitter.com/cloudshala"><strong>Cloudshala</strong></a></li>
<li><a target="_blank" href="https://youtu.be/iDGjG4xtuww">5 different ways to run Kubernetes clusters + learning resources</a> : <strong>Cloud native hackathon</strong></li>
<li><a target="_blank" href="https://youtu.be/btGFt5-37hs">Power Level 9000! Improving Application Performance with Chaos Engineering</a> : <strong>KUBECON EU 2021</strong></li>
<li><a target="_blank" href="https://youtu.be/z9Grmf64bJ0?t=11112">Kubernetes power for VM’s using KubeVirt</a> : <strong>AllDayDevOps</strong></li>
<li><a target="_blank" href="https://youtu.be/rllU9HidpLQ">Various policy engines for Kubernetes policies</a> : <strong>ContainerDays 2021</strong></li>
<li><a target="_blank" href="https://www.techstrongevents.com/cloudnative2021/v/s-598356?i=W0dhVK_IcV6kovLe3jUF4_NI6y2sneBf">How to Gain Observability Into Your Kubernetes Workloads</a> : <a target="_blank" href="https://www.techstrongevents.com/cloudnative2021"><strong>CloudNative days with Kubernetes</strong></a></li>
<li><a target="_blank" href="https://youtu.be/x-GojMIwrpE">Containers and Kubernetes</a> : <strong>Docker Mumbai meetup</strong></li>
<li><a target="_blank" href="https://sysdig.com/resources/webinars/preparing-for-the-certified-kubernetes-security-specialist-exam/">Preparing for the Certified K8s Security Specialist (CKS) Exam</a> : <strong>Sysdig Webinar</strong></li>
<li><a target="_blank" href="https://youtu.be/B5UY-qeW96I">Intro to Kubernetes monitoring</a> : <strong>Civo Hackathon</strong></li>
<li><a target="_blank" href="https://www.youtube.com/watch?v=T4qwVXIUza8&amp;t=107s">Introduction to service meshes</a> : <strong>Civo Webinar</strong></li>
<li><a target="_blank" href="https://youtu.be/IflesqS2pkQ">Kubernetes Security using Kube-bench</a>: <strong>Civo Webinar</strong></li>
<li><a target="_blank" href="https://youtu.be/zKwjW4AMklM">Kubernetes Gateway API introduction</a>: <strong>Civo Webinar</strong></li>
<li><a target="_blank" href="https://youtu.be/ekpYuynQQ1I">Kubernetes at Scale using Rancher Fleet</a> : <strong>Docker bangalore &amp;Malaysia joint meetup</strong></li>
<li><a target="_blank" href="https://youtu.be/SYNFXria7ac">Leverage Azure Tech Stack For Any Kubernetes Cluster Via Azure Arc</a> : <a target="_blank" href="https://akd.konfhub.com/#agenda"><strong>Azure Kubernetes Day</strong></a></li>
<li><a target="_blank" href="https://youtu.be/k2XLzCXRizY">AMA CKA/CKAD</a> : <a target="_blank" href="https://community.cncf.io/events/details/cncf-kcd-bengaluru-presents-kubernetes-community-days-bengaluru/"><strong>KCD Bengaluru</strong></a></li>
</ul>
<p>That totals to <strong>4 Webinars, 6 Conferences, 5 Events/meetups and 5 collaborations</strong>.</p>
<h4 id="heading-event-organizer"><strong>Event Organizer</strong></h4>
<ul>
<li><a target="_blank" href="https://community.cncf.io/events/details/cncf-kcd-bengaluru-presents-kubernetes-community-days-bengaluru/">First ever KCD Bengaluru with awesome organising team</a></li>
<li><a target="_blank" href="https://community.cncf.io/cloud-native-students/">CNCF Students Chapter</a></li>
<li><a target="_blank" href="https://community.cncf.io/container-garage/">First ever Container Garage event</a> : Joint event by Docker captains and CNCF Ambassadors</li>
</ul>
<h3 id="heading-certs-magic-show"><strong>Certs Magic show </strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016364569/x3I0VzqnK.png" alt /></p>
<p>An amazing group of people started <strong>cloudnative.tv</strong> : A series of great shows that runs throughout the week on the official CNCF channel. I am fortunate to be a part of it and run my show called “<strong>Certs Magic</strong>” show that aims to help people prepare for Kubernetes certifications. Here is the <a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibBz9WtAxydEEXauA0j6Km3A">complete playlist</a> that you can watch.</p>
<h3 id="heading-blogs"><strong>Blogs</strong></h3>
<p>A lot of people out there love to read blogs as well and I wrote a few this year which were published on Civo, Codefresh, Dzone and my <a target="_blank" href="http://saiyampathak.com">personal website</a>.</p>
<ul>
<li><a target="_blank" href="https://saiyampathak.medium.com/teleport-6-0-database-access-made-easy-ec7f8a8cc40f">Teleport 6.0 : Database Access Made Easy</a></li>
<li><a target="_blank" href="https://saiyampathak.com/twingate-tryout-to-access-private-ip-from-k8s-cluster">Twingate tryout to access private IP from K8s cluster</a></li>
<li><a target="_blank" href="https://www.civo.com/learn/kubernetes-power-for-virtual-machines-using-kubevirt">Kubernetes power for Virtual machines using KubeVirt</a></li>
<li><a target="_blank" href="https://dzone.com/articles/how-to-use-open-source-kubecost-to-understand-and">Use Open-Source Kubecost to Understand (and Control) Kubernetes Spending</a></li>
<li><a target="_blank" href="https://www.civo.com/learn/kube-ception-kubernetes-within-kubernetes-within-kubernetes-using-harvester">Kube-ception — Kubernetes within Kubernetes within Kubernetes using Harvester</a></li>
<li><a target="_blank" href="https://www.civo.com/learn/webkubectl-running-kubectl-commands-from-your-web-browser">Webkubectl — Running Kubectl commands from your web browser</a></li>
<li><a target="_blank" href="https://www.civo.com/learn/get-up-and-running-with-kubeflow-on-civo-kubernetes">Get up and running with Kubeflow on Civo Kubernetes</a></li>
<li><a target="_blank" href="https://www.civo.com/learn/benchmarking-kubernetes-storage-using-kubestr">Benchmarking Kubernetes storage using Kubestr</a></li>
<li><a target="_blank" href="https://dzone.com/articles/how-to-use-ketch-to-deploy-applications-on-kuberne">Use Ketch to Deploy Apps on Kubernetes Without YAML</a></li>
<li><a target="_blank" href="https://www.civo.com/blog/observability-trends-2021">Observability trends 2021</a></li>
<li><a target="_blank" href="https://codefresh.io/kubernetes-tutorial/connect-civo-kubernetes-codefresh/">Connect Civo Kubernetes to Codefresh</a></li>
<li><a target="_blank" href="https://saiyampathak.com/my-cks-book-c69b3e139ab6">My CKS Book</a></li>
</ul>
<h3 id="heading-civo-academy"><strong>Civo Academy</strong></h3>
<p>Want to learn Kubernetes for free? Civo academy is your answer!!<br />A lot of people have been asking me to create a Kubernetes course, I started with this idea of Academy and curated the content that will teach everyone Kubernetes from the ground up. The course is free and there are different instructors who recorded different sections. Go signup and learn now if you haven't already done so!</p>
<p><a target="_blank" href="https://www.civo.com/blog/announcing-civo-academy">Annoucement blog</a><br /><a target="_blank" href="http://civo.com/academy">Academy link</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016369093/8F1DIne-P.png" alt /></p>
<h3 id="heading-youtube-memberships"><strong>Youtube Memberships</strong></h3>
<p>A support program that I started recently so that people and organizations can support my channel and the work I am doing for the community. My channel has helped many people and that is the reason I never stopped producing awesome content. I think the work I do can help your product reach out to professionals and give you the visibility that is needed. So if you are a startup then reach out to me and would be happy to help.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016371269/J5koZ9Bz3.png" alt /></p>
<p>I have fantastic 10+ Youtube members who joined at the various tiers and a couple at Platinum tier.</p>
<p><strong>Note</strong>: The platinum tier is going to be removed soon and there will be a separate prospectus with benefits for Organizations.</p>
<p>All the content on YouTube is and will always remain free!</p>
<p><a target="_blank" href="https://saiyampathak.gumroad.com/l/youtubemembership">Membership link</a></p>
<h3 id="heading-newsletter"><strong>Newsletter</strong></h3>
<p>I get to know a lot of information from various newsletters that I have subscribed to and I decided to start my own Newsletter this year and I am glad I did as these contain all the information that I go through personally, read personally or find interesting. I have received great feedback so I will keep writing the newsletter in 2022 as well.</p>
<p><a target="_blank" href="https://www.getrevue.co/profile/saiyampathak">Subscribe to the newsletter here if you want them straight in your inbox!</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016373041/UL-wlGJb3.png" alt /></p>
<p>I have created 5 issues and all of them have tremendous content from where you can learn a lot, this is me talking straight to you.</p>
<h3 id="heading-kcna-exam-sme"><strong>KCNA Exam SME </strong></h3>
<p>Kubernetes and Cloud Native Associate is a beginner level certification who enters in Kubernetes and CNCF world. I was fortunate to be a part of the creation of the exam. It is an MCQ type exam that covers Kubernetes and cloud native ecosystem. It was fun working with the other SME’s and the exam has been well received by the community.</p>
<iframe src="https://www.youtube.com/embed/iGkFHB1kFZ0?feature=oembed" width="700" height="393"></iframe>

<p>Apart from this, I have my day job at Civo where I work on many initiatives and we as a team have done quite a lot of stuff this year and will double down our efforts next year.</p>
<p>Overall I am happy with all my learnings and community work and even some of my new initiatives that have turned out well!</p>
<p>If you want to support my work then check out the <a target="_blank" href="https://saiyampathak.com/membership">membership program</a> and subscribe to my <a target="_blank" href="https://saiyampathak.com/youtube">YouTube channel</a>.<br />If you want to connect with me then follow me on <a target="_blank" href="https://saiyampathak.com/twitter"><em>Twitter</em></a> or join my Discord server.<br />If you want to move to cloud or move to Kubernetes or move from one cloud provider to Civo Kubernetes then DM me on Twitter and I will help you out. I am very confident that we are building something great out there for the community keeping the costs in mind.</p>
<p>Thank you all for being with me, supporting me and motivating me to do more! Hopefully, 2022 will be a better year and I would be able to meet you people IRL.</p>
<p>Much Love<br />Saiyam Pathak</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1640016375879/sqc8rLizd.png" alt /></p>
]]></content:encoded></item><item><title><![CDATA[Twingate tryout to access private IP from K8s cluster]]></title><description><![CDATA[Twingate is Secure access to private data for your distributed workforce. It provides a simple, modern approach to securing online work
Twingate enables organisations to rapidly implement a modern zero-trust network that is more secure and maintainab...]]></description><link>https://saiyampathak.com/twingate-tryout-to-access-private-ip-from-k8s-cluster</link><guid isPermaLink="true">https://saiyampathak.com/twingate-tryout-to-access-private-ip-from-k8s-cluster</guid><category><![CDATA[Kubernetes]]></category><category><![CDATA[privacy]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sat, 22 May 2021 12:08:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621685012428/XsG0DXZqe.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Twingate is Secure access to private data for your distributed workforce. It provides a simple, modern approach to securing online work
Twingate enables organisations to rapidly implement a modern zero-trust network that is more secure and maintainable than VPNs. Delivered as a cloud-based service, Twingate empowers IT teams to easily configure a software-defined perimeter without changing infrastructure, and centrally manage user access to internal apps, whether they are on-prem or in the cloud.</p>
<p>In this guide we will see:</p>
<ul>
<li><p>How to deploy Twingate connector on Civo Kubernetes via Marketplace</p>
</li>
<li><p>How to setup twingate account</p>
</li>
<li><p>How to install Twingate client application and access private IP's from the cluster</p>
</li>
</ul>
<h2 id="deploy-twingate-connector-on-civo-kubernetes-via-marketplace">Deploy Twingate Connector on Civo Kubernetes via marketplace</h2>
<p>We'll use Civo Kubernetes, which is based on K3s, to experiment with this quickly. If you don’t yet have an account, sign up here. You could also use any other Kubernetes cluster you have access to.</p>
<p>Create a new cluster from the UI (you can also use Civo CLI) and select Twingate app from the marketplace
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1294.blog.png?1619085926" alt="Your Alt Text" /></p>
<p>Once ready you should see the cluster with ready nodes.
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1295.blog.png?1619086071" alt="Your Alt Text" /></p>
<p>Make sure you have kubectl installed, and the kubeconfig file for your cluster downloaded so that you can run kubectl get nodes and get details of the cluster you just created:</p>
<pre><code><span class="hljs-attribute">kubectl</span> get nodes
<span class="hljs-attribute">NAME</span>                                STATUS   ROLES                  AGE   VERSION
<span class="hljs-attribute">k3s</span>-twingate-fc<span class="hljs-number">341107</span>-node-<span class="hljs-number">4</span>c<span class="hljs-number">50</span>     Ready    &lt;none&gt;                 <span class="hljs-number">68</span>s   v<span class="hljs-number">1</span>.<span class="hljs-number">20</span>.<span class="hljs-number">2</span>+k<span class="hljs-number">3</span>s<span class="hljs-number">1</span>
<span class="hljs-attribute">k3s</span>-twingate-fc<span class="hljs-number">341107</span>-master-eeb<span class="hljs-number">3</span>   Ready    control-plane,master   <span class="hljs-number">78</span>s   v<span class="hljs-number">1</span>.<span class="hljs-number">20</span>.<span class="hljs-number">2</span>+k<span class="hljs-number">3</span>s<span class="hljs-number">1</span>
<span class="hljs-attribute">k3s</span>-twingate-fc<span class="hljs-number">341107</span>-node-<span class="hljs-number">3</span>fa<span class="hljs-number">2</span>     Ready    &lt;none&gt;                 <span class="hljs-number">67</span>s   v<span class="hljs-number">1</span>.<span class="hljs-number">20</span>.<span class="hljs-number">2</span>+k<span class="hljs-number">3</span>s<span class="hljs-number">1</span>
</code></pre><p>Check the Twingate connector installation</p>
<pre><code><span class="hljs-attribute">kubectl</span> get pods     
<span class="hljs-attribute">NAME</span>                                  READY   STATUS                       RESTARTS   AGE
<span class="hljs-attribute">twingate</span>-connector-<span class="hljs-number">7</span>d<span class="hljs-number">77</span>f<span class="hljs-number">45</span>b<span class="hljs-number">9</span>b-g<span class="hljs-number">5</span>g<span class="hljs-number">5</span>r   <span class="hljs-number">0</span>/<span class="hljs-number">1</span>     CreateContainerConfigError   <span class="hljs-number">0</span>          <span class="hljs-number">117</span>s
</code></pre><p>It will be in <code>CreateContainerConfigError</code> as we need to create a configmap and secret that will be done in the next step.</p>
<h2 id="twingate-setup-walkthrough">Twingate setup walkthrough</h2>
<p>In this we will setup Twin gate account and get the tokens for creating configmap and secret</p>
<p>Go to twingate.com to create a trial account and get Started
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1277.blog.png?1619078011" alt="Your Alt Text" /></p>
<p>Signup with your preferred method and enter the team 
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1278.blog.png?1619078099" alt="Your Alt Text" /></p>
<p>Select the private resources that you want to access
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1279.blog.png?1619078131" alt="Your Alt Text" /></p>
<p>Add Team members 
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1280.blog.png?1619078158" alt="Your Alt Text" /></p>
<p>Select a plan to try out 
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1281.blog.png?1619078193" alt="Your Alt Text" />
For this demo we just choose Twingate teams</p>
<p>Setup the connector 
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1282.blog.png?1619078292" alt="Your Alt Text" /></p>
<p>Add a connector
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1283.blog.png?1619078382" alt="Your Alt Text" /></p>
<p>Generate the tokens 
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1284.blog.png?1619078540" alt="Your Alt Text" /></p>
<p>Create following secret with the tokens from above</p>
<pre><code><span class="hljs-attribute">apiVersion</span>: v1
<span class="hljs-attribute">kind</span>: Secret
<span class="hljs-attribute">type</span>: Opaque
<span class="hljs-attribute">metadata</span>:
  <span class="hljs-attribute">name</span>: connector
<span class="hljs-attribute">stringData</span>:
  <span class="hljs-attribute">accessToken</span>: <span class="hljs-string">"Access Token"</span>
  <span class="hljs-attribute">refreshToken</span>: <span class="hljs-string">"Refresh Token"</span>
</code></pre><p>Also create a config map as below
Here th eurl will be the once you chose during setup.</p>
<pre><code><span class="hljs-attribute">apiVersion</span>: v1
<span class="hljs-attribute">kind</span>: ConfigMap
<span class="hljs-attribute">metadata</span>:
  <span class="hljs-attribute">name</span>: connector
<span class="hljs-attribute">data</span>:
  <span class="hljs-attribute">url</span>: <span class="hljs-attribute">https</span>:<span class="hljs-comment">//civo.twingate.com</span>
</code></pre><p>After creating the configmap and secret you should see the status as connected </p>
<p><img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1285.blog.png?1619079966" alt="Your Alt Text" /></p>
<p>Create a deployment </p>
<pre><code><span class="hljs-attribute">apiVersion</span>: apps/v1
<span class="hljs-attribute">kind</span>: Deployment
<span class="hljs-attribute">metadata</span>:
  <span class="hljs-attribute">name</span>: demo
<span class="hljs-attribute">spec</span>:
  <span class="hljs-attribute">replicas</span>: <span class="hljs-number">1</span>
  <span class="hljs-attribute">selector</span>:
    <span class="hljs-attribute">matchLabels</span>:
      <span class="hljs-attribute">app</span>: demo
  <span class="hljs-attribute">template</span>:
    <span class="hljs-attribute">metadata</span>:
      <span class="hljs-attribute">labels</span>:
        <span class="hljs-attribute">app</span>: demo
    <span class="hljs-attribute">spec</span>:
      <span class="hljs-attribute">containers</span>:
        - <span class="hljs-attribute">name</span>: demo
          <span class="hljs-attribute">image</span>: nginxdemos/<span class="hljs-attribute">hello</span>:latest
</code></pre><p>Go to the Network and add resource 
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1287.blog.png?1619080490" alt="Your Alt Text" /></p>
<p>Add resource with the IP of the pod </p>
<pre><code><span class="hljs-attribute">kubectl</span> get pods -owide
<span class="hljs-attribute">NAME</span>                                  READY   STATUS        RESTARTS   AGE   IP           NODE                               NOMINATED NODE   READINESS GATES
<span class="hljs-attribute">demo</span>-<span class="hljs-number">58</span>f<span class="hljs-number">4</span>cb<span class="hljs-number">989</span>b-jzm<span class="hljs-number">68</span>                 <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running       <span class="hljs-number">0</span>          <span class="hljs-number">14</span>s   <span class="hljs-number">10.42.1.7</span>    k<span class="hljs-number">3</span>s-linkerd-<span class="hljs-number">60</span>ab<span class="hljs-number">3687</span>-node-dcfa     &lt;none&gt;           &lt;none&gt;
</code></pre><p><img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1288.blog.png?1619080644" alt="Your Alt Text" /></p>
<h2 id="twingate-client-application-and-connecting-to-the-resource-created">Twingate client application and connecting to the resource created</h2>
<p>In this section we will install the Twingate client application on MacOS and then connect to the resource created in above step via the browser.</p>
<p>Now install twingate locally on Mac -&gt; https://docs.twingate.com/docs/macos</p>
<p><img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1289.blog.png?1619081409" alt="Your Alt Text" /></p>
<p>Configure the client app 
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1290.blog.png?1619081441" alt="Your Alt Text" />
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1291.blog.png?1619081461" alt="Your Alt Text" /></p>
<p>You will be able to see the network connected and open the deployed application in browser 
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1292.blog.png?1619081596" alt="Your Alt Text" />
<img src="https://civo-com-assets.ams3.digitaloceanspaces.com/content_images/1293.blog.png?1619081620" alt="Your Alt Text" /></p>
<h2 id="wrapping-up">Wrapping up</h2>
<p>In this way you can connect the resources within the network from anywhere. These are the private ip's assigned to the pods that you are able to access directly from the browser even without exposing the services!!
Let me know on Twitter @SaiyamPathak if you try Twingate out on Civo Kubernetes! </p>
]]></content:encoded></item><item><title><![CDATA[Teleport 6.0 : Database Access Made Easy!!]]></title><description><![CDATA[Photo by Markus Spiske on Unsplash
Teleport is an open source, identity-aware, access proxy with an integrated certificate authority. People have been using teleport for ssh-access, Kubernetes clusters and with Teleport 6.0 you get Database access as...]]></description><link>https://saiyampathak.com/teleport-6-0-database-access-made-easy-ec7f8a8cc40f</link><guid isPermaLink="true">https://saiyampathak.com/teleport-6-0-database-access-made-easy-ec7f8a8cc40f</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Fri, 26 Mar 2021 15:50:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076331354/uWutQNVqn.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Photo by Markus Spiske on Unsplash</p>
<p>Teleport is an <a target="_blank" href="https://goteleport.com/teleport/download/">open source</a>, identity-aware, access proxy with an integrated certificate authority. People have been using teleport for ssh-access, Kubernetes clusters and with Teleport 6.0 you get Database access as well (Postgress and MySQL).</p>
<p>In this tutorial, I will show you how you can do it all from scratch for a self-hosted MySQL Database(I will show the database install as well).</p>
<p><strong>Prerequisites</strong>: 2 Ubuntu 20.04 instances with sudo access.</p>
<p>I have 2 machines called teleport and database</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076319578/8e--SOnNg.png" alt /></p>
<h2 id="complete-setup"><strong>Complete setup</strong></h2>
<h3 id="step1-login-to-the-teleport-instance-and-install-teleport"><strong>Step1: Login to the teleport instance and install teleport</strong></h3>
<pre><code>curl https://deb.releases.teleport.dev/teleport-pubkey.<span class="hljs-keyword">asc</span> | sudo apt-key <span class="hljs-keyword">add</span> -
<span class="hljs-keyword">add</span>-apt-repository <span class="hljs-string">'deb https://deb.releases.teleport.dev/ stable main'</span>
apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>
apt install teleport
</code></pre><h3 id="step2-configure-teleport-server">Step2: Configure Teleport server</h3>
<pre><code><span class="hljs-attribute">export</span> IP={<span class="hljs-attribute">ip</span> for the instance}
<span class="hljs-comment">#in my case </span>
export IP=<span class="hljs-number">212.2.240.196</span>

teleport configure --acme --acme-email=saiyam911<span class="hljs-variable">@gmail</span>.com --cluster-name=magic-<span class="hljs-variable">$IP</span>.nip.io --output=<span class="hljs-string">"/etc/teleport.yaml"</span>
Wrote config to file <span class="hljs-string">"/etc/teleport.yaml"</span>. Now you can start the server. Happy Teleporting!
</code></pre><h3 id="step3-start-teleport-and-add-a-user">Step3: Start teleport and add a user</h3>
<pre><code>systemctl <span class="hljs-keyword">start</span> teleport
systemctl <span class="hljs-keyword">enable</span> teleport
systemctl <span class="hljs-keyword">status</span> teleport

tctl <span class="hljs-keyword">users</span> <span class="hljs-keyword">add</span> teleport-<span class="hljs-keyword">admin</span> <span class="hljs-comment">--roles=admin --logins=root</span>

<span class="hljs-keyword">User</span> <span class="hljs-string">"teleport-admin"</span> has been created but requires a password. <span class="hljs-keyword">Share</span> this <span class="hljs-keyword">URL</span> <span class="hljs-keyword">with</span> the <span class="hljs-keyword">user</span> <span class="hljs-keyword">to</span> <span class="hljs-keyword">complete</span> <span class="hljs-keyword">user</span> setup, <span class="hljs-keyword">link</span> <span class="hljs-keyword">is</span> valid <span class="hljs-keyword">for</span> <span class="hljs-number">1</span>h:

https://magic<span class="hljs-number">-212.2</span><span class="hljs-number">.240</span><span class="hljs-number">.196</span>.nip.io:<span class="hljs-number">443</span>/web/invite/b39e7b128d3243c6c10407b06d27be26

NOTE: Make sure magic<span class="hljs-number">-212.2</span><span class="hljs-number">.240</span><span class="hljs-number">.196</span>.nip.io:<span class="hljs-number">443</span> points <span class="hljs-keyword">at</span> a Teleport proxy which <span class="hljs-keyword">users</span> can access.
</code></pre><p>Go to the link to set up 2FA</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076321487/pkwL0eSh1.png" alt /></p>
<p>You get the Web-UI Access</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076324361/X3N5zER2T.png" alt /></p>
<h3 id="step4-install-mysql-database-on-the-database-instance"><strong>Step4: Install Mysql database on the database instance</strong></h3>
<pre><code>apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>

sudo apt install mysql-<span class="hljs-keyword">server</span> -y
</code></pre><h3 id="step5-add-mysql-address-in-the-proxy-service-of-teleportyaml-on-the-teleport-instance">Step5: Add MySQL address in the proxy service of teleport.yaml on the teleport instance</h3>
<pre><code><span class="hljs-string">vi</span> <span class="hljs-string">/etc/teleport.yaml</span>

<span class="hljs-comment">#Add below in bold</span>
<span class="hljs-attr">proxy_service:</span>
  <span class="hljs-attr">enabled:</span> <span class="hljs-string">"yes"</span>
  <span class="hljs-attr">listen_addr:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span><span class="hljs-string">:3023</span>
  <span class="hljs-attr">web_listen_addr:</span> <span class="hljs-string">:443</span>
  <span class="hljs-attr">public_addr:</span> <span class="hljs-string">magic-212.2.240.196.nip.io:443</span>
  <span class="hljs-attr">mysql_listen_addr:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span><span class="hljs-string">:3036</span>
</code></pre><h3 id="step6-certificate-keypair-creation">Step6: certificate Key/pair creation</h3>
<p>Below has to be run on <strong>teleport</strong> instance</p>
<pre><code><span class="hljs-comment"># Export Teleport's certificate authority and generate certificate/key pair</span>
<span class="hljs-comment"># for host db.example.com with a one year validity period.</span>
**tctl auth sign --<span class="hljs-keyword">format</span>=db --host=localhost --out=server --ttl=<span class="hljs-number">8760</span>h**

The credentials have been written to server.key, server.crt, server.cas
</code></pre><p>Copy over the files generated to the <strong>database</strong> instance</p>
<pre><code>apt install sshpass
sshpass -p <span class="hljs-string">'password'</span> scp server.key server.crt server.cas user@{IP}<span class="hljs-symbol">:/etc/mysql/ssl</span>
</code></pre><p>above will copy the files in <code>/ssl</code> directory of the <strong>database</strong> instance</p>
<pre><code>cd /etc/mysql/ssl
ls | grep <span class="hljs-keyword">server</span>
<span class="hljs-keyword">server</span>.cas
<span class="hljs-keyword">server</span>.crt
<span class="hljs-keyword">server</span>.key
</code></pre><h3 id="step7-configure-mysql-on-the-database-instance">Step7: Configure MySQL on the database instance</h3>
<pre><code>cd /etc/mysql/
vi mysql.cnf

<span class="hljs-keyword">add</span> below 

[mysqld]
require_secure_transport=<span class="hljs-keyword">ON</span>
ssl-ca=/<span class="hljs-type">path</span>/<span class="hljs-keyword">to</span>/<span class="hljs-keyword">server</span>.cas
ssl-cert=/<span class="hljs-type">path</span>/<span class="hljs-keyword">to</span>/<span class="hljs-keyword">server</span>.crt
ssl-key=/<span class="hljs-type">path</span>/<span class="hljs-keyword">to</span>/<span class="hljs-keyword">server</span>.key

<span class="hljs-meta">#in my case it is </span>

[mysqld]
require_secure_transport=<span class="hljs-keyword">ON</span>
ssl-ca=/etc/mysql/ssl/<span class="hljs-keyword">server</span>.cas
ssl-cert=/etc/mysql/ssl/<span class="hljs-keyword">server</span>.crt
ssl-key=/etc/mysql/ssl/<span class="hljs-keyword">server</span>.key
</code></pre><p>Change ownership</p>
<pre><code><span class="hljs-selector-tag">chown</span> <span class="hljs-selector-tag">-R</span> <span class="hljs-selector-tag">mysql</span><span class="hljs-selector-pseudo">:mysql</span> /<span class="hljs-selector-tag">etc</span>/<span class="hljs-selector-tag">mysql</span>/<span class="hljs-selector-tag">ssl</span>/
</code></pre><p>Create User <strong>alice</strong> and configure with certificate</p>
<pre><code>mysql&gt; <span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">USER</span> <span class="hljs-string">'alice'</span>@<span class="hljs-string">'%'</span> REQUIRE X509;
Query OK, <span class="hljs-number">0</span> <span class="hljs-keyword">rows</span> affected (<span class="hljs-number">0.00</span> sec)
mysql&gt; <span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">USER</span> <span class="hljs-string">'alice'</span>@<span class="hljs-string">'%'</span> REQUIRE X509;
Query OK, <span class="hljs-number">0</span> <span class="hljs-keyword">rows</span> affected (<span class="hljs-number">0.00</span> sec)
mysql&gt; <span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">ALL</span> <span class="hljs-keyword">ON</span> `%`.* <span class="hljs-keyword">TO</span> <span class="hljs-string">'alice'</span>@<span class="hljs-string">'%'</span>;
Query OK, <span class="hljs-number">0</span> <span class="hljs-keyword">rows</span> affected (<span class="hljs-number">0.00</span> sec)
</code></pre><h3 id="step8-create-the-token-for-database-service-to-join-below-command-should-run-on-teleport-instance">Step8: Create the token for database service to join (below command should run on teleport instance)</h3>
<pre><code>**tctl tokens add \
<span class="hljs-deletion">--type=db  \</span>
<span class="hljs-deletion">--db-name=mysql \     </span>
<span class="hljs-deletion">--db-protocol=mysql \     </span>
<span class="hljs-deletion">--db-uri=localhost:3306**</span>

The invite token: 30b936383ccd1d117d9315770c08a63c.
This token will expire in 60 minutes.

Fill out and run this command on a node to start proxying the database:

&gt; teleport start \
   --roles=db \
   --token=30b936383ccd1d117d9315770c08a63c \
   --ca-pin=sha256:0cff619a5e66cb079cbb6110ec884424e5a5d47f16e13b8855344889568b5770 \
   --auth-server=magic-212.2.240.196.nip.io:443 \
   --db-name=mysql \
   --db-protocol=mysql \
   --db-uri=localhost:3306
</code></pre><p>You can either use the above token and create a config file on the database instance for the database service using just the token (<a target="_blank" href="https://goteleport.com/docs/ver/6.1/database-access/guides/mysql-self-hosted/#start-database-service-with-config-file">https://goteleport.com/docs/ver/6.1/database-access/guides/mysql-self-hosted/#start-database-service-with-config-file</a>)</p>
<p>OR you can just use the output of the above command and run it on the database instance.</p>
<h3 id="step9-install-teleport-on-database-instance-and-then-run-the-output-from-the-above-command">Step9: Install teleport on Database instance and then run the output from the above command</h3>
<pre><code>curl https://deb.releases.teleport.dev/teleport-pubkey.<span class="hljs-keyword">asc</span> | sudo apt-key <span class="hljs-keyword">add</span> -
<span class="hljs-keyword">add</span>-apt-repository <span class="hljs-string">'deb https://deb.releases.teleport.dev/ stable main'</span>
apt-<span class="hljs-keyword">get</span> <span class="hljs-keyword">update</span>
apt install teleport
</code></pre><p>Run the command to start database service</p>
<pre><code>teleport <span class="hljs-keyword">start</span> \
&gt;    <span class="hljs-comment">--roles=db \</span>
&gt;    <span class="hljs-comment">--token=30b936383ccd1d117d9315770c08a63c \</span>
&gt;    <span class="hljs-comment">--ca-pin=sha256:0cff619a5e66cb079cbb6110ec884424e5a5d47f16e13b8855344889568b5770 \</span>
&gt;    <span class="hljs-comment">--auth-server=magic-212.2.240.196.nip.io:443 \</span>
&gt;    <span class="hljs-comment">--db-name=mysql \</span>
&gt;    <span class="hljs-comment">--db-protocol=mysql \</span>
&gt;    <span class="hljs-comment">--db-uri=localhost:3306</span>
INFO [PROC:<span class="hljs-number">1</span>]    Connecting <span class="hljs-keyword">to</span> the cluster magic<span class="hljs-number">-212.2</span><span class="hljs-number">.240</span><span class="hljs-number">.196</span>.nip.io <span class="hljs-keyword">with</span> TLS <span class="hljs-keyword">client</span> certificate. service/connect.go:<span class="hljs-number">128</span>
INFO [<span class="hljs-keyword">AUDIT</span>:<span class="hljs-number">1</span>]   Creating <span class="hljs-keyword">directory</span> /<span class="hljs-keyword">var</span>/lib/teleport/log. service/service.go:<span class="hljs-number">1895</span>
INFO [<span class="hljs-keyword">AUDIT</span>:<span class="hljs-number">1</span>]   Creating <span class="hljs-keyword">directory</span> /<span class="hljs-keyword">var</span>/lib/teleport/<span class="hljs-keyword">log</span>/upload. service/service.go:<span class="hljs-number">1895</span>
INFO [<span class="hljs-keyword">AUDIT</span>:<span class="hljs-number">1</span>]   Creating <span class="hljs-keyword">directory</span> /<span class="hljs-keyword">var</span>/lib/teleport/<span class="hljs-keyword">log</span>/upload/sessions. service/service.go:<span class="hljs-number">1895</span>
INFO [<span class="hljs-keyword">AUDIT</span>:<span class="hljs-number">1</span>]   Creating <span class="hljs-keyword">directory</span> /<span class="hljs-keyword">var</span>/lib/teleport/<span class="hljs-keyword">log</span>/upload/sessions/default. service/service.go:<span class="hljs-number">1895</span>
INFO [<span class="hljs-keyword">AUDIT</span>:<span class="hljs-number">1</span>]   Creating <span class="hljs-keyword">directory</span> /<span class="hljs-keyword">var</span>/lib/teleport/log. service/service.go:<span class="hljs-number">1895</span>
INFO [<span class="hljs-keyword">AUDIT</span>:<span class="hljs-number">1</span>]   Creating <span class="hljs-keyword">directory</span> /<span class="hljs-keyword">var</span>/lib/teleport/<span class="hljs-keyword">log</span>/upload. service/service.go:<span class="hljs-number">1895</span>
INFO [<span class="hljs-keyword">AUDIT</span>:<span class="hljs-number">1</span>]   Creating <span class="hljs-keyword">directory</span> /<span class="hljs-keyword">var</span>/lib/teleport/<span class="hljs-keyword">log</span>/upload/streaming. service/service.go:<span class="hljs-number">1895</span>
INFO [<span class="hljs-keyword">AUDIT</span>:<span class="hljs-number">1</span>]   Creating <span class="hljs-keyword">directory</span> /<span class="hljs-keyword">var</span>/lib/teleport/<span class="hljs-keyword">log</span>/upload/streaming/default. service/service.go:<span class="hljs-number">1895</span>
INFO [DB:SERVIC] <span class="hljs-keyword">Database</span> service has successfully started: [DatabaseServer(<span class="hljs-keyword">Name</span>=mysql, <span class="hljs-keyword">Version</span>=<span class="hljs-number">6.0</span><span class="hljs-number">.2</span>, Labels=<span class="hljs-keyword">map</span>[])]. service/db.go:<span class="hljs-number">205</span>
</code></pre><h3 id="step10-login-to-mysql-instance-from-teleport">Step10: Login to MySQL instance from Teleport:</h3>
<p>Start the terminal session after login into the teleport server from the UI. You can also use tsh login on the teleport instance to login as a particular user.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076326645/PIczB-HRi.png" alt /></p>
<p>It will open a terminal session</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076329129/vlWJ4TwSk.png" alt /></p>
<p>Now let’s try to access the MySQL database running on the database instance :</p>
<pre><code>root@teleport-<span class="hljs-number">9</span><span class="hljs-symbol">cd889ac:</span>~<span class="hljs-comment"># **tsh db ls**</span>
Name       Description Labels Connect
---------- ----------- ------ ------------------------------------------------------------------------------------------------------
mysql

root@teleport-<span class="hljs-number">9</span><span class="hljs-symbol">cd889ac:</span>~<span class="hljs-comment"># tsh db login mysql</span>

Connection information <span class="hljs-keyword">for</span> MySQL database <span class="hljs-string">"magic-212.2.240.196.nip.io-mysql"</span> has been saved.

You can now connect to the database using the following <span class="hljs-symbol">command:</span>

$ mysql --defaults-group-suffix=_magic-<span class="hljs-number">212.2</span>.<span class="hljs-number">240.196</span>.nip.io-mysql

Or configure environment variables <span class="hljs-keyword">and</span> use regular CLI <span class="hljs-symbol">flags:</span>

$ eval $(tsh db env)
  $ mysql

root@teleport-<span class="hljs-number">9</span><span class="hljs-symbol">cd889ac:</span>~<span class="hljs-comment"># tsh db ls</span>
Name       Description Labels Connect
---------- ----------- ------ ------------------------------------------------------------------------------------------------------
&gt; mysql                       mysql --defaults-group-suffix=_magic-<span class="hljs-number">212.2</span>.<span class="hljs-number">240.196</span>.nip.io-mysql --user=&lt;user&gt; --database=&lt;database&gt;

root@teleport-<span class="hljs-number">9</span><span class="hljs-symbol">cd889ac:</span>~<span class="hljs-comment"># mysql --defaults-group-suffix=_magic-212.2.240.196.nip.io-mysql --user=alice --database=mysql</span>
Reading table information <span class="hljs-keyword">for</span> completion of table <span class="hljs-keyword">and</span> column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands <span class="hljs-keyword">end</span> with ; <span class="hljs-keyword">or</span> \g.
Your MySQL connection id is <span class="hljs-number">10027</span>
Server <span class="hljs-symbol">version:</span> <span class="hljs-number">8.0</span>.<span class="hljs-number">0</span>-Teleport (Ubuntu)

Copyright (c) <span class="hljs-number">2000</span>, <span class="hljs-number">2021</span>, Oracle <span class="hljs-keyword">and</span>/<span class="hljs-keyword">or</span> its affiliates.

Oracle is a registered trademark of Oracle Corporation <span class="hljs-keyword">and</span>/<span class="hljs-keyword">or</span> its
affiliates. Other names may be trademarks of their respective
owners.

Type <span class="hljs-string">'help;'</span> <span class="hljs-keyword">or</span> <span class="hljs-string">'\h'</span> <span class="hljs-keyword">for</span> help. Type <span class="hljs-string">'\c'</span> to clear the current input statement.

mysql&gt; show databases;
+--------------------+
<span class="hljs-params">| Database           |</span>
+--------------------+
<span class="hljs-params">| information_schema |</span>
<span class="hljs-params">| mysql              |</span>
<span class="hljs-params">| performance_schema |</span>
<span class="hljs-params">| sys                |</span>
+--------------------+
<span class="hljs-number">4</span> rows <span class="hljs-keyword">in</span> set (<span class="hljs-number">0</span>.<span class="hljs-number">00</span> sec)
</code></pre><p>As you can see a user can establish a Mysql server connection from teleport. how cool is that !!!!</p>
<h3 id="conclusion"><strong>Conclusion:</strong></h3>
<p>In simple 10 steps, I was able to set up teleport, create users, create a database and connect to the database from the teleport UI. Optionally you can also create RBAC as teleport supports RBAC so you can create a db role for the database and create users with that role accordingly. 
docs to create RBAC: <a target="_blank" href="https://goteleport.com/docs/ver/6.1/database-access/guides/mysql-self-hosted/#create-role-and-user">https://goteleport.com/docs/ver/6.1/database-access/guides/mysql-self-hosted/#create-role-and-user</a></p>
<p>Saiyam Pathak
CNCF Ambassador
Youtube: <a target="_blank" href="https://youtube.com/c/saiyam911">https://youtube.com/c/saiyam911</a>
Twitter: <a target="_blank" href="https://twitter.com/saiyampathak">https://twitter.com/saiyampathak</a>
Twitch: <a target="_blank" href="https://twitch.tv.saiyampathak/">https://twitch.tv.saiyampathak</a>
Kubernetes CKS book: <a target="_blank" href="https://gumroad.com/l/cksbook">https://gumroad.com/l/cksbook</a></p>
]]></content:encoded></item><item><title><![CDATA[My CKS Book]]></title><description><![CDATA[3 weeks back I wrote a book “Learn CKS Scenarios” on Gumroad.

About CKS Certification :
CKS Certification was launched at KubeCon NA 2020 and was targeted to show the importance of security in Kubernetes. The prerequisite to take this certification ...]]></description><link>https://saiyampathak.com/my-cks-book-c69b3e139ab6</link><guid isPermaLink="true">https://saiyampathak.com/my-cks-book-c69b3e139ab6</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sun, 14 Feb 2021 12:28:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076188647/K0Ep0kmfT.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>3 weeks back I wrote a book “Learn CKS Scenarios” on Gumroad.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076176912/JeVnwfXUc.png" alt /></p>
<p><strong>About CKS Certification :</strong></p>
<p>CKS Certification was launched at KubeCon NA 2020 and was targeted to show the importance of security in Kubernetes. The prerequisite to take this certification is that you need to be CKA (Certified Kubernetes Administrator). 
This Certification is heavily focused on the third-party security tools that are required to make the cluster secure. Security best practices, the CIS benchmarks, and how to take care of security at each stage.</p>
<p>Compared to CKA and CKAD, this is the most difficult certification rated by the people who have taken the exam as this involves security concepts to be understood properly and you should know how to use external tools like <strong>Kube-bench, OPA, Trivy, Falco etc.</strong></p>
<p><strong>The Book</strong></p>
<p>Soon after I cleared my certification I realized that this certification needs more practice and there are not many resources for it, so I decided to pen down my notes and created scenarios out the topics and the sections mentioned in the syllabus. I looked at the Kubernetes documentation for creating these practice questions/scenarios.</p>
<p>The unique thing about this book is that all questions are different and for each scenario, I have used<strong> Katakoda Playground</strong> so that the practice becomes easy and you can practice the scenarios anytime. For each question, you get a detailed solution which is broken down into <strong>Cluster setup + scenario setup + the question</strong>. These are not direct questions, I first create the questions from the cluster setup itself and then try to modify things, so you can do all questions by following the detailed solutions.</p>
<p>As of now, it’s a 52 pages book that might grow in the future as I add more scenarios to it based on the feedback from the community.</p>
<p><strong>Buying Options:</strong></p>
<p>There are two packs that you can purchase :</p>
<ul>
<li><strong>Silver Pack: $15</strong></li>
</ul>
<pre><code>- The Book 
- <span class="hljs-keyword">All</span> <span class="hljs-built_in">new</span> Updates
- Github gist <span class="hljs-keyword">for</span> <span class="hljs-keyword">copy</span>/pasting 
- Discord channel were you can ask questions <span class="hljs-keyword">and</span> discuss <span class="hljs-keyword">with</span> other people preparing <span class="hljs-keyword">for</span> CKS
</code></pre><ul>
<li><strong>Gold Pack: $25</strong></li>
</ul>
<pre><code>- The Book 
- <span class="hljs-keyword">All</span> <span class="hljs-built_in">new</span> Updates
- Github gist <span class="hljs-keyword">for</span> <span class="hljs-keyword">copy</span>/pasting 
- Discord channel were you can ask questions <span class="hljs-keyword">and</span> discuss <span class="hljs-keyword">with</span> other people preparing <span class="hljs-keyword">for</span> CKS
- Video Solutions <span class="hljs-keyword">to</span> <span class="hljs-keyword">all</span> the scenarios
</code></pre><p>I love doing things for the community so I decided to give a 50% discount on both packs for the first 100 users which is now over.</p>
<p><strong>Gumroad Platform and Sales :</strong></p>
<p>Writing a book can be difficult and then publishing it might be a whole new thing. What I wanted was that, I write something and then I can directly give that to the people/community so that they can immediately start using it. I also wanted my own style of writing, my freedom of the way, wanted to write some handwritten stuff so I chose to compile the doc, export as pdf then import in notability and then do my writing stuff on it.</p>
<p>Now the book was ready and I needed a way to publish it and Gumroad was super-easy, in less than 30 minutes I was able to publish my book, create different packs, get a sharable link, create a super simple coupon for a discount and share it with my community. Gumroad pays you via PayPal which is a fine for me since I am having a PayPal account. Also, I didn't have to go through any of the editorial review and publication complexities. So I just compiled my book in a pdf and I used Gumroad to publish that on the 26th of January.</p>
<p>The response I got from the community was awesome as I wasn’t even expecting 50 sales but in less than a month the book did<strong> 120+ sales</strong> which is just amazing and since then I have updated my book couple of times, created and provided Video Solutions and also created GitHub gist based on feedback.</p>
<p>The overall feedback for the book has been good as people are able to understand the scenario and practice them.</p>
<p>Below are the sales that I got via different mediums</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076178693/J_n3eiUkR.png" alt /></p>
<p>I think that if you are living in a world where you have a strong community that is hungry to learn more, you will always find a way to create an impact.</p>
<p>It might not be too many sales for some but as my FIRST Book, it's a Huge Success for me. I got so much confidence and love from the community that I am really satisfied with my work. So thank you all who bought the book and all the best to those preparing for CKS.</p>
<h2 id="book-link-httpsgumroadcomlcksbookhttpsgumroadcomlcksbook">Book Link: <a target="_blank" href="https://gumroad.com/l/cksbook">https://gumroad.com/l/cksbook</a></h2>
<p><strong>Feedback</strong> :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076180453/7DVSSzj-i.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076182580/edBRtB9Fl.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076184441/DZHsWQSjC.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076186848/ekwwveuM_.png" alt /></p>
<p>Thinking of Writing a book? Anyone can do it, Connect with me on Twitter to ask any questions regarding this book or to ask anything about my journey in general. Also, Follow my youtube channel where I do live streams with other community leaders and we all learn together.</p>
<p>Saiyam Pathak
CNCF Ambassador 
Youtube: <a target="_blank" href="https://youtube.com/c/saiyam911">https://youtube.com/c/saiyam911</a>
Twitter: <a target="_blank" href="https://twitter.com/saiyampathak">https://twitter.com/saiyampathak</a>
Twitch: <a target="_blank" href="https://twitch.tv.saiyampathak">https://twitch.tv.saiyampathak</a></p>
]]></content:encoded></item><item><title><![CDATA[The 2020 Year Review]]></title><description><![CDATA[A crazy year
The Year 2020 came with a lot of enthusiasm but ended up being one of the worst years due to obvious reason-> COVID
There is something new that I believe in learning each day and 2020 was no different. I personally leaned a-lot this Year...]]></description><link>https://saiyampathak.com/the-2020-year-review-a38469535955</link><guid isPermaLink="true">https://saiyampathak.com/the-2020-year-review-a38469535955</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Fri, 01 Jan 2021 13:13:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076635100/rYgcXojp5.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A crazy year</p>
<p>The Year 2020 came with a lot of enthusiasm but ended up being one of the worst years due to obvious reason-&gt; COVID</p>
<p>There is something new that I believe in learning each day and 2020 was no different. I personally leaned a-lot this Year. In this post, I want to pen down some of the things that I have done and other things that happened in my life.</p>
<h2 id="meetups">Meetups</h2>
<p><strong>Docker Meetup 16th Jan: </strong>Kickstart Your 2020 Container Journey with Docker &amp; Kubernetes + Kubernetes101 Workshop</p>
<p>Year Begining I along with other community members organized the biggest <strong>Docker meetup</strong> at SAP Labs India. It was attended by more than 550 folks and we really had a great learning experience.
<strong>My talk</strong>: Docker Security 101</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076600316/5BxJyXtD3.jpeg" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076602853/_5DkYjQVx.jpeg" alt /></p>
<p><strong>CNCF Meetup Jan25th</strong> :Grokking Cloud Native Data Management Landscape</p>
<p><strong>My talk</strong>: What, why and How of Timeseries database for kubernetes</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076605325/PG_RnEWRa.jpeg" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076607324/mSMNIJLLw.jpeg" alt /></p>
<h2 id="rise-of-covid-and-all-in-person-events-cancelled"><strong>Rise of COVID and all in person events cancelled</strong></h2>
<p>COVID Cases were rising worldwide and the events started to cancel so after 14th Feb there were no in-person events that I organized or spoke at. Conferences that were I was supposed to speak but didn’t happen due to COVID:</p>
<ul>
<li><p>Namma Cloud Conference, Bengaluru</p>
</li>
<li><p>Kubecon EU Amsterdam (In-person)</p>
</li>
<li><p>O’Reilly Open Source Software Conference in Portland 2020</p>
</li>
</ul>
<p>March Became the year of lockdown where most of the countries started observing Lockdowns and we were supposed to stay at home 24/7 and only go out for essential commodities or order them at home. This was really tough as no one imagined doing this, panic buying, fear, people getting sick all around the globe was really unusual situation. In Reality, we all struggled to meet, travel, eat, and Live. Stuck at home I tried to explore myself more and see what more I can do like cooking, household stuff, and collaborate with the community <strong>ONLINE</strong>.</p>
<p>March was also the month where I planned a new way to connect with the community while sitting at home: <a target="_blank" href="https://www.youtube.com/c/saiyam911">**Youtube Livestreams</a>**</p>
<p>So this started as an experiment and a vision where I connect with more and more folks and we all learn together as a community. I loved the response from the community, I took feedback from the community and upgraded the setup, streaming and the content as well. I have always listened to the community and will also do that in future as well as community is what drives me. Since then I have organically grown to <strong>1.12k subscribers </strong>and I would like to thank the community for supporting me always and encouraging me to do MORE.
Few stats 
Total Livestreams : 25+
Total likes: 840+
2,548+ comments and 17,598 views</p>
<h2 id="job-change">Job Change</h2>
<p>I joined Civo ltd as a “Director of Technical Evangelism” in September and it was a big thing that happened in 2020. I thought A LOT before joining as there were so many challenges involved and as of today I am so glad that I joined this company of awesome people with amazing talent. We have big plans for 2021 and we all are working hard for this.</p>
<h2 id="stream-list-till-december-2020">Stream List till December 2020:</h2>
<ul>
<li><p><a target="_blank" href="https://youtu.be/7f_IP1RS8WY">All About Calico</a> with <strong>Alex Pollitt</strong></p>
</li>
<li><p><a target="_blank" href="https://youtu.be/TK1UB1xby_I">Let’s Learn Portainer</a> with <strong>Neil Cresswell</strong></p>
</li>
<li><p><a target="_blank" href="https://youtu.be/HB37dgEO-mA">Kubernetes Distros with flavour of Fleet</a> with <strong>Darren Shepherd</strong></p>
</li>
<li><p><a target="_blank" href="https://youtu.be/39O9s1JpSxg">Let’s Learn Ketch by Shipa with Bruno Andrade</a></p>
</li>
<li><p><a target="_blank" href="https://youtu.be/jZOs8Oips7Q">Hands on CKA,CKAD with CKS flavour (v1.19) with **Walid Shaari</a>**</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/FT_DLEhmOWs">Let’s Learn Okteto and Operator-sdk with **Ramiro</a>**</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/VjlvS-qiz_U">Let’s Learn Kubernetes Security with **Dan ‘POP’ Papandrea</a>**</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/4jvKSe1Lkv8">Let’s Learn Kubermatic Kubernetes Platform</a></p>
</li>
<li><p><a target="_blank" href="https://youtu.be/uUZ2RBZGZK4">Let’s Learn Traefik</a></p>
</li>
<li><p><a target="_blank" href="https://youtu.be/y-BXs_MQA9Y">Let’s Learn about Getting involved with Open Source in different ways</a></p>
</li>
<li><p><a target="_blank" href="https://youtu.be/hoEfBrfM5ZI">Let’s Learn Production grade k8s monitoring and extending k8s using Golang with **Rawkode</a>**</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/wjkDbgi_mec">Let’s Learn QuestDb on RaspberryPi and K8s Networking with** David</a>**</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/GwXLNAcHk-k">Docker Internals and RKE Deep dive with **Nigel Poulton</a>**</p>
</li>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=avxRTZRvJlA&amp;t=112s">Introduction to Terraform</a></p>
</li>
<li><p><a target="_blank" href="https://www.youtube.com/watch?v=sjU8R1tDn6g">Introduction to Helm3</a></p>
</li>
<li><p><a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibCId804-nYPqQT4-RNpbRdN">Awesome Serverless using cloud run playlist</a></p>
</li>
<li><p><a target="_blank" href="https://youtube.com/playlist?list=PL5uLNcv9SibBZj30yqG01a7A4_MXSyGK3">Docker Series</a> by <a target="_blank" href="https://twitter.com/I_saloni92">**Saloni Narang</a>**</p>
</li>
<li><p><a target="_blank" href="https://youtu.be/oSaBnrYPSeA">Introduction to Rust by **Sangam</a>** and other Go videos by him as well.</p>
</li>
</ul>
<h2 id="blogs-that-i-wrote-in-2020">Blogs that I wrote in 2020:</h2>
<p><strong>Blog Published on THENEWSTACK:</strong></p>
<ul>
<li><a target="_blank" href="https://thenewstack.io/how-to-use-influxdb-with-its-python-client-on-kubernetes/">How to Use InfluxDB with Its Python Client on Kubernetes</a></li>
</ul>
<p><strong>Blog published on cncf:</strong></p>
<ul>
<li><a target="_blank" href="https://www.cncf.io/blog/2020/11/25/upgrade-a-k3s-kubernetes-cluster-with-system-upgrade-controller/">Upgrade a K3s Kubernetes Cluster with System Upgrade Controller</a></li>
</ul>
<p><strong>Blogs published on civo.com:</strong></p>
<ul>
<li><p><a target="_blank" href="https://www.civo.com/learn/waypoint-solving-the-build-deploy-and-release-problem">HashiCorp Waypoint — Solving the Build, Deploy and Release problem</a></p>
</li>
<li><p><a target="_blank" href="https://www.civo.com/learn/chaos-engineering-kubernetes-litmus">Chaos Experiments on Kubernetes using Litmus to ensure your cluster is production ready</a></p>
</li>
<li><p><a target="_blank" href="https://www.civo.com/learn/deployments-without-yaml-using-ketch">Deployments without YAML using Ketch</a></p>
</li>
<li><p><a target="_blank" href="https://www.civo.com/learn/switching-on-the-cluster-insights-using-headlamp">Switching on the cluster insights using Headlamp</a></p>
</li>
<li><p><a target="_blank" href="https://www.civo.com/learn/running-kubeflow-pipelines">Running Kubeflow Pipelines</a></p>
</li>
<li><p><a target="_blank" href="https://www.civo.com/learn/yaml-best-practices-using-kubelinter">Ensuring YAML best practices using KubeLinter</a></p>
</li>
</ul>
<p><strong>Blogs published on rancher.com</strong></p>
<ul>
<li><p><a target="_blank" href="https://rancher.com/blog/2020/upgrade-your-k3s-cluster">Upgrade Your K3s Clusters Smoothly in Rancher 2.4</a></p>
</li>
<li><p><a target="_blank" href="https://rancher.com/blog/2020/schedule-security-scan">Schedule Security Scans in Rancher 2.4</a></p>
</li>
<li><p><a target="_blank" href="https://rancher.com/blog/2020/rancher-istio-kiali">Rancher 2.3: Istio and Kiali</a></p>
</li>
</ul>
<p><strong>Blogs published on medium.com</strong></p>
<ul>
<li><p><a target="_blank" href="https://saiyampathak.medium.com/k0s-yet-another-kubernetes-distro-7201ea425165">k0s — Yet Another Kubernetes Distro !!</a></p>
</li>
<li><p><a target="_blank" href="https://saiyampathak.medium.com/portainer-2-0-7d5539e344f">Portainer 2.0</a></p>
</li>
<li><p><a target="_blank" href="https://saiyampathak.medium.com/shipa-a-complete-developer-friendly-kubernetes-44799a41a0f">Shipa : A Complete developer-friendly Kubernetes</a></p>
</li>
<li><p><a target="_blank" href="https://blog.kubernauts.io/permission-manager-rbac-management-for-kubernetes-ed46c2f38cfb">Permission manager : RBAC management for Kubernetes</a></p>
</li>
<li><p><a target="_blank" href="https://blog.kubernauts.io/octant-simplified-313a1aad69d6">Octant Simplified</a></p>
</li>
</ul>
<p><strong>Blogs published on Hashnode.com(connected to saiyampathak.com)</strong></p>
<ul>
<li><p><a target="_blank" href="https://saiyampathak.com/connect-civo-k3s-cluster-with-azure-arc-ckf1brvl805cssus11guzfy62">Connect civo k3s Cluster with Azure ARC</a></p>
</li>
<li><p><a target="_blank" href="https://saiyampathak.com/let-us-take-a-dig-into-kubevious-ckea9d9r700muxhs19jtr3xr8">Let us take a dig into Kubevious</a></p>
</li>
</ul>
<h2 id="conferences">Conferences:</h2>
<p><strong>KUBECON EU Virtual </strong>with my friend <a target="_blank" href="https://twitter.com/iteration1">Karthik Gaekwad</a> and also did a Panel session.
<a target="_blank" href="https://youtu.be/2Eqg-oKRIR8">34 Truths We Learned About Kubernetes and Edge</a>
<a target="_blank" href="https://youtu.be/_Bm0TELIKaU">Panel: CNCF Ambassadors: Building the Cloud Native Community</a></p>
<p>I got fancy badges as well!!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076609848/2X7KaiPxp.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076614071/D5bZmn1iw.png" alt /></p>
<p><strong>AllDayDevOps:
[</strong>k3s ,k3d, k9s, k8s — what are all the numbers about ?](https://content.sonatype.com/2020addo-mi/addo2020-mi-narang-pathak)</p>
<p><strong>PyConf Hyderabad:
[</strong>InfluxDb and it’s python client](https://youtu.be/UFrMdzqYyGE)</p>
<p><strong>Indiacloudsummit</strong>:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076615828/Dl3vmsBru.plain" alt /></p>
<p>K3s -A Light Weight Kubernetes Distribution</p>
<h2 id="community-awards"><strong>Community Awards</strong></h2>
<p>I won 2 community awards in 2020 and got nominated for CNCF top Ambassador as well.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076617374/w72A2-oTQ.jpeg" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076619388/BGCFByEkb.jpeg" alt="Docker and Influx Community Leader Award" /><em>Docker and Influx Community Leader Award</em></p>
<h2 id="certifications">Certifications</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076622778/jBMt_JWQr.jpeg" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076625332/KdeGh0VC9.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076628119/KKq24bG8q.png" alt /></p>
<p>In 2020 I engaged with the cloud-native Community a lot this year(<strong>I tweeted 1622 times</strong>) sitting at home, I spent a lot of time with my family members, I talked to a lot of great people in the industry and learned a lot from them. I became more focussed and with 2021 coming, I will be more focussed on taking my youtube channel to extreme Level and do great things at Civo.</p>
<p>2021, A year of Hope and Learning!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076631860/Cl2XNB2ER.png" alt /></p>
<p><a target="_blank" href="https://www.youtube.com/c/saiyam911">**Subscribe</a> the channel and support the work I am doing as it takes time to organise and do it LIVE!**</p>
<p>Thank you for supporting me and loving me.</p>
<p>Have a great 2021 everyone!</p>
<p>►►►Connect with me ►►► ► 
► Discord: <a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;v=7f_IP1RS8WY&amp;redir_token=QUFFLUhqa0FFTDZDU2FzMXVmOFNkaV95V2ZOZVJ5LUV3UXxBQ3Jtc0ttR2pWSjRDYUFqLUVqSmI4YTROLUVoclFadHlLUzMwenIwbFJ1OTZKa1BGZFQ1MVpoUWNheUpDUEhsU2RZNlRaU0lmd2hLd2drd3E2TlluX0E4dHlIZWl3QUtWVV93YkZSOUpIX3ZmMzFHTGUwd0plNA%3D%3D&amp;q=https%3A%2F%2Fdiscord.gg%2FbH5wKDCZjB">https://discord.gg/bH5wKDCZjB</a> 
► Telegram: <a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;v=7f_IP1RS8WY&amp;redir_token=QUFFLUhqbjgya1J0SGZXdWFQc3lPV2hQVDBicnJZaG9qd3xBQ3Jtc0tsMjVzMEctVVJVQTFPZ1ZzU3lIYVc4d2JhcnZraVBJdW9WX2dvYlVTX2ZtNG9WY0drWXRNQWhwQnpEU3U4NWlUcGhrMmpUdnp5Wl9GcFRpT3lEV1BGMGZHbXk2WGVZMW5nbHNRbkxFQ2Q4YXc5Y1QzOA%3D%3D&amp;q=https%3A%2F%2Ft.me%2Fjoinchat%2FQu6Qlxj1cnC_I1n">https://t.me/joinchat/Qu6Qlxj1cnC_I1n</a>... 
► Website: <a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;v=7f_IP1RS8WY&amp;redir_token=QUFFLUhqa25oOFVvQ1IzSWRBSjZDMTNRY2hUVXZPMDFMQXxBQ3Jtc0trdTl6LVk1djVwUzcyLTQ4WlZoeWZfeEhBR2hjcDVldzJtMUZFT3dRR08wWGN1enA5ZkNwWnFZOVROeDk3eXI4aFI0SVNvRGJJWi1TdUI3YXNfeG9WX0Y4ekNtNXBHZEpOYzcyREhsMV9ZLWxhTFJfaw%3D%3D&amp;q=https%3A%2F%2Fsaiyampathak.medium.com%2F">https://saiyampathak.medium.com/</a> 
► GitHub: <a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;v=7f_IP1RS8WY&amp;redir_token=QUFFLUhqbEpNaEZGQlIxV09GVmRFMWVmd0NrN21rSjRSd3xBQ3Jtc0tscE9yRTBya2IyOW9nM250Zk5BMVBwOExuazZha2ZjQ0FIZENybWU5OU5oR2VaSnhRMTFjX3lod2hTN0VlazNQNVNIS1luckdmWTlVR3l3TVllbGlza0NaLVNNQUdTWkhmMWpaNTZOazNqSlNCZkJVcw%3D%3D&amp;q=https%3A%2F%2Fgithub.com%2Fsaiyam1814">https://github.com/saiyam1814</a> 
► YouTube: <a target="_blank" href="http://youtube.com/c/saiyam911">http://youtube.com/c/saiyam911</a> 
► Twitter: <a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;v=7f_IP1RS8WY&amp;redir_token=QUFFLUhqa25VaXVCSkRNMmd2dGZJM3NrNm1paEN6TkNqUXxBQ3Jtc0tueU1lVVlHQnVYT2FfQUU2MktRQkhtcFNCQmUxeThBY3FSQkdrV3hkbVROc3VaMWU0X3VBNGVVdU04c0RsbVhUQUlmUVVqTXFJemV4SGdaTmlhVEI5VVVpbVIweTNwdERyN0hmb3VtZ0JuY2JqSDdFSQ%3D%3D&amp;q=http%3A%2F%2Ftwitter.com%2Fsaiyampathak">http://twitter.com/saiyampathak</a> 
► Instagram: <a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;v=7f_IP1RS8WY&amp;redir_token=QUFFLUhqbVI5U2ZoYVNKTVU0UXgxT2dSaWV5dUJnNmJjQXxBQ3Jtc0tuVkVHMGVpTlNYQnlBMy05VV9GVVdLRV9aWGg2LUVMSl9KLTEzQktmYnQtaG9kQkZEczhfSGplS0g4NmlMWlp0ZHVaNWcxZ2dSU1NMLV9VOHFyOEF0U0U3Yy1CWjVTOGZGUzNsZ2xLajlhdVVmaXhKUQ%3D%3D&amp;q=http%3A%2F%2Finstagram.com%2Fsaiyampathak%2F">http://instagram.com/saiyampathak/</a> 
► Twitch: <a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;v=7f_IP1RS8WY&amp;redir_token=QUFFLUhqbEptS2V1Vy1yajdndHF5U1ZlZmptbDBzMV8xZ3xBQ3Jtc0ttcDE2QzFIMURkTXhwbGRjYUJ0ckJ3U2QweG1abDFtaUVvRVcxeHBZS21FdlFseDFQRVlYTExSbEpWWUs5VC16QzhRdEthZTc1NUVHVl9MWmx1aktkT2toaEJ5UWpyOTM5d1JmM1VhZGl3Z0x3cTBiRQ%3D%3D&amp;q=https%3A%2F%2Fwww.twitch.tv%2Fsaiyampathak">https://www.twitch.tv/saiyampathak</a>
► LinkedIn: <a target="_blank" href="https://www.youtube.com/redirect?event=video_description&amp;v=7f_IP1RS8WY&amp;redir_token=QUFFLUhqbGUyZHpiT1pKZGxzU0RCVWZKMDZwWnlxWDF0QXxBQ3Jtc0tsTUpLOHNCcVRvUHhCeEJjdEVyMXhtR1BsSUNnMFVlUlFiQ0pXQkdWaDJJQWNBMnVLX1RxWG5XekJlZ3lGSzdrSFF2bnhVU0t3U0lfdDd4bFd5MUV6OWdrN3RCcFRJbVZ2MnJNMFI1UWtDcGZsWXYzTQ%3D%3D&amp;q=https%3A%2F%2Fwww.linkedin.com%2Fin%2Fsaiyampathak%2F">https://www.linkedin.com/in/saiyampat</a>hak</p>
<h2 id="saiyam-pathak"><strong>SAIYAM PATHAK</strong></h2>
]]></content:encoded></item><item><title><![CDATA[k0s — Yet Another Kubernetes Distro !!]]></title><description><![CDATA[Yes, you heard it right, yesterday Mirantis launched k0s a frictionless kubernetes distribution.
k0s is a single binary that is packed with all the components to run the Kubernetes cluster in very little time by just having the binary on all the host...]]></description><link>https://saiyampathak.com/k0s-yet-another-kubernetes-distro-7201ea425165</link><guid isPermaLink="true">https://saiyampathak.com/k0s-yet-another-kubernetes-distro-7201ea425165</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Mon, 16 Nov 2020 06:10:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076199196/VqheFAyTD.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Yes, you heard it right, yesterday Mirantis launched <strong>k0s</strong> a frictionless kubernetes distribution.
k0s is a single binary that is packed with all the components to run the Kubernetes cluster in very little time by just having the binary on all the hosts.</p>
<p>Now by this time you already must have started making comparisons of k0s with k3s which is a CNCF sandbox project &amp; a CNCF certified kubernetes distribution. But first let us see what k0s has to offer, its vision, a demo, and then a comparison with k3s.</p>
<p><strong>What is behind the name?
</strong>- Zero friction meaning anyone can install without any kubernetes expertise.</p>
<ul>
<li>Zero OS dependencies</li>
<li>Zero cost as its open-source</li>
<li>Zero Downtime as it comes with automated cluster lifecycle management</li>
</ul>
<p><strong>Features:</strong></p>
<ul>
<li>It is a single binary(around 165 mb) with no OS dependencies</li>
<li><a target="_blank" href="https://www.sdxcentral.com/security/definitions/what-does-mean-fips-compliant/">FIPS security compliance</a> = k0s kubernetes core components + OS dependencies + components packaged on top</li>
<li>Isolated Control Plane - the server will not have a container engine or kubelet running by default, meaning no workload can run on the server. </li>
<li>Custom worker profiles</li>
<li>Future native cluster backup/restore and other features</li>
</ul>
<p><strong>Note</strong> - Components included in binary will be explained in the comparison with k3s section</p>
<p><strong>Architecture:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076194946/UrzqAgbWR.png" alt /></p>
<p>k0s uses Rancher's <a target="_blank" href="[https://github.com/rancher/kine/](https://github.com/rancher/kine/">Kine</a>) to allow a wide variety of backend data stores to be used such as MySQL, PostgreSQL, SQLite, and dqlite.
k0s uses <strong>Konnectivity</strong> by default that is responsible for the control plane and worker bidirectional communication.</p>
<p><strong>Other Notable points - </strong></p>
<ul>
<li>From the commits k0s was previously called MKE (Mirantis kubernetes/container engine I suppose )</li>
<li>It is claimed to be a successor of <a target="_blank" href="https://github.com/kontena/pharos-cluster">Pharos Project</a>.</li>
<li>k0s can be run as <a target="_blank" href="https://github.com/k0sproject/k0s/blob/main/docs/k0s-in-docker.md">docker</a> as well.</li>
<li>k0s allows extending the functionality of kubernetes cluster by using <a target="_blank" href="https://github.com/k0sproject/k0s/blob/main/docs/internal/extensions.md">extensions</a> -&gt; atm only helm CRD’s can be used.</li>
</ul>
<p><strong>Demo</strong> - For this demo, we will take 2 CentOs plain Virtual machines and create a Kubernetes cluster using k0s</p>
<p><strong>Installing the binary
</strong>Download the k0s binary on both the nodes:</p>
<pre><code>curl -sSfL k0s.sh | sh
Downloading k0s from URL: [<span class="hljs-string">https://github.com/k0sproject/k0s/releases/download/v0.7.0/k0s-v0.7.0-amd64</span>](<span class="hljs-link">https://github.com/k0sproject/k0s/releases/download/v0.7.0/k0s-v0.7.0-amd64</span>)
</code></pre><p>Run the server on the node(the machine where you want the Control plane to be) with default config</p>
<pre><code>k0s <span class="hljs-keyword">server</span>
</code></pre><p>you can see all the control plane components running as processes</p>
<pre><code><span class="hljs-string">**ps</span> <span class="hljs-string">-ef</span> <span class="hljs-string">|</span> <span class="hljs-string">grep</span> <span class="hljs-string">k0s</span>
<span class="hljs-string">**root</span>     <span class="hljs-number">11169</span> <span class="hljs-number">11009</span>  <span class="hljs-number">1</span> <span class="hljs-number">19</span><span class="hljs-string">:03</span> <span class="hljs-string">pts/0</span>   <span class="hljs-number">00</span><span class="hljs-string">:00:00</span> <span class="hljs-string">**k0s</span> <span class="hljs-string">server**</span>
<span class="hljs-string">root</span>     <span class="hljs-number">11175</span> <span class="hljs-number">11169</span>  <span class="hljs-number">5</span> <span class="hljs-number">19</span><span class="hljs-string">:03</span> <span class="hljs-string">pts/0</span>   <span class="hljs-number">00</span><span class="hljs-string">:00:02</span> <span class="hljs-string">**/var/lib/k0s/bin/etcd</span> <span class="hljs-string">**...</span>
<span class="hljs-string">root</span>     <span class="hljs-number">11184</span> <span class="hljs-number">11169</span>  <span class="hljs-number">6</span> <span class="hljs-number">19</span><span class="hljs-string">:03</span> <span class="hljs-string">pts/0</span>   <span class="hljs-number">00</span><span class="hljs-string">:00:02</span> <span class="hljs-string">/var/lib/k0s/bin/**kube-controller-manager**</span> <span class="hljs-string">...</span>
<span class="hljs-string">root</span>     <span class="hljs-number">11187</span> <span class="hljs-number">11169</span> <span class="hljs-number">36</span> <span class="hljs-number">19</span><span class="hljs-string">:03</span> <span class="hljs-string">pts/0</span>   <span class="hljs-number">00</span><span class="hljs-string">:00:12</span> <span class="hljs-string">/var/lib/k0s/bin/**kube-apiserver**...</span>
<span class="hljs-string">root</span>     <span class="hljs-number">11191</span> <span class="hljs-number">11169</span>  <span class="hljs-number">0</span> <span class="hljs-number">19</span><span class="hljs-string">:03</span> <span class="hljs-string">pts/0</span>   <span class="hljs-number">00</span><span class="hljs-string">:00:00</span> <span class="hljs-string">/var/lib/k0s/bin/**konnectivity-server**...</span>
<span class="hljs-string">root</span>     <span class="hljs-number">11196</span> <span class="hljs-number">11169</span>  <span class="hljs-number">3</span> <span class="hljs-number">19</span><span class="hljs-string">:03</span> <span class="hljs-string">pts/0</span>   <span class="hljs-number">00</span><span class="hljs-string">:00:01</span> <span class="hljs-string">/var/lib/k0s/bin/**kube-scheduler**...</span>
<span class="hljs-string">root</span>     <span class="hljs-number">11209</span> <span class="hljs-number">11169</span>  <span class="hljs-number">0</span> <span class="hljs-number">19</span><span class="hljs-string">:03</span> <span class="hljs-string">pts/0</span>   <span class="hljs-number">00</span><span class="hljs-string">:00:00</span> <span class="hljs-string">k0s</span> <span class="hljs-string">api</span> <span class="hljs-string">--config=/root/k0s.yaml</span>
</code></pre><pre><code>

<span class="pgsql">**<span class="hljs-keyword">Create</span> the token <span class="hljs-keyword">for</span> worker**</span>
</code></pre><p>k0s token create --role=worker</p>
<pre><code>

<span class="pgsql"><span class="hljs-keyword">On</span> the worker node run the <span class="hljs-keyword">join</span> command <span class="hljs-keyword">with</span> the token just <span class="hljs-keyword">generated</span></span>
</code></pre><p>k0s worker </p>
<pre><code>

<span class="dart">you can see the k0s processes <span class="hljs-keyword">on</span> the worker node <span class="hljs-keyword">as</span> well:</span>
</code></pre><p>ps -ef | grep k0s</p>
<p>root     12430 12356  2 19:09 pts/0    00:00:02 k0s worker ....
root     12436 12430 18 19:09 pts/0    00:00:17 /var/lib/k0s/bin/containerd ...
root     12441 12430  3 19:09 pts/0    00:00:02 /var/lib/k0s/bin/kubelet ...
root     12523     1  0 19:09 pts/0    00:00:00 /var/lib/k0s/bin/containerd-shim-runc ...
                       |
                       |
                       |
root     13504     1  0 19:10 pts/0    00:00:00 /var/lib/k0s/bin/containerd-shim-runc-</p>
<pre><code>
</code></pre><p>From the control plane, you can see the status of the worker node (after installing <strong>kubectl</strong> as it is not packaged within the binary)</p>
<pre><code>curl -LO "[<span class="hljs-string">https://storage.googleapis.com/kubernetes-release/release/$(curl</span>](<span class="hljs-link">https://storage.googleapis.com/kubernetes-release/release/$(curl</span>) -s [<span class="hljs-string">https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl</span>](<span class="hljs-link">https://storage.googleapis.com/kubernetes-release/release/stable.txt</span>)/bin/linux/amd64/kubectl)"
chmod +x kubectl 
mv kubectl /usr/local/bin/
mkdir ~/.kube
cp /var/lib/k0s/pki/admin.conf ~/.kube/config

kubectl get nodes
NAME   STATUS   ROLES    AGE    VERSION
test   Ready    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">none</span>&gt;</span></span>   7m1s   v1.19.3
</code></pre><p>Now we have a Kubernetes cluster up and running with the Kubernetes version v1.19.3</p>
<p><strong>Comparison with k3s:</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076197164/b7tdGdlJF.png" alt /></p>
<p><strong>Note</strong>: k0s does not run on Arch Linux(thanks to <a target="_blank" href="https://twitter.com/alexellisuk">Alex Ellis</a> for pointing this)
Though there are a few features in k0s that makes it different from k3s but they have a lot in common as well. IMO it would have been great if there were contributions made to k3s instead of creating a new distribution itself.</p>
<p>Let me know your thoughts on it in comments or on <a target="_blank" href="https://www.reddit.com/r/kubernetes/comments/jumaqj/k0s_yet_another_kubernetes_distribution_by/?utm_source=share&amp;utm_medium=web2x&amp;context=3">reddit</a>.</p>
<p><a target="_blank" href="https://twitter.com/saiyampathak">Saiyam Pathak</a> 
Director of Technical evangelism, <a target="_blank" href="http://civo.com/kube100">Civo</a>
CNCF Ambassador</p>
]]></content:encoded></item><item><title><![CDATA[Portainer 2.0]]></title><description><![CDATA[Portainer is very popular among the docker community for its container management and guess what! now Portainer has extended this management to Kubernetes. 
Yes, It's True, Portainer 2.0 is coming and it's huge, as it now comes with KUBERNETES Manage...]]></description><link>https://saiyampathak.com/portainer-2-0-7d5539e344f</link><guid isPermaLink="true">https://saiyampathak.com/portainer-2-0-7d5539e344f</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Mon, 31 Aug 2020 10:19:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076393993/S4aGZt330.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Portainer is very popular among the docker community for its container management and guess what! now Portainer has extended this management to <strong>Kubernetes</strong>. 
Yes, It's True, Portainer 2.0 is coming and it's huge, as it now comes with KUBERNETES Management. In this post, I will walk through portainer 2.0 and some of its features.</p>
<p>We will cover below scenarios:</p>
<ul>
<li><p>Installing Portainer on Managed k3s by <a target="_blank" href="https://www.civo.com/?ref=3a1d41">Civo Cloud</a></p>
</li>
<li><p>Installing Portainer Agent on GKE</p>
</li>
</ul>
<p><strong>Installing Portainer on Managed k3s</strong></p>
<ul>
<li>Create a civo k3s cluster</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076348066/CVFUNdLNN.png" alt /></p>
<ul>
<li>Download the Kubeconfig file</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076353617/rxI0p9aF-.png" alt /></p>
<ul>
<li>Install Portainer directly on the cluster</li>
</ul>
<pre><code><span class="hljs-strong">**curl -LO [<span class="hljs-string">https://raw.githubusercontent.com/portainer/portainer-k8s/master/portainer-nodeport.yaml</span>](<span class="hljs-link">https://raw.githubusercontent.com/portainer/portainer-k8s/master/portainer-nodeport.yaml</span>)**</span>

kubectl apply -f portainer-nodeport.yaml
namespace/portainer created
serviceaccount/portainer-sa-clusteradmin created
clusterrolebinding.rbac.authorization.k8s.io/portainer-crb-clusteradmin created
service/portainer created
deployment.apps/portainer created

kubectl get svc -n portainer
NAME        TYPE       CLUSTER-IP        EXTERNAL-IP   PORT(S)                         AGE
portainer   NodePort   192.168.159.221   <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">none</span>&gt;</span></span>        9000:30777/TCP,8000:30776/TCP   13s
</code></pre><ul>
<li>Open Portainer UI: &lt;NodeIp&gt;:&lt;Nodeport&gt;(<a target="_blank" href="http://91.211.152.180:30777/">http://91.211.152.180:30777</a> in this case)</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076356464/oYuUu6XJK.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076359192/lL2A-kmgJ.png" alt="click on kubernetes" /><em>click on kubernetes</em></p>
<p>The Managed k3s cluster gets imported</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076361340/e_e25gmnZ8.png" alt /></p>
<p><strong>Installing Portainer-agent on GKE:</strong></p>
<p>Create a simple plain default GKE cluster</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076363704/FQuYZ_b9T.png" alt="GKE cluster Creation" /><em>GKE cluster Creation</em></p>
<p>Connect to the cloud shell in order to Run Portainer Agent</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076365916/m_GPmSKId.png" alt /></p>
<p>Install Portainer Agent Load Balancer:</p>
<pre><code>**gcloud container clusters <span class="hljs-keyword">get</span>-credentials portainer <span class="hljs-comment">--zone us-central1-c --project playground-s-11-14726b37**</span>
Fetching <span class="hljs-keyword">cluster</span> endpoint <span class="hljs-keyword">and</span> auth data.
kubeconfig entry <span class="hljs-keyword">generated</span> <span class="hljs-keyword">for</span> portainer.

curl -L https://downloads.portainer.io/portainer-agent-k8s-lb.yaml -o portainer-agent-k8s.yaml; kubectl apply -
f portainer-agent-k8s.yaml
  % Total    % Received % Xferd  Average Speed   <span class="hljs-type">Time</span>    <span class="hljs-type">Time</span>     <span class="hljs-type">Time</span>  <span class="hljs-keyword">Current</span>
                                 Dload  Upload   Total   Spent    Left  Speed
<span class="hljs-number">100</span>  <span class="hljs-number">1599</span>  <span class="hljs-number">100</span>  <span class="hljs-number">1599</span>    <span class="hljs-number">0</span>     <span class="hljs-number">0</span>   <span class="hljs-number">1169</span>      <span class="hljs-number">0</span>  <span class="hljs-number">0</span>:<span class="hljs-number">00</span>:<span class="hljs-number">01</span>  <span class="hljs-number">0</span>:<span class="hljs-number">00</span>:<span class="hljs-number">01</span> <span class="hljs-comment">--:--:--  1169</span>

namespace/portainer created
serviceaccount/portainer-sa-clusteradmin created
clusterrolebinding.rbac.<span class="hljs-keyword">authorization</span>.k8s.io/portainer-crb-clusteradmin created
service/portainer-agent created
service/portainer-agent-headless created
deployment.apps/portainer-agent created

kubectl <span class="hljs-keyword">get</span> svc -n portainer
<span class="hljs-type">NAME</span>                       <span class="hljs-keyword">TYPE</span>           <span class="hljs-keyword">CLUSTER</span>-IP    <span class="hljs-keyword">EXTERNAL</span>-IP     PORT(S)          AGE
portainer-agent            LoadBalancer   <span class="hljs-number">10.28</span><span class="hljs-number">.7</span><span class="hljs-number">.233</span>   <span class="hljs-number">35.238</span><span class="hljs-number">.43</span><span class="hljs-number">.218</span>   <span class="hljs-number">9001</span>:<span class="hljs-number">31739</span>/TCP   <span class="hljs-number">84</span>s
portainer-agent-headless   ClusterIP      <span class="hljs-keyword">None</span>          &lt;<span class="hljs-keyword">none</span>&gt;          &lt;<span class="hljs-keyword">none</span>&gt;           <span class="hljs-number">82</span>s
</code></pre><p>Create an Endpoint for GKE in the Portainer UI and enter the Endpoint URL as the <strong>&lt;Load Balancer IP of Portainer-agent&gt;:9000</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076368165/9ImxlSNbU.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076370442/nNAS5OW1w.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076372464/bhdRULuLv.png" alt /></p>
<p>With these little steps, you can run multiple agents on Different Kubernetes clusters and manage them(in the above example we were able to install server on Civo cloud and even connect GKE cluster). When I say manage them you can assign them to groups and create users for that. You can deploy the workloads from the Portianer UI</p>
<p><strong>Creating team, users, Groups : </strong>
With Portainer you can put clusters(endpoints) in different groups and assign user and team access. So create a team, create a user, create a new group, and team/user to that group, and then add cluster/endpoint to the new group. This way different users can assess different sets of clusters base on the need.</p>
<p>Creating Team:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076374988/BBF5s1-VF.png" alt /></p>
<p>Creating User:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076377210/N5tX_WlyU.png" alt /></p>
<p>Creating Group:
In the endpoints section, create a new group.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076379582/hjQEEPj0N.png" alt /></p>
<p>Now once you have cluster added to a group, you can manage access as well as below:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076381698/lMXyKGLOh.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076383704/B6vHclj63.png" alt /></p>
<p><strong>Finally, Let us deploy a sample application to Civo cluster from Portainer.</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076386074/WpONCmkLD.png" alt /></p>
<p>Very easily you can define Image, Memory, CPU, NodePort and most of the customization and you can edit it on the fly from the UI.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076388546/uTLjQnKbT.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076391948/OWoGq-vmz.png" alt="Accessing application via NodePort" /><em>Accessing application via NodePort</em></p>
<p>So with Portainer 2.0 you can import and manage multiple clusters and have them added to different groups as per the requirement of the teams or environments. Management is simple and so is the import cluster. Portainer with rich experience in Docker management now has a great release for Kubernetes management as well.</p>
<p>ENJOY PORTAINERING !!</p>
<p><strong>Saiyam Pathak
</strong>[CNCF Ambassador | CKA | CKAD ]
<a target="_blank" href="https://youtube.com/saiyam911">Youtube
</a><a target="_blank" href="https://twitter.com/saiyampathak">Twitter</a></p>
]]></content:encoded></item><item><title><![CDATA[Let us take a dig into Kubevious]]></title><description><![CDATA[In this post, we will discuss a tool name "Kubevious"
Visualizing Kubernetes is something that everyone wants, the more good the visualization, the more it gets adopted by the community. Tools that help to view/debug the issues/configurations right i...]]></description><link>https://saiyampathak.com/let-us-take-a-dig-into-kubevious</link><guid isPermaLink="true">https://saiyampathak.com/let-us-take-a-dig-into-kubevious</guid><category><![CDATA[Kubernetes]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Tue, 25 Aug 2020 18:03:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1598378611534/qztwscwgr.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this post, we will discuss a tool name "Kubevious"</p>
<p>Visualizing Kubernetes is something that everyone wants, the more good the visualization, the more it gets adopted by the community. Tools that help to view/debug the issues/configurations right in front of the screen make the life of dev/ops people easy. </p>
<p>There are Different Tools as of today that do the visualization, but I found Kubevious to be different. Along with the visualizations, it also shows the misconfigured labels for the pods-services, instantly shows the RBAC roles/permissions for the service accounts. Sounds Exciting? Let us dive in and see it in action.</p>
<p>For this tutorial, we will install Kubevious to a managed k3s cluster (powered by  <a target="_blank" href="https://www.civo.com/?ref=3a1d41">civo cloud</a>)</p>
<p>After creating a k3s cluster, save the kubeconfig locally, to check if the cluster is ready and running. </p>
<pre><code><span class="hljs-selector-tag">kubectl</span> <span class="hljs-selector-tag">get</span> <span class="hljs-selector-tag">nodes</span>
<span class="hljs-selector-tag">NAME</span>               <span class="hljs-selector-tag">STATUS</span>   <span class="hljs-selector-tag">ROLES</span>    <span class="hljs-selector-tag">AGE</span>   <span class="hljs-selector-tag">VERSION</span>
<span class="hljs-selector-tag">kube-node-ee97</span>     <span class="hljs-selector-tag">Ready</span>    &lt;<span class="hljs-selector-tag">none</span>&gt;   61<span class="hljs-selector-tag">m</span>   <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.18</span><span class="hljs-selector-class">.6</span>+<span class="hljs-selector-tag">k3s1</span>
<span class="hljs-selector-tag">kube-master-650d</span>   <span class="hljs-selector-tag">Ready</span>    <span class="hljs-selector-tag">master</span>   62<span class="hljs-selector-tag">m</span>   <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.18</span><span class="hljs-selector-class">.6</span>+<span class="hljs-selector-tag">k3s1</span>
<span class="hljs-selector-tag">kube-node-b70a</span>     <span class="hljs-selector-tag">Ready</span>    &lt;<span class="hljs-selector-tag">none</span>&gt;   61<span class="hljs-selector-tag">m</span>   <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.18</span><span class="hljs-selector-class">.6</span>+<span class="hljs-selector-tag">k3s1</span>
</code></pre><p>Now you can deploy Kubevious to the Kubernetes cluster via helm charts easily (make sure to have helm installed locally )</p>
<pre><code>
kubectl <span class="hljs-keyword">create</span> namespace kubevious
namespace/kubevious created


helm repo <span class="hljs-keyword">add</span> kubevious https://helm.kubevious.io
<span class="hljs-string">"kubevious"</span> has been added <span class="hljs-keyword">to</span> your repositories

helm <span class="hljs-keyword">upgrade</span> <span class="hljs-comment">--atomic -i -n kubevious  --kubeconfig=config   --version 0.6.36     --set ingress.enabled=true     kubevious kubevious/kubevious </span>
<span class="hljs-keyword">Release</span> <span class="hljs-string">"kubevious"</span> does <span class="hljs-keyword">not</span> exist. Installing it <span class="hljs-keyword">now</span>.
<span class="hljs-keyword">NAME</span>: kubevious
<span class="hljs-keyword">LAST</span> DEPLOYED: Tue Aug <span class="hljs-number">25</span> <span class="hljs-number">19</span>:<span class="hljs-number">32</span>:<span class="hljs-number">38</span> <span class="hljs-number">2020</span>
NAMESPACE: kubevious
<span class="hljs-keyword">STATUS</span>: deployed
REVISION: <span class="hljs-number">1</span>
<span class="hljs-keyword">TEST</span> SUITE: <span class="hljs-keyword">None</span>
</code></pre><p>Hooray!! Kubevious installed in seconds within the cluster. Let us see how we can access the dashboard </p>
<pre><code><span class="hljs-attribute">kubectl</span> get pods -n kubevious
NAME                                    READY   STATUS    RESTARTS   AGE
pod/kubevious-ui-68668b4489-bjsqs       <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          4m37s
pod/kubevious-parser-84cfb9b8d9-slw6z   <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          4m37s
pod/kubevious-6b4786796b-s77hw          <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          4m37s
pod/kubevious-mysql-<span class="hljs-number">0</span>                   <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          4m37s

kubectl get ingress -n kubevious
NAME        CLASS    HOSTS   ADDRESS         PORTS   AGE
kubevious   &lt;<span class="hljs-literal">none</span>&gt;   *       <span class="hljs-number">91.211.152.29</span>   <span class="hljs-number">80</span>      2m57s

kubectl get svc -n kube-system | grep traefik
traefik-prometheus   ClusterIP      <span class="hljs-number">192.168.149.96</span>    &lt;<span class="hljs-literal">none</span>&gt;          <span class="hljs-number">9100</span>/TCP                     <span class="hljs-number">76m</span>
traefik              LoadBalancer   <span class="hljs-number">192.168.179.129</span>   <span class="hljs-number">91.211.152.29</span>   <span class="hljs-number">80</span>:<span class="hljs-number">30078</span>/TCP,<span class="hljs-number">443</span>:<span class="hljs-number">32162</span>/TCP   <span class="hljs-number">76m</span>
</code></pre><p>You can directly access the Kubevious UI by hitting the External IP of Traefik and the port that points to port 80.
in this case, it would be 91.211.152.29:30078</p>
<p>Below is the First UI that you get to see :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598364740815/vIz2tm9Q8.png" alt="image.png" /></p>
<p>As you can see, it lists all the namespaces with its  configurations (Roles, RoleBindings, ClusterRole, ClusterRoleBindings, Applications deployed in that namespace)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598364975363/zfsECHFAq.png" alt="image.png" /></p>
<p>So if you see any warning signs or any red signs you can see that the alerts section will be populated with a reason for it.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598374739874/fqgDrk1O8.png" alt="image.png" /></p>
<p>You will also be able to view the complete visualization of RBAC - roles and role bindings of in a single view that gives the information on what is the access control level. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598368878815/un9qouxPz.png" alt="image.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598368908453/ECn7XVS9P.png" alt="image.png" /></p>
<p>You can also see the list of deployed resources, their deployment information, and labels/selector for the service/pod.
This is important for rectifying issues on the fly by viewing in the UI. Consider the below scenario:</p>
<p><strong>Say you deploy an nginx app and expose it as a service and while creating the service you didn't specify the labels properly. 
</strong></p>
<pre><code>kubectl run nginx <span class="hljs-comment">--image=nginx --replicas=2</span>
kubectl run <span class="hljs-comment">--generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.</span>
deployment.apps/nginx created

#<span class="hljs-keyword">Create</span> a Nodeport service <span class="hljs-keyword">and</span> <span class="hljs-keyword">change</span> the app label (<span class="hljs-keyword">in</span> <span class="hljs-keyword">order</span> <span class="hljs-keyword">to</span> <span class="hljs-keyword">create</span> the above scenario )
kubectl expose deployment/nginx <span class="hljs-comment">--port=80 --type=NodePort</span>
service/nginx exposed
kubectl <span class="hljs-keyword">get</span> svc
<span class="hljs-keyword">NAME</span>         <span class="hljs-keyword">TYPE</span>        CLUSTER-IP        <span class="hljs-keyword">EXTERNAL</span>-IP   PORT(S)        AGE
kubernetes   ClusterIP   <span class="hljs-number">192.168</span><span class="hljs-number">.128</span><span class="hljs-number">.1</span>     &lt;<span class="hljs-keyword">none</span>&gt;        <span class="hljs-number">443</span>/TCP        <span class="hljs-number">155</span><span class="hljs-keyword">m</span>
nginx        NodePort    <span class="hljs-number">192.168</span><span class="hljs-number">.220</span><span class="hljs-number">.191</span>   &lt;<span class="hljs-keyword">none</span>&gt;        <span class="hljs-number">80</span>:<span class="hljs-number">32485</span>/TCP   <span class="hljs-number">2</span>s

kubectl edit svc nginx 
#<span class="hljs-keyword">change</span> the selector <span class="hljs-keyword">as</span> below image
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598369270101/o6YOHnDNe.png" alt="image.png" /></p>
<p>Let us check the Kubevious UI now for the default namespace and you can see that service selector is not able to find any apps.  </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598369346681/KL6h5Va4s.png" alt="image.png" /></p>
<p>Now, this becomes very helpful if you find any mismatch in the labels/selectors which is a common mistake.</p>
<p>Also, there is a very interesting feature called <strong>Time Machine</strong>
Say that you have fixed the error now but in the Time Machine, you can view what the error was in past simply by dragging to a specific time window. Below I am showing 2 views -&gt; wrong selector and correct selector </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598373041173/4AI-XFUK5.png" alt="image.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598373068125/_IGIWM2b5.png" alt="image.png" /></p>
<p>So, In my opinion, Kubevious really helps you to dig into your cluster especially the RBAC portions and also helps you debug the label/selector problem easily.  For more information and features like <strong>Blast radius, universal search</strong> you can visit the official GitHub Repository: https://github.com/kubevious/kubevious.</p>
<p>Saiyam Pathak <br />
[CKA | CKAD | CNCF Ambassador] <br />
<a target="_blank" href="https://youtube.com/saiyam911">Youtube</a> <br />
<a target="_blank" href="https://twitter.com/saiyampathak">Twitter</a><br /></p>
]]></content:encoded></item><item><title><![CDATA[Connect civo k3s Cluster with Azure ARC]]></title><description><![CDATA[First of Kubernetes aka k8s is a defacto orchestration engine for everyone now (believe it or not).
Since people are creating kubernetes clusters in multiple clouds, on-premise, and trying to avoid a vendor lock-in kind of scenario there comes a need...]]></description><link>https://saiyampathak.com/connect-civo-k3s-cluster-with-azure-arc</link><guid isPermaLink="true">https://saiyampathak.com/connect-civo-k3s-cluster-with-azure-arc</guid><category><![CDATA[Azure]]></category><category><![CDATA[Kubernetes]]></category><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Wed, 15 Jul 2020 16:40:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1600015204758/J3Aslo5jN.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>First of Kubernetes aka k8s is a defacto orchestration engine for everyone now (believe it or not).
Since people are creating kubernetes clusters in multiple clouds, on-premise, and trying to avoid a vendor lock-in kind of scenario there comes a need to manage all the clusters from one place. Now there are a lot of tools that help to do that and today I will be discussing Azure ARC. </p>
<h3 id="azure-arc">Azure ARC</h3>
<p>Back in 2019 Azure ARC was announced to closed preview and now it's available for all to experiment with. So what Azure arc lets you do, it helps you to manage infrastructure not running in Azure. Kubernetes clusters running in different cloud vendors or on Premise can leverage the Azure Tech stack for management. </p>
<p>to Explain how Azure ARC will help consider a scenario that you have 50 clusters spanned across various cloud vendors and on premise, With Azure Arc you will be able to get a unified view for all the clusters and also you will be able to leverage:</p>
<ul>
<li>Security </li>
<li>Governance</li>
<li>Gitops</li>
<li>RBAC 
Major thing I would say is the access control and ability for the developers to deploy applications on all the clusters from a single place with the GitOps model. Which sounds interesting to me. </li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594225281282/LWssw34eL.png" alt="Screenshot 2020-07-08 at 9.50.52 PM.png" />
Image is taken from <a target="_blank" href="https://azure.microsoft.com/en-us/blog/azure-arc-enabled-kubernetes-preview-and-new-ecosystem-partners/">Azure official blog</a> </p>
<p>civo cloud has created a first-ever managed k3s cluster(you can get access by applying  <a target="_blank" href="https://www.civo.com/?ref=3a1d41">here</a> ). So I will be using the k3s(certified kubernetes distribution) cluster. First login to civo cloud and create a cluster pretty simple and fast in less than 2 minutes as follows:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594225183370/dQnK3LII1.png" alt="dd.png" /></p>
<p>Let the cluster get created meanwhile let's configure and enable Azure ARC 
1) Install Azure CLI - <a target="_blank" href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest">docs</a></p>
<p>2) Run following commands to enable  azure arc feature </p>
<pre><code>az login 
az feature <span class="hljs-keyword">register</span> --<span class="hljs-keyword">namespace</span> Microsoft.Kubernetes --name previewAccess 
az feature <span class="hljs-keyword">register</span> --<span class="hljs-keyword">namespace</span> Microsoft.KubernetesConfiguration --name sourceControlConfiguration

Verify the enablement by :
az feature <span class="hljs-built_in">list</span> -o table | grep Kubernetes
Microsoft.Kubernetes/previewAccess                                                Registered
Microsoft.KubernetesConfiguration/sourceControlConfiguration                      Registered
</code></pre><p>Now Register the providers </p>
<pre><code>az provider register <span class="hljs-comment">--namespace Microsoft.Kubernetes</span>
az provider register <span class="hljs-comment">--namespace Microsoft.KubernetesConfiguration</span>

<span class="hljs-keyword">Check</span> <span class="hljs-keyword">if</span> they <span class="hljs-keyword">are</span> completed:
az provider <span class="hljs-keyword">show</span> -<span class="hljs-keyword">n</span> Microsoft.Kubernetes -o <span class="hljs-keyword">table</span> 
az provider <span class="hljs-keyword">show</span> -<span class="hljs-keyword">n</span> Microsoft.KubernetesConfiguration -o <span class="hljs-keyword">table</span>
</code></pre><p>All these commands will take some time to take effect so show some patience here. </p>
<p>Install kubernetes extensions(either add or update)</p>
<pre><code>az extension add <span class="hljs-comment">--name connectedk8s </span>
az extension add <span class="hljs-comment">--name k8sconfiguration</span>

az extension <span class="hljs-keyword">update</span> <span class="hljs-comment">--name connectedk8s </span>
az extension <span class="hljs-keyword">update</span> <span class="hljs-comment">--name k8sconfiguration</span>
</code></pre><p>Install Helm3 as Azure Arc used Helm 3 for installing the agents on the cluster. You can install helm 3 from the <a target="_blank" href="https://helm.sh/docs/intro/install/">docs</a>.</p>
<p>3) Go to Azure Arc in Azure portal </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594231733865/3VymWZfbE.png" alt="Screenshot 2020-07-08 at 11.32.58 PM.png" /></p>
<p>Select <strong>Register Cluster</strong> 
<strong>Screen 1 </strong> will show all the prerequisite steps to be performed out of which I have done all except downloading the kubeconfig file
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594231711963/l3ftuP8a_.png" alt="Screenshot 2020-07-08 at 11.34.54 PM.png" /></p>
<p>you can download the kubeconfig file from the civo cloud ui
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594231759727/AGbbXx342.png" alt="Screenshot 2020-07-08 at 11.37.27 PM.png" /></p>
<p><strong>Screen 2</strong> just enter the cluster details 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594231833713/K_8HYZCyE.png" alt="Screenshot 2020-07-08 at 11.40.07 PM.png" /></p>
<p><strong>Screen3</strong>  Run the commands as shown (point the kubeconfig to the right config file)
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594232026999/hAe1UrqHc.png" alt="Screenshot 2020-07-08 at 11.42.56 PM.png" /></p>
<p><strong>Screen4</strong> Verification page shows the cluster is connected and after finishing you can setup gitops, Azure monitoring and Compliance policies.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594232647954/3VljYShRU.png" alt="Screenshot 2020-07-08 at 11.50.33 PM.png" /></p>
<p>From the kubectl you can see the components running </p>
<pre><code>kubectl get pods -n azure-arc --kubeconfig config 
NAME                                         READY   STATUS    RESTARTS   AGE
flux-logs-agent<span class="hljs-number">-799</span>cb595f5<span class="hljs-number">-4</span>qvqf             <span class="hljs-number">2</span>/<span class="hljs-number">2</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">11</span>m
metrics-agent<span class="hljs-number">-784</span>cddf6c6-l6hrg               <span class="hljs-number">2</span>/<span class="hljs-number">2</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">11</span>m
controller-manager<span class="hljs-number">-7d</span>6f9f56b5<span class="hljs-number">-8</span>tqxq          <span class="hljs-number">3</span>/<span class="hljs-number">3</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">11</span>m
resource-sync-agent-d86c6ddd-z7h7c           <span class="hljs-number">3</span>/<span class="hljs-number">3</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">11</span>m
cluster-metadata-operator<span class="hljs-number">-745954d</span>56d-nc5fk   <span class="hljs-number">2</span>/<span class="hljs-number">2</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">11</span>m
clusteridentityoperator<span class="hljs-number">-5497448799</span>-xdv9h     <span class="hljs-number">3</span>/<span class="hljs-number">3</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">11</span>m
config-agent<span class="hljs-number">-57889d</span>49d6-k6g28                <span class="hljs-number">3</span>/<span class="hljs-number">3</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">11</span>m
</code></pre><p>That's it the cluster is now connected to Azure Arc. Let us try some GitOps now go to configurations and click add configuration and define the git repo from where you want to. have the application deployed on the cluster directly. In this case, I am taking sample git repo by <a target="_blank" href="https://github.com/Azure/arc-k8s-demo">azure</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594261929603/YnxbjozDI.png" alt="Screenshot 2020-07-09 at 8.00.07 AM.png" /></p>
<p>BOOM all the things get deployed automatically </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594262698060/EMWWNECjJ.png" alt="Screenshot 2020-07-09 at 8.14.39 AM.png" /></p>
<pre><code>kubectl get all -n demo --kubeconfig config2
NAME                             READY   STATUS    RESTARTS   AGE
pod/memcached<span class="hljs-number">-86</span>bdf9f56b-r8d96   <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">14s</span>
pod/demom<span class="hljs-number">-558478</span>cbcb-kndmd       <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">14s</span>


NAME                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
service/memcached   ClusterIP   <span class="hljs-number">192.168</span><span class="hljs-number">.191</span><span class="hljs-number">.38</span>   &lt;none&gt;        <span class="hljs-number">11211</span>/TCP   <span class="hljs-number">14s</span>


NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/memcached   <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">15s</span>
deployment.apps/demom       <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">15s</span>

NAME                                   DESIRED   CURRENT   READY   AGE
replicaset.apps/memcached<span class="hljs-number">-86</span>bdf9f56b   <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">15s</span>
replicaset.apps/demom<span class="hljs-number">-558478</span>cbcb       <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">15s</span>
</code></pre><p>you can access the application and the port where the azure-vote-front service is running </p>
<pre><code><span class="hljs-attribute">kubectl</span> get svc --kubeconfig config2
NAME               TYPE           CLUSTER-IP        EXTERNAL-IP   PORT(S)        AGE
azure-vote-back    ClusterIP      <span class="hljs-number">192.168.202.113</span>   &lt;<span class="hljs-literal">none</span>&gt;        <span class="hljs-number">6379</span>/TCP       <span class="hljs-number">14m</span>
azure-vote-front   LoadBalancer   <span class="hljs-number">192.168.129.104</span>   &lt;pending&gt;     <span class="hljs-number">80</span>:<span class="hljs-number">30823</span>/TCP   <span class="hljs-number">14m</span>
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1594262858945/UJUE58Q17.png" alt="Screenshot 2020-07-09 at 8.16.32 AM.png" /></p>
<p>It's pretty easy to connect the cluster and deploy the application onto kubernetes directly using Git. You will also be able to use helm to deploy the application from the configuration. 
Other things that can be done is setting up <a target="_blank" href="https://docs.microsoft.com/en-us/azure/azure-monitor/insights/container-insights-enable-arc-enabled-clusters">azure monitor</a> and <a target="_blank" href="https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/use-azure-policy">polices</a></p>
<p><a target="_blank" href="https://twitter.com/saiyampathak">Saiyam Pathak</a>
[CKA | CKAD | CNCF Ambassador]</p>
]]></content:encoded></item><item><title><![CDATA[Shipa : A Complete developer-friendly Kubernetes]]></title><description><![CDATA[Push code, not containers
Today I will be sharing some insights into working with Shipa.
So Shipa is a platform mainly built for the developers so that they can focus more on writing code and less on the infrastructure. The main idea IMO is to make d...]]></description><link>https://saiyampathak.com/shipa-a-complete-developer-friendly-kubernetes-44799a41a0f</link><guid isPermaLink="true">https://saiyampathak.com/shipa-a-complete-developer-friendly-kubernetes-44799a41a0f</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sun, 14 Jun 2020 15:46:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076237327/v8C24J6Pp.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Push code, not containers</p>
<p>Today I will be sharing some insights into working with Shipa.</p>
<p>So Shipa is a platform mainly built for the developers so that they can focus more on writing code and less on the infrastructure. The main idea IMO is to make developers' life easy and making their apps run on the best in class kubernetes clusters.</p>
<p>One can associate the Kubernetes clusters with ships using the following guide:
<a target="_blank" href="https://learn.shipa.io/docs/adding-kubernetes-clusters"><strong>Kubernetes Clusters</strong>
<em>Shipa gives Administrators the possibility of bringing together multiple Kubernetes clusters and it's nodes, that can…</em>learn.shipa.io</a></p>
<p>Once the cluster is added it shows up in the dashboard for the shipa instance and you can have an overview of all the cluster/apps associated.</p>
<p>Dashboard :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076234632/jVBsD2uMV.png" alt /></p>
<p>Dashboard view if to view all the clusters, applications, metrics, and events for all the clusters associated with shipa at one place.</p>
<p>Few things to get started:</p>
<p>Installing the shipa CLI —</p>
<pre><code>wget [<span class="hljs-string">https://storage.googleapis.com/shipa-cli/shipa_linux_amd64</span>](<span class="hljs-link">https://storage.googleapis.com/shipa-cli/shipa_linux_amd64</span>)

chmod +x shipa<span class="hljs-emphasis">_linux_</span>amd64 &amp;&amp; mv -v shipa<span class="hljs-emphasis">_linux_</span>amd64 /usr/local/bin/shipa
</code></pre><p>Adding Shipa Target</p>
<pre><code>[<span class="hljs-string">root@shipa ~</span>]# shipa target-add first [<span class="hljs-string">http://35.185.233.31:8080</span>](<span class="hljs-link">http://35.185.233.31:8080</span>) -s
New target first -&gt; [<span class="hljs-string">http://35.185.233.31:8080</span>](<span class="hljs-link">http://35.185.233.31:8080</span>) added to target list and defined as the current target
[root@shipa ~]# shipa target-list
<span class="hljs-bullet">*</span> first (http://35.185.233.31:8080)
[root@shipa ~]#
</code></pre><p>Shipa Login and app lists</p>
<pre><code>shipa login
Email: [<span class="hljs-string">x</span>](<span class="hljs-link">mailto:admin@shipa.io</span>)xxxxxxxxxxxx
Password: 
Successfully logged in!

[root@shipa ~]# shipa app-list
Error: you're not authenticated or your session has expired.
Calling the "login" command...
Email: xxxxxxxxxxxx
Password:

+---------------------------+-----------+--------------------------------------+
| Application               | Units     | Address                              |
+---------------------------+-----------+--------------------------------------+
| aks-app1                  | 1 started | http://aks-app1.35.199.180.138.nip.↵ |
|                           |           | io                                   |
+---------------------------+-----------+--------------------------------------+
| dashboard                 | 1 started | http://dashboard.35.199.180.138.nip↵ |
|                           |           | .io                                  |
+---------------------------+-----------+--------------------------------------+
| gke-app1                  | 1 started | http://gke-app1.35.199.180.138.nip.↵ |
|                           |           | io                                   |
+---------------------------+-----------+--------------------------------------+
| redis-service-service-app | 1 started | http://redis-service-service-app.35↵ |
|                           |           | .199.180.138.nip.io                  |
+---------------------------+-----------+--------------------------------------+

Successfully logged in!
</code></pre><p>Shipa teams :</p>
<pre><code>shipa team-list
+--------+------------------+------+
<span class="hljs-params">| Team   |</span> Permissions      <span class="hljs-params">| Tags |</span>
+--------+------------------+------+
<span class="hljs-params">| admin  |</span> app              <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> team             <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> service          <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> service-instance <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> cluster          <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> volume           <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> volume-plan      <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> webhook          <span class="hljs-params">|      |</span>
+--------+------------------+------+
<span class="hljs-params">| system |</span> app              <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> team             <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> service          <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> service-instance <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> cluster          <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> volume           <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> volume-plan      <span class="hljs-params">|      |</span>
<span class="hljs-params">|        |</span> webhook          <span class="hljs-params">|      |</span>
+--------+------------------+------+
</code></pre><p>Adding ssh key :</p>
<pre><code>shipa key-add my-rsa-key ~<span class="hljs-regexp">/.ssh/i</span>d_rsa.pub

Key <span class="hljs-string">"my-rsa-key"</span> successfully added!
</code></pre><p>Creating an application :</p>
<pre><code>shipa app-<span class="hljs-keyword">create</span> demo1 python -t <span class="hljs-keyword">admin</span> -o gke
</code></pre><p>It creates a complete developer experience wherein you get a git repository like</p>
<pre><code><span class="hljs-attribute">git</span>@<span class="hljs-number">35.185.233.31</span>:demo<span class="hljs-number">1</span>.git
</code></pre><p>Now write and push the code:</p>
<pre><code>git add.
git <span class="hljs-keyword">commit</span> -m <span class="hljs-string">"first commit"</span>
git push git@<span class="hljs-number">35.185</span><span class="hljs-number">.233</span><span class="hljs-number">.31</span>:demo1.git <span class="hljs-keyword">master</span>

shipe app-<span class="hljs-keyword">list</span> =&gt; <span class="hljs-keyword">to</span> <span class="hljs-keyword">get</span> the endpoint <span class="hljs-keyword">for</span> the application that <span class="hljs-keyword">is</span> running <span class="hljs-keyword">on</span> the cluster

+<span class="hljs-comment">---------------------------+-----------+--------------------------------------+</span>
| test2                     | <span class="hljs-number">1</span> started | <span class="hljs-keyword">http</span>://test2<span class="hljs-number">.35</span><span class="hljs-number">.199</span><span class="hljs-number">.180</span><span class="hljs-number">.138</span>.nip.io   |
+<span class="hljs-comment">---------------------------+-----------+--------------------------------------+</span>
</code></pre><p>It's that simple for a developer to just write the code without having to learn or create any Kubernetes related object or yaml files and push it to the repository and DONE — your code is deployed on Kubernetes.</p>
<p>There is a lot that can be done using Shipa and a lot that is in the pipeline.</p>
<p>For having shipa you can install it via :</p>
<pre><code>[<span class="hljs-string">https://github.com/shipa-corp/helm-chart</span>](<span class="hljs-link">https://github.com/shipa-corp/helm-chart</span>)
</code></pre><p>Saiyam Pathak
[CKA|CKAD|CNCF AMbassador]</p>
]]></content:encoded></item><item><title><![CDATA[Yes you can import any kubernetes cluster into Rancher]]></title><description><![CDATA[Yes you can import any kubernetes cluster into Rancher]]></description><link>https://saiyampathak.com/yes-you-can-import-any-kubernetes-cluster-into-rancher-d14375663a82</link><guid isPermaLink="true">https://saiyampathak.com/yes-you-can-import-any-kubernetes-cluster-into-rancher-d14375663a82</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sat, 30 May 2020 16:09:43 GMT</pubDate><content:encoded><![CDATA[<p>Yes you can import any kubernetes cluster into Rancher</p>
]]></content:encoded></item><item><title><![CDATA[Permission manager : RBAC management for Kubernetes]]></title><description><![CDATA[Photo by Kyle Glenn on Unsplash
Came across a GitHub repository implemented by the awesome folks at Sighup.IO for managing user permissions for Kubernetes cluster easily via web UI.
GitHub Repo : https://github.com/sighupio/permission-manager
With Pe...]]></description><link>https://saiyampathak.com/permission-manager-rbac-management-for-kubernetes-ed46c2f38cfb</link><guid isPermaLink="true">https://saiyampathak.com/permission-manager-rbac-management-for-kubernetes-ed46c2f38cfb</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Wed, 29 Jan 2020 08:44:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076443115/RTXS6NRzk.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Photo by Kyle Glenn on Unsplash</p>
<p>Came across a GitHub repository implemented by the awesome folks at <a target="_blank" href="https://sighup.io/">Sighup.IO</a> for managing user permissions for Kubernetes cluster easily via web UI.</p>
<p>GitHub Repo : <a target="_blank" href="https://github.com/sighupio/permission-manager">https://github.com/sighupio/permission-manager</a></p>
<p>With Permission Manager, you can create users, assign namespaces/permissions, and distribute Kubeconfig YAML files via a nice&amp;easy web UI.
The project works on the concept of templates that you can create and then use that template for different users.Template is directly proportional to clusterrole. 
In rder to create a new template you need to defile a clusterrole with prefix <code>template-namespaces-resources__</code>. The default template are present in the k8s/k8s-seeds directory.</p>
<p>Example template:</p>
<pre><code><span class="hljs-attribute">apiVersion</span>: rbac.authorization.k8s.io/v1
<span class="hljs-attribute">kind</span>: ClusterRole
<span class="hljs-attribute">metadata</span>:
  <span class="hljs-attribute">name</span>: template-namespaced-resources___developer
<span class="hljs-attribute">rules</span>:
  - <span class="hljs-attribute">apiGroups</span>:
      - <span class="hljs-string">"*"</span>
    <span class="hljs-attribute">resources</span>:
      - <span class="hljs-string">"configmaps"</span>
      - <span class="hljs-string">"endpoints"</span>
      - <span class="hljs-string">"persistentvolumeclaims"</span>
      - <span class="hljs-string">"pods"</span>
      - <span class="hljs-string">"pods/log"</span>
      - <span class="hljs-string">"pods/portforward"</span>
      - <span class="hljs-string">"podtemplates"</span>
      - <span class="hljs-string">"replicationcontrollers"</span>
      - <span class="hljs-string">"resourcequotas"</span>
      - <span class="hljs-string">"secrets"</span>
      - <span class="hljs-string">"services"</span>
      - <span class="hljs-string">"events"</span>
      - <span class="hljs-string">"daemonsets"</span>
      - <span class="hljs-string">"deployments"</span>
      - <span class="hljs-string">"replicasets"</span>
      - <span class="hljs-string">"ingresses"</span>
      - <span class="hljs-string">"networkpolicies"</span>
      - <span class="hljs-string">"poddisruptionbudgets"</span>
      # - <span class="hljs-string">"rolebindings"</span>
      # - <span class="hljs-string">"roles"</span>
    <span class="hljs-attribute">verbs</span>:
      - <span class="hljs-string">"*"</span>
</code></pre><p>Let us now deploy it on Katakoda kubernetes playground and see the permission checker in action.</p>
<p><strong>Step1:</strong> Open <a target="_blank" href="https://www.katacoda.com/courses/kubernetes/playground">https://www.katacoda.com/courses/kubernetes/playground</a></p>
<p><strong>Step 2:</strong> git clone <a target="_blank" href="https://github.com/sighupio/permission-manager.git">https://github.com/sighupio/permission-manager.git</a></p>
<p><strong>Step3: Change the deploy.yaml file</strong></p>
<pre><code>master $ kubectl cluster-info
Kubernetes master is running at [<span class="hljs-string">https://172.17.0.14:6443</span>](<span class="hljs-link">https://172.17.0.14:6443</span>)
</code></pre><p>update the deployment file “k8s/deploy.yaml” with the CONTROL_PLANE_ADDRESS from the result of the above command.</p>
<pre><code><span class="hljs-attr">apiVersion:</span> <span class="hljs-string">apps/v1</span>
<span class="hljs-attr">kind:</span> <span class="hljs-string">Deployment</span>
<span class="hljs-attr">metadata:</span>
  <span class="hljs-attr">namespace:</span> <span class="hljs-string">permission-manager</span>
  <span class="hljs-attr">name:</span> <span class="hljs-string">permission-manager-deployment</span>
  <span class="hljs-attr">labels:</span>
    <span class="hljs-attr">app:</span> <span class="hljs-string">permission-manager</span>
<span class="hljs-attr">spec:</span>
  <span class="hljs-attr">replicas:</span> <span class="hljs-number">1</span>
  <span class="hljs-attr">selector:</span>
    <span class="hljs-attr">matchLabels:</span>
      <span class="hljs-attr">app:</span> <span class="hljs-string">permission-manager</span>
  <span class="hljs-attr">template:</span>
    <span class="hljs-attr">metadata:</span>
      <span class="hljs-attr">labels:</span>
        <span class="hljs-attr">app:</span> <span class="hljs-string">permission-manager</span>
    <span class="hljs-attr">spec:</span>
      <span class="hljs-attr">serviceAccountName:</span> <span class="hljs-string">permission-manager-service-account</span>
      <span class="hljs-attr">containers:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">permission-manager</span>
          <span class="hljs-attr">image:</span> <span class="hljs-string">quay.io/sighup/permission-manager:1.5.0</span>
          <span class="hljs-attr">ports:</span>
            <span class="hljs-bullet">-</span> <span class="hljs-attr">containerPort:</span> <span class="hljs-number">4000</span>
          <span class="hljs-attr">env:</span>
            <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">PORT</span>
              <span class="hljs-attr">value:</span> <span class="hljs-string">"4000"</span>
            <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">CLUSTER_NAME</span>
              <span class="hljs-attr">value:</span> <span class="hljs-string">"my-cluster"</span>
            <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">CONTROL_PLANE_ADDRESS</span>
<span class="hljs-string">**</span>              <span class="hljs-attr">value:</span> <span class="hljs-string">"https://172.17.0.14:6443"</span>
<span class="hljs-string">**</span>            <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">BASIC_AUTH_PASSWORD</span>
              <span class="hljs-attr">valueFrom:</span>
                <span class="hljs-attr">secretKeyRef:</span>
                  <span class="hljs-attr">name:</span> <span class="hljs-string">auth-password-secret</span>
                  <span class="hljs-attr">key:</span> <span class="hljs-string">password</span>

<span class="hljs-meta">---</span>
<span class="hljs-attr">apiVersion:</span> <span class="hljs-string">v1</span>
<span class="hljs-attr">kind:</span> <span class="hljs-string">Service</span>
<span class="hljs-attr">metadata:</span>
  <span class="hljs-attr">namespace:</span> <span class="hljs-string">permission-manager</span>
  <span class="hljs-attr">name:</span> <span class="hljs-string">permission-manager-service</span>
<span class="hljs-attr">spec:</span>
  <span class="hljs-attr">selector:</span>
    <span class="hljs-attr">app:</span> <span class="hljs-string">permission-manager</span>
  <span class="hljs-attr">ports:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">protocol:</span> <span class="hljs-string">TCP</span>
      <span class="hljs-attr">port:</span> <span class="hljs-number">4000</span>
      <span class="hljs-attr">targetPort:</span> <span class="hljs-number">4000</span>
<span class="hljs-string">**</span>  <span class="hljs-attr">type:</span> <span class="hljs-string">NodePort**</span>
</code></pre><p><strong>Step4: Deploy the manifests</strong></p>
<pre><code>cd permission-manager

master $ kubectl apply -f k8s/k8s-seeds/namespace.yml
namespace/permission-manager created

master $ kubectl apply -f k8s/k8s-seeds
secret/auth-<span class="hljs-keyword">password</span>-secret created
namespace/permission-manager unchanged
clusterrole.rbac.<span class="hljs-keyword">authorization</span>.k8s.io/<span class="hljs-keyword">template</span>-namespaced-resources___operation created
clusterrole.rbac.<span class="hljs-keyword">authorization</span>.k8s.io/<span class="hljs-keyword">template</span>-namespaced-resources___developer created
clusterrole.rbac.<span class="hljs-keyword">authorization</span>.k8s.io/<span class="hljs-keyword">template</span>-<span class="hljs-keyword">cluster</span>-resources___read-<span class="hljs-keyword">only</span> created
clusterrole.rbac.<span class="hljs-keyword">authorization</span>.k8s.io/<span class="hljs-keyword">template</span>-<span class="hljs-keyword">cluster</span>-resources___admin created
rolebinding.rbac.<span class="hljs-keyword">authorization</span>.k8s.io/permission-manager-service-account-rolebinding created
clusterrolebinding.rbac.<span class="hljs-keyword">authorization</span>.k8s.io/permission-manager-service-account-rolebinding created
serviceaccount/permission-manager-service-account created
clusterrole.rbac.<span class="hljs-keyword">authorization</span>.k8s.io/permission-manager-<span class="hljs-keyword">cluster</span>-<span class="hljs-keyword">role</span> created
customresourcedefinition.apiextensions.k8s.io/permissionmanagerusers.permissionmanager.<span class="hljs-keyword">user</span> created

master $ kubectl apply -f k8s/deploy.yaml
deployment.apps/permission-manager-deployment created
service/permission-manager-service created
</code></pre><p><strong>Step5: Get the NodePort and open UI using Katakoda</strong></p>
<pre><code>master $ kubectl <span class="hljs-keyword">get</span> svc -n permission-manager
<span class="hljs-type">NAME</span>                         <span class="hljs-keyword">TYPE</span>       <span class="hljs-keyword">CLUSTER</span>-IP      <span class="hljs-keyword">EXTERNAL</span>-IP   PORT(S)          AGE
permission-manager-service   NodePort   <span class="hljs-number">10.104</span><span class="hljs-number">.183</span><span class="hljs-number">.10</span>   &lt;<span class="hljs-keyword">none</span>&gt;        <span class="hljs-number">4000</span>:**<span class="hljs-number">31996</span>**/TCP   <span class="hljs-number">9</span>m40s
</code></pre><p>n order to open port from Katakoda click on the + and select View HTTP port 8080 on Host 1 and change the port to <strong>31996</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076428252/bdEnUD1q-.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076430205/ykRyoi7qt.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076431966/gXaNdwGt9.png" alt /></p>
<p>Enter the username and password : 
username: <code>admin</code>
password: 1v2d1e2e67dS 
You can change the password in k8s/k8s-seeds/auth-secret.yml file.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076433792/vCEGJjgD4.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076436095/9OJyQ5-um.png" alt /></p>
<p>Now Let us create some users and assign one of the default template.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076438114/PHJemWtYV.png" alt="User Test1 with permission as a developer in permission-manager namespace" /><em>User Test1 with permission as a developer in permission-manager namespace</em></p>
<p>Let us download the kubeconfig file and test the permissions:</p>
<pre><code>**master $ kubectl <span class="hljs-comment">--kubeconfig=/root/permission-manager/newkubeconfig get pods</span>
**Error <span class="hljs-keyword">from</span> <span class="hljs-keyword">server</span> (Forbidden): pods <span class="hljs-keyword">is</span> forbidden: <span class="hljs-keyword">User</span> "test1" cannot list resource "pods" <span class="hljs-keyword">in</span> API <span class="hljs-keyword">group</span> "" <span class="hljs-keyword">in</span> the namespace "default"
**master $ kubectl <span class="hljs-comment">--kubeconfig=/root/permission-manager/newkubeconfig get pods -n permission-manager</span>
**<span class="hljs-type">NAME</span>                                             READY   STATUS    RESTARTS   AGE
permission-manager-deployment<span class="hljs-number">-544649</span>f8f5-jzlks   <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">6</span>m38s

master $ kubectl <span class="hljs-keyword">get</span> clusterrole | grep <span class="hljs-keyword">template</span>
<span class="hljs-keyword">template</span>-<span class="hljs-keyword">cluster</span>-resources___admin                                     <span class="hljs-number">7</span>m56s
<span class="hljs-keyword">template</span>-<span class="hljs-keyword">cluster</span>-resources___read-<span class="hljs-keyword">only</span>                                 <span class="hljs-number">7</span>m56s
<span class="hljs-keyword">template</span>-namespaced-resources___developer                              <span class="hljs-number">7</span>m56s
<span class="hljs-keyword">template</span>-namespaced-resources___operation                              <span class="hljs-number">7</span>m56s
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076440282/Xp-fHHMpM.png" alt /></p>
<p><strong>Summary</strong>: With permission checker you can easily create multiple users and give permission for specific resources in specific namespace using custom-defined templates.</p>
<h2 id="about-saiyam">About Saiyam</h2>
<p>Saiyam is a Software Engineer working on Kubernetes with a focus on creating and managing the project ecosystem. Saiyam has worked on many facets of Kubernetes, including scaling, multi-cloud, managed kubernetes services, K8s documentation and testing. He’s worked on implementing major managed services (GKE/AKS/OKE) in different organizations. When not coding or answering Slack messages, Saiyam contributes to the community by writing blogs and giving sessions on InfluxDB, Docker and Kubernetes at different meetups. Reach him on Twitter @saiyampathak where he gives tips on InfluxDB, Rancher, Kubernetes and open source.</p>
<h2 id="were-hiring">We’re hiring!</h2>
<p>We are looking for engineers who love to work in Open Source communities like Kubernetes, Rancher, Docker, etc.</p>
<p>If you wish to work on such projects please do visit our <a target="_blank" href="https://kubernauts.de/en/careers/">job offerings page</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Octant Simplified]]></title><description><![CDATA[A Quick overview and install in less than 5 minutes
Definition From the Docs :
Octant is a tool for developers to understand how applications run on a Kubernetes cluster. It aims to be part of the developer’s toolkit for gaining insight and approachi...]]></description><link>https://saiyampathak.com/octant-simplified-313a1aad69d6</link><guid isPermaLink="true">https://saiyampathak.com/octant-simplified-313a1aad69d6</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sun, 26 Jan 2020 11:47:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076262266/X2DXX_5eJ.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A Quick overview and install in less than 5 minutes</p>
<p>Definition From the Docs :</p>
<pre><code>Octant <span class="hljs-keyword">is</span> a tool <span class="hljs-keyword">for</span> developers <span class="hljs-keyword">to</span> understand how applications run <span class="hljs-keyword">on</span> a Kubernetes <span class="hljs-keyword">cluster</span>. It aims <span class="hljs-keyword">to</span> be part <span class="hljs-keyword">of</span> the developer’s toolkit <span class="hljs-keyword">for</span> gaining insight <span class="hljs-keyword">and</span> approaching complexity <span class="hljs-built_in">found</span> <span class="hljs-keyword">in</span> Kubernetes. Octant offers a combination <span class="hljs-keyword">of</span> introspective tooling, <span class="hljs-keyword">cluster</span> navigation, <span class="hljs-keyword">and</span> <span class="hljs-keyword">object</span> management along <span class="hljs-keyword">with</span> a plugin <span class="hljs-keyword">system</span> <span class="hljs-keyword">to</span> further extend its capabilities.
</code></pre><p>Octant is one of the recent projects by VMware that aims to simplify the kubernetes view for developers. Now the developers would be able to see what all is happening in the cluster when they are deploying their workloads.
Let us setup Octant on a Katakoda cluster and see what all capabilities it provides out of the box to the Developers.
This tutorial is a quick overview of the latest version of the octant recently launched by the team which is <a target="_blank" href="https://github.com/vmware-tanzu/octant/releases/tag/v0.10.0">v0.10.0</a>.</p>
<h2 id="steps"><strong>Steps</strong>:</h2>
<p>1: Got to- <a target="_blank" href="https://www.katacoda.com/courses/kubernetes/playground">https://www.katacoda.com/courses/kubernetes/playground</a></p>
<p>2: Download the latest octant release <a target="_blank" href="https://github.com/vmware-tanzu/octant/releases/tag/v0.10.0">v0.10.0</a></p>
<pre><code>master $ wget [<span class="hljs-string">https://github.com/vmware-tanzu/octant/releases/download/v0.10.0/octant_0.10.0_Linux-64bit.tar.gz</span>](<span class="hljs-link">https://github.com/vmware-tanzu/octant/releases/download/v0.10.0/octant_0.10.0_Linux-64bit.tar.gz</span>)

master $ ls
octant<span class="hljs-emphasis">_0.10.0_</span>Linux-64bit.tar.gz

<span class="hljs-section"># Run </span>
master $ tar -xzvf octant<span class="hljs-emphasis">_0.10.0_</span>Linux-64bit.tar.gz
octant<span class="hljs-emphasis">_0.10.0_</span>Linux-64bit/README.md
octant<span class="hljs-emphasis">_0.10.0_</span>Linux-64bit/octant

<span class="hljs-section"># Verify</span>
master $ cp ./octant<span class="hljs-emphasis">_0.10.0_</span>Linux-64bit/octant /usr/bin/
master $ octant version
Version:  0.10.0
Git commit:  72e66943d660dc7bdd2c96b27cc141f9c4e8f9d8
Built:  2020-01-24T00:56:15Z
</code></pre><p><strong>Run Octant</strong>- In order to Run octant you can run the <code>Octant</code> command, by default it runs on <code>localhost:7777</code>and if you need to pass additional arguments (like running on a different port) run</p>
<pre><code><span class="hljs-attribute">master</span> $ OCTANT_DISABLE_OPEN_BROWSER=true OCTANT_LISTENER_ADDR=<span class="hljs-number">0.0.0.0:8900</span> octant
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">135</span>Z        INFO    module/manager.go:<span class="hljs-number">79</span>    registering action      {<span class="hljs-string">"component"</span>: <span class="hljs-string">"module-manager"</span>, <span class="hljs-string">"actionPath"</span>: <span class="hljs-string">"overview/serviceEditor"</span>, <span class="hljs-string">"module-name"</span>: <span class="hljs-string">"overview"</span>}
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">135</span>Z        INFO    module/manager.go:<span class="hljs-number">79</span>    registering action      {<span class="hljs-string">"component"</span>: <span class="hljs-string">"module-manager"</span>, <span class="hljs-string">"actionPath"</span>: <span class="hljs-string">"overview/startPortForward"</span>, <span class="hljs-string">"module-name"</span>: <span class="hljs-string">"overview"</span>}
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">136</span>Z        INFO    module/manager.go:<span class="hljs-number">79</span>    registering action      {<span class="hljs-string">"component"</span>: <span class="hljs-string">"module-manager"</span>, <span class="hljs-string">"actionPath"</span>: <span class="hljs-string">"overview/stopPortForward"</span>, <span class="hljs-string">"module-name"</span>: <span class="hljs-string">"overview"</span>}
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">137</span>Z        INFO    module/manager.go:<span class="hljs-number">79</span>    registering action      {<span class="hljs-string">"component"</span>: <span class="hljs-string">"module-manager"</span>, <span class="hljs-string">"actionPath"</span>: <span class="hljs-string">"overview/commandExec"</span>, <span class="hljs-string">"module-name"</span>: <span class="hljs-string">"overview"</span>}
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">137</span>Z        INFO    module/manager.go:<span class="hljs-number">79</span>    registering action      {<span class="hljs-string">"component"</span>: <span class="hljs-string">"module-manager"</span>, <span class="hljs-string">"actionPath"</span>: <span class="hljs-string">"overview/deleteTerminal"</span>, <span class="hljs-string">"module-name"</span>: <span class="hljs-string">"overview"</span>}
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">138</span>Z        INFO    module/manager.go:<span class="hljs-number">79</span>    registering action      {<span class="hljs-string">"component"</span>: <span class="hljs-string">"module-manager"</span>, <span class="hljs-string">"actionPath"</span>: <span class="hljs-string">"deployment/configuration"</span>, <span class="hljs-string">"module-name"</span>: <span class="hljs-string">"overview"</span>}
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">139</span>Z        INFO    module/manager.go:<span class="hljs-number">79</span>    registering action      {<span class="hljs-string">"component"</span>: <span class="hljs-string">"module-manager"</span>, <span class="hljs-string">"actionPath"</span>: <span class="hljs-string">"overview/containerEditor"</span>, <span class="hljs-string">"module-name"</span>: <span class="hljs-string">"overview"</span>}
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">140</span>Z        INFO    module/manager.go:<span class="hljs-number">79</span>    registering action      {<span class="hljs-string">"component"</span>: <span class="hljs-string">"module-manager"</span>, <span class="hljs-string">"actionPath"</span>: <span class="hljs-string">"octant/deleteObject"</span>, <span class="hljs-string">"module-name"</span>: <span class="hljs-string">"configuration"</span>}
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">140</span>Z        INFO    dash/dash.go:<span class="hljs-number">391</span>        Using embedded Octant frontend
<span class="hljs-attribute">2020</span>-<span class="hljs-number">01</span>-<span class="hljs-number">26</span>T<span class="hljs-number">10</span>:<span class="hljs-number">17</span>:<span class="hljs-number">29</span>.<span class="hljs-number">143</span>Z        INFO    dash/dash.go:<span class="hljs-number">370</span>        Dashboard is available at<span class="hljs-meta"> [http://[::]:8900](http://[::]:8900)</span>
</code></pre><p>You can see that Octant has started, now open <strong>port 8900 </strong>on Katakoda kubernetes playground to see the Octant dashboard.</p>
<p>In order to open port from Katakoda click on the + and select View HTTP port 8080 on Host 1 and change the port to 8900</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076247188/KWhvd7Ej9.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076249364/qAK58PEBO.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076251093/wp9Wcretg.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076253126/9cu6wkLPD.png" alt="octant dashboard" /><em>octant dashboard</em></p>
<p>As you can see whole of the cluster is visible with easy to navigate options. you can navigate through the namespaces, see the pods running. Just run a few pods</p>
<pre><code>kubectl run nginx <span class="hljs-comment">--image nginx</span>
kubectl run -i -t busybox <span class="hljs-comment">--image=busybox --restart=Never</span>
</code></pre><p>Now go to the workloads section and you can see the pods. Getting into the pods will give a much deeper look. Let us take a full view at busybox pod and see what all things you can easily see via the octant dashboard.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076256196/ZVG1Ra8eu.png" alt="Overall View" /><em>Overall View</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076258371/_h3kQwJGy.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076260089/OcHFVMTK3.png" alt="Resource viewer and Pod logs" /><em>Resource viewer and Pod logs</em></p>
<p>You can see how easy it is to view the logs, connected resources, overall summary, and the YAML file.</p>
<p>Another thing you can do with Octant is, have your own plugins and view them in octant for added functionality</p>
<p>This was a brief overview of Octant and how you can set up on a katakoda cluster in less than 5 minutes</p>
<p>Octant Documentation: <a target="_blank" href="https://octant.dev/docs/master/">https://octant.dev/docs/master/</a>
Octant other communication channels for help and contribution:</p>
<pre><code>[<span class="hljs-string">Kubernetes Slack</span>](<span class="hljs-link">http://slack.k8s.io/</span>) in the [<span class="hljs-string">#octant</span>](<span class="hljs-link">https://kubernetes.slack.com/app_redirect?channel=CM37M9FCG</span>) channel
[<span class="hljs-string">Twitter</span>](<span class="hljs-link">https://twitter.com/projectoctant</span>)
[<span class="hljs-string">Google group</span>](<span class="hljs-link">https://groups.google.com/forum/#!forum/project-octant/</span>)
[<span class="hljs-string">GitHub issues</span>](<span class="hljs-link">https://github.com/vmware-tanzu/octant/issues</span>)
</code></pre><p>Saiyam Pathak
<a target="_blank" href="https://www.linkedin.com/in/saiyam-pathak-97685a64/?source=post_page---------------------------">https://www.linkedin.com/in/saiyam-pathak-97685a64/</a>
<a target="_blank" href="https://twitter.com/SaiyamPathak?source=post_page---------------------------">https://twitter.com/SaiyamPathak</a></p>
]]></content:encoded></item><item><title><![CDATA[Managed K3s -Is it a Thing?]]></title><description><![CDATA[K3s is an open-source, lightweight Kubernetes distribution by Rancher that was introduced this year and has gained huge popularity. If you’re not familiar with it, check out this post on k3s vs k8s by Andy Jeffries, CTO at Civo. People not only like ...]]></description><link>https://saiyampathak.com/managed-k3s-is-it-a-thing-9397799c38a</link><guid isPermaLink="true">https://saiyampathak.com/managed-k3s-is-it-a-thing-9397799c38a</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sun, 29 Sep 2019 02:36:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076421026/RpkEqktVH.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>K3s</strong> is an open-source, lightweight Kubernetes distribution by Rancher that was introduced this year and has gained huge popularity. If you’re not familiar with it, check out this post on <a target="_blank" href="https://www.civo.com/blog/k8s-vs-k3s">k3s vs k8s</a> by Andy Jeffries, CTO at Civo. People not only like the concept behind it, but also the awesome work that the team has done to strip down the heavy Kubernetes distribution to a minimal level. Though k3s started as a POC project for local Kubernetes development, its development has led people to use it even at a production level.</p>
<p><strong>Official GitRepo</strong>: <a target="_blank" href="https://github.com/rancher/k3s">**https://github.com/rancher/k3s</a>**</p>
<p>Seeing the popularity of k3s, many developers/companies have started building products around k3s. CIVO cloud has come up with a cloud offering for First-Ever Managed k3s Kubernetes cluster.</p>
<p>CIVO Kubernetes Offering:
CIVO cloud has created a lightweight Kubernetes managed cluster offering.
Let us take a walk through some of the features of this managed k3s cluster and deploy a sample application.</p>
<p>NOTE: Before proceeding make sure you have the following: </p>
<ul>
<li><strong>A Civo cloud account</strong> (they also have a 50$ free credit), you can sign up <a target="_blank" href="https://www.civo.com/signup">here</a>.</li>
<li><strong>Civo cli tool installed</strong>: Civo cli is a command-line tool for interacting with resources in Civo Cloud. It's very handy and useful as you do not need to go to UI and can do most of the tasks from the Civo cli itself. For installation, you Need Ruby Installed in your machine (v 2.0.0 or later) and then run :</li>
</ul>
<pre><code><span class="hljs-attribute">sudo</span> gem install civo_cli
</code></pre><p>For more info visit: <a target="_blank" href="https://github.com/civo/cli">https://github.com/civo/cli</a></p>
<p><strong>K3s Cluster</strong>:
Civo Cloud has a managed k3s Kubernetes cluster offering and we can spin up the whole cluster using civo cli itself</p>
<p><strong>Step1</strong>: Civo cli account setup using api keys</p>
<pre><code>civo apikey <span class="hljs-keyword">add</span> saiyam &lt;yourkey&gt;
 Saved the API Key
 &lt;yourkey&gt; <span class="hljs-keyword">as</span> Demo_Test_Key
</code></pre><p>you can find your api key from: cloud account settings &gt; Security &gt; API Key (<a target="_blank" href="https://www.civo.com/account/security">https://www.civo.com/account/security</a>)</p>
<p>Set the apikey as the default key to connect to Civo resources:</p>
<pre><code>civo apikey <span class="hljs-keyword">current</span> saiyam
</code></pre><p>You can list all stored API keys in your configuration by invoking <code>civo apikey list</code> or remove one by name by using <code>civo apikey remove apikey_name</code></p>
<p><strong>Step2</strong>: Create a Kubernetes Cluster using CIVO cli</p>
<pre><code>command: civo kubernetes <span class="hljs-keyword">create</span> civofirst <span class="hljs-comment">--wait --save</span>

Building <span class="hljs-built_in">new</span> Kubernetes <span class="hljs-keyword">cluster</span> civofirst: Done
Created Kubernetes <span class="hljs-keyword">cluster</span> civofirst <span class="hljs-keyword">in</span> <span class="hljs-number">01</span> min <span class="hljs-number">30</span> sec
Merged config <span class="hljs-keyword">into</span> ~/.kube/config

command: civo kubernetes list
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076402211/F9yFNduyQ.png" alt="cluster created" /><em>cluster created</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076404389/JdPNI44NWU.png" alt="From UI" /><em>From UI</em></p>
<p>While creating the cluster using civo CLI you have a few options that can be provided :
<strong>wait:</strong> spins until the cluster comes in ready state
<strong>save</strong>: saves the kubeconfig file
<strong>nodes</strong>: the number of nodes to be created, by default 3 nodes are created and master is counted as a node.
<strong>size</strong>: the size of the nodes, default size is g2.medium</p>
<p>So that is it you have just launched a 3 node k3s cluster running Kubernetes version 1.14</p>
<h2 id="k3s-deployment-and-service">k3s Deployment and service:</h2>
<p>Now that we have created k3s cluster lets see some basic deployment of nginx image and exposing it as a service.</p>
<pre><code><span class="hljs-attribute">kubectl</span> get nodes

<span class="hljs-attribute">NAME</span>               STATUS   ROLES    AGE   VERSION

<span class="hljs-attribute">kube</span>-master-<span class="hljs-number">3872</span>   Ready    master   <span class="hljs-number">29</span>m   v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">6</span>-k<span class="hljs-number">3</span>s.<span class="hljs-number">1</span>

<span class="hljs-attribute">kube</span>-node-<span class="hljs-number">6052</span>     Ready    worker   <span class="hljs-number">29</span>m   v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">6</span>-k<span class="hljs-number">3</span>s.<span class="hljs-number">1</span>

<span class="hljs-attribute">kube</span>-node-eaf<span class="hljs-number">0</span>     Ready    worker   <span class="hljs-number">26</span>m   v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">6</span>-k<span class="hljs-number">3</span>s.<span class="hljs-number">1</span>

<span class="hljs-attribute">kubectl</span> get pods --<span class="hljs-literal">all</span>-namespaces

<span class="hljs-attribute">NAMESPACE</span>     NAME                    READY   STATUS      RESTARTS   AGE

<span class="hljs-attribute">kube</span>-system   coredns-b<span class="hljs-number">7464766</span>c-<span class="hljs-number">89</span>nrt      <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running     <span class="hljs-number">0</span>          <span class="hljs-number">29</span>m

<span class="hljs-attribute">kube</span>-system   helm-install-traefik-g<span class="hljs-number">59</span>pl   <span class="hljs-number">0</span>/<span class="hljs-number">1</span>     Completed   <span class="hljs-number">0</span>          <span class="hljs-number">29</span>m

<span class="hljs-attribute">kube</span>-system   svclb-traefik-<span class="hljs-number">689</span>lv          <span class="hljs-number">2</span>/<span class="hljs-number">2</span>     Running     <span class="hljs-number">0</span>         <span class="hljs-number">29</span>m

<span class="hljs-attribute">kube</span>-system   svclb-traefik-bhg<span class="hljs-number">8</span>h          <span class="hljs-number">2</span>/<span class="hljs-number">2</span>     Running     <span class="hljs-number">0</span>          <span class="hljs-number">29</span>m

<span class="hljs-attribute">kube</span>-system   svclb-traefik-xpf<span class="hljs-number">46</span>          <span class="hljs-number">2</span>/<span class="hljs-number">2</span>     Running     <span class="hljs-number">0</span>         <span class="hljs-number">27</span>m

<span class="hljs-attribute">kube</span>-system   traefik-<span class="hljs-number">5</span>c<span class="hljs-number">79</span>b<span class="hljs-number">789</span>c<span class="hljs-number">5</span>-ns<span class="hljs-number">6</span>xj     <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running     <span class="hljs-number">0</span>          <span class="hljs-number">29</span>m
</code></pre><p>Now let us deploy a sample nginx application, service, and ingress:</p>
<p><strong>Deployment</strong>: kubectl apply -f deploy.yaml</p>
<pre><code><span class="hljs-attr">apiVersion:</span> <span class="hljs-string">extensions/v1beta1</span>
<span class="hljs-attr">kind:</span> <span class="hljs-string">Deployment</span>
<span class="hljs-attr">metadata:</span> 
  <span class="hljs-attr">name:</span> <span class="hljs-string">nginx-deployment</span>
<span class="hljs-attr">spec:</span> 
  <span class="hljs-attr">replicas:</span> <span class="hljs-number">2</span>
  <span class="hljs-attr">selector:</span> 
    <span class="hljs-attr">matchLabels:</span> 
      <span class="hljs-attr">app:</span> <span class="hljs-string">nginx</span>
  <span class="hljs-attr">template:</span> 
    <span class="hljs-attr">metadata:</span> 
      <span class="hljs-attr">labels:</span> 
        <span class="hljs-attr">app:</span> <span class="hljs-string">nginx</span>
    <span class="hljs-attr">spec:</span> 
      <span class="hljs-attr">containers:</span> 
        <span class="hljs-bullet">-</span> <span class="hljs-attr">image:</span> <span class="hljs-string">nginx</span>
          <span class="hljs-attr">name:</span> <span class="hljs-string">nginx-container</span>
</code></pre><p><strong>Service</strong>: kubectl apply -f svc.yaml</p>
<pre><code><span class="hljs-attr">apiVersion:</span> <span class="hljs-string">v1</span>
<span class="hljs-attr">kind:</span> <span class="hljs-string">Service</span>
<span class="hljs-attr">metadata:</span> 
  <span class="hljs-attr">name:</span> <span class="hljs-string">nginx-service</span>
<span class="hljs-attr">spec:</span> 
  <span class="hljs-attr">ports:</span> 
    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">http</span>
      <span class="hljs-attr">port:</span> <span class="hljs-number">8080</span>
      <span class="hljs-attr">targetPort:</span> <span class="hljs-number">80</span>
  <span class="hljs-attr">selector:</span> 
    <span class="hljs-attr">app:</span> <span class="hljs-string">nginx</span>
  <span class="hljs-attr">type:</span> <span class="hljs-string">LoadBalancer</span>
</code></pre><p><strong>Ingress</strong>: kubectl apply -f ingress.yaml</p>
<pre><code><span class="hljs-attribute">apiVersion</span>: extensions/v1beta1
<span class="hljs-attribute">kind</span>: Ingress
<span class="hljs-attribute">metadata</span>:
  <span class="hljs-attribute">name</span>: nginx-ingress
  <span class="hljs-attribute">annotations</span>:
    kubernetes.io/ingress.<span class="hljs-attribute">class</span>: traefik
<span class="hljs-attribute">spec</span>:
  <span class="hljs-attribute">rules</span>:
  - <span class="hljs-attribute">host</span>: nginx.localhost
    <span class="hljs-attribute">http</span>:
      <span class="hljs-attribute">paths</span>:
      - <span class="hljs-attribute">path</span>: /
        <span class="hljs-attribute">backend</span>:
          <span class="hljs-attribute">serviceName</span>: nginx-service
          <span class="hljs-attribute">servicePort</span>: http
</code></pre><p>Let us see what all has been created.</p>
<pre><code><span class="hljs-string">**kubectl</span> <span class="hljs-string">get</span> <span class="hljs-string">deploy**</span>

<span class="hljs-string">NAME</span>                   <span class="hljs-string">READY</span>   <span class="hljs-string">UP-TO-DATE</span>   <span class="hljs-string">AVAILABLE</span>   <span class="hljs-string">AGE</span>
<span class="hljs-string">nginx-deployment</span>       <span class="hljs-number">2</span><span class="hljs-string">/2</span>     <span class="hljs-number">2</span>            <span class="hljs-number">2</span>           <span class="hljs-string">4m3s</span>

<span class="hljs-string">kubectl</span> <span class="hljs-string">get</span> <span class="hljs-string">svc</span>

<span class="hljs-string">NAME</span>            <span class="hljs-string">TYPE</span>           <span class="hljs-string">CLUSTER-IP</span>        <span class="hljs-string">EXTERNAL-IP</span>                              <span class="hljs-string">PORT(S)</span>          <span class="hljs-string">AGE</span>

<span class="hljs-string">kubernetes</span>      <span class="hljs-string">ClusterIP</span>      <span class="hljs-number">192.168</span><span class="hljs-number">.128</span><span class="hljs-number">.1</span>     <span class="hljs-string">&lt;none&gt;</span>                                   <span class="hljs-number">443</span><span class="hljs-string">/TCP</span>          <span class="hljs-string">153m</span>

<span class="hljs-string">nginx-service</span>   <span class="hljs-string">LoadBalancer</span>   <span class="hljs-number">192.168</span><span class="hljs-number">.139</span><span class="hljs-number">.191</span>   <span class="hljs-number">172.31</span><span class="hljs-number">.3</span><span class="hljs-number">.106</span><span class="hljs-string">,172.31.3.157,172.31.3.159</span>   <span class="hljs-number">8080</span><span class="hljs-string">:30051/TCP</span>   <span class="hljs-string">3m16s</span>

<span class="hljs-string">kubectl</span> <span class="hljs-string">get</span> <span class="hljs-string">ingress</span>

<span class="hljs-string">NAME</span>            <span class="hljs-string">HOSTS</span>             <span class="hljs-string">ADDRESS</span>        <span class="hljs-string">PORTS</span>   <span class="hljs-string">AGE</span>

<span class="hljs-string">nginx-ingress</span>   <span class="hljs-string">nginx.localhost</span>   <span class="hljs-number">172.31</span><span class="hljs-number">.3</span><span class="hljs-number">.106</span>   <span class="hljs-number">80</span>      <span class="hljs-string">3m44s</span>
</code></pre><p>Now open the browser and access the service by NodeIp:30051</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076406229/qU3mJAhCh.png" alt /></p>
<p>You have deployed a sample application and created a service accessible from the internet within minutes with prepackaged ingress controller -&gt; <strong>Traefik</strong> that comes packaged with k3s managed Kubernetes cluster by Civo cloud.</p>
<p>Civo cli commands :</p>
<p><strong>Scaling the cluster</strong>: Cluster can be scaled up to the quota and down to 1 via UI or civo cli</p>
<pre><code>civo kubernetes scale civofirst <span class="hljs-comment">--nodes=4</span>

Kubernetes <span class="hljs-keyword">cluster</span> civofirst will now have <span class="hljs-number">4</span> nodes
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076408262/6wc0wwKf_.png" alt="UI" /><em>UI</em></p>
<p><strong>Renaming the cluster:</strong></p>
<pre><code><span class="hljs-attribute">civo</span> kubernetes rename civo --name=<span class="hljs-string">"Prod"</span>

<span class="hljs-attribute">Kubernetes</span> cluster <span class="hljs-number">27</span>f<span class="hljs-number">587</span>bc-<span class="hljs-number">587</span>b-<span class="hljs-number">48</span>b<span class="hljs-number">2</span>-<span class="hljs-number">8302</span>-<span class="hljs-number">3</span>fd<span class="hljs-number">62</span>baeff<span class="hljs-number">76</span> is now named Prod
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076410418/KKuJ0K_7UR.png" alt /></p>
<p><strong>Removing the cluster:</strong></p>
<pre><code>civo kubernetes remove Prod

Removing Kubernetes <span class="hljs-keyword">cluster</span> Prod
</code></pre><p><strong>Marketplace</strong>: Civo cloud has an extensive list of application with the one-click install from the UI. You can go to UI and select the app that you want to deploy to the cluster and it will be available within minutes. Let us try to deploy OpenFaas on k3s from the marketplace.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076412509/OOBCpHhGo.png" alt /></p>
<p>Select OpenFaaS and click Install Apps, within a few seconds you can see it appears in the Installed apps section with instructions as well to deploy a sample function.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076414631/OYzjWRYg-.png" alt /></p>
<p>You can access the OpenFaaS UI by NODE_IP:31112 and enter the username/password.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076416825/dsZlSFwG1.png" alt /></p>
<p>Here we just deployed a sample colorise function to convert image to black &amp; white image.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076419054/wbYJAtjf8.png" alt /></p>
<p>From the command line, you can see below objects created in k3s cluster when you deployed the OpenFaaS application from the marketplace.</p>
<pre><code><span class="hljs-attribute">kubectl</span> get <span class="hljs-literal">all</span> -n openfaas

<span class="hljs-attribute">NAME</span>                                     READY   STATUS    RESTARTS   AGE

<span class="hljs-attribute">pod</span>/alertmanager-<span class="hljs-number">85864</span>b<span class="hljs-number">8547</span>-qb<span class="hljs-number">5</span>zb        <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">27</span>m

<span class="hljs-attribute">pod</span>/basic-auth-plugin-<span class="hljs-number">85994747</span>dd-rvfds   <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">27</span>m

<span class="hljs-attribute">pod</span>/faas-idler-<span class="hljs-number">6568</span>bb<span class="hljs-number">4</span>c<span class="hljs-number">9</span>b-<span class="hljs-number">5</span>xfjz          <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">2</span>          <span class="hljs-number">27</span>m

<span class="hljs-attribute">pod</span>/gateway-dcdd<span class="hljs-number">5</span>b<span class="hljs-number">79</span>c-rnfdj              <span class="hljs-number">2</span>/<span class="hljs-number">2</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">27</span>m

<span class="hljs-attribute">pod</span>/nats-d<span class="hljs-number">4</span>c<span class="hljs-number">9</span>d<span class="hljs-number">8</span>d<span class="hljs-number">95</span>-fjw<span class="hljs-number">89</span>                 <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">27</span>m

<span class="hljs-attribute">pod</span>/prometheus-<span class="hljs-number">855</span>d<span class="hljs-number">56876</span>d-txscc          <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">27</span>m

<span class="hljs-attribute">pod</span>/queue-worker-<span class="hljs-number">56</span>b<span class="hljs-number">64</span>d<span class="hljs-number">6848</span>-<span class="hljs-number">48</span>b<span class="hljs-number">7</span>w        <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     Running   <span class="hljs-number">0</span>          <span class="hljs-number">27</span>m

<span class="hljs-attribute">NAME</span>                        TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)          AGE

<span class="hljs-attribute">service</span>/alertmanager        ClusterIP   <span class="hljs-number">192.168.214.254</span>   &lt;none&gt;        <span class="hljs-number">9093</span>/TCP         <span class="hljs-number">27</span>m

<span class="hljs-attribute">service</span>/basic-auth-plugin   ClusterIP   <span class="hljs-number">192.168.162.218</span>   &lt;none&gt;        <span class="hljs-number">8080</span>/TCP         <span class="hljs-number">27</span>m

<span class="hljs-attribute">service</span>/gateway             ClusterIP   <span class="hljs-number">192.168.146.141</span>   &lt;none&gt;        <span class="hljs-number">8080</span>/TCP         <span class="hljs-number">27</span>m

<span class="hljs-attribute">service</span>/gateway-external    NodePort    <span class="hljs-number">192.168.212.52</span>    &lt;none&gt;        <span class="hljs-number">8080</span>:<span class="hljs-number">31112</span>/TCP   <span class="hljs-number">27</span>m

<span class="hljs-attribute">service</span>/nats                ClusterIP   <span class="hljs-number">192.168.164.158</span>   &lt;none&gt;        <span class="hljs-number">4222</span>/TCP         <span class="hljs-number">27</span>m

<span class="hljs-attribute">service</span>/prometheus          ClusterIP   <span class="hljs-number">192.168.194.224</span>   &lt;none&gt;        <span class="hljs-number">9090</span>/TCP         <span class="hljs-number">27</span>m

<span class="hljs-attribute">NAME</span>                                READY   UP-TO-DATE   AVAILABLE   AGE

<span class="hljs-attribute">deployment</span>.apps/alertmanager        <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">27</span>m

<span class="hljs-attribute">deployment</span>.apps/basic-auth-plugin   <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">27</span>m

<span class="hljs-attribute">deployment</span>.apps/faas-idler          <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">27</span>m

<span class="hljs-attribute">deployment</span>.apps/gateway             <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">27</span>m

<span class="hljs-attribute">deployment</span>.apps/nats                <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">27</span>m

<span class="hljs-attribute">deployment</span>.apps/prometheus          <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">27</span>m

<span class="hljs-attribute">deployment</span>.apps/queue-worker        <span class="hljs-number">1</span>/<span class="hljs-number">1</span>     <span class="hljs-number">1</span>            <span class="hljs-number">1</span>           <span class="hljs-number">27</span>m

<span class="hljs-attribute">NAME</span>                                         DESIRED   CURRENT READY   AGE

<span class="hljs-attribute">replicaset</span>.apps/alertmanager-<span class="hljs-number">85864</span>b<span class="hljs-number">8547</span>        <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">27</span>m

<span class="hljs-attribute">replicaset</span>.apps/basic-auth-plugin-<span class="hljs-number">85994747</span>dd   <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">27</span>m

<span class="hljs-attribute">replicaset</span>.apps/faas-idler-<span class="hljs-number">6568</span>bb<span class="hljs-number">4</span>c<span class="hljs-number">9</span>b          <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">27</span>m

<span class="hljs-attribute">replicaset</span>.apps/gateway-dcdd<span class="hljs-number">5</span>b<span class="hljs-number">79</span>c              <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">27</span>m

<span class="hljs-attribute">replicaset</span>.apps/nats-d<span class="hljs-number">4</span>c<span class="hljs-number">9</span>d<span class="hljs-number">8</span>d<span class="hljs-number">95</span>                 <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">27</span>m

<span class="hljs-attribute">replicaset</span>.apps/prometheus-<span class="hljs-number">855</span>d<span class="hljs-number">56876</span>d          <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">27</span>m

<span class="hljs-attribute">replicaset</span>.apps/queue-worker-<span class="hljs-number">56</span>b<span class="hljs-number">64</span>d<span class="hljs-number">6848</span>        <span class="hljs-number">1</span>         <span class="hljs-number">1</span>         <span class="hljs-number">1</span>       <span class="hljs-number">27</span>m
</code></pre><p><strong>Summary</strong>: Civo Kubernetes service is lightweight k3s managed cluster for production-ready workloads, currently in beta as they are improving the features based on community feedback via the KUBE100 program. Things we discussed in this article:</p>
<ul>
<li><p>Introduction to k3s and managed k3s</p>
</li>
<li><p>Civo CLI</p>
</li>
<li><p>Cluster creation/scaling/renaming/removing using Civo cli</p>
</li>
<li><p>Deploying a sample application &amp; exposing it to the outside world</p>
</li>
<li><p>Deploying OpenFaaS application from Marketplace</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Rancher -A Step Ahead]]></title><description><![CDATA[Rancher — A Step Ahead
Deep Dive into Rancher Features.
In my previous post, I walked you through the basics concept of Rancher , what it is and how to setup rancher for different cloud providers. Even importing a cluster.
Now in this section, we wil...]]></description><link>https://saiyampathak.com/rancher-a-step-ahead-85d401037b9b</link><guid isPermaLink="true">https://saiyampathak.com/rancher-a-step-ahead-85d401037b9b</guid><dc:creator><![CDATA[Saiyam Pathak]]></dc:creator><pubDate>Sun, 28 Jul 2019 08:13:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076526493/vSk9Q9ZoZ.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Rancher — A Step Ahead</p>
<p>Deep Dive into Rancher Features.</p>
<p>In my <a target="_blank" href="https://medium.com/faun/rancher-one-place-for-all-kubernetes-clusters-51586d72858a">previous post</a>, I walked you through the basics concept of Rancher , what it is and how to setup rancher for different cloud providers. Even importing a cluster.</p>
<p>Now in this section, we will go through the features and functionalities that you can do after having a cluster setup in Rancher.</p>
<p>Just for a quick heads up, we will quickly install Rancher Server \ and import that cluster via Rancher Dashboard and we will do it with play with kubernetes. So with this you can even practice while reading.</p>
<p><strong>Setting Up 3 node Kubernetes cluster:</strong></p>
<p><strong>Step1:</strong> Launching a 3 node Kubernetes Cluster using the kubernetes playground
-visit <a target="_blank" href="https://labs.play-with-k8s.com/">https://labs.play-with-k8s.com</a> and start a session.</p>
<ul>
<li>Click add a new instance and follow the steps mentioned</li>
</ul>
<pre><code>kubeadm init --apiserver-advertise-address $(hostname -i)
<span class="hljs-comment">#above command initialises the current machine as master and gives you the token to have it</span>
<span class="hljs-comment">#add two new Instances and then run the join command </span>
kubeadm join 192.168.0.13:6443 --token &lt;token&gt; --discovery-token-ca-cert-hash &lt;<span class="hljs-built_in">hash</span>&gt;
<span class="hljs-comment">#After that initialise cluster networking to the master so that the nodes come in ready state</span>
kubectl apply -n kube-system -f \
    <span class="hljs-string">"[https://cloud.weave.works/k8s/net?k8s-version=<span class="hljs-subst">$(kubectl](https://cloud.weave.works/k8s/net?k8s-version=$(kubectl)</span> version | base64 |tr -d '\n')"</span>
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076449212/RMM8hL6G_.png" alt="Kubernetes 3 node cluster is all set" /><em>Kubernetes 3 node cluster is all set</em></p>
<p>Step2 : Installing Rancher Server 
Installing rancher is pretty simple using a simple docker command. Make sure to pass environment variables for proxied if you have.</p>
<pre><code><span class="hljs-string">docker</span> <span class="hljs-string">run</span> <span class="hljs-string">-d</span> <span class="hljs-string">--restart=unless-stopped</span> <span class="hljs-string">\</span>
<span class="hljs-string">-p</span> <span class="hljs-number">80</span><span class="hljs-string">:80</span> <span class="hljs-string">-p</span> <span class="hljs-number">443</span><span class="hljs-string">:443</span> <span class="hljs-string">\</span>
<span class="hljs-string">rancher/rancher:latest</span>
</code></pre><p>Or you can also run it as a pod in Kubernetes.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076451768/GiMBGyBP6.png" alt /></p>
<p>Once you have rancher installed you can go to {{server_ip}} and see rancher running or if you have exposed it as a service in kubernetes then you can go to the node_ip:nodeport. And in the cluster you would see the cluster agent and node agent. Cluster agent is your rancher server and node agent is a daemon set running on every node.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076456117/1zgYI48Pb.png" alt /></p>
<p><strong>Importing a cluster created in Rancher server:</strong></p>
<p>Now that you have created a 3 node kubernetes cluster and installed rancher server, its time to import that cluster in rancher and see what all things you can actually do with it.</p>
<p>Step1: After logging into rancher server click on create cluster, select import and provide a name for the cluster.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076458236/PgsdEkFlj.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076460503/wA2GB05w6.png" alt="Select import option as we already have a kubernetes cluster" /><em>Select import option as we already have a kubernetes cluster</em></p>
<p>Step2: Once you click create you will be given a curl command which is nothing but a yaml file for deploying rancher components onto the existing kubernetes cluster in order to make it available on rancher server.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076463058/L_qsZ2K70.png" alt /></p>
<p>Step3: Copy the commands and run in kubernetes cluster and click done.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076465380/QsaXi9KG3.png" alt="Deploying Rancher manifests" /><em>Deploying Rancher manifests</em></p>
<p>you will see a pending cluster in the rancher dashboard:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076467845/5oJN0971p.png" alt /></p>
<p>After some time the cluster is available and active.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076469676/UG-AGDjeZ.png" alt="Active cluster" /><em>Active cluster</em></p>
<p>Now comes the real part where we actually go and see some of the cool features of rancher .</p>
<p><strong>Monitoring</strong> :</p>
<p>Under the tools section for the cluster, you can select monitoring and then enable it. Note that you are required to give some parameters before enabling (give enough memory for monitoring as most of the times it fails when the cpu/memory parameters are not correct). I will keep it to default as it is a simple 3 node lightweight cluster …. well not as lightweight as the k3's.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076471446/wmhhHhXF9.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076473386/6QIrGe9xT.png" alt /></p>
<p>Once you click save and go back to the cluster you will see for some time the “monitoring api is not ready “.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076475483/6c6_FjhtG.png" alt="Monitoring api not ready" /><em>Monitoring api not ready</em></p>
<p>Actually what is happening is rancher is pulling the system-charts git repository in the rancher server and deploying it to the cluster. It can be visually seen in the UI under <strong>Cluster &gt; System &gt; Apps Section</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076477826/cd-QOnnKD.png" alt="Apps" /><em>Apps</em></p>
<p>So Rancher Server tries to spin up pods and if you are using kubernetes playground you will see that it will run out of space and the Prometheus pod will never come up. So I have change minds here now I am using the Katakoda playground as it has more memory than the kubernetes playground. When you launch monitoring for the kubernetes cluster running in katakoda — 2 node cluster you can see within few minutes the monitoring api will be active and there will be a small grafana icon displayed with all the resources in the rancher UI</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076479801/M5IBUVbn3.png" alt="Monitoring API enabled" /><em>Monitoring API enabled</em></p>
<p>Now that the API is enabled let's look at some of the dashboards out of the box, easily accessible, easily readable and moreover you can add custom dashboards as well.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076482276/3VaxZR8QzO.png" alt="Cluster Metrics" /><em>Cluster Metrics</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076484813/3UnqG_5J5.png" alt="Node Metrics" /><em>Node Metrics</em></p>
<p><strong>Basic Troubleshooting for Monitoring API </strong>not coming up or not getting in the ready state:</p>
<ul>
<li><p>First, go to the cluster &gt; system &gt;&gt; apps &gt; click on the apps</p>
</li>
<li><p>You would see Cluster-monitoring and monitoring-operator being installed which is nothing but creating pods inside the cluster.</p>
</li>
<li><p>Click on one of the apps if you see the red and see the issue. Few of the common issues include : 
1) Space issue or resources issue for this, have a look at cluster resources.
2) not able to pull system-charts repo from GitHub (this can be due to a private network or no internet access for the rancher server ). Resolution for this is to go inside the rancher server container and manually try to do a git pull. If in private network clone the repo to your laptop &gt; push everything in your enterprise GitHub or any accessible Git repo &gt; change the repo in /v3/catalogs /system-library.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076487109/pjYj3W1MG.png" alt /></p>
<ul>
<li>Not able to download the images from docker hub. For this, you need to update the registry and put your private registry where the images are present or the registry you have access over the network. You can change this in the global &gt;&gt; settings</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076489152/6jRz7QGVC.png" alt /></p>
<ul>
<li>Other issues can be checked by seeing what error is displayed in the apps/workloads under the System for that cluster.</li>
</ul>
<p><strong>Rancher Security :</strong></p>
<p>Let move over to Rancher security which includes &gt; Roles, Pod Security Policies and Authentication. 
There are different authentication support provided by rancher and the roles are basically RBAC powered. Whenever you create a user with a role it is actually getting created inside the cluster with RBAC.</p>
<p><strong>Roles</strong>: Roles are Global, CLuster level and Project Level. Except for the global roles you can create the other two from the UI.
Cluster Role is really helpful in proving specific permissions for specific resources. Let's create a custom role for view-only permission to the cluster.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076491127/ksltwtXke.png" alt="Cluster role creation" /><em>Cluster role creation</em></p>
<p>Now let us Create a standard USER and add this user to our created cluster.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076493582/Z_HfJqbIK.png" alt="user creation" /><em>user creation</em></p>
<p>Add the member to the cluster by selecting the custom role created.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076495699/xaJi9LrXr.png" alt="adding a member to cluster" /><em>adding a member to cluster</em></p>
<p>Lets login with “testuser” and try to edit a node.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076497765/6AzsqUSgn.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076499886/XVVzBl64k.png" alt="permission error" /><em>permission error</em></p>
<p>So we have successfully created a view permission role for the user who can just view what is there in the cluster and cannot modify it in any way.</p>
<p>Different Authentications that can be integrated with rancher :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076502047/JJmbFIWGq.png" alt="Authentication" /><em>Authentication</em></p>
<p><strong>Deployment via Rancher UI: </strong>
Lets deploy a sample Nginx application from the Rancher UI itself. Choose the default project from the cluster and click deploy. <strong>Projects</strong> are the upper layer where you can place your namespaces. All the system level namespaces go in the system projects and all other you can put in different sets of projects and these projects can have assigned roles separately. That's the beauty of roles granularity that rancher provides.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076504094/bUVh_Cp5N.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076506429/iYPJtWnKi.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076509432/7mZTcD4D_.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076511734/ge1ugw4kx.png" alt /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076513923/1gRBzXv4F.png" alt /></p>
<p>As you can see that we have deployed 12 instances of nginx just by entering a few details. WE can enter further details like :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076515926/9HuMGCsv6.png" alt /></p>
<p>After the pod is spin up with 12 replicas lets go in the pod and reduce the replicas to 3 and see what other options are available to see its logs, health checks, etc.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076518105/9JoA1MB_N7.png" alt="replicas reduced to 3" /><em>replicas reduced to 3</em></p>
<p>You can edit/view tha yaml for pods, nodes etc on the live cluster from the rancher UI itself. You can install logging systems as well and install necessary apps fro CI/CD .</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076520452/mNsHgv86S.png" alt="Node Configurations" /><em>Node Configurations</em></p>
<p>You can Also launch kubectl shell and perform the command line activities from rancher UI itself. If for some reason the kubectl does not work then download the kubeconfig file and check it if it works. Sometimes the custom certificates used to set up the clusters have to be put in the settings in order to make the kubectl shell work properly.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1621076523987/c2jEjjmD8.png" alt="local cluster shell" /><em>local cluster shell</em></p>
<p><strong>Customizing Rancher UI :
</strong>If you want to customize rancher UI then clone the rancher/UI repository. Build it locally and point it to the server running for the local development. Once it is set. Run it on a server and change the UI index URL setting in the server pointing to the new UI.
Git repository. : <a target="_blank" href="https://github.com/rancher/ui">https://github.com/rancher/ui</a></p>
<p>All in All, you can do lots and lots of stuff using Rancher UI . Whatever we have discussed throughout the article is just a little explanation of some common things.</p>
<p><strong>Recap:</strong> Things covered in this Article -</p>
<ul>
<li>Kubernetes playground cluster creation </li>
<li>Launching Rancher Server</li>
<li>Importing a Cluster</li>
<li>Monitoring Concepts</li>
<li>Grafana Dashboards</li>
<li>Common monitoring enabling issues</li>
<li>User Creation</li>
<li>Role Creation</li>
<li>Adding a member to the cluster</li>
<li>Authentication</li>
<li>Deployment via Rancher UI</li>
<li>Playing with pod replicas</li>
<li>Node Configurations</li>
<li>Kubectl shell</li>
<li>How to customize rancher UI</li>
</ul>
<p>Happy Ranchering.!!</p>
<p>Saiyam Pathak
<a target="_blank" href="https://www.linkedin.com/in/saiyam-pathak-97685a64/?source=post_page---------------------------">https://www.linkedin.com/in/saiyam-pathak-97685a64/</a>
<a target="_blank" href="https://twitter.com/SaiyamPathak?source=post_page---------------------------">https://twitter.com/SaiyamPathak</a></p>
]]></content:encoded></item></channel></rss>