<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhimanyu Selvan</title>
    <description>The latest articles on DEV Community by Abhimanyu Selvan (@diabhey).</description>
    <link>https://dev.to/diabhey</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F714091%2F0aef1cfc-11cd-4f7b-89b4-c192ccfe7d24.png</url>
      <title>DEV Community: Abhimanyu Selvan</title>
      <link>https://dev.to/diabhey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/diabhey"/>
    <language>en</language>
    <item>
      <title>Otomi: Self-hosted PaaS for Kubernetes on Windows (minikube)</title>
      <dc:creator>Abhimanyu Selvan</dc:creator>
      <pubDate>Wed, 13 Apr 2022 16:51:20 +0000</pubDate>
      <link>https://dev.to/diabhey/otomi-self-hosted-paas-for-kubernetes-on-windows-minikube-379i</link>
      <guid>https://dev.to/diabhey/otomi-self-hosted-paas-for-kubernetes-on-windows-minikube-379i</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/redkubes/otomi-core"&gt;Otomi&lt;/a&gt; is a self-hosted PaaS for Kubernetes and offers a complete suite of integrated, pre-configured applications combined with automation. Otomi is optimized for running on managed Kubernetes services like AKS, EKS, and GCP, but now it can be installed on any K8s cluster, even on Minikube.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new?
&lt;/h2&gt;

&lt;p&gt;The latest version of Otomi, by default, installs a minimal set of apps, called the &lt;code&gt;Core&lt;/code&gt;. The core offers &lt;strong&gt;an advanced ingress architecture&lt;/strong&gt; based on &lt;a href="https://istio.io/"&gt;Istio&lt;/a&gt;, &lt;a href="https://github.com/kubernetes/ingress-nginx"&gt;Nginx ingress controller&lt;/a&gt;, &lt;a href="https://www.keycloak.org/"&gt;Keycloak&lt;/a&gt; as IdP, &lt;a href="https://github.com/oauth2-proxy/oauth2-proxy"&gt;OAuth2 Proxy&lt;/a&gt;, and &lt;a href="https://cert-manager.io/"&gt;cert-manager&lt;/a&gt;. With the web UI (Otomi Console) you can add services to the mesh and securely expose them with just one click. All other integrated apps are now optional and can be activated by dragging them into the enabled apps section.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But can we install it locally on our machine?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Yes, you can!&lt;/strong&gt; It is now possible to install Otomi on minikube running both on Mac and Windows. For Mac installation, check this &lt;a href="https://itnext.io/installing-otomi-on-minikube-2f83dfc421d2"&gt;&lt;strong&gt;blog&lt;/strong&gt;&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
In this post, I'll describe how to get started with Otomi on minikube running on Windows. If you ever have run Minikube, you'll probably have used the Docker driver. Unfortunately, you can't access the Minikube IP from your Windows PC when using the Docker driver. Only &lt;code&gt;127.0.0.1&lt;/code&gt; can be used. This wouldn't be an issue in many cases, but Otomi requires an IP that is resolvable from your machine browser and from within the cluster itself.&lt;/p&gt;
&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Make sure you have the following installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubectl&lt;/li&gt;
&lt;li&gt;Helm&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Minikube version 1.25.2 (tested)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Tip: If you are using PowerShell, make sure to run as Administrator. I used the &lt;em&gt;chocolatey&lt;/em&gt; package manager to install the packages.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Configure Minikube
&lt;/h3&gt;

&lt;p&gt;Open PowerShell as Administrator and run the following commands to configure minikube.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set the cpus and memory&lt;/span&gt;
minikube config &lt;span class="nb"&gt;set &lt;/span&gt;memory 8g
minikube config &lt;span class="nb"&gt;set &lt;/span&gt;cpus 8
&lt;span class="c"&gt;# Enable calico if you want to check network policies&lt;/span&gt;
minikube start &lt;span class="nt"&gt;--driver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;hyperv &lt;span class="nt"&gt;--kubernetes-version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;v1.22.4 &lt;span class="nt"&gt;--cni&lt;/span&gt; calico
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G4TbsdrP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a9qzqxsd5e122b2e64g4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G4TbsdrP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a9qzqxsd5e122b2e64g4.png" alt="Minikube configuration" width="880" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Enable metallb (network load balancer)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Enable metallb&lt;/span&gt;
minikube addons &lt;span class="nb"&gt;enable &lt;/span&gt;metallb
&lt;span class="c"&gt;# Get the IP&lt;/span&gt;
minikube ip
&lt;span class="c"&gt;# Configure metallb with the IP as seen in the figure below&lt;/span&gt;
minikube addons configure metallb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pO2yKHuz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7o8i7vl22oyrulr557mr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pO2yKHuz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7o8i7vl22oyrulr557mr.png" alt="Enable metallb network load balancer)" width="880" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Otomi using Helm
&lt;/h3&gt;

&lt;p&gt;From the same PowerShell terminal run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add the Otomi repo&lt;/span&gt;
helm repo add otomi https://otomi.io/otomi-core 
helm repo update
&lt;span class="c"&gt;# Otomi install with minimal chart values&lt;/span&gt;
helm &lt;span class="nb"&gt;install &lt;/span&gt;otomi otomi/otomi &lt;span class="nt"&gt;--set&lt;/span&gt; cluster.k8sVersion&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"1.22"&lt;/span&gt; &lt;span class="nt"&gt;--set&lt;/span&gt; cluster.name&lt;span class="o"&gt;=&lt;/span&gt;minikube &lt;span class="nt"&gt;--set&lt;/span&gt; cluster.provider&lt;span class="o"&gt;=&lt;/span&gt;custom &lt;span class="nt"&gt;--set&lt;/span&gt; apps.host-mods.enabled&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The helm chart deploys an installer job responsible for installing the Otomi platform on the minikube cluster.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Monitor the job status&lt;/span&gt;
kubectl get job otomi &lt;span class="nt"&gt;-w&lt;/span&gt;
&lt;span class="c"&gt;# Installer job logs&lt;/span&gt;
kubectl logs &lt;span class="nb"&gt;jobs&lt;/span&gt;/otomi &lt;span class="nt"&gt;-n&lt;/span&gt; default &lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At the end of the logs of the installer job, you will find the &lt;em&gt;URL&lt;/em&gt; and the &lt;em&gt;credentials&lt;/em&gt; to log into the Otomi console (as seen below)&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pECD2R3O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cywr0qy9ljf2lbn78key.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pECD2R3O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cywr0qy9ljf2lbn78key.png" alt="logs" width="880" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Otomi Console
&lt;/h3&gt;

&lt;p&gt;Since we install Otomi without providing a custom CA or using LetsEncrypt, the installer generated a CA. This CA is of course not trusted on your local machine. To prevent you from clicking away lots of security warnings in your browser, you can add the generated CA to your keychain. In the left menu of the console, click on "Download CA".&lt;/p&gt;

&lt;p&gt;Now we only need to activate &lt;a href="https://www.drone.io/"&gt;Drone&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the side menu of Otomi Console under platform click on the Drone app&lt;/li&gt;
&lt;li&gt;Click on the play button in the top right. A new tab will open for Drone&lt;/li&gt;
&lt;li&gt;Sign in locally with as &lt;code&gt;otomi-admin&lt;/code&gt; and the &lt;code&gt;password&lt;/code&gt; provided in the logs of the installer job&lt;/li&gt;
&lt;li&gt;Click on &lt;code&gt;Authorize&lt;/code&gt; Application&lt;/li&gt;
&lt;li&gt;Click on &lt;code&gt;Submit&lt;/code&gt; on the Complete your Drone Registration page. You don't need to fill in your Email, Full Name, or Company Name if you don't want to&lt;/li&gt;
&lt;li&gt;Click on the otomi/values repository&lt;/li&gt;
&lt;li&gt;Click on + Activate Repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Done! Now you can create a team, add services, expose them, configure network policies and explore Otomi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LZR0rtyR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vpu9n41luqc9sf1nd74a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LZR0rtyR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vpu9n41luqc9sf1nd74a.png" alt="Otomi console" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Like what you see? Please support us by joining the stargazers: &lt;a href="https://github.com/redkubes/otomi-core"&gt;https://github.com/redkubes/otomi-core&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>How we leveraged nip.io and custom CA for Otomi</title>
      <dc:creator>Abhimanyu Selvan</dc:creator>
      <pubDate>Tue, 15 Mar 2022 12:30:49 +0000</pubDate>
      <link>https://dev.to/diabhey/how-we-leveraged-nipio-and-custom-ca-for-otomi-195d</link>
      <guid>https://dev.to/diabhey/how-we-leveraged-nipio-and-custom-ca-for-otomi-195d</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/redkubes/otomi-core"&gt;&lt;strong&gt;Otomi&lt;/strong&gt;&lt;/a&gt; consists of a complete suite of applications that can be installed in one run on a  Kubernetes cluster. It contains several open-source projects like Prometheus, Loki, Istio, cert-manager, external DNS, and much more. All of these applications are configured with sane defaults, making everything work out-of-the-box. &lt;/p&gt;

&lt;p&gt;But some of these apps require advanced configuration and dependency management to make them work. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How can we have users try out Otomi with the least amount of effort and without any dependencies?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this article, I’ll explain how Otomi is configured to be used without the need for a DNS zone. For this, Otomi uses nip.io for DNS name resolution combined with a service LoadBalancer IP, and cert-manager with a custom CA for creating certificates. We not only wanted to demonstrate this solution but also wanted to inspire you to create your test/demo set up by making use of the powerful open-source projects that are available.&lt;/p&gt;

&lt;h2&gt;
  
  
  The why?
&lt;/h2&gt;

&lt;p&gt;You want your development environment to mirror production as closely as possible. When it doesn’t, you invite more issues showing up in production that didn’t show up in development. Running HTTP when your production site is HTTPS-only is an unnecessary risk.&lt;/p&gt;

&lt;p&gt;If you have worked on greenfield cloud-native projects, you would have experienced the pain of testing your application with TLS enabled. It’s easy to spin up an application or micro-service and access this via an IP address or localhost, but this isn’t a fully qualified domain name and doesn’t quite reflect the real-life scenario.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do you want to manually edit the /etc/hosts file for every new subdomain used for your applications?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Enter nip.io
&lt;/h2&gt;

&lt;p&gt;The nip.io service is a “dead simple wildcard DNS for any IP Address”, and it allows you to map example domain names like &lt;code&gt;otomi.{public-ip}.nip.io&lt;/code&gt; to &lt;code&gt;{public-ip}&lt;/code&gt;. If you wonder how nip.io knows how to route &lt;code&gt;otomi.{public-ip}.nip.io&lt;/code&gt; to my &lt;code&gt;{public-ip}&lt;/code&gt;, well,  it's because of how nip.io is designed.&lt;/p&gt;

&lt;p&gt;It essentially forwards that external DNS request back, telling it to look at the &lt;code&gt;{public-ip}&lt;/code&gt;. The advantage is that this is a very easy and powerful solution for generating domain names that map to a local app or Kubernetes cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Otomi + nip.io
&lt;/h2&gt;

&lt;p&gt;When you install Otomi with &lt;a href="https://otomi.io/docs/installation/chart#minimal-values"&gt;helm chart installation values&lt;/a&gt;, it uses nip.io for DNS name resolution and Self-signed certificates to securely access the application. By default, all the integrated applications are set to the nip.io base domain. Therefore, you can immediately test access without additional configuration such as external-dns.&lt;/p&gt;

&lt;p&gt;To configure the application services, Otomi first obtains the external IP address of the load balancer and then uses the public-ip address to configure full qualified domain names (FQDN) in the format &lt;code&gt;https://{application}.{public-ip}.nip.io&lt;/code&gt;  as shown in the figure below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2xscNNxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917369065/rVCfDXzwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2xscNNxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917369065/rVCfDXzwb.png" alt="ingress.png" width="880" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's take a &lt;code&gt;dig&lt;/code&gt; at it&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2wiPSmw3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917425182/EuW79E2ZN.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2wiPSmw3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917425182/EuW79E2ZN.png" alt="dig.png" width="880" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see that an A record has been created with the &lt;code&gt;public-ip&lt;/code&gt;: 34.147.113.155. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pretty neat isn’t it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Custom CA
&lt;/h2&gt;

&lt;p&gt;TLS Certificate management is automatically handled by a cert-manager to manage certificates and issuers (installed with pre-configured chart values). &lt;/p&gt;

&lt;p&gt;Otomi automatically generates a Certificate Authority (CA) and stores it as a Kubernetes secret &lt;code&gt;{custom-ca}&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8SvzHM3v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917515967/PwmpPAMe1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8SvzHM3v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917515967/PwmpPAMe1.png" alt="Screenshot 2022-03-03 at 17.17.36.png" width="880" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;ClusterIssuer&lt;/code&gt; of type &lt;code&gt;CA&lt;/code&gt;  is then created that references the &lt;code&gt;custom-ca&lt;/code&gt; secret:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0wOiWeZE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917569761/QZa4YEEeN.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0wOiWeZE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917569761/QZa4YEEeN.png" alt="Screenshot 2022-03-03 at 17.37.54.png" width="880" height="59"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;custom-ca&lt;/code&gt; ClusterIssuer is used to sign new Certificate Sign Requests (CSRs) for each of the integrated applications separately:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZKXbgQmb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917706799/09nojTx8W.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZKXbgQmb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1646917706799/09nojTx8W.png" alt="Screenshot 2022-03-03 at 17.19.23.png" width="880" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: There is no manual configuration needed whatsoever and all these are handled automatically by Otomi. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Don't worry, we will test it in Production (NOT!!!)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So if you are want to test your web applications like it is in production, then you can make use of the same projects we use in Otomi to build a secure test/demo setup. The primary disadvantage of using a service like nip.io is that you are relying on an external service, which means your development or test loop is coupled with the SLA (or lack thereof) from this service. Also, the use of a Custom CA that is not publicly trusted is not encouraged but doesn't it make it a perfect solution for testing or evaluation purposes? Let us know what you think! &lt;/p&gt;

&lt;h3&gt;
  
  
  Useful Links:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://otomi.io/"&gt;Otomi: Kubernetes Applications Configuration &amp;amp; Automation Platform&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cert-manager.io/"&gt;CA | cert-manager&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nip.io/"&gt;nip.io - wildcard DNS for any IP Address&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dns</category>
      <category>kubernetes</category>
      <category>testing</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The need for a GitOps powered Container Platform</title>
      <dc:creator>Abhimanyu Selvan</dc:creator>
      <pubDate>Wed, 19 Jan 2022 16:28:44 +0000</pubDate>
      <link>https://dev.to/diabhey/the-need-for-a-gitops-powered-container-platform-113h</link>
      <guid>https://dev.to/diabhey/the-need-for-a-gitops-powered-container-platform-113h</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Enterprises are more rapidly adopting Kubernetes to accelerate digital transformation efforts in the wake of the pandemic. By implementing cloud-native and open source technologies like Kubernetes, organizations can increase agility and time-to-market.&lt;/p&gt;

&lt;p&gt;A new study from D2iQ reinforced the importance of Kubernetes, with &lt;strong&gt;77% of organizations claiming that the container automation system is a central part of their digital transformation strategy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;However, the same study found that while projects in production on &lt;strong&gt;Kubernetes are expected to rise 61% in the next two years&lt;/strong&gt;, almost all organizations that use cloud-native technologies have run into challenges related to the complexity in building and maintaining a container platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges with Kubernetes
&lt;/h2&gt;

&lt;p&gt;The journey to Day 2 production operations and Kubernetes success is not an easy one. Day 2 is a DevOps concept that has been around for some time, referring to the development lifecycle phase that follows initial deployment to where the real application demands exist. Challenges in Day 2 are common and complex as operations teams increase the number of nodes and scale applications to keep pace with broader business goals.&lt;/p&gt;

&lt;p&gt;The most common challenges organizations face when it comes to adopting Kubernetes are &lt;strong&gt;security concerns (47%)&lt;/strong&gt;, &lt;strong&gt;difficulty scaling up effectively (37%), and lack of IT resources (34%)&lt;/strong&gt;. Challenges with Kubernetes are not new for developers, as organizations often cite the same challenges for many IT deployments; however, Kubernetes deployment raises the stakes, as it often sits at the center of the cloud-native journeys that are critical to every digital transformation.&lt;/p&gt;

&lt;p&gt;Kubernetes challenges are felt by almost everyone, with &lt;strong&gt;94% of respondents claiming **that **Kubernetes is a source of pain or complexity&lt;/strong&gt; for their organization. However, those in the Kubernetes trenches often feel the brunt of that pain, with 78% of developers and architects claiming that Kubernetes add-ons cause a great deal of pain and introduce complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges with Developers
&lt;/h2&gt;

&lt;p&gt;Almost all (95%) organizations that use cloud-native technology have run into challenges, most commonly during the development phase (47%).&lt;/p&gt;

&lt;p&gt;This can often mean long hours, shortening the time for business application development, and high-pressure situations that create a draining work environment on developer teams. According to the study, &lt;strong&gt;38% of developers and architects&lt;/strong&gt; claim their work makes them feel &lt;strong&gt;burnt out&lt;/strong&gt;, &lt;strong&gt;32% say that building cloud-native applications cause stress&lt;/strong&gt;, and &lt;strong&gt;28% admit that building applications are very frustrating.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These feelings of burnout, stress, and frustration can drive IT teams to consider drastic measures, including changing their scenery. 51% of developers and architects say building cloud-native applications makes them want to find a new job. This statistic and sentiment should be alarming to organizations as they need full, skilled developer teams to fuel the adoption of Kubernetes and drive accelerated digital transformations.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is important for an organization?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Reduce developer(s) and team(s) burnouts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Increase team(s) productivity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shorten time to market&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save costs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid technical debt&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The need for a Modern GitOps powered Platform
&lt;/h2&gt;

&lt;p&gt;According to the 2020 State of DevOps Report, &lt;strong&gt;63% of organizations developing software have adopted GitOps as a deployment model&lt;/strong&gt;. The top benefit of adopting the platform model, according to the report, is the ability to enable self-service capabilities for application development teams. This would enable them to quickly create and provision the resources their code requires without having to have an Ops person do it for them. For the platform team, they can focus on continuous deployment and platform maintenance, and monitoring independently of the application team.&lt;/p&gt;

&lt;p&gt;The platform team creates the platform that would be used to provision developer resources. They set up configuration templates for developers to create the resources they need on their own. These templates are in the form of Git repositories and are managed using the GitOps model. They also put in place limits and restrictions, and privileges for how a developer can customize the templates. If those need further customization, they reach out to the platform team. This approach needs some initial effort, but once set up, developers can provide the resources they need in a matter of minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Benefits of a GitOps powered Platform
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Developer Self Service&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reduces platform team’s workload &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; By enabling teams to be self-sufficient(RBAC)&lt;/li&gt;
&lt;li&gt;Integrated logging and monitoring for individual teams&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leverages Automation &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Security is built-in &amp;amp; scalable &lt;/p&gt;

&lt;p&gt;-Ready-made audit trail for compliance &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MTTR(Mean Time To Repair) as low as minutes &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improves deployment velocity&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;We feel your pain and we might have the answers to most of your pain points.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Otomi: GitOps powered Container Platform
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/redkubes/otomi-core"&gt;Otomi&lt;/a&gt; is an open-source and cloud-agnostic platform to run on top of Kubernetes to securely deploy, run and manage applications in an automated fashion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Easy to install&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easily installed within minutes using helm chart install&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Out-of-the-box experience&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;otomi-console provides an intuitive user experience built on top of the git 
configuration repository that allows developers to create, configure, manage and 
monitor containerized applications&lt;/li&gt;
&lt;li&gt;Offers a GitOps way of working, where the desired state is reflected as code and the 
cluster state is automatically updated&lt;/li&gt;
&lt;li&gt;A baseline configuration for integrated open-source applications and add-ons to support the most common Kubernetes use-cases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Advanced ingress architecture&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Multi-Cloud support&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Otomi supports the big 3 public cloud providers (AWS, Azure, and GCP) and on-premise Kubernetes.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://thecloudodyssey.com/otomi-quickstart"&gt;otomi-quickstart&lt;/a&gt; can be used to install Otomi on managed Kubernetes from the cloud providers (Experimentation and Evaluation purposes only)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Security Best Practices&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workload isolation&lt;/li&gt;
&lt;li&gt;Image vulnerability scanning&lt;/li&gt;
&lt;li&gt;Network policies&lt;/li&gt;
&lt;li&gt;Policy enforcement&lt;/li&gt;
&lt;li&gt;Pre-configured RBAC&lt;/li&gt;
&lt;li&gt;mTLS&lt;/li&gt;
&lt;li&gt;Secret Management&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Talk is cheap, show me the code&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sure, you can schedule a &lt;a href="https://meetings.hubspot.com/abhimanyu-selvan"&gt;demo&lt;/a&gt; with me. Let's connect and share the pain together ;)&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>gitops</category>
      <category>cloudnative</category>
    </item>
  </channel>
</rss>
