<?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>Forem: Cortney Nickerson</title>
    <description>The latest articles on Forem by Cortney Nickerson (@cortney).</description>
    <link>https://forem.com/cortney</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%2F978061%2Feeda5ed0-8d1b-4c86-a5bf-a4d621d8d915.jpg</url>
      <title>Forem: Cortney Nickerson</title>
      <link>https://forem.com/cortney</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cortney"/>
    <language>en</language>
    <item>
      <title>Monokle vs. Lens vs. K9s</title>
      <dc:creator>Cortney Nickerson</dc:creator>
      <pubDate>Sun, 05 Feb 2023 23:00:00 +0000</pubDate>
      <link>https://forem.com/kubeshop/monokle-vs-lens-vs-k9s-1m3o</link>
      <guid>https://forem.com/kubeshop/monokle-vs-lens-vs-k9s-1m3o</guid>
      <description>&lt;p&gt;Finding the right tools to optimize Kubernetes deployment workflows is challenging. Here's a look at what these key players offer to handle everything from configuration tasks to cluster management.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfynjsfuoz2p7x5zya3o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfynjsfuoz2p7x5zya3o.png" alt="Image description" width="770" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Along the path of deploying an application to a Kubernetes cluster, there has always been a messy “handshake” between tools designed for authoring and approving your configuration versus tools designed for managing your clusters. The work might even pass between teams of application engineers and platform engineers.&lt;/p&gt;

&lt;p&gt;Lately, at Monokle, we’ve been seeing a groundswell of demand to converge the work around this handshake, or at least provide more visibility, to help both sides converge around a shared goal of reliably and quickly shipping high-quality software. Developers and engineers of all stripes are looking for the right tools to optimize their Kubernetes workflows.&lt;/p&gt;

&lt;p&gt;This leads them to look at a handful of key players operating around these handshakes in the Kubernetes configuration lifecycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://k8slens.dev/desktop.html" rel="noopener noreferrer"&gt;Lens Desktop&lt;/a&gt;&lt;/strong&gt; (and its open-source version in &lt;a href="https://github.com/lensapp/lens" rel="noopener noreferrer"&gt;OpenLens, &lt;/a&gt;that lacks some features like log access) has tools for exploring Kubernetes clusters in a visual environment, with statistics, events, and logs for troubleshooting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://k9scli.io/" rel="noopener noreferrer"&gt;K9s&lt;/a&gt;&lt;/strong&gt; is a terminal-based UI for observing and managing deployed applications on Kubernetes clusters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://monokle.io/" rel="noopener noreferrer"&gt;Monokle&lt;/a&gt;&lt;/strong&gt;, a suite of tools designed to help everyone from developers to platform engineers manage the application configuration lifecycle in Kubernetes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While Lens Desktop and K9s have earned their place in the industry being great tools for managing clusters, focusing on monitoring and management, we in the Monokle team think there are more human and technical issues to deal with when deploying applications. By unifying teams on Monokle, these leaders can improve productivity and quality while also reducing cognitive load through cooperation.&lt;/p&gt;

&lt;p&gt;To illustrate how Monokle solves problems for users throughout the entire configuration lifecycle, for developers to platform engineers, let’s look at the major stages of your configuration lifecycle to see where these tools come into play and what they offer.&lt;/p&gt;

&lt;p&gt;You should walk away with a clear understanding of which tool(s) meet your workflow best, whether you’re focused on the entire configuration lifecycle or just cluster management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authoring
&lt;/h2&gt;

&lt;p&gt;In this stage, you’re working primarily in YAML files, the groundwork for Kubernetes manifests and resources, to design a desired cluster state that will support the application as developed. That includes specifying ingress, databases, secrets, resource relationships, environment configurations, resource constraints, and more.&lt;/p&gt;

&lt;p&gt;Neither &lt;strong&gt;OpenLens&lt;/strong&gt; or &lt;strong&gt;K9s&lt;/strong&gt; offer tools or features for authoring configuration via manifest files. If you adopt Lens or K9s as a platform engineer, for example, you’ll have to pair it with another tool that helps developers create and validate their configurations, or end up with a “wild west” of Kubernetes IDEs and manual code reviews.&lt;/p&gt;

&lt;p&gt;Or you could pick Monokle as the common language for all things authoring configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monokle&lt;/strong&gt; helps you configure the desired cluster state quickly and error-free by moving checks and validations before you even commit code to your repository. It has features designed to make YAML a manageable and even educational experience, like:&lt;/p&gt;

&lt;p&gt;*&lt;a href="https://kubeshop.github.io/monokle/creating-resources/" rel="noopener noreferrer"&gt;Forms&lt;/a&gt;, which simplify how you specify resource configurations in YAML by automatically interpolating the inputs into one or more manifest files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubeshop.github.io/monokle/templates/" rel="noopener noreferrer"&gt;Templates&lt;/a&gt;, a mechanism for specifying custom visual forms using JSON to define the data schema and custom visuals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for configuration management through &lt;a href="https://kubeshop.github.io/monokle/helm/" rel="noopener noreferrer"&gt;Helm&lt;/a&gt; and &lt;a href="https://kubeshop.github.io/monokle/kustomize/" rel="noopener noreferrer"&gt;Kustomize&lt;/a&gt;, including viewing previews of generated resources, helping you debug charts/kustomizations before deployment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real-time validation to educate engineers and eliminate YAML syntax or configuration errors before engineers even commit their changes, which results in less rework and higher quality configuration from the get-go.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Review and analysis
&lt;/h2&gt;

&lt;p&gt;In this stage, you’ve already defined your desired cluster state in multiple manifests, and you’re either reviewing your work yourself or are ready to share with others via a pull request. This kicks manual peer reviews and automated analysis from your CI/CD pipeline to help you catch errors before you merge code that will inevitably fail on your production cluster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Lens&lt;/strong&gt; and &lt;strong&gt;K9s&lt;/strong&gt; are not designed to help you at this stage, as they focus on looking at the state of your cluster after you deploy your configuration. The paid version of Lens includes access to additional tools that provide image scanning, team collaboration, and remote cluster access.&lt;/p&gt;

&lt;p&gt;You could opt for Lens Pro at $19.90/seat/month to unlock a few useful features, or you could use Monokle to establish a common language for the quality of your configurations before you finally push to &lt;code&gt;main&lt;/code&gt; and bring your latest changes into production via your CI/CD pipeline.&lt;/p&gt;

&lt;p&gt;However, &lt;strong&gt;Monokle&lt;/strong&gt;’s main goal at this stage is to provide visibility into the impact of your proposed changes. With this insight, you and your peers can make adjustments now rather than creating additional hotfix PRs to address issues that only crop up at the end of your CI/CD pipeline or on your production cluster. Here are some methods for reviewing and analyzing your commits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://kubeshop.github.io/monokle/resource-navigation/#resource-links" rel="noopener noreferrer"&gt;Visually navigate&lt;/a&gt; the incoming/outgoing relationships and dependencies between your configurations and Kubernetes resources to catch misconfigurations during renaming or refactoring efforts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://kubeshop.github.io/monokle/compare-sync/" rel="noopener noreferrer"&gt;Compare and synchronize&lt;/a&gt; two sets of resources, like local vs. cluster resources, across Git branches/repositories or namespaces/clusters, to understand the impact of your configuration on the actual state of your cluster.&lt;/li&gt;
&lt;li&gt;Identify and fix additional validation errors, such as Kubernetes schemas and &lt;a href="https://kubeshop.github.io/monokle/resource-validation/#inspecting-policy-errors" rel="noopener noreferrer"&gt;Open Policy Agent policies&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Quick &lt;a href="https://kubeshop.github.io/monokle/apply-and-diff/" rel="noopener noreferrer"&gt;diffs&lt;/a&gt; for viewing your commits against the deployed state of your cluster.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deployment and cluster management
&lt;/h2&gt;

&lt;p&gt;Your configuration lifecycle doesn’t end when you push the green &lt;strong&gt;Merge&lt;/strong&gt; button and watch your CI/CD pipeline push your new code into production. In this stage, you’re focused on observing the state of your cluster and resources over time to identify and troubleshoot any potential issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lens&lt;/strong&gt; has always focused on the cluster management stage, with a focus on multi-cluster infrastructure, with open-source tooling that works with any flavor of Kubernetes. Its cluster management features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual UIs for exploring Kubernetes clusters over using a command line and oftentimes overwhelming &lt;code&gt;kubectl&lt;/code&gt; commands.&lt;/li&gt;
&lt;li&gt;Integration with Prometheus to visualize CPU, memory, network, and disk metrics all the way down to individual Kubernetes resources.&lt;/li&gt;
&lt;li&gt;Notifications for cluster or workload issues.&lt;/li&gt;
&lt;li&gt;Access logs for all workloads to troubleshoot ongoing issues and design fixes.&lt;/li&gt;
&lt;li&gt;Remote access to clusters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;K9s&lt;/strong&gt; offers many of the same multi-cluster dashboarding capabilities, emphasizing speed, watching for changes and offering commands to interact with resources showing signs of trouble.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A real-time dashboard based on a terminal UI, meeting many engineers where they already spend much of their time.&lt;/li&gt;
&lt;li&gt;Cluster metrics for pods, containers, and nodes.&lt;/li&gt;
&lt;li&gt;Keyboard-based (and customizable) support for viewing logs, restarting portions of your cluster, and scaling resources.&lt;/li&gt;
&lt;li&gt;Built-in benchmarking for HTTP services/pods to help you plan for optimizing resource requests and limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Monokle&lt;/strong&gt; recently began supporting this stage of the configuration lifecycle with a new &lt;a href="https://monokle.io/blog/kubernetes-cluster-management-with-monokle" rel="noopener noreferrer"&gt;cluster mode&lt;/a&gt;, released in &lt;a href="https://monokle.io/blog/monokle-1-13-release" rel="noopener noreferrer"&gt;Monokle 1.13&lt;/a&gt;, which reduces your cognitive load in managing the health of your cluster with features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A real-time dashboard of all deployed resources on your cluster and detailed information about each, like resource utilization.&lt;/li&gt;
&lt;li&gt;Access to live logs for investigating the states of an individual resource and a terminal to help you investigate further or resolve the issue.&lt;/li&gt;
&lt;li&gt;An activity dashboard with recent alerts and warnings to provide you with real-time information on the health of your cluster and configuration.&lt;/li&gt;
&lt;li&gt;Validation of in-cluster production resources against best-practices policy from &lt;a href="https://github.com/aquasecurity/trivy" rel="noopener noreferrer"&gt;Trivy&lt;/a&gt; (based on OPA) and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The skinny on designing your perfect configuration lifecycle
&lt;/h2&gt;

&lt;p&gt;The truth is that there is a wealth of fantastic open source open-source tools available for engineers looking to manage their application configurations across the standard software lifecycle of plan-&amp;gt;define-&amp;gt;design-&amp;gt;build-&amp;gt;test-&amp;gt;deploy. If you’re already using Lens or K9s, or a different tool not mentioned here, and feel like you’re covering your bases, then we wish you success!&lt;/p&gt;

&lt;p&gt;But the great thing about the cloud native ecosystem is that you aren’t forced to use any tool in a vacuum—you can adopt or integrate multiple solutions to build the ideal lifecycle for your team.&lt;/p&gt;

&lt;p&gt;Monokle is uniquely powerful because it guides you through the entire process, from authoring your first line of configuration to managing your production cluster. You don’t have to use anything else, but if you do, all the more power to you.&lt;/p&gt;

&lt;p&gt;For those who love aligning their configuration management processes around a single tool to reduce cognitive load, check out &lt;a href="https://monokle.io/" rel="noopener noreferrer"&gt;Monokle&lt;/a&gt;. We have a mix-and-match suite of tools that cover the entire Kubernetes configuration lifecycle in a single language. &lt;a href="https://monokle.io/download" rel="noopener noreferrer"&gt;Monokle Desktop&lt;/a&gt; is the powerhouse with advanced features, &lt;a href="https://app.monokle.com/" rel="noopener noreferrer"&gt;Monokle Cloud&lt;/a&gt; offers instant visibility and team collaboration, and &lt;a href="https://monokle.io/download" rel="noopener noreferrer"&gt;Monokle CLI&lt;/a&gt; smooths over all the gray areas other tools can’t reach.&lt;/p&gt;

&lt;p&gt;You can get started in just a few minutes on the Cloud or with our Desktop application to begin authoring, validating, and managing your Kubernetes configurations with collaboration and quality at the forefront.&lt;/p&gt;

&lt;p&gt;And if you don’t see your use case covered by Monokle, especially the new cluster mode features that match most of the functionality offered by OpenLens and K9s, join our entire team on &lt;a href="https://discord.gg/6zupCZFQbe" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; or &lt;a href="https://calendly.com/sergio-ocon" rel="noopener noreferrer"&gt;schedule a 30-minute conversation&lt;/a&gt;. We’d love to know how we could help solve your ongoing challenges with Kubernetes configuration with better authoring, reviewing, &lt;em&gt;and&lt;/em&gt; managing features!&lt;/p&gt;

</description>
      <category>devto</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>announcement</category>
    </item>
    <item>
      <title>Leverage OPA Security Practices with Monokle</title>
      <dc:creator>Cortney Nickerson</dc:creator>
      <pubDate>Thu, 24 Nov 2022 01:30:47 +0000</pubDate>
      <link>https://forem.com/kubeshop/leverage-opa-security-practices-with-monokle-435b</link>
      <guid>https://forem.com/kubeshop/leverage-opa-security-practices-with-monokle-435b</guid>
      <description>&lt;p&gt;At &lt;a href="https://monokle.kubeshop.io/"&gt;Monokle&lt;/a&gt;, we care about helping developers like you be more productive while working with Kubernetes. A big part of that mission is helping you spend far less time debugging and fixing &lt;a href="https://kubeshop.io/blog/common-errors-found-in-kubernetes-manifests"&gt;common errors&lt;/a&gt; early in the deployment process.&lt;/p&gt;

&lt;p&gt;You know the type—indentation, typos, misspelled resource names, invalid output from Helm or Kustomize to name a few. With Monokle, we help resolve these pain points straight away by checking off one more annoyance in your pre-deployment workflow on our way to achieve our mission of making your Kubernetes development experience &lt;em&gt;joyful&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;But as we work toward our goal of making configuration tasks easier to manage, we are very aware that not all errors are simple annoyances. Your organization likely maintains specific policies and best practices built around issues like cloud costs, security, and data privacy. These might come from internal discussions spearheaded by your CTO or cloud native best practices using an open-source validator tool from the Cloud Native Computing Foundation (CNCF). &lt;/p&gt;

&lt;p&gt;These rules (and associated errors) are worthy of your attention and time, but that doesn’t mean that policy enforcement has to be an enormous burden on your productivity.&lt;/p&gt;

&lt;p&gt;We believe in validating your work around complex errors before deploying so you spend less time fixing them. So in our &lt;a href="https://kubeshop.io/blog/monokle-1-7-0-release"&gt;Monokle 1.7.0&lt;/a&gt; release we added support for&lt;a href="https://www.openpolicyagent.org/"&gt;OPA&lt;/a&gt; (OPA) to automate how you validate, identify, and fix mission-critical Kubernetes errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Open Policy Agent?
&lt;/h2&gt;

&lt;p&gt;Open Policy Agent, also referred to as  &lt;a href="https://www.openpolicyagent.org/"&gt;OPA&lt;/a&gt;, is an open source general purpose policy engine for building specific policy enforcement across an organization's development stack.&lt;/p&gt;

&lt;p&gt;OPA policy allows Kubernetes development teams to define rules on exactly how their systems should behave, but without hardcoding those rules directly into the code itself. Instead, you query OPA with the rules you’re looking to apply and the code you want tested, and it gives you a pass/fail result.&lt;/p&gt;

&lt;p&gt;OPA-driven policy decisions are entirely up to your organization. They can cover “simple” rules like requiring labels to complex directives like security, cloud costs, and best practices around availability.&lt;/p&gt;

&lt;h2&gt;
  
  
  What OPA rules does Monokle include?
&lt;/h2&gt;

&lt;p&gt;We added automatic OPA validation directly into Monokle to keep your development workflows streamlined. No more context switching or worrying about whether you’re violating a cloud native best practice when you’re finally ready to deploy to your cluster.&lt;/p&gt;

&lt;p&gt;We implemented rules developed by the &lt;a href="https://www.aquasec.com/"&gt;DefSec team at Aqua Security&lt;/a&gt;—we’re grateful for their hard work and OPA expertise to help Monokle users get up and running with OPA.&lt;/p&gt;

&lt;p&gt;The full list of rules can be found in our &lt;a href="https://kubeshop.github.io/monokle/resource-validation/#policy-rules"&gt;documentation&lt;/a&gt;, but here are some examples and their of various levels of severity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;SYS\_ADMIN capability added&lt;/code&gt;: Processes in your containers can use root-like privileges.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hostPath volume mounted with docker.sock&lt;/code&gt;: Your container can have full root access to its host system.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Accessto host network&lt;/code&gt;: Processes in the pod to communicate with processes bound to the host's loopback adapter.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CPU notlimited&lt;/code&gt;: Can create resource exhaustion during a DDoS attack.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to enable and use OPA with your Kubernetes configuration files
&lt;/h2&gt;

&lt;p&gt;If you don’t have Monokle yet, &lt;a href="https://monokle.kubeshop.io/download"&gt;install the desktop app&lt;/a&gt;! We support macOS, Windows, and Linux, and it only takes a few clicks to see all your Kubernetes resources in Monokle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enable OPA policies
&lt;/h2&gt;

&lt;p&gt;Monokle’s OPA features work with your vanilla Kubernetes manifests, the output from Helm charts or Kustomizations, and cluster resources. To integrate OPA into your workflows, start applying and viewing OPA rules by clicking the *Validate Your Resources* button located on the left-hand navigation menu, then the *Configure* button under the Open Policy Agent heading to view the list of available rego policies.&lt;/p&gt;

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

&lt;p&gt;We recommend you enable them all with the *Enable all*button, and then disable those that cause too much headache or don’t work with your team’s policies. You can sort policies by their ID or severity to target your search and enable those most relevant to your organization. Just click the toggle button next to any policy to enable or disable it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validate your manifests and resources against OPA policies
&lt;/h2&gt;

&lt;p&gt;Once you’ve enabled a policy, Monokle gets started validating all configuration files and cluster resources in the background—there’s nothing else to enable or configure.&lt;/p&gt;

&lt;p&gt;As you develop a vanilla manifest, Monokle marks code that violates a given policy with a red error icon, just as it does with the "simpler" syntax errors mentioned earlier. Hover over that icon to see what OPA policy you’re violating, along with advice on fixing your manifest.&lt;/p&gt;

&lt;p&gt;As you make changes, Monokle keeps querying OPA with your code until you meet your organization’s best practices, and poof—the error disappears in real-time!&lt;/p&gt;

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

&lt;p&gt;But Monokle takes the use cases even further. Since OPA validation works with Helm/Kustomize output too, you can test those outputs before you try deploying any generated config files, objects, or resources. Monokle also lets you inspect your &lt;em&gt;existing&lt;/em&gt; clusters for OPA errors, which helps you retroactively fix invalid manifests you deployed before implementing OPA policies or having the right tool to identify them quickly and easily.&lt;/p&gt;

&lt;p&gt;Now that you can see OPA validation errors directly in Monokle, you don’t have to juggle more development tools, waste time deploying code that ultimately doesn’t meet your organization’s standards, or fret over rolling back a production deployment. Monokle’s OPA capabilities help reduce complexity of pre deployment configuration tasks and maybe even makes working with K8s objects and resources fun—well, easier for sure!&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next with Kubernetes configuration workflows?
&lt;/h2&gt;

&lt;p&gt;We’re working non-stop listening to user feedback as we add new features and capabilities to Monokle with the vision of reducing your time working with YAML to a minimum so you can get back to what you enjoy most, coding!&lt;/p&gt;

&lt;p&gt;Try Monokle and get our new releases directly to your desktop. &lt;a href="https://monokle.kubeshop.io/download"&gt;Download&lt;/a&gt; for macOS, Linux, and Windows. It’s entirely free and open-source complete with an &lt;a href="https://github.com/kubeshop/monokle/blob/4a6d9c65f98c767fe63daf556dd89e467cb9efda/LICENSE"&gt;MIT license&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Learn more about &lt;a href="https://kubeshop.io/blog/how-to-create-a-yaml-manifest-template-in-monokle"&gt;how to create&lt;/a&gt;&lt;a href="https://kubeshop.io/blog/how-to-create-a-yaml-manifest-template-in-monokle"&gt;YAML Manifests&lt;/a&gt;&lt;a href="https://kubeshop.io/blog/how-to-create-a-yaml-manifest-template-in-monokle"&gt;in Monokle&lt;/a&gt; and once you’ve spent some time leveraging Monokle to validate and fix your errors—whether syntax or OPA related—we invite you to stop by our &lt;a href="https://discord.gg/uNuhy6GDyn"&gt;Discord Server&lt;/a&gt; to give us feedback.&lt;/p&gt;

&lt;p&gt;Our engineers, DevRel, and product team are all active in this space and are happy to discuss implementing more OPA policies, new options for letting you build custom plugins for your organization, or other pains that we can help you resolve in your pre deployment workflows.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>kubernetes</category>
      <category>security</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Monokle, Helm &amp; Quality Kubernetes Deployments</title>
      <dc:creator>Cortney Nickerson</dc:creator>
      <pubDate>Thu, 24 Nov 2022 01:13:24 +0000</pubDate>
      <link>https://forem.com/kubeshop/monokle-helm-quality-kubernetes-deployments-5b2f</link>
      <guid>https://forem.com/kubeshop/monokle-helm-quality-kubernetes-deployments-5b2f</guid>
      <description>&lt;p&gt;Before the cloud native era, we built infrastructure from Digital Ocean tutorials. Developers and IT teams were responsible for provisioning individual servers with all the hardware, networking, OS configurations, and services necessary to run services or apps on the web. That meant installing and configuring an Nginx web server or MySQL database dozens or hundreds of times following pre-approved—and extremely tedious—steps.&lt;/p&gt;

&lt;p&gt;Eventually, DevOps emerged and took hold among technology-savvy organizations, which also led to a progression away from raw Linux administration and toward provisioning/configuration management and automation tools like Ansible and Puppet. That was a major step in the right direction, but these teams quickly started to look for faster and more reliable ways to deploy their apps to the web than administering multiple nodes via configuration files.&lt;/p&gt;

&lt;p&gt;But now, in the cloud native era, where infrastructure as code (IaC) is not only &lt;em&gt;best&lt;/em&gt; practice but also expected, Kubernetes developers shouldn’t have to recreate their infrastructure repeatedly, right?&lt;/p&gt;

&lt;p&gt;Unfortunately, we’ve fallen into the same trap. As Kubernetes clusters ballooned in complexity, DevOps engineers found themselves recreating manifests for commonly-needed resources, like web servers or databases, more often than they would like. And as soon as they replicated those assets in multiple places, making minor tweaks here and there, their manifests were no longer reliable sources of truth. &lt;/p&gt;

&lt;p&gt;And to complicate matters more, most attempts to add version control—a necessary step in modern DevOps toolkits, were unsuccessful. In an era where the industry continues to trend toward automating deployments with GitOps, reliable version control has become a non-negotiable must-have.&lt;/p&gt;

&lt;p&gt;What if the Kubernetes development community had a package manager—like Homebrew for macOS or apt for certain flavors of Linux—for discovering, editing, and maintaining Kubernetes manifests and deployments?&lt;/p&gt;

&lt;h2&gt;
  
  
  How teams leverage Helm in Kubernetes deployments
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/helm/helm"&gt;Helm&lt;/a&gt; is a tool for managing charts, which are packages of pre-configured Kubernetes resources. Charts contain a description of the package in the &lt;code&gt;Chart.yaml&lt;/code&gt; file, plus one or more templates containing Kubernetes manifest files in YAML.&lt;/p&gt;

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

&lt;p&gt;Kubernetes developers and DevOps teams are already using Helm for lots of robust use cases, pulled straight from the &lt;a href="https://github.com/helm/helm"&gt;Helm README on GitHub&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find and use popular software packaged as Helm Charts to run in Kubernetes&lt;/li&gt;
&lt;li&gt;Share your own applications as Helm Charts&lt;/li&gt;
&lt;li&gt;Create reproducible builds of your Kubernetes applications&lt;/li&gt;
&lt;li&gt;Intelligently manage your Kubernetes manifest files&lt;/li&gt;
&lt;li&gt;Manage releases of Helm packages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, Helm provides great benefit for Kubernetes-based organizations eager to speed up their workflows around creating the resources needed for a functional and effective cluster. Instead of rewriting the same common resources repeatedly or mismanaging multiple versions of a manifest, they can use Helm to deploy standard templates with their customizations layered on top.&lt;/p&gt;

&lt;p&gt;Unlike Kustomize, which utilizes a locally-stored base and patches YAML files, Helm is most commonly used to install Charts from a public repository like &lt;a href="https://artifacthub.io/packages/search?kind=0"&gt;Artifact Hub&lt;/a&gt;. For example, Helm simplifies the process of installing the &lt;a href="https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack"&gt;kube-prometheus-stack&lt;/a&gt;, which deploys end-to-end Kubernetes cluster monitoring with Prometheus, into just three commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What are the challenges of working with Helm charts?
&lt;/h2&gt;

&lt;p&gt;Three commands to install three thousand lines of Kubernetes manifest YAML. For all the advantages Helm creates in terms of “time to deployment,” there are a few headaches that may be experienced in abstraction, visibility, and debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Abstraction&lt;/strong&gt;: Helm charts are complex groups of rules, configurations, and resources, but the CLI tooling and public repositories make it remarkably easy to deploy to your production environment—for better or worse. In its default settings, &lt;a href="https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack"&gt;kube-prometheus-stack&lt;/a&gt; has nearly 3,000 lines of YAML code—how’s that for 1000X abstraction?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visibility&lt;/strong&gt;: Most developers and DevOps engineers using Helm will deploy resources and services without ever reading a single line of YAML—which can be extremely freeing or monstrously frustrating, depending on how the deployment goes. And Helm doesn’t make it particularly easy to view and analyze the manifests and templates it deploys by default. Your best option is to manually run &lt;code&gt;helm show values&lt;/code&gt;, which only gives you the default part of the picture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging&lt;/strong&gt;: For most workflows, the only way to understand what kind of manifests and resources you’re dealing with is by running Helm with &lt;code&gt;helm install --dry-run --debug&lt;/code&gt; and hoping you get some meaningful information from the resulting manifest file. Just one extra (and often unnecessary) step that gets in the way of development velocity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customization&lt;/strong&gt;:  Helm charts include a &lt;code&gt;values.yaml&lt;/code&gt; file that includes the parameters available for customization. The &lt;code&gt;values.yaml&lt;/code&gt; file can be quite complicated if the developer wants to add flexibility, but it is not totally flexible: anything not included in the file won’t be parameterizable. Do you want to add a label to the pods for cost management? Bad luck unless the chart already includes it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does Monokle Desktop help with deploying to Kubernetes via Helm?
&lt;/h2&gt;

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

&lt;p&gt;Monokle Desktop is a cross-platform desktop app that helps DevOps teams and developers define, compare, and audit the desired and actual states of their Kubernetes cluster. By layering Kubernetes configuration management and version control into your existing processes around building, optimizing, and troubleshooting complex Kubernetes manifests, Monokle helps you deploy faster and error-free.&lt;/p&gt;

&lt;p&gt;And we’ve built Monokle Desktop to be the perfect accompaniment to Helm charts—its configuration management and rich diffs on current vs. future cluster state solves all your core problems around using Helm while retaining the streamlining and simplification you need to work effectively. That starts with &lt;a href="https://kubeshop.github.io/monokle/helm/"&gt;native support&lt;/a&gt; for creating, analyzing, debugging, and deploying Helm charts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Navigate your Helm charts
&lt;/h3&gt;

&lt;p&gt;When you add a folder with Helm charts to Monokle, it immediately organizes your &lt;code&gt;Chart.yaml&lt;/code&gt;, &lt;code&gt;values.yaml&lt;/code&gt;, and template files as shown in the screenshot above. You can see and edit the source code for any selected resource, file or template in the &lt;strong&gt;Editor&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Since Monokle understands your Helm templates and their usage of properties provided in your values files, you can interactively identify where properties referenced in your templates are defined:&lt;/p&gt;

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

&lt;p&gt;And correspondingly hovering a property in a values file will show you which template(s) that use it:&lt;/p&gt;

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

&lt;p&gt;Monokle will also help you identify any property references that might be invalid - and since all validation is in real-time you can edit your templates and get corresponding feedback that your errors are fixed accordingly.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Preview and debug Helm charts
&lt;/h3&gt;

&lt;p&gt;Click the &lt;strong&gt;Preview&lt;/strong&gt; button next to any &lt;code&gt;values.yaml&lt;/code&gt; file to run Helm on the selected file and show the generated resources in the &lt;strong&gt;Navigator&lt;/strong&gt;. Select a resource to show its generated YAML in the &lt;strong&gt;Editor&lt;/strong&gt;, and use the popups next to each resource to explore how it interacts with others on either side of an incoming/outgoing link.&lt;/p&gt;

&lt;p&gt;Through the incoming/outgoing links icons that appear before or after your generated resources, you can quickly understand how the deployments, jobs, pods, and more are interconnected. &lt;/p&gt;

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

&lt;p&gt;You can of course edit any file or template in your Helm Chart and re-run the preview, which helps you immediately understand how your changes impact the generated YAML manifest and, ultimately, your Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;It’s a perfect way to make meaningful changes or perform debugging in a controlled, highly-visible environment. Catch bugs before deploying to production or share your Helm chart with others.&lt;/p&gt;

&lt;p&gt;Monokle’s Helm preview feature is also customizable—you can even have multiple preview configurations based on your needs. You can select which files to use (and in what order), choose between &lt;code&gt;helm template&lt;/code&gt; and &lt;code&gt;helm install&lt;/code&gt;, and set other environment variables. Monokle then shows you the complete command it’ll run to create the preview for full visibility.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Example: Defining releases with Helm
&lt;/h3&gt;

&lt;p&gt;A few months ago, you deployed v1.0 of your web application, which consisted of 20 Kubernetes resources. You defined everything in a Helm chart, including a few manifests that serve as templates for multiple resources that require a few small tweaks depending on whether you’re deploying to staging or production.&lt;/p&gt;

&lt;p&gt;After the v1.0 release, you immediately got started on v2.0. Along the way, Monokle Desktop’s IDE features, like &lt;a href="https://kubeshop.github.io/monokle/resource-validation/"&gt;resource validation&lt;/a&gt; and the &lt;a href="https://kubeshop.github.io/monokle/form-editor/"&gt;resource form editor&lt;/a&gt;, helped you quickly write new code and prevent any basic YAML syntax errors.&lt;/p&gt;

&lt;p&gt;But now that you think you’re ready to launch v2.0, it’s the perfect time to put Monokle into Preview mode to explore the changing relationships and the generated manifest files visually. &lt;/p&gt;

&lt;p&gt;Why is this an important step? Because of some new efficiencies, you added to your chart, your web app now only needs 15 Kubernetes resources.&lt;/p&gt;

&lt;p&gt;You’re confident that it works, but it’s a dramatic change. With Monokle’s Helm preview and resource navigation tools, you have full visibility into your chart’s inner workings, but you don’t have to scan multiple YAML files or do dry runs on the CLI to debug the output.&lt;/p&gt;

&lt;p&gt;You can even click the &lt;strong&gt;Diff&lt;/strong&gt; button to visualize changes in how specific resources will get deployed to your cluster.&lt;/p&gt;

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

&lt;p&gt;It’s the confidence you need to push v2.0 into your version control and prove, through your CI/CD pipeline, that you can deliver a powerfully functional Kubernetes cluster the first time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps for Monokle
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/orgs/kubeshop/projects/29/views/8"&gt;Monokle Desktop roadmap&lt;/a&gt; is full of additions to our functional support for Helm. We are adding support for templates, repo management, and many other features that will help you create your own Helm charts easily, fast, and with confidence.&lt;/p&gt;

&lt;p&gt;Join the conversation and help us by suggesting functions that will make your job easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Take the Helm with Monokle
&lt;/h2&gt;

&lt;p&gt;To get started, hop over to our &lt;a href="https://monokle.kubeshop.io/download"&gt;downloads page&lt;/a&gt; to get Monokle for macOS, Windows, or Linux. If you don’t already have &lt;a href="https://helm.sh/docs/intro/install/"&gt;Helm installed&lt;/a&gt;, you should start there as well.&lt;/p&gt;

&lt;p&gt;Whether you’re developing new Helm charts to share with the Kubernetes community or modifying the charts you get from Artifact Hub, we’d love to hear about your experiences with our Manifest IDE. Join us on &lt;a href="https://discord.gg/6zupCZFQbe"&gt;Discord&lt;/a&gt; to share details about your workflows and chat with other Kubernetes developers who are eager to help their Helm-loving comrades better manage manifests at scale.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>kubernetes</category>
      <category>tooling</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
