<?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: Jake Page</title>
    <description>The latest articles on DEV Community by Jake Page (@jakepage91).</description>
    <link>https://dev.to/jakepage91</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%2F956307%2F8b2d3ab8-6673-4342-8628-8f2a866e025e.png</url>
      <title>DEV Community: Jake Page</title>
      <link>https://dev.to/jakepage91</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jakepage91"/>
    <language>en</language>
    <item>
      <title>Four Layers of Validation in Kubernetes with Claude Code</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Thu, 21 May 2026 13:37:08 +0000</pubDate>
      <link>https://dev.to/metalbear/four-layers-of-validation-in-kubernetes-with-claude-code-175k</link>
      <guid>https://dev.to/metalbear/four-layers-of-validation-in-kubernetes-with-claude-code-175k</guid>
      <description>&lt;p&gt;Earlier this year, Moltbook, a social network for AI agents, launched, trended, and became a cautionary tale within the same week. Security researchers at Wiz &lt;a href="https://www.wiz.io/blog/exposed-moltbook-database-reveals-millions-of-api-keys" rel="noopener noreferrer"&gt;found a Supabase API key&lt;/a&gt; sitting in its client-side JavaScript, which was the database’s only access control, with no Row Level Security to narrow what that key could reach. The result: 1.5 million API tokens, 35,000 email addresses, and thousands of private messages exposed to anyone with a browser console.&lt;/p&gt;

&lt;p&gt;Moltbook was a greenfield project with no review process. The same class of mistake is far more serious when AI-generated code lands inside applications that already have pre-existing users, real data, and an existing trust surface. That’s &lt;a href="https://www.businessinsider.com/google-ai-generated-code-75-gemini-agents-software-2026-4" rel="noopener noreferrer"&gt;increasingly the reality&lt;/a&gt;: as organizations adopt AI coding agents, more and more AI-generated code is landing directly in production services that already hold credentials and personal details of your users. A &lt;a href="https://talent500.com/blog/ai-generated-code-trust-and-verification-gap/" rel="noopener noreferrer"&gt;recent survey&lt;/a&gt; found that 95% of developers don’t fully trust AI-generated code, while only 48% consistently review it before committing, yet it’s shipping regardless.&lt;/p&gt;

&lt;p&gt;Static review tools catch only some classes of issues: common CVEs, dependency hygiene, style violations, deterministic anti-patterns. What they can’t see are things like the actual name of your Kubernetes Secret in this cluster, whether your auth middleware is wired into the right route in this service, whether the request a real user will send makes it through the new code path without breaking something downstream.&lt;/p&gt;

&lt;p&gt;Closing that gap takes four independent layers: &lt;em&gt;AI agent skills&lt;/em&gt; that shape what gets generated, &lt;em&gt;commands&lt;/em&gt; that audit what was generated, &lt;em&gt;integration tests&lt;/em&gt; that hit staging endpoints, routing traffic to your local code, and &lt;em&gt;preview environments&lt;/em&gt; that let a human review the change against staging dependencies before merging.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Skills (passive, shaping what gets generated)
&lt;/h2&gt;

&lt;p&gt;Most AI coding assistants let you write down rules that shape generation. The simplest mechanism is a config file that the assistant loads into context on every prompt: &lt;code&gt;.cursorrules&lt;/code&gt; in Cursor, &lt;code&gt;CLAUDE.md&lt;/code&gt; in Claude Code, &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; in GitHub Copilot. Drop NEVER/ALWAYS rules in there and the AI follows them. The downside is that those files load on every prompt, even when you’re working on something unrelated, and every rule you add costs tokens whether or not it’s relevant.&lt;/p&gt;

&lt;p&gt;Claude Code goes a step further with &lt;strong&gt;skills&lt;/strong&gt;: structured rule sets that ship as plugins (a directory with a &lt;code&gt;SKILL.md&lt;/code&gt; and supporting reference files). Each skill has a description, and the model pulls a skill into context only when your prompt matches what that skill is meant to cover. If a skill never gets matched against the prompt, it never gets loaded, and you don’t pay for the tokens it would consume. We’ve already shipped &lt;a href="https://metalbear.com/blog/claude-code-skills-for-kubernetes/" rel="noopener noreferrer"&gt;six skills for AI agents working with mirrord&lt;/a&gt;, and this post adds a seventh focused on validation: &lt;a href="https://github.com/metalbear-co/k8s-validation-plugin" rel="noopener noreferrer"&gt;k8s-validation&lt;/a&gt;, an open-source set of NEVER/ALWAYS rules for code that runs inside a Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;The skill covers two halves: the cluster-level concerns (Secrets, RBAC, pod hardening, NetworkPolicies, supply chain, file handling) and the application-level concerns that determine whether the workload behaves correctly inside the cluster (HTTP and parameter handling, auth, output sanitisation, API contracts, env-var configuration, test coverage).&lt;/p&gt;

&lt;h3&gt;
  
  
  Before and after
&lt;/h3&gt;

&lt;p&gt;Without the skill, the model has no way of knowing about things like Kubernetes Secrets already mounted as environment variables in your pod, auth decorators other handlers in your service already use, or PII-sanitization utilities your team has already built. So it does the obvious thing: hardcodes the API key, skips the auth check, and returns the LLM output directly. With the skill loaded, the following prompt (“add a &lt;code&gt;/summarise&lt;/code&gt; endpoint that calls OpenAI’s API”) produces something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;utils.sanitize&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;filter_pii&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/summarise&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;POST&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="nd"&gt;@require_auth&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;summarise&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summarise: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;summary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;jsonify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;filter_pii&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;)})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;filter_pii&lt;/code&gt; here is a stand-in for any utility that strips personally identifiable information (names, SSNs, emails, etc.) out of free text. Different teams build this differently; the &lt;a href="https://github.com/microsoft/presidio" rel="noopener noreferrer"&gt;Microsoft Presidio&lt;/a&gt; library is one of the more common open-source starting points.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Three differences from what the model would produce without the skill: the key comes from an environment variable backed by a Kubernetes Secret, the endpoint sits behind &lt;code&gt;@require_auth&lt;/code&gt;, and the LLM output runs through &lt;code&gt;filter_pii&lt;/code&gt; before going back to the user.&lt;/p&gt;

&lt;h3&gt;
  
  
  What skills can’t do
&lt;/h3&gt;

&lt;p&gt;Skills shape generation, but they don’t verify anything.&lt;/p&gt;

&lt;p&gt;In the example above, the AI correctly followed the skill: it read the API key from the environment, applied &lt;code&gt;@require_auth&lt;/code&gt;, and called &lt;code&gt;filter_pii&lt;/code&gt; from &lt;code&gt;utils.sanitize&lt;/code&gt;. But the skill has no way to verify that &lt;code&gt;filter_pii&lt;/code&gt; actually works. If the utility in your codebase only strips email addresses and misses phone numbers, the skill can’t know that. A user document containing a phone number sails straight through the filter and into the response, and the code looks correct at every layer the skill can see.&lt;/p&gt;

&lt;p&gt;Skills set a floor by preventing the obvious structural mistakes. They’re instructions to a model, not checks against reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Commands (active, checking what was generated)
&lt;/h2&gt;

&lt;p&gt;Where skills shape what the model generates, commands check what already exists. They’re explicitly invoked by a developer, an agent, or a CI step, and they run a defined set of checks against the code in front of them.&lt;/p&gt;

&lt;p&gt;The same install from Layer 1 also ships a slash command: &lt;code&gt;/k8s-validation:audit&lt;/code&gt;. It scans your codebase for the same NEVER/ALWAYS rules the skill enforces during generation, traces data flow through handlers and queries, and classifies each finding by severity. Skills don’t always load (a vague prompt, or a quick edit to a file the model didn’t classify as Kubernetes-adjacent, and the rules never enter context). The audit is the backstop: it runs on the code regardless of how the code got written.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; /k8s-validation:audit content-api/

CRITICAL 2 | HIGH 4 | MEDIUM 1 | INFO 0

[CRITICAL] src/routes/summarise.py: Hardcoded OpenAI API key → Use os.environ
[CRITICAL] src/routes/download.py: User filename in path without sanitization → Use secure_filename()
[HIGH]     src/routes/summarise.py: No authentication middleware → Add @require_auth
[HIGH]     k8s/deployment.yaml: No SecurityContext defined → Add runAsNonRoot, drop ALL
[HIGH]     src/routes/summarise.py: Reads OPENAI_API_KEY but no manifest defines it → Add to deployment.yaml env block
[HIGH]     src/routes/summarise.py: New endpoint with no integration test → Add test in tests/integration/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that the output mixes security findings (hardcoded key, missing SecurityContext) with correctness findings, meaning “does the code do what was asked, given the rest of the system” (the Kubernetes deployment manifest doesn’t define the env var the code reads; the new endpoint shipped without an integration test). Both halves matter for AI-generated code.&lt;/p&gt;

&lt;p&gt;Because the audit is a command you run rather than a rule the model loads, the same invocation works in three places: a developer runs it before opening a PR, an agent runs it as part of its own loop after generating code, and CI runs it as a merge gate. You can wire it into one, two, or all three.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Validation Workflow&lt;/span&gt;
After generating or modifying any Kubernetes-related code, run &lt;span class="sb"&gt;`/k8s-validation:audit`&lt;/span&gt;
on the changed files. If any CRITICAL findings exist, fix them before proceeding.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What commands can’t do
&lt;/h3&gt;

&lt;p&gt;The audit is still static analysis. It can find “you hardcoded a secret” or “you’re missing a SecurityContext,” but it can’t tell you whether your &lt;code&gt;filter_pii&lt;/code&gt; regex actually catches the PII your users will send, or whether the environment variable you’re reading will resolve to a value in your staging cluster. Commands check the shape of the code, not the behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Integration tests (runtime, proving it works)
&lt;/h2&gt;

&lt;p&gt;Your team probably already has integration tests that hit your API endpoints, check response shapes, and verify that authentication rejects bad credentials. These tests encode what “correct behavior” actually means for your application.&lt;/p&gt;

&lt;p&gt;The bottleneck is running them. Locally, you mock your database, your auth service, your message queue, and hope the mocks match reality. In CI, each cycle takes 5 to 10 minutes. For a human pushing a few times a day, it’s already frustrating enough. For an AI agent trying to fix a failing test, it’s a feedback loop far too slow to learn from: the agent burns tokens on every iteration, and the integration bugs only surface after the change has been written, pushed, and built.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metalbear.com/mirrord/" rel="noopener noreferrer"&gt;mirrord&lt;/a&gt; changes this equation by letting your local process stand in for a deployed pod. Your local code gets the environment variables from the target pod, the same cluster-level files it has access to, and the same view of internal services. In &lt;a href="https://metalbear.com/mirrord/docs/using-mirrord/incoming-traffic/steal-https" rel="noopener noreferrer"&gt;steal mode&lt;/a&gt;, traffic destined for the targeted pod is intercepted and routed to your local process instead of whatever’s deployed in staging. Your existing integration tests, pointed at staging endpoints as usual, now run against your local code in seconds, not minutes.&lt;/p&gt;

&lt;p&gt;The same pattern scales horizontally. Because mirrord can split a single pod’s incoming traffic between many local processes using header-based filters, multiple agents (or developers) can iterate against the same staging cluster simultaneously, each one routing its own slice of the traffic to its own local code. One staging environment, many concurrent agents, real downstream services for all of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  What this catches that the other layers can’t
&lt;/h3&gt;

&lt;p&gt;Consider a prompt like “have &lt;code&gt;/summarise&lt;/code&gt; fetch the document from our content-store service first.” The agent writes a handler that calls &lt;code&gt;http://content-store/documents/{id}&lt;/code&gt; and reads &lt;code&gt;response.json()["title"]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The catch: content-store moved to v2 months ago and now returns &lt;code&gt;{"document": {"name": ..., "text": ...}}&lt;/code&gt;. The flat title/body shape only exists in the AI’s training data. Skills generated structurally clean code (good). The audit confirmed the call was made and the response was consumed (also good). Neither layer knows what shape &lt;code&gt;content-store&lt;/code&gt; actually returns today.&lt;/p&gt;

&lt;p&gt;The setup to fix this is two processes. You or your AI agent starts a mirrord session, your e2e tests run as normal against the staging content-api endpoint:&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;# Terminal 1, run your local content-api in place of the deployed pod&lt;/span&gt;
mirrord &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;--target&lt;/span&gt; deploy/content-api &lt;span class="nt"&gt;--steal&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; python &lt;span class="nt"&gt;-m&lt;/span&gt; content_api

&lt;span class="c"&gt;# Terminal 2, run the existing integration suite against staging as usual&lt;/span&gt;
pytest tests/integration/test_summarise.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the test hits staging’s &lt;code&gt;content-api&lt;/code&gt; endpoint, mirrord steals the request and reroutes it to your local process. The local handler calls &lt;code&gt;http://content-store/documents/...&lt;/code&gt;, and that outbound call also routes through mirrord, hitting the real content-store in staging. The real service returns &lt;code&gt;{"document": {"name": ..., "text": ...}}&lt;/code&gt;. The local code does &lt;code&gt;response.json()["title"]&lt;/code&gt; and crashes with &lt;code&gt;KeyError&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You fix the code to read the new shape, rerun the test, it passes. The bug surfaces in your local code, against real downstream services, in seconds, instead of after a deploy cycle. The same pattern works for any other dependency the code touches: environment variables from the pod, files from mounted volumes, database queries against the real Postgres. mirrord runs your code, the cluster supplies its real environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: Human review in a real environment
&lt;/h2&gt;

&lt;p&gt;When the agent opens the PR, a human should still get to see the change running in a real environment, not just read the diff. mirrord’s &lt;a href="https://metalbear.com/mirrord/preview-environments/" rel="noopener noreferrer"&gt;Preview environments&lt;/a&gt; make that easy: a GitHub Action spins up an isolated pod in your staging cluster running the PR’s code, connected to all the real downstream services, and scoped to that PR via an environment key. &lt;/p&gt;

&lt;p&gt;Reviewers can click through the actual feature instead of inferring behavior from the code or having to run the whole application locally. Most of the failures the previous three layers don’t catch, UX regressions, surprising interactions, “looks right but feels wrong”, show up the first time a human uses the thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting it together: agents handle layers 1–3, humans handle layer 4
&lt;/h2&gt;

&lt;p&gt;Layers 1 through 3 can be run by the agent itself. Instead of generating code, opening a PR, and hoping CI catches the issues, the agent generates code shaped by skills, runs &lt;code&gt;/k8s-validation:audit&lt;/code&gt; to check for structural issues, runs the integration tests via mirrord against real infrastructure, and fixes any failures before committing. The agent doesn’t even have to write the test from scratch: Layer 1’s validation skill includes a rule that any new HTTP handler must come with an integration test, so the test gets generated alongside the endpoint. Layer 3 just runs it against real infrastructure.&lt;/p&gt;

&lt;p&gt;Layer 4 is the handoff. Once the agent has passed its own checks, it opens a PR and a human gets a live preview environment to click through rather than a diff to infer from. The failures that surface at that stage, UX regressions, surprising interactions, things that look right but feel wrong are exactly the ones that didn’t show up in the previous three layers.&lt;/p&gt;

&lt;p&gt;We’ve documented the concrete setup (per-service mirrord configs, helper scripts, and an &lt;code&gt;AGENTS.md&lt;/code&gt; that tells the agent which script to run) in our &lt;a href="https://metalbear.com/mirrord/docs/use-cases/using-mirrord-with-ai" rel="noopener noreferrer"&gt;mirrord with AI agents guide&lt;/a&gt;. The broader argument for why this matters, including the token cost of agents stuck in a feedback-less loop, is in &lt;a href="https://metalbear.com/blog/how-to-prevent-token-burn-using-mirrord-with-e2e-tests/" rel="noopener noreferrer"&gt;How to prevent token burn using mirrord with e2e tests&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adopting the layers
&lt;/h2&gt;

&lt;p&gt;The four layers are independent. Pick the ones that close your biggest gap and add the others when the next failure teaches you what’s still missing.&lt;/p&gt;

&lt;p&gt;Install the validation skill with &lt;code&gt;/plugin install k8s-validation@metalbear-co/k8s-validation-plugin&lt;/code&gt; in Claude Code, or as a local rules directory for Cursor and GitHub Copilot (see the &lt;a href="https://github.com/metalbear-co/k8s-validation-plugin" rel="noopener noreferrer"&gt;repo README&lt;/a&gt;). The &lt;code&gt;/k8s-validation:audit&lt;/code&gt; command ships in the same install. For the runtime layer, &lt;a href="https://metalbear.com/mirrord/docs/getting-started/what-is-mirrord" rel="noopener noreferrer"&gt;install mirrord&lt;/a&gt; and wrap your local service with &lt;code&gt;mirrord exec --target deploy/&amp;lt;service&amp;gt; --steal -- &amp;lt;run-command&amp;gt;&lt;/code&gt;. For preview environments on each PR, the feature is included in &lt;a href="https://metalbear.com/mirrord/preview-environments/" rel="noopener noreferrer"&gt;mirrord for Teams&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Each layer closes a different gap. Stop at any point and you’ve made things better than they were.&lt;/p&gt;

&lt;p&gt;The skills are open source. If your AI assistant generates something the skills don’t catch, &lt;a href="https://github.com/metalbear-co/k8s-validation-plugin" rel="noopener noreferrer"&gt;open a PR&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>ai</category>
      <category>software</category>
      <category>programming</category>
    </item>
    <item>
      <title>Skin In The Game</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Sat, 10 Jan 2026 19:29:56 +0000</pubDate>
      <link>https://dev.to/jakepage91/skin-in-the-game-4686</link>
      <guid>https://dev.to/jakepage91/skin-in-the-game-4686</guid>
      <description>&lt;p&gt;A note to self to &lt;strong&gt;stop explaining&lt;/strong&gt; technology and &lt;strong&gt;start building&lt;/strong&gt; with it.&lt;/p&gt;

&lt;p&gt;I’m a pretty lucky guy. &lt;em&gt;Curiosity&lt;/em&gt; has put me in incredible situations throughout my life. I’ve learned languages, lived in interesting places, and about six years ago I decided I wanted to learn how the internet worked. That curiosity grew into a career in &lt;em&gt;DevOps&lt;/em&gt;, &lt;em&gt;cloud&lt;/em&gt;, and &lt;em&gt;Kubernetes&lt;/em&gt; that I’m really proud of.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Today, as a DevRel, curiosity drives everything I do.&lt;/strong&gt; It’s a role that changes a lot from company to company, and in my experience it even changes week to week. One week I’m preparing a new use case for a blog post or conference talk, the next I’m collaborating with colleagues on webinars and content initiatives, or acting as a bridge between marketing, product, and customer success. It’s a job where curious people thrive, and that’s been my experience too.&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%2F7w3ahfinxu45m2fv5t9x.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%2F7w3ahfinxu45m2fv5t9x.png" alt="Speaking at SREDay Lisbon" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s a downside though, or at least there has been one for me. &lt;strong&gt;My career didn’t include a long, distinct “developer phase.”&lt;/strong&gt; I didn’t spend years building products from scratch, shipping them, breaking them, and living with the consequences. That’s not a prerequisite for a meaningful career in tech, but it is a gap I’ve become increasingly aware of.&lt;/p&gt;

&lt;p&gt;As my curiosity about infrastructure, Kubernetes, and cloud native tooling deepened, so did my awareness of the limits of my perspective. I could explain systems, patterns, and trade offs, but I wasn’t always the one feeling them. &lt;strong&gt;I was close to the work, but not always inside it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That gap becomes most obvious when I need an example of a business case during a talk for example. When I explore a new Kubernetes architecture or a genuinely interesting developer tool, &lt;strong&gt;I find myself falling back on the same safe demos, a todo list, a polling app, a habit tracker.&lt;/strong&gt; They’re familiar, low risk, and easy to explain, but they’re also &lt;strong&gt;uninteresting&lt;/strong&gt; and far &lt;strong&gt;too theoretical&lt;/strong&gt;.&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%2F1i4t1bo05gzkt4k6vd7i.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%2F1i4t1bo05gzkt4k6vd7i.png" alt="Yet another To-Do list app" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I work for &lt;strong&gt;MetalBear&lt;/strong&gt;, the company behind &lt;a href="https://metalbear.com/mirrord/" rel="noopener noreferrer"&gt;mirrord&lt;/a&gt;, a tool that fundamentally changes how developers work with Kubernetes. &lt;strong&gt;It lets your local process interact with real systems, real traffic, real dependencies in a remote kubernetes environment, without having to containerize or trigger CI/CD.&lt;/strong&gt; And yet, too often, I demonstrate it using those same tired stock applications, adding dark mode to a simple polling app doesn’t do justice to tools designed for complex, high stakes environments.&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%2F0dsk6l7evy3aso6egu8s.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%2F0dsk6l7evy3aso6egu8s.png" alt="mirrord diagram" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At times, it’s made me feel less &lt;strong&gt;like a practitioner and more like a historical tour guide&lt;/strong&gt;, passively explaining how things work, how others use them, what could be built, without actively shaping what exists today.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;And honestly, who wants to be a historian of something that happened last week when you can help influence what happens next?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What I want now is simple, &lt;strong&gt;I want to be a DevRel with a bias for action.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If for no other reason than timing, &lt;strong&gt;this feels like the moment to do it.&lt;/strong&gt; With the sheer volume of information, resources, and AI tools available today, the distance between an idea and a working project has never been smaller. Feedback loops are tighter, tooling is better, and the cost of trying and failing is lower than it’s ever been.&lt;/p&gt;

&lt;p&gt;I want to stop talking about Kubernetes and cloud native tooling purely as a commentator and start engaging with them as someone who has skin in the game. Not just as a developer, but as someone responsible for identifying a real problem, articulating a solution, choosing the right tools, and seeing the entire process through from idea to delivery. I want to &lt;strong&gt;build projects that don’t just stand up in a conference talk&lt;/strong&gt;, but stand up to &lt;strong&gt;real users&lt;/strong&gt;, deal with real constraints, and real trade offs.&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%2Fbwpwoy09gnpaksi087iw.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%2Fbwpwoy09gnpaksi087iw.png" alt="Learn by actually doing" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of those projects will fail. Some will stall. Some might accidentally work. That’s fine. &lt;strong&gt;The point isn’t success, it’s participation, it’s having actual skin in the game.&lt;/strong&gt; It’s using the tools I talk about every day in pursuit of something useful to someone that actually could exist.&lt;/p&gt;

&lt;p&gt;It won’t be easy to fully inhabit the skin of a &lt;strong&gt;developer or a product owner&lt;/strong&gt;, and that’s exactly the point. I won’t just shoehorn a given tool or tech stack into a project because a conference calls for it. I’ll come at it from the &lt;strong&gt;maker perspective&lt;/strong&gt; and &lt;strong&gt;determine the best way forward for any given project.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don’t particularly care what label this puts on me. Developer. DevRel. DevOps engineer. None of that matters much. What matters is &lt;strong&gt;choosing to act, to build things that matter to someone,&lt;/strong&gt; to put ideas into the world before they’re fully polished, and to learn by being exposed to reality rather than protected from it.&lt;/p&gt;

&lt;p&gt;Building in public feels like the most honest way to do that. It raises the stakes, improve my capacity for real empathy, and it’ll &lt;strong&gt;force clarity&lt;/strong&gt;. If I want to understand developers better, the best way forward isn’t more explanations, it’s &lt;strong&gt;shared experience.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I plan to share this journey openly and regularly, what I’m building, what works, what doesn’t, and what I learn along the way. &lt;strong&gt;If this resonates with you, I’d genuinely love to hear from you.&lt;/strong&gt; If you’re also feeling the pull toward doing more and talking less, tell me what you’re thinking about building. What are you trying to validate, and what kind of value are you hoping to put into the world?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Happy 2026 everyone!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>kubernetes</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>Glasskube Launch week #2: The wrap up</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Wed, 18 Sep 2024 10:15:00 +0000</pubDate>
      <link>https://dev.to/distr/glasskube-launch-week-2-the-wrap-up-39gp</link>
      <guid>https://dev.to/distr/glasskube-launch-week-2-the-wrap-up-39gp</guid>
      <description>&lt;p&gt;And just like that, our second launch week is in the books. Trying to emulate the success of companies like &lt;a href="https://supabase.com/launch-week" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; and &lt;a href="https://signoz.io/launch-week/" rel="noopener noreferrer"&gt;SigNoz&lt;/a&gt; is a tall order, especially for a team that's still new to the launch week game. But one thing's for sure: successful launch weeks are a skill acquired through experience, and finding what works specifically for your project. We learned a ton from this one, and we're confident that future launches will be even more impactful.&lt;/p&gt;

&lt;p&gt;The best part? This launch was already a resounding success, delivering immense value. Before we dive into the key actions and outcomes, here's a quick TL;DR for those in a hurry.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🚀 We shared a new feature everyday on &lt;a href="https://x.com/glasskube/status/1833226176556634316" rel="noopener noreferrer"&gt;X&lt;/a&gt; and &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7239000640167784448/?actorCompanyId=83055300" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, check them out here. &lt;/li&gt;
&lt;li&gt;💖 We got so much valuable support and feedback on Hacker News &lt;/li&gt;
&lt;li&gt;🥉 We came in 3rd on Dev Hunt &lt;/li&gt;
&lt;li&gt;🎉 We organised our first &lt;a href="https://lu.ma/xmanowsv?tk=7MBmoi" rel="noopener noreferrer"&gt;San Fransisco Kubernetes meetup&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;📈 We gathered some unexpected and exciting metrics and feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s take each item and explore them a little bit more in detail&lt;/p&gt;

&lt;h2&gt;
  
  
  A feature a day 📅
&lt;/h2&gt;

&lt;p&gt;The theme for this launch week was loud and clear: Glasskube is GitOps ready! Most of the features we showcased support our new GitOps functionalities in one way or another. If you remember just one thing, let it be this: thanks to our latest features, Kubernetes package management can now be handled the GitOps way.&lt;/p&gt;

&lt;p&gt;Eager to get started? Check out the &lt;a href="https://github.com/glasskube/gitops-template" rel="noopener noreferrer"&gt;Glasskube GitOps template&lt;/a&gt; for a working example of what's possible.&lt;/p&gt;

&lt;p&gt;Here's a quick recap of the features we shared:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Glasskube is &lt;a href="https://glasskube.dev/blog/launch-week-number-2/#1-glasskube-is-gitops-ready-with-argocd" rel="noopener noreferrer"&gt;"GitOps ready"&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Glasskube &lt;a href="https://github.com/glasskube/gitops-template" rel="noopener noreferrer"&gt;GitOps template&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://glasskube.dev/docs/integration/renovate/" rel="noopener noreferrer"&gt;Renovate&lt;/a&gt; integration&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://glasskube.dev/products/hub/" rel="noopener noreferrer"&gt;Glasskube Hub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Glasskube &lt;a href="https://glasskube.dev/docs/design/package-scopes/" rel="noopener noreferrer"&gt;package scopes&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's dive deeper into each one!&lt;/p&gt;

&lt;h2&gt;
  
  
  Successful Show Hacker news launch 📰
&lt;/h2&gt;

&lt;p&gt;On Tuesday, we launched the GitOps template on &lt;a href="https://news.ycombinator.com/item?id=41502453" rel="noopener noreferrer"&gt;Show HN&lt;/a&gt;. We were blown away by the insightful engineers who gave it a go and came back with thought-provoking, challenging questions, the kind of feedback that's pure gold for us.&lt;/p&gt;

&lt;p&gt;Finding smart, generous people who dedicate time to giving valuable constructive feedback is rare, and we're incredibly lucky to have found it again in the Hacker News community.&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%2Fcsq8afg78g2m9sxolh4h.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%2Fcsq8afg78g2m9sxolh4h.png" alt="hacker news" width="633" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of this feedback even sparked GitHub issues and Discord conversations that have been incredibly fruitful and will undoubtedly leave a lasting mark on the project. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not on the Glasskube Discord server? Join us &lt;a href="https://discord.gg/STk5Z3nFmT" rel="noopener noreferrer"&gt;here&lt;/a&gt;! &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Top 3 dev hunt 🚀
&lt;/h2&gt;

&lt;p&gt;Launch weeks are the perfect time to test assumptions and explore new platforms and tools. This time, we decided to give &lt;a href="https://devhunt.org/tool/glasskube" rel="noopener noreferrer"&gt;DevHunt&lt;/a&gt; a shot, a platform similar to Product Hunt, but tailored towards developer tools. While the audience is smaller than on sites like Product Hunt, we figured it was worth a try. After all, it's not just about quantity, but the quality of the members on the site. And I have to admit, if you're building a developer tool, you might get fewer upvotes on DevHunt, but the potential to find users who are closer to a perfect fit for your target persona is much higher. We're thrilled to have landed in 3rd place!&lt;/p&gt;

&lt;h2&gt;
  
  
  Our first every San Francisco meetup 🌉
&lt;/h2&gt;

&lt;p&gt;Why not mix it up any throw in an IRL event into the mix too. On Thursday we celebrated our first ever Kubernetes, DevOps and Security related meetup in San Francisco with more than 100+ sign-ups. &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%2F6hjt28vrpvknhth2e2j8.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%2F6hjt28vrpvknhth2e2j8.png" alt="meetup" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We had three great speakers who took the stage to bring technically rich yet super egnaging talks on the following topics: &lt;/p&gt;

&lt;p&gt;​- &lt;a href="https://www.linkedin.com/in/gentele/" rel="noopener noreferrer"&gt;Lukas Gentele (Loft Labs)&lt;/a&gt;: Tenant Autonomy &amp;amp; Isolation In Multi-Tenant Kubernetes Clusters - A Comprehensive Guide&lt;br&gt;
​- &lt;a href="https://www.linkedin.com/in/pmigat/" rel="noopener noreferrer"&gt;Philip Miglinci (Glasskube)&lt;/a&gt;: The State of Package Management on Kubernetes&lt;br&gt;
​- &lt;a href="https://www.linkedin.com/in/ramiroberrelleza/" rel="noopener noreferrer"&gt;Ramiro Berrelleza (Okteto)&lt;/a&gt;: Your AI team doesn't need a platform, but a paved ramp sure can help!&lt;/p&gt;

&lt;p&gt;The turnout and the vibe were amazing. To cap the evening off we had a great networking session fueled by a generous amount of Pizza. We might have overdone it, but can you really ever have enough pizza? &lt;/p&gt;

&lt;p&gt;If you weren’t able to miss it, don’t worry. We will be organizing more and will make sure to explore other locations also. &lt;/p&gt;

&lt;p&gt;Thanks to everyone who joined!&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%2Fuc02tiurbe8y0srtas59.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%2Fuc02tiurbe8y0srtas59.png" alt="pizza picture" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Community feedback 🗣️
&lt;/h2&gt;

&lt;p&gt;While there are amazing companies that pull off launch weeks with seemingly endless reach and impact, this section highlights why any project, at any stage, should embrace them. The truth is, no level of social media reach or post impressions can replace real, tangible community feedback and action.&lt;/p&gt;

&lt;p&gt;A perfect example from this launch week is a community member who challenged the very conception of one of our newest features by spurring a conversation via &lt;a href="https://github.com/glasskube/glasskube/discussions/1220" rel="noopener noreferrer"&gt;GitHub discussions&lt;/a&gt;. This type of feedback is invaluable to us, and we genuinely welcome it. It's one of the main reasons we feel this launch week was so worthwhile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reaching key metrics 📊
&lt;/h2&gt;

&lt;p&gt;Even though this launch week was primarily about sparking conversations with real Glasskube users and gathering feedback, we're happy to report some interesting key metrics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Over 100% website view growth&lt;/li&gt;
&lt;li&gt;Over 10% increase in real user installations&lt;/li&gt;
&lt;li&gt;2 days featured on the Show Hacker News page&lt;/li&gt;
&lt;li&gt;20+ Glasskube cloud signups&lt;/li&gt;
&lt;li&gt;+2 new Glasskube contributors&lt;/li&gt;
&lt;li&gt;Over 2400 impressions on Dev Hunt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Launch weeks are like a finely tuned orchestra playing in sync. Each day requires well-planned, prepared, and executed actions. As the week progresses, you build momentum, using it to amplify your message. We're excited to apply everything we've learned to our next launch. Nobody said launch weeks are easy, but with careful planning, scheduling, and execution, you can create a beautiful symphony.&lt;/p&gt;

&lt;p&gt;Thanks for joining us on this ride, and we'll see you at the next one!&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>2024: A new frontier for Kubernetes package management</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Mon, 19 Aug 2024 10:27:27 +0000</pubDate>
      <link>https://dev.to/distr/2024-a-new-frontier-for-kubernetes-package-management-28m5</link>
      <guid>https://dev.to/distr/2024-a-new-frontier-for-kubernetes-package-management-28m5</guid>
      <description>&lt;p&gt;2024 has been an action-packed year for &lt;a href="https://glasskube.dev/" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt;. In February, we launched a Kubernetes manager that was initially developed internally by our team following an unsuccessful product launch that failed to take off in part due to limitations in currently used package management tooling. After this lukewarm Kubernetes operator debut, Glasskube founders &lt;a href="https://www.linkedin.com/in/pmigat/" rel="noopener noreferrer"&gt;Philip&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/louisnweston/" rel="noopener noreferrer"&gt;Louis&lt;/a&gt; shared their launch post-mortem on Hacker News. They discovered that many others were experiencing similar frustrations with the existing package management solutions for Kubernetes. Recognizing this shared pain, a product pivot became inevitable, and the Glasskube package manager began to take shape.&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%2F8z9kjsjsff7p8jtertau.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%2F8z9kjsjsff7p8jtertau.png" alt="the-start" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, it’s only mid-August of the same year, and we are already closing in on 1.5 million downloads, 2.6k GitHub stars, and 50+ contributors. We've witnessed significant growth in adoption, features, and use cases. As we continue to evolve, we wanted to take a moment to reflect on the work we've accomplished so far. This blog post serves as a comprehensive update, a flag in the road, to share everything you need to know about the current state of Glasskube, what’s on the horizon, and how you can help shape the future of Kubernetes package management.&lt;/p&gt;

&lt;p&gt;Welcome to the new frontier of Kubernetes Package Management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why Kubernetes needs better package management
&lt;/h3&gt;

&lt;p&gt;Since its inception &lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt; as a container orchestration system has never stopped growing in popularity and its adoption keeps increasing. In recent years, the number of &lt;a href="https://landscape.cncf.io/" rel="noopener noreferrer"&gt;available packages&lt;/a&gt; has grown from about 100 to over 800. This growth by all means is very impressive and shows the maturity of the Kubernetes ecosystem, but it has also shined a light on the problems with current package management tools. Developers often struggle with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Complex and highly bespoke workflows&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Time-consuming and many times manual processes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An over-reliance on current package manager tooling that leave a lot to be desired.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These issues can lead to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;More work for operations teams&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Non-scalable workflows&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Possible security risks&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's clear that Kubernetes needs a way to manage packages that evolve in the way that modern-day Kubernetes clusters are used, that is in a more automated and overall declarative way.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Glasskube?
&lt;/h3&gt;

&lt;p&gt;Glasskube is an open-source package manager made for Kubernetes. It aims to make installing, updating, and setting up packages easier and faster. In fact, it can be up to 20 times quicker than tools like Helm or Kustomize.&lt;/p&gt;

&lt;p&gt;Glasskube took ideas from easy-to-use package managers like &lt;code&gt;Homebrew&lt;/code&gt; and &lt;code&gt;npm&lt;/code&gt;. It offers two ways to manage packages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A graphical user interface (GUI)&lt;/strong&gt;&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%2Fjq8s43psmq7iirfelktz.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%2Fjq8s43psmq7iirfelktz.png" alt="Glasskube-UI" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A command-line interface (CLI)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube serve # to access the Glasskube UI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Current tools: Helm and Kustomize
&lt;/h3&gt;

&lt;p&gt;Helm and Kustomize are two main tools for managing Kubernetes packages. They help set up and run applications in Kubernetes, but work differently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Helm&lt;/strong&gt; uses templates to create Kubernetes yaml files. It packages apps into "charts," which are sets of YAML files. Some of it’s benefits are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Configuring complex apps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It shines at app installation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rolling back changes is straightforward&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It’s highly adopted&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Kustomize&lt;/strong&gt; takes a different approach and many times works in conjunction with Helm. It lets users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Set up basic app configurations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add changes for different environments&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid complex templating&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Problems with existing tools
&lt;/h3&gt;

&lt;p&gt;While Helm and Kustomize are useful, they can cause issues for developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Helm&lt;/strong&gt; can be tricky:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hard to learn due to complex templates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Customizing apps for different setups can be confusing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CRD updates are not possible&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updates are clunky&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Helm is inherently one-sided, after installation its job is done.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Kustomize&lt;/strong&gt; has its own problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No built-in way to manage packages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users need other tools to share their setups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handling complex dependencies can be hard&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Less automated than Helm for managing app lifecycles&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These issues show why a simpler package manager for Kubernetes is needed. This is where Glasskube comes in, aiming to make the whole process easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Care to support us?
&lt;/h3&gt;

&lt;p&gt;If this is the first time you've heard of Glasskube, we are working to build the next-generation &lt;code&gt;Package Manager for Kubernetes&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="star-gif" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⭐️ Star us on &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; 🙏&lt;/p&gt;

&lt;h2&gt;
  
  
  Glasskube explained
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How Glasskube works
&lt;/h3&gt;

&lt;p&gt;Glasskube makes managing Kubernetes packages easier. It offers two ways to use it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A graphical interface (GUI)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A command-line interface (CLI)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Glasskube uses a central package repository called the &lt;a href="https://glasskube.dev/products/hub/" rel="noopener noreferrer"&gt;Glasskub Hub&lt;/a&gt; that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Aware of package dependencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Works well with GitOps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updates packages automatically&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allows for multiple public and private package repositories to be referenced   &lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fa6so2y2e6c6crcnc9mqu.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%2Fa6so2y2e6c6crcnc9mqu.png" alt="glasskube-archetecture" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Probably most importantly, Glasskube has client and server-side components. The server-side components constantly track the health status and desired state of the installed packages. The server-side components are the:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PackageController&lt;/strong&gt;: communicates with the Kubernetes API to deploy and reconcile packages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PackageInfoController:&lt;/strong&gt; reads package manifests from the configured backend package repositories to determine the state of truth of the cluster packages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Main features
&lt;/h3&gt;

&lt;p&gt;Glasskube has several key features:&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%2Fzjlf9dodm4focl1fwshl.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%2Fzjlf9dodm4focl1fwshl.png" alt="main-features" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Solving common issues
&lt;/h3&gt;

&lt;p&gt;Glasskube directly addressed gaps that other Kubernetes package managers have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It's easier to use than Helm, which can be hard for new users&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It handles dependencies better than Kustomize, which doesn't have built-in package management&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It works well with GitOps, making it easier to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Roll back changes&lt;/li&gt;
&lt;li&gt;  Upgrade apps&lt;/li&gt;
&lt;li&gt;  Work together as a team&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Package scopes help to be more efficient with package installation and package sharing. Ex. if multiple packages depend on cert-manager, one instance will be enough to serve more than one package.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Have easy access to packages with frontends without having to manually portforward&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to set up Glasskube
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What you need to install
&lt;/h3&gt;

&lt;p&gt;Before you start, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A working Kubernetes cluster, &lt;a href="https://minikube.sigs.k8s.io/docs/start/?arch=%2Fmacos%2Farm64%2Fstable%2Fbinary+download" rel="noopener noreferrer"&gt;minikube&lt;/a&gt; is an easy alternative for a quick local setup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/" rel="noopener noreferrer"&gt;kubectl&lt;/a&gt; installed on your computer&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step-by-step installation guide
&lt;/h3&gt;

&lt;p&gt;Here's how to set up Glasskube:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install Glasskube CLI&lt;/strong&gt;: Open your terminal and run on MacOs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install glasskube/tap/glasskube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For other installation methods click &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bootstrap Glasskube&lt;/strong&gt; to install the server-side components by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube bootstrap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Check the installation&lt;/strong&gt; Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure both Glasskube and the package-operator are installed and running the same version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube: v0.17.0
package-operator: v0.17.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Using Glasskube: Key functions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Access the GUI
&lt;/h3&gt;

&lt;p&gt;Glasskube makes it easy to add and remove packages in your Kubernetes cluster:&lt;/p&gt;

&lt;p&gt;To add a package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install packages
&lt;/h3&gt;

&lt;p&gt;Any package available in the Glasskube hub is ready to be installed&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube install &amp;lt;package-name&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;This command will then request confirmation on the package version before installing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To remove a package:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube uninstall &amp;lt;package-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Managing package dependencies
&lt;/h3&gt;

&lt;p&gt;Glasskube takes care of package dependencies for you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;When you install a package, it automatically installs any required dependencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This saves time and prevents errors from missing components&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;In the example below upon installing the &lt;code&gt;keptn&lt;/code&gt; package, an instance of cert-manager will also be installed if not already present in the cluster.&lt;/p&gt;
&lt;/blockquote&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%2Fd3z5pcy7noz2wws95uke.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%2Fd3z5pcy7noz2wws95uke.png" alt="keptn-dependency" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Handling package configurations
&lt;/h3&gt;

&lt;p&gt;You can easily change or view package settings with Glasskube, note that &lt;strong&gt;not&lt;/strong&gt; &lt;strong&gt;all packages&lt;/strong&gt; have custom value configurations:&lt;/p&gt;

&lt;p&gt;In the example below, the caddy-ingress-controller has the &lt;code&gt;automaticHTTPS&lt;/code&gt; value exposed, where you can add an email address to enable HTTPS functionality.&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%2F6dbb62moogr8urn1v4u9.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%2F6dbb62moogr8urn1v4u9.png" alt="dependency-management" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Working with GitOps
&lt;/h3&gt;

&lt;p&gt;Glasskube works well in GitOps workflows, letting users control their Kubernetes packages desired state in Git means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Your Kubernetes package setup stays in sync with your files stored in Git&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can use tools like ArgoCD or Flux to apply the desired package state stored in Git&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Changes are easy to track and undo if needed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cluster setup can be achieved in minutes instead of hours.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We have a fully operational Glasskube GitOps template &lt;a href="https://github.com/glasskube/gitops-template" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Follow the steps in the README.md file to get started.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automatic updates with Renovate
&lt;/h3&gt;

&lt;p&gt;Glasskube keeps packages in Glasskube hub always updated to the latest stable versions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Enable &lt;code&gt;auto-updates&lt;/code&gt; or get notified when new versions are available&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shows package information including the current version and available versions for packages using &lt;code&gt;glasskube list&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Running &lt;code&gt;glasskube update &amp;lt;packageName&amp;gt;&lt;/code&gt; will install the newest available version of the package&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Also updating manually through the GUI is also an option.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fi6c0fi0glc7vgcjyraqd.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%2Fi6c0fi0glc7vgcjyraqd.png" alt="open-button" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding custom package repositories
&lt;/h3&gt;

&lt;p&gt;You can now add multiple package repositories for Glasskube to read from, this is be useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Companies that have their own private package lists&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Teams who want to manage internal packages more easily&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It allows following compliance rules for private packages that can’t be exposed publicly&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add a public repository by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube repo add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add private repositories&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube repo add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt; --auth (none|basic|bearer)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F260q7np0mgtxbr9whkx1.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%2F260q7np0mgtxbr9whkx1.png" alt="multi-repo-diagram" width="664" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Glasskube vs. other package managers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How it differs from Helm and Kustomize
&lt;/h3&gt;

&lt;p&gt;Glasskube offers a new way to manage Kubernetes packages, addressing limitations found in older tools like Helm and Kustomize. It offers features such as two-way communication between the package and package manager, enhanced automation, and a more declarative approach to package management. Here's how Glasskube stands out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatic Notifications:&lt;/strong&gt; Glasskube keeps track of installed versions and can automatically notify users of new installations, if desired.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Seamless CRD Updates:&lt;/strong&gt; It updates Custom Resource Definitions (CRDs) smoothly, ensuring everything remains in sync.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Full GitOps Integration:&lt;/strong&gt; Glasskube enables a complete GitOps workflow, which wasn't possible before.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Efficient Control:&lt;/strong&gt; The additional layer of abstraction through package scopes allows for more efficient and granular control over package configuration and usage.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Business service offerings
&lt;/h3&gt;

&lt;p&gt;Companies that offer commercial tools with self-hosting options often leave money on the table. Custom self-hosting installations and management might not be within your company’s expertise or bandwidth. A Glasskube Native package can be the solution you need. We can collaborate with you to create standardized, customizable, and highly scalable packages tailored for a variety of self-hosted environments, all using Glasskube packaging. This approach ensures a seamless experience for your customers while maximizing your revenue potential.&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%2Fmernclzyw932cdwn8ug7.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%2Fmernclzyw932cdwn8ug7.png" alt="Business-service-offerings" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you think that Glasskube Native packages could benefit your business, book a free &lt;a href="https://cal.glasskube.eu/team/founder/demo?date=2024-08-16&amp;amp;month=2024-08" rel="noopener noreferrer"&gt;demo call&lt;/a&gt; with us. Our team would be delighted to assist you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next for Glasskube
&lt;/h2&gt;

&lt;h3&gt;
  
  
  New features coming soon
&lt;/h3&gt;

&lt;p&gt;Glasskube is adding new tools to make package management easier:&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%2F2xw98yi15y19q6lizoyy.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%2F2xw98yi15y19q6lizoyy.png" alt="new-features" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These new features will help users manage their Kubernetes packages better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;Kubernetes package management has been stagnant and unable to keep up with the fast growth and evolution of the general Kubernetes ecosystem. Glasskube aims to make Kubernetes package management easier, more declarative, flexible and far less reliant on rigid templating processes that require multiple tools to get the job done.&lt;/p&gt;

&lt;p&gt;As Glasskube grows, we will need help from users and developers to build in the right direction. What frustrates you the most about current Kubernetes package managers? How can we improve?&lt;/p&gt;

&lt;p&gt;For teams using Kubernetes, we hope tools like Glasskube will be increasingly adopted and applied in complex environments.&lt;/p&gt;

&lt;p&gt;2024 has been an incredible breakout year so far, but we have only just begun.&lt;/p&gt;




&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>The GitOps Kubernetes starter template that gets you set-up in minutes instead of hours</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Thu, 08 Aug 2024 15:13:45 +0000</pubDate>
      <link>https://dev.to/distr/the-gitops-kubernetes-starter-template-that-gets-you-set-up-in-minutes-instead-of-hours-91e</link>
      <guid>https://dev.to/distr/the-gitops-kubernetes-starter-template-that-gets-you-set-up-in-minutes-instead-of-hours-91e</guid>
      <description>&lt;p&gt;We have all heard off writers looking at a blank page for hours trying to get over writers block. For Kubernetes admins, setting up a brand new Kubernetes cluster can be just as daunting. &lt;br&gt;&lt;br&gt;
Especially when it involves configuring multiple elements like ArgoCD, a PostgreSQL database, monitoring tooling, and custom web apps.&lt;/p&gt;

&lt;p&gt;However, what if there was an easier way? Our new GitOps template is designed to make this process straightforward and hassle-free. It offers an easy to set up solution that requires almost no manual steps for a basic yet highly extendable GitOps setup. With this template, you can have your cluster up and running quickly and efficiently, allowing you to focus on what matters most, building and scaling your applications.&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%2F8mhul4z53ot4yzr7ita5.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%2F8mhul4z53ot4yzr7ita5.png" alt="GitOps template" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re reading this, you likely already appreciate the benefits of GitOps and have a solid understanding of Kubernetes. However, until recently, there hasn’t been an elegant, standardized process for managing the packages installed in your Kubernetes clusters. That’s why we built one.&lt;/p&gt;

&lt;p&gt;Let’s put it to the test. With this template, ArgoCD, CloudNativePG and a simple bookmarking web app will be installed using the &lt;a href="https://glasskube.dev/" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; Package Manager and they’ll receive upgrades through a Renovate integration via pull requests. This future-proof setup is easy to maintain and ensures your clusters stay up-to-date effortlessly.&lt;/p&gt;
&lt;h3&gt;
  
  
  The next logical extension for infrastructure IaC
&lt;/h3&gt;

&lt;p&gt;There are clear frameworks, templates, and standards for provisioning infrastructure across almost all cloud providers, and even templates for provisioning Kubernetes clusters themselves. However, this is often where the smooth, paved Infrastructure as Code (IaC) road turns to gravel. Kubernetes admins are frequently left to their own devices to install, configure, and manage the packages within the Kubernetes cluster due to a lack of standardized and simple package management tooling.&lt;/p&gt;

&lt;p&gt;Converting package configurations to code and managing them through GitOps, as you would with internal applications, has proven difficult. We believe the Glasskube package is a significant step toward the much-needed standardization in this area.&lt;/p&gt;
&lt;h3&gt;
  
  
  What is a Glasskube package?
&lt;/h3&gt;

&lt;p&gt;A Glasskube package is a standardized unit for managing software deployments within Kubernetes clusters using the Glasskube Package Manager. It is defined by a &lt;code&gt;PackageManifest&lt;/code&gt;, which contains all necessary information for identifying, configuring and installing a package. This manifest can include a Helm resource or a link to a manifest. Dependencies between packages can be declared, ensuring all required components are present before installation.&lt;/p&gt;
&lt;h3&gt;
  
  
  Use ArgoCD to deploy Glasskube packages
&lt;/h3&gt;

&lt;p&gt;Helm charts or plain Kubernetes manifests lack the comprehensive framework that Glasskube packages offer for deploying resources declaratively in a reliable, consistent, and easily maintained way. In this demo, we’ll use the GitOps template to bootstrap a fresh Kubernetes cluster with an instance of ArgoCD, which will then be used to deploy all subsequent packages.&lt;/p&gt;

&lt;p&gt;Here’s what the cluster will look like.&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%2Frr7au29qm1jesckkm1r9.gif" 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%2Frr7au29qm1jesckkm1r9.gif" alt="Diagram Gif" width="720" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Template diagram&lt;/p&gt;
&lt;h3&gt;
  
  
  Template structure
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;🔗 Link to&lt;/em&gt; &lt;a href="https://github.com/glasskube/gitops-template" rel="noopener noreferrer"&gt;&lt;em&gt;template&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The repository contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  a &lt;code&gt;bootstrap&lt;/code&gt; directory containing the initial/parent Argo Application, and the necessary Glasskube manifests.&lt;/li&gt;
&lt;li&gt;  a &lt;code&gt;packages&lt;/code&gt; directory containing the &lt;code&gt;ArgoCD&lt;/code&gt; ,&lt;code&gt;cloudnative-pg&lt;/code&gt; and &lt;code&gt;kube-prometheus-stack&lt;/code&gt; cluster packages.&lt;/li&gt;
&lt;li&gt;  an &lt;code&gt;apps&lt;/code&gt; folder containing a simple &lt;code&gt;shiori&lt;/code&gt; bookmarking web app. &lt;/li&gt;
&lt;li&gt;  the &lt;code&gt;renovate&lt;/code&gt; configuration file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Glasskube custom resources will only be picked up by ArgoCD after placing the package definition files inside the &lt;code&gt;packages&lt;/code&gt; directory.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;⚠️ Please do not delete/uninstall the argo-cd package, as this will also remove everything else!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Note that the parent application used to bootstrap (bootstrap/glasskube-application.yaml) will not be synced after the initial setup. If you want to change something about it, you will have to change the application via argo directly.&lt;/p&gt;
&lt;h3&gt;
  
  
  Cluster setup
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;You will have to have access to an empty Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;The easiest would be creating a new Minikube cluster with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;⚠️ Glasskube should&lt;/em&gt; &lt;strong&gt;&lt;em&gt;not yet be bootstrapped&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;in the cluster.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Install the Glasskube CLI
&lt;/h3&gt;

&lt;p&gt;Make sure to have at least Glasskube version 0.16.0 &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;installed&lt;/a&gt; locally. If you don’t, you can simply run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install glasskube/tap/glasskube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to use the template
&lt;/h3&gt;

&lt;p&gt;Use &lt;a href="https://github.com/glasskube/gitops-template" rel="noopener noreferrer"&gt;this&lt;/a&gt; repository as your GitOps template&lt;/p&gt;

&lt;p&gt;Create a public GitHub repository based on this starter template by clicking “Use this template“. You can move it and/or make it private afterward.&lt;/p&gt;

&lt;p&gt;Replace the placeholder &lt;strong&gt;repoURL&lt;/strong&gt; in your local GitOps repository&lt;/p&gt;

&lt;p&gt;Replace the default value of &lt;code&gt;repoURL&lt;/code&gt; to your repository url:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Line 12 in: &lt;code&gt;bootstrap/glasskube-application.yaml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Lines 11, 16 and 26 in: &lt;code&gt;bootstrap/glasskube/applicationset.yaml&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bootstrap ArgoCD and Glasskube for your Kubernetes cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube bootstrap git --url &amp;lt;your-repo&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The result
&lt;/h3&gt;

&lt;p&gt;As a result, your cluster will be powered with GitOps capabilities by ArgoCD, as well as package management features by Glasskube. Argo manages itself, the Glasskube installation, as well as Glasskube packages — all of which you can now manage GitOps-style with this repo.&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;glasskube serve&lt;/code&gt; to open the Glasskube UI and either open the ArgoCD UI there, or with the command glasskube open argo-cd – but of course you can also use the Argo CLI. Follow the &lt;a href="https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli" rel="noopener noreferrer"&gt;ArgoCD docs&lt;/a&gt; to get and reset the password to log in.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;💡 Note that it might take a couple of minutes to start up ArgoCD, and for the initial GitOps sync to happen.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this template, for demonstration purposes we’ve also installed the &lt;code&gt;cloudnative-pg&lt;/code&gt; and &lt;code&gt;kube-prometheus-stack&lt;/code&gt;clusterpackages and a bookmarking application (&lt;a href="https://github.com/go-shiori/shiori" rel="noopener noreferrer"&gt;shiori&lt;/a&gt;), which is making use of cloudnative-pg.&lt;/p&gt;

&lt;h3&gt;
  
  
  Managing your cluster
&lt;/h3&gt;

&lt;p&gt;Both CLI and UI offer features to manage your cluster following GitOps best practices.&lt;/p&gt;

&lt;h4&gt;
  
  
  Using the CLI
&lt;/h4&gt;

&lt;p&gt;The relevant CLI commands offer the flags &lt;code&gt;--dry-run&lt;/code&gt; and &lt;code&gt;-o yaml&lt;/code&gt; which output the yaml object code which should then be pushed to your repository to be deployed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Through the UI
&lt;/h4&gt;

&lt;p&gt;The UI, when installed with the above &lt;code&gt;glasskube bootstrap git&lt;/code&gt; command, will also output the &lt;code&gt;yaml&lt;/code&gt; objects which you can copy to use in your git repo, instead of applying your changes directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing packages
&lt;/h3&gt;

&lt;p&gt;To install a ClusterPackage, e.g. cert-manager, use the install command like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube install cert-manager --dry-run -o yaml --yes &amp;gt; cert-manager.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of directly installing the ClusterPackage, this will write the ClusterPackage custom resource to the cert-manager.yaml file, which can now be put into a new directory &lt;code&gt;packages/cert-manager/&lt;/code&gt; in the git repository. Once pushed to the repo, ArgoCD will pick up the changes after at most 5 minutes, create the ArgoCD Application wrapping the Glasskube ClusterPackage. After that, the Glasskube operator will pick up the ClusterPackage and finally install it in the cluster.&lt;/p&gt;

&lt;p&gt;Similarly, when using the Glasskube UI, one can generate the ClusterPackage resource by using the “Show YAML” button on the page of the ClusterPackage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Updating packages
&lt;/h3&gt;

&lt;p&gt;There are two options handling package version updates:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Manually&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Using the &lt;code&gt;glasskube update --dry-run -o yaml&lt;/code&gt; command, or the corresponding button on the Glasskube UI. And then pushing to your repo as seen before. &lt;br&gt;&lt;br&gt;
The downside of doing it that way, is that someone has to manually execute the command, even though checking for updates and preparing the updates to the git repository as an automatable task.&lt;/p&gt;
&lt;h4&gt;
  
  
  Automatically with Renovate
&lt;/h4&gt;

&lt;p&gt;Once Renovate is &lt;a href="https://github.com/renovatebot/renovate" rel="noopener noreferrer"&gt;integrated&lt;/a&gt; to track your GitOps repo, it will look for Glasskube packages and compare their versions to the official package repositories. When new versions are available, it will automatically open a PR. Once merged, you’ll be running the latest versions of your packages.&lt;/p&gt;
&lt;h3&gt;
  
  
  Uninstalling packages
&lt;/h3&gt;

&lt;p&gt;To uninstall a package or a &lt;code&gt;ClusterPackage&lt;/code&gt;, simply remove the custom resource from the git repository.&lt;/p&gt;
&lt;h3&gt;
  
  
  Updating Glasskube
&lt;/h3&gt;

&lt;p&gt;When a new Glasskube version is available, the manifests have to be updated. To update the Glasskube manifests in your git repo, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube bootstrap --dry-run -o yaml --force &amp;gt; bootstrap/glasskube/glasskube.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After reviewing and merging those changes the update will be picked up by ArgoCD. The &lt;code&gt;--force&lt;/code&gt; flag is necessary for the command to continue manifest validation, even though failures occur.&lt;/p&gt;

&lt;h3&gt;
  
  
  Working with Apps
&lt;/h3&gt;

&lt;p&gt;This template also contains a demo application: a bookmark manager called &lt;a href="https://github.com/go-shiori/shiori" rel="noopener noreferrer"&gt;shiori&lt;/a&gt;.&lt;br&gt;
Its manifests are defined in &lt;code&gt;apps/shiori&lt;/code&gt;, which is a pattern you can follow for your own custom applications.&lt;/p&gt;

&lt;p&gt;In a minikube environment, two manual steps are required to access the application (for more information consult the &lt;br&gt;
&lt;a href="https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/" rel="noopener noreferrer"&gt;minikube docs&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;minikube addons enable ingress -p gitops&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;minikube ip -p gitops&lt;/code&gt; and add the line &lt;code&gt;&amp;lt;your-IP&amp;gt; my-shiori.example&lt;/code&gt; to your &lt;code&gt;/etc/hosts&lt;/code&gt; file. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After that you will be able to access the application via &lt;a href="http://my-shiori.example" rel="noopener noreferrer"&gt;http://my-shiori.example&lt;/a&gt; in your browser. &lt;br&gt;
The default login credentials are &lt;code&gt;shiori&lt;/code&gt; / &lt;code&gt;gopher&lt;/code&gt; – for more information check the &lt;a href="https://github.com/go-shiori/shiori/tree/master/docs" rel="noopener noreferrer"&gt;shiori docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In general, you can use the &lt;code&gt;apps&lt;/code&gt; directory to deploy such custom applications into your cluster. Any subdirectory will be&lt;br&gt;
picked up by ArgoCD and grouped as an &lt;code&gt;Application&lt;/code&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring with &lt;code&gt;kube-prometheus-stack&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This template also installs the &lt;code&gt;kube-prometheus-stack&lt;/code&gt; clusterpackage, which is an easy way to get started with monitoring your cluster. You can open Grafana with &lt;code&gt;glasskube open kube-prometheus-stack&lt;/code&gt;. It does not come preconfigured in this example, but you can easily add a nice postgres dashboard and observe the metrics of the database while you are working with the bookmarking application.&lt;/p&gt;

&lt;h4&gt;
  
  
  Setting up a postgres dashboard
&lt;/h4&gt;

&lt;p&gt;We are going to make use of the &lt;a href="https://grafana.com/grafana/dashboards/20417-cloudnativepg/" rel="noopener noreferrer"&gt;cloudnativepg dashboard&lt;/a&gt;.&lt;br&gt;
Import it by opening the &lt;a href="http://localhost:8888/dashboard/import" rel="noopener noreferrer"&gt;dashboard-import page&lt;/a&gt;, pasting&lt;br&gt;
&lt;a href="https://grafana.com/grafana/dashboards/20417-cloudnativepg/" rel="noopener noreferrer"&gt;https://grafana.com/grafana/dashboards/20417-cloudnativepg/&lt;/a&gt;&lt;br&gt;
into the first textfield, and pressing "Load". Use the "Prometheus" data source on the following screen and finish the import process.&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%2Faltn1dz7oypxf9i0bggi.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%2Faltn1dz7oypxf9i0bggi.png" alt="CloudNativePG dashboard" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course monitoring your experimental minikube cluster is a bit of an overkill, but this is simply to demonstrate how these kind of cluster administration tasks can be integrated into this gitops stack. &lt;/p&gt;

&lt;h3&gt;
  
  
  Template setup walkthrough
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Xbs2Tq-dgbI"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  Upcoming Features
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Private Repo Support
&lt;/h4&gt;

&lt;p&gt;We are aware that GitOps repositories should not be public, but for simplicity we omitted this feature in the first version of the new GitOps-bootstrap command. Supporting private repos with authentication of course has high priority for the upcoming releases. We will also replace the repoURL automatically, such that you don’t need to this step manually when setting up the repo.&lt;/p&gt;

&lt;h4&gt;
  
  
  Improved Renovate Integration
&lt;/h4&gt;

&lt;p&gt;As described above, the renovate integration currently is regex-based, and it does not consider dependencies yet. However, we don’t see these shortcomings as a blocker and recommend to try out the renovate integration in the Glasskube/Argo Gitops setup.&lt;/p&gt;

&lt;h4&gt;
  
  
  Improved Dependency Resolution
&lt;/h4&gt;

&lt;p&gt;Installing packages with dependencies is not 100% GitOps-compatible yet, as the dependencies will be created by the operator. Consider this: To install a &lt;code&gt;ClusterPackage &amp;lt;P&amp;gt;&lt;/code&gt; that has a dependency on &lt;code&gt;D&lt;/code&gt;, one would do &lt;code&gt;glasskube install &amp;lt;P&amp;gt; --dry-run -o yaml&lt;/code&gt;, which would output the &lt;code&gt;ClusterPackage&lt;/code&gt; custom resource for &lt;code&gt;&amp;lt;P&amp;gt;&lt;/code&gt;. However, the dependency &lt;code&gt;D&lt;/code&gt; will only be resolved at reconciliation time by the package operator, and will therefore not be represented in the git repository at all.&lt;/p&gt;

&lt;p&gt;A temporary workaround would be to have a closer look at the output of the install command, which also shows the dependencies which will be installed and in which version. One could then manually add the required packages custom resources to the git repo as well. However, this will be tackled in a future version to make the user experience better, see this &lt;a href="https://github.com/glasskube/glasskube/issues/430" rel="noopener noreferrer"&gt;issue&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;With this template repository and guide we show how Glasskube can easily be set up in a ArgoCD powered Gitops environment, and how efficient package management is possible with this stack. Additionally we install a web application to show how custom applications can make use of the Gitops setup and Glasskube packages.&lt;/p&gt;

&lt;p&gt;This is a first concept with some minor shortcomings, but we will continue to improve GitOps support. &lt;/p&gt;

&lt;h3&gt;
  
  
  Feedback
&lt;/h3&gt;

&lt;p&gt;We love feedback! Whether you are just starting out or you are a seasoned professional, we'd like to hear your thoughts, inputs and questions regarding this starter template and corresponding guide here, in the &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;glasskube/glasskube repo&lt;/a&gt; or on our &lt;a href="https://discord.gg/SxH6KUCGH7" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;. Thanks!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Why building an IDP for Series A companies doesn't make sense</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Wed, 07 Aug 2024 10:21:01 +0000</pubDate>
      <link>https://dev.to/distr/why-building-an-idp-for-series-a-companies-doesnt-make-sense-36d4</link>
      <guid>https://dev.to/distr/why-building-an-idp-for-series-a-companies-doesnt-make-sense-36d4</guid>
      <description>&lt;p&gt;CTO of a Series A company? Before reading on, just give yourself a quick pat on the back. What you and your team have done so far is no easy task, so fair play to you.&lt;/p&gt;

&lt;p&gt;Realistically though, the work is far from done. Many scaling and growth decisions lay ahead and probably more questions than clear convictions.&lt;/p&gt;

&lt;p&gt;You might be tempted to preemptively adopt tooling and processes, positioning your engineering team for the potential growth to come. In this piece we’ll explain why you are more likely to succeed by doubling down on what brought you to this point over adopting new processes or fancy Internal Developer platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting the right foundations
&lt;/h3&gt;

&lt;p&gt;Series A companies are exciting environments to be in, usually a reasonable influx of new faces join the company, processes are increasingly standardised and overall, there is a progressive company-wide maturity that is starting to take hold. The instinct to mature the engineering org is understandable but nonetheless ill placed.&lt;/p&gt;

&lt;p&gt;No level of maturity or sophisticated tooling can compensate for a lack of Product Market Fit (PMF). Validating PMF across markets should be top of mind at this stage above all else. Elusive as it may be, your best chance of achieving it is staying agile, delivering rapidly and maintaining tight feedback loops.&lt;/p&gt;

&lt;p&gt;The idea of planning for future scalability might be appealing, especially with the buzz around platform engineering and the availability of ready-made internal developer platform (IDP) solutions. However, it’s crucial to understand why these options might not be the right choice for you right now. Let’s delve into the reasons why an IDP isn’t the change you think you need.&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%2Fy9zex3wen2xz0ehqkajx.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%2Fy9zex3wen2xz0ehqkajx.png" alt="platform-engineering" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is an IDP?
&lt;/h3&gt;

&lt;p&gt;An IDP is a self-service layer build on top of your organisation’s infrastructure, that enables your developer teams to deploy and manage applications without the need to have in-depth infrastructure knowledge or relying on the help of traditional infrastructure engineers. It aims to provide consistency, automation, and speed by standardizing workflows and environments as the organization grows.&lt;/p&gt;

&lt;p&gt;Think of an IDP as an internal product maintained by DevOps or Platform engineers, who essentially serve their own customer base, your development teams. To understand why adopting an IDP might be counterproductive for a Series A company, it’s essential to understand why IDPs emerged in the first place.&lt;/p&gt;

&lt;p&gt;As companies expand, so do their engineering teams. In large enterprises, maintaining code quality, keeping up with infrastructure requirements and sustaining deployment velocity is hard if operations teams can’t keep up. IDPs were designed to remove reliance on traditional operations teams, to rely on a platform that actively evolves to fit their needs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A few assumptions are important to point out here:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You have the resources to maintain a completely new product (the IDP). &lt;strong&gt;&lt;em&gt;You probably don’t.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have already scaled the engineering org and now need to optimise it. &lt;strong&gt;&lt;em&gt;You probably haven’t and don’t need to.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fe72c4qd0rdet9cj60mnu.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%2Fe72c4qd0rdet9cj60mnu.png" alt="graph-1" width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What should Series A companies care about?
&lt;/h3&gt;

&lt;p&gt;Before going on about the types of tools and processes your shouldn’t care about, let’s take a more proactive approach and focus on things that will actually move the needle.&lt;/p&gt;

&lt;h4&gt;
  
  
  The right team
&lt;/h4&gt;

&lt;p&gt;You need a group of people who can run themselves, have the expertise to automate infrastructure related tasks and are open to working in flexible and not overly standardised structures. They should be the ones who propose changes and implement them as needed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Finding and validating PMF
&lt;/h4&gt;

&lt;p&gt;By the time you are at a Series A level you have surely caught the scent of where you might find PMF. Do not let up, ship fast and communicate intensely with your target audience to validate your market assumptions. There is no reward in finding a gap in the market alone, you have to occupy it. Maintain development velocity to increasingly occupy the gap you have identified.&lt;/p&gt;

&lt;h4&gt;
  
  
  Staying agile and flexible
&lt;/h4&gt;

&lt;p&gt;The engineering team, like all teams within the company, should be unequivocally aligned with one primary objective: enabling the business. The engineering team sits at the centre of a short but tightly knit feedback loop which includes sales, feature ideation, feature development, deployment, and gathering feedback. Ideally, the sales team is working flat out, and customer service is maintaining close contact with customer. For the engineering team to keep it’s end of the bargain, it has to stay flexible and agile, ready to respond quickly the other teams inputs.&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%2Ftbr6c8ryk7q7qrefs46f.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%2Ftbr6c8ryk7q7qrefs46f.png" alt="graph-2" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Focusing on customer facing products only
&lt;/h4&gt;

&lt;p&gt;Even though we’ve mentioned this before, it’s important to emphasise that an IDP is a fully-fledged product that needs to be created, maintained, and evolved to meet the changing needs of internal developers over time. Focusing on an internal product like this can detract from the attention and resources needed for your customer-facing products, which ultimately bring you in closer contact with PMF and customer satisfaction.&lt;/p&gt;

&lt;h4&gt;
  
  
  Building the right culture
&lt;/h4&gt;

&lt;p&gt;This is a point that should not be overlooked. Regardless of your company’s stage, evolution is always and ongoing dynamic. A culture of alignment, healthy communication principles, and a focus on shared goals is the bedrock that must serve as a base for the discussions about architecture, tooling, and process definitions which enable said evolution. Collective buy-in can only happen if a meaningful shared culture exists.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should a Series A CTO not be thinking about?
&lt;/h3&gt;

&lt;p&gt;It’s not un-common to hear people report having learned more from their bad managers than from their good ones. Why might that be? Because knowing what not to do can sometimes be more important the the opposite.&lt;/p&gt;

&lt;h4&gt;
  
  
  Don’t maintaining internal products
&lt;/h4&gt;

&lt;p&gt;Any time spend not addressing requests from your product and sales teams and hopefully your customers is time wasted.&lt;/p&gt;

&lt;p&gt;Any time spend that doesn’t involve delivering a better experience than your competitors is a mistake.&lt;/p&gt;

&lt;h4&gt;
  
  
  Avoid large engineering teams
&lt;/h4&gt;

&lt;p&gt;Just because the rest of the company is growing doesn’t mean the engineering team has to expand at the same rate. Those who praise the magic that can be harnessed by keeping &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fposthog.com%2Fnewsletter%2Fsmall-teams" rel="noopener noreferrer"&gt;engineering teams small&lt;/a&gt; are on to something.&lt;/p&gt;

&lt;p&gt;At this stage, as you may be bringing on your first DevOps engineers, ensure they integrate into a compact, developer-focused team with a single leader to avoid unnecessary managerial layers, allowing for open communication and quick decisions to be made.&lt;/p&gt;

&lt;h4&gt;
  
  
  Forget about perfection
&lt;/h4&gt;

&lt;p&gt;It’s not news to you that shipping quickly and continuously improving over time is the best way to build a product that eventually wins market share and meets customer expectations. Why would scaling engineering teams be any different? Trying to implement an Internal Developer Platform too soon runs contrary to those principles. There will be a time when you will build one out but let that process happen iteratively in a gradual manner. You have others things to worry about in the meantime.&lt;/p&gt;

&lt;h3&gt;
  
  
  You are on the right track
&lt;/h3&gt;

&lt;p&gt;Reaching a Series A funding round is not the end goal for anybody, you have a lot of room for growth. PMF is more than likely not locked down and occasional engineering bottlenecks should be dealt with on a case by case basis. Now is the time to double down on the strengths and keep on improving you capacity to identify your customer and increase user satisfaction.&lt;/p&gt;

&lt;p&gt;There will be a time to look inwards and improve internal engineering processes, and IDP might make sense in the future, but at this moment in time your limited engineering output should be laser focused on staying lean.&lt;/p&gt;

&lt;p&gt;Implementing internal products that don’t directly enable the business too soon have the potential for dire consequences. Approximately 35% of series A funded startups &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fluisazhou.com%2Fblog%2Fstartup-failure-statistics%2F%23%3A~%3Atext%3DIf%2520a%2520startup%2520makes%2520it%2Cof%252012%2520to%252018%2520months." rel="noopener noreferrer"&gt;fail&lt;/a&gt; before Series B, a lot is at stake.&lt;/p&gt;

&lt;p&gt;No need to worry though, you have made it this far, don’t give into platform engineering FOMO, put you head down and keep doing what you’ve been doing, because it’s working.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We would love to hear from you, what are your thoughts? when is an organization really ready for an IDP?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>programming</category>
      <category>cloud</category>
      <category>startup</category>
    </item>
    <item>
      <title>20 Life hacks for DevOps Engineers</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Tue, 23 Jul 2024 09:29:37 +0000</pubDate>
      <link>https://dev.to/distr/20-life-hacks-for-devops-engineers-3dn7</link>
      <guid>https://dev.to/distr/20-life-hacks-for-devops-engineers-3dn7</guid>
      <description>&lt;p&gt;Tricks of the trade, hacks, trade secrets, cheat sheets, best practices, call them what you will. Every industry has them, and anyone who sticks around long enough builds an arsenal of techniques and finely tuned tools to excel at their job.&lt;/p&gt;

&lt;p&gt;Some things simply take time to master. My dad, a retired builder, could tile a medium-sized bathroom in under an astonishing three hours, while it would take me a full day just to do the grouting afterwards. Experience is key for certain skills, but there are also tips that don’t require years of practice to acquire.&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%2Fi5djnf7s7qtanf42u8hn.webp" 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%2Fi5djnf7s7qtanf42u8hn.webp" alt="gif" width="262" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevOps is no different. There are no shortcuts to becoming a god-tier DevOps savant, put the years in and you might just get there. Having said that, there are some tricks of the trade, life hacks and useful tooling that are sure to give you an instant boost in productivity.&lt;/p&gt;

&lt;p&gt;Here is my non-comprehensive list of life hacks guaranteed to make any DevOps engineer’s life easier.&lt;/p&gt;

&lt;p&gt;The list is broken down into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Tooling 🧰
&lt;/li&gt;
&lt;li&gt;  Skills 🤸
&lt;/li&gt;
&lt;li&gt;  Habits 🔁
&lt;/li&gt;
&lt;li&gt;  Scripts, configs and extensions 💻&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tooling: 🧰
&lt;/h2&gt;

&lt;p&gt;Did you know that if you really want to get somebodies attention in Germany, &lt;a href="https://www.npr.org/2024/05/09/1250136510/germany-has-a-reputation-for-efficiency-so-why-do-fax-machines-remain-popular" rel="noopener noreferrer"&gt;sending a fax&lt;/a&gt; is your best bet? &lt;br&gt;
Also, in Japan up until this year, &lt;a href="https://www.abc.net.au/news/2024-07-10/japan-eliminates-use-of-floppy-disks/104077114" rel="noopener noreferrer"&gt;floppy disks&lt;/a&gt; were still in use by government institutions. &lt;/p&gt;

&lt;p&gt;Knowing which context you find yourself in is essential to then choose the best tools for the job. Even though it’s important not to obsess over having the best, newest, or shiniest tool on the market. The following tools can be real game-changers for DevOps engineers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You don’t need to be the sharpest tool in the shed to use the sharpest tools in the shed" - Anonymous (I might have made it up)&lt;/p&gt;
&lt;/blockquote&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%2Fp3x70y8c34btmgmth4ou.gif" 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%2Fp3x70y8c34btmgmth4ou.gif" alt="gif-2" width="480" height="268"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1. k9s
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://k9scli.io/" rel="noopener noreferrer"&gt;K9s&lt;/a&gt; is a terminal-based UI for interacting with your Kubernetes clusters. It takes very little time to get accustomed to navigating, observing, and managing your live applications through the tool. And once you do, you might never go back. K9s continually monitors Kubernetes for changes and offers many useful commands to interact with your observed resources.&lt;/p&gt;

&lt;p&gt;Link to &lt;a href="https://k9scli.io/topics/install/" rel="noopener noreferrer"&gt;instal&lt;/a&gt;.&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%2F5qk2ahx3y75ho015a0mo.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%2F5qk2ahx3y75ho015a0mo.png" alt="k9s" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. tmux
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/tmux/tmux/wiki" rel="noopener noreferrer"&gt;tmux&lt;/a&gt; is a powerful terminal multiplexer that enhances productivity by allowing session persistence, window and pane management, and customization through key bindings and configuration files. It supports scripting for automation, facilitates collaboration with shared sessions, and integrates well with various shells and tools.&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%2F5g9z9v1la2z1is08ti6x.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%2F5g9z9v1la2z1is08ti6x.png" alt="tmux" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Glasskube
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; is an Open Source package manager for Kubernetes. It makes deploying, updating, and configuring packages on Kubernetes &lt;strong&gt;20 times faster&lt;/strong&gt; than tools like &lt;strong&gt;Helm or Kustomize&lt;/strong&gt;. Inspired by the simplicity of Homebrew and npm. You can decide if you want to use the Glasskube UI, CLI, or directly deploy packages via GitOps.&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%2Fxzyje56hrgu3i75phal5.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%2Fxzyje56hrgu3i75phal5.png" alt="glasskube-dash" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Care to support us?
&lt;/h3&gt;

&lt;p&gt;If this is the first time you've heard of Glasskube, we are working to build the next generation &lt;code&gt;Package Manager for Kubernetes&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="star-gif" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⭐️ Star us on &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; 🙏&lt;/p&gt;
&lt;h3&gt;
  
  
  4. ripgrep
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/BurntSushi/ripgrep" rel="noopener noreferrer"&gt;Riggrep&lt;/a&gt; is a powerful search tool known for its speed, flexibility, and user-friendly output. It quickly processes large codebases using advanced algorithms, supports a wide range of search patterns, and presents clear, highlighted results. Riggrep integrates well with other tools, is cross-platform, and customizable.&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%2Fx33jvnbgbdzd4li38p9x.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%2Fx33jvnbgbdzd4li38p9x.png" alt="ripgrep" width="769" height="295"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Firefox containers for multi cloud account access
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/" rel="noopener noreferrer"&gt;Firefox Multi-Account Containers&lt;/a&gt; is a such an underestimated browser extension for it's utility. It helps manage online activity by separating websites into different containers or tabs, preventing sessions tracking across sites. It’s most useful feature is that it allows users to log into multiple accounts simultaneously within the same browser. By isolating sessions through cookie separation, it protects personal data and improves the overall browsing experience. Have multiple AWS accounts? Not an issues, you can log in to all of them from the same browser window.&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%2Fxr7uji0zrxekr3bt0arq.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%2Fxr7uji0zrxekr3bt0arq.png" alt="firefox-tabs" width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  6. VPA
&lt;/h3&gt;

&lt;p&gt;Vertical Pod Autoscaler (VPA) frees users from the necessity of setting up-to-date resource limits and requests for the containers in their pods. When configured, it will set the requests automatically based on usage and there after allow proper scheduling onto nodes so that appropriate resource amounts are available for each pod.&lt;/p&gt;

&lt;p&gt;Install it &lt;a href="https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#install-command" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Example config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: my-app-vpa
spec:
  targetRef:
    apiVersion: "apps/v1"
    kind:       Deployment
    name:       my-app
  updatePolicy:
    updateMode: "Auto"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7. Kctx and Kubens
&lt;/h3&gt;

&lt;p&gt;Is just hand’s down the most useful CLI tool for Kubernetes context and Namespace switching.&lt;/p&gt;

&lt;p&gt;Install it &lt;a href="https://github.com/ahmetb/kubectx" rel="noopener noreferrer"&gt;here&lt;/a&gt;&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%2Fnfovv5rex6xirw0o7ltx.gif" 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%2Fnfovv5rex6xirw0o7ltx.gif" alt="kubectx" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. ChatGPT for guidance
&lt;/h3&gt;

&lt;p&gt;Use &lt;a href="https://chatgpt.com/" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; as if it were a senior member on your team who is never busy and always happy to answer all of your questions. Make sure your intention is deeper understanding and not blind task resolution.&lt;/p&gt;

&lt;p&gt;Prime ChatGPT to be a senior team member with a prompt like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You will act as a Senior DevOps Engineer to provide life hacks and tips on how to excel in the field of DevOps. You will also be ready to help junior team members with any questions they might have. Please include practical advice, recommended tools, and best practices for managing infrastructure and continuous integration/continuous deployment (CI/CD) pipelines. Write the output using my communication style, which is clear, concise, and practical. Here are examples of my communication style:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;"Focus on automating repetitive tasks to save time and reduce errors."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Leverage tools like Docker and Kubernetes for containerization and orchestration."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Always monitor system performance and be proactive in identifying potential issues."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"When mentoring juniors, be patient and explain concepts in simple terms."&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Here are some questions you can ask ChatGPT to further fine tune the prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Do you want the advice and explanations to cater more to beginner-level juniors or those with some experience in DevOps?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Could you provide more detailed examples of your communication style, especially in scenarios where you explain complex concepts to juniors?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Are there specific challenges or areas of focus within DevOps (e.g., automation, monitoring, security) that you want to prioritize for the advice and junior support?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Skills: 🤸
&lt;/h2&gt;

&lt;p&gt;It's no surprise that skills can't be absorbed instantly, they require time and effort. In the ever-evolving tech world, determining which skills to cultivate can be confusing. However, as DevOps engineers, you can't go wrong with mastering scripting and prioritizing documentation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Build your skills not your resume.” — &lt;a href="https://quotefancy.com/sheryl-sandberg-quotes" rel="noopener noreferrer"&gt;Sheryl Sandberg&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fojvxbcr8s76u9yozuhue.webp" 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%2Fojvxbcr8s76u9yozuhue.webp" alt="skills" width="354" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Scripting
&lt;/h3&gt;

&lt;p&gt;Scripting is like a swiss army knife for DevOps engineers because it automates repetitive tasks, provides essential glue between processes, and ensures consistency across environments. Learning and practicing scripting involves familiarizing yourself with tools like &lt;a href="https://opensource.com/article/18/8/what-how-makefile" rel="noopener noreferrer"&gt;Makefiles&lt;/a&gt;, regular expressions (&lt;a href="https://support.smartbear.com/testcomplete/docs/scripting/regular-expressions.html" rel="noopener noreferrer"&gt;regex&lt;/a&gt;) for efficient text processing, and &lt;a href="https://www.freecodecamp.org/news/bash-scripting-tutorial-linux-shell-script-and-command-line-for-beginners/" rel="noopener noreferrer"&gt;Bash&lt;/a&gt; scripting for powerful command-line operations.&lt;/p&gt;

&lt;p&gt;Don't feel like you have to master scripting before implementing it at work. Look for manual steps in your current software or infrastructure delivery processes and try to script automations that make sense. Leverage an LLM for help if needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Documentation
&lt;/h3&gt;

&lt;p&gt;Write everything down. It’s the best way to take care of your future you.&lt;/p&gt;

&lt;p&gt;Try out a few note taking solutions here are a few:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.notion.so/" rel="noopener noreferrer"&gt;Notion&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.getoutline.com/" rel="noopener noreferrer"&gt;Outline&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://obsidian.md/" rel="noopener noreferrer"&gt;Obsidian&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://keep.google.com/" rel="noopener noreferrer"&gt;Google Keep&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://joplinapp.org/" rel="noopener noreferrer"&gt;Joplin&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It doesn’t matter which one you choose as long as you only choose one and you stick to it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🤔 Don’t fall into the trap of spending too much time organising and optimising your notes. Notes don’t have to be perfect only functional. Spending too much time on note maintenance is &lt;code&gt;meta-work&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Habits: 🔁
&lt;/h2&gt;

&lt;p&gt;You will never get far if you rely solely on pure motivation to get things done and improve. Well-defined and consistent habits are the glue that keep you growing and effective, even when your motivation wanes. Habits seamlessly integrate tools and skills, ensuring you are effective at your job.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Motivation is what gets you started. Habits is what keeps you going." - Jim Ryun&lt;/p&gt;
&lt;/blockquote&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%2Ftwuqyzc28my73gb3f0dq.gif" 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%2Ftwuqyzc28my73gb3f0dq.gif" alt="practice" width="600" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  11. Don’t write to-do lists, block time.
&lt;/h3&gt;

&lt;p&gt;I’ve been heavily influenced by Cal Newport’s writing on Deep Work and I’m quite convinced that efforts to preserve a certain amount of time per week dedicated to uninterrupted &lt;strong&gt;deep work&lt;/strong&gt; is crucial for an individual who wants to contributor meaningfully to a team.&lt;/p&gt;

&lt;p&gt;To-do list on their own are just wish lists. Once you plot them on a calendar, that’s when you have a plan.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s important to point out that I know very few people who execute on their time block plans with 100% fidelity every day of the week. Use them as north stars, schedule rest time when you need it. Update the list throughout the day even. But at least hold yourself to a plan.&lt;/p&gt;
&lt;/blockquote&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%2Fajpplmlajhjl8bpcx05a.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%2Fajpplmlajhjl8bpcx05a.png" alt="time-block" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  12. Reciprocal meeting blocks
&lt;/h3&gt;

&lt;p&gt;Unless you are your own boss, you’re most likely not 100% in charge of the meetings and commitments you might be obliged to participate in. Reciprocal meeting blocks is a way to counteract unexpected time commitments that just pop up in your calendar. &lt;br&gt;
The idea here to reserve an equivalent deep work block every time a new meeting is added to you calendar. That way you can stay flexible and relatively available without having to compromise on your weekly deep work quota.&lt;/p&gt;
&lt;h3&gt;
  
  
  13. Have a shutdown routine
&lt;/h3&gt;

&lt;p&gt;Especially useful if you are a remote worker. A shutdown routine is a series of questions and steps your run through to finish your working day. Ideally once you complete the checklist you should be able to forget about your work until the next day.&lt;br&gt;&lt;br&gt;
What I track is the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Did I exercise?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Did I address all of the miscellaneous tasks I had?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do I have any open conversations?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do I need to push any tasks to the next day?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Did I write a diary entry? (not work related but I like to get it done before I leave the desk)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How many deep hours did I do?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Did I check the metrics I’m tracking one last time before I close the laptop for the day?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  14. Take notes during meetings
&lt;/h3&gt;

&lt;p&gt;Taking notes during meetings and sharing them afterward should ideally be a common practice in your organization. If it isn't, this is a perfect opportunity for you to start. Not only does it ensure that no important details slip through your fingers, but it also provides a great service to your team.&lt;/p&gt;
&lt;h3&gt;
  
  
  15. Test run outages
&lt;/h3&gt;

&lt;p&gt;Test run outages are essential for DevOps engineers to prepare for real incidents. You have to know exactly how to swiftly and efficiently connect to your clusters or VMs before an unexpected 1 a.m. alert for example, you can’t be caught off guard. &lt;/p&gt;

&lt;p&gt;Familiarize yourself with moving files, retrieving container logs, and other critical tasks. Setting up SSH keys, kubeconfigs, and other access tools in advance will save valuable time and reduce stress during actual outages. Proactively testing and optimizing these processes ensures that you are ready to respond effectively to any disruption.&lt;/p&gt;
&lt;h2&gt;
  
  
  Scripts, configs and extensions: 💻
&lt;/h2&gt;

&lt;p&gt;If you have to do something more than once, automate it. Why write out a full command when you can save time by using an alias? Over a long career, it might be hard to calculate exactly how much time is saved by typing "k" instead of "kubectl." One thing is for sure: it's a lot, and it's well worth it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You’re either the one that creates the automation or you’re getting automated.” — Tom Preston-Werner&lt;/p&gt;
&lt;/blockquote&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%2Fgmrjgt8aa7vdfc1twmvn.webp" 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%2Fgmrjgt8aa7vdfc1twmvn.webp" alt="automation" width="356" height="200"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  16. Use helpful aliases
&lt;/h3&gt;

&lt;p&gt;Don’t waste time typing out the full commands you write every day.&lt;/p&gt;

&lt;p&gt;Here is a small snippet of a few of my configured aliases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;k=kubectl
kctx='kubectl ctx'
kgp='kubectl get pods'
kns='kubectl ns'
l='ls -lah'
la='ls -lAh'
ll='ls -lh'
ls='ls -G'
lsa='ls -lah'
md='mkdir -p'
rd=rmdir
run-help=man
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  17. Efficiently cleaning up finished jobs with TTL controller
&lt;/h3&gt;

&lt;p&gt;You can specify the lifespan of finished jobs or pods before they are automatically removed by setting the &lt;code&gt;.spec.ttlSecondsAfterFinished&lt;/code&gt; field. If you working in a job heavy environment finished jobs can quickly accumulate and become quite resource heavy.&lt;/p&gt;

&lt;p&gt;Example config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: batch/v1
kind: Job
metadata:
  name: test-ttl-job
spec:
  ttlSecondsAfterFinished: 100
  ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  18. Git script to keep synced with the upstream
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add upstream &amp;lt;upstream-url&amp;gt;
git fetch upstream
git rebase upstream/main
git push --force-with-lease
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  19. Kubectl auto complete
&lt;/h3&gt;

&lt;p&gt;Kubectl autocompletion lets you create an alias for kubectl. This feature saves time by reducing the need for cheat sheets and is especially useful for managing Kubernetes clusters. It's also recommended for the CKA exam due to its time efficiency.&lt;/p&gt;

&lt;p&gt;Set up for Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# install bash-completion
sudo apt-get install bash-completion

# Add the completion script to your .bashrc file
echo 'source &amp;lt;(kubectl completion bash)' &amp;gt;&amp;gt;~/.bashrc

# Apply changes
source ~/.bashrc

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

&lt;/div&gt;



&lt;p&gt;Check out other installation methods &lt;a href="https://komodor.com/learn/kubectl-autocomplete-enabling-and-using-in-bash-zsh-and-powershell/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  20. &lt;strong&gt;Visual Studio Code Remote – SSH&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The Remote - SSH extension lets you use any SSH-enabled remote machine for development, making it easier to develop on the same OS you deploy to, use powerful hardware, switch between environments, and debug applications remotely.&lt;/p&gt;

&lt;p&gt;Install it &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;There’s no magic formula for becoming a top 1% DevOps engineer. Like in most professions, it’s a matter of time, dedication, and experience that will gradually shape you into a highly effective professional. Over time, you'll get much better at recognizing patterns, recalling past situations, and finding quick solutions to recurring issues. So, don’t expect any single life hack from this list to instantly earn you a 50% raise and a promotion. &lt;/p&gt;

&lt;p&gt;However, if you consistently focus on refining your tools, honing your skills, refusing to break good habits, and implementing smart automations, you’ll be well on your way to rapidly evolving and surpassing your current self. And who knows, maybe that promotion is just around the corner.&lt;/p&gt;




&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>Simplify Kubernetes Monitoring: Kube-prometheus-stack Made Easy with Glasskube</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Mon, 15 Jul 2024 10:18:11 +0000</pubDate>
      <link>https://dev.to/distr/simplify-kubernetes-monitoring-kube-prometheus-stack-made-easy-with-glasskube-54gn</link>
      <guid>https://dev.to/distr/simplify-kubernetes-monitoring-kube-prometheus-stack-made-easy-with-glasskube-54gn</guid>
      <description>&lt;p&gt;What do we, as developers and engineers, value most above all else? The answer is simple: &lt;strong&gt;our time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tools that deliver value in the shortest amount of time have the highest chance of user adoption, it's as simple as that.&lt;/p&gt;

&lt;p&gt;What else do most engineers value? Beautiful and data-rich &lt;strong&gt;dashboards&lt;/strong&gt;.&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%2Fyit2k6i4e19o0rb74ly6.webp" 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%2Fyit2k6i4e19o0rb74ly6.webp" alt="like it" width="240" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://prometheus.io/" rel="noopener noreferrer"&gt;Prometheus&lt;/a&gt; and &lt;a href="https://grafana.com/" rel="noopener noreferrer"&gt;Grafana&lt;/a&gt; are open-source, community-backed solutions with stellar reputations. They bring immense value by fetching and storing metrics while enabling the creation of dashboards that are not only useful but also easy on the eyes.&lt;/p&gt;

&lt;p&gt;The uncomfortable truth is that anyone who has ever set up &lt;code&gt;Prometheus&lt;/code&gt; alongside &lt;code&gt;Grafana&lt;/code&gt; as their environment's monitoring stack from scratch has probably felt the frustration of not getting value especially quickly. Metric exporter configuration, dashboard widget customisation and deciding what to monitor and alert on in the first place takes time.&lt;/p&gt;

&lt;p&gt;That's why &lt;a href="https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack" rel="noopener noreferrer"&gt;Kube-Prometheus-Stack&lt;/a&gt; was created. It installs a collection of Kubernetes manifests, Grafana dashboards, and Prometheus rules, providing an easy-to-operate, end-to-end Kubernetes cluster monitoring solution with Prometheus using the Prometheus Operator.&lt;/p&gt;

&lt;p&gt;This sounds like good news, and it is, but the stack is bundled in a Helm chart, and just the &lt;code&gt;values.yaml&lt;/code&gt; file has &lt;em&gt;over 4000 lines&lt;/em&gt;. Configuring and maintaining the Helm chart isn’t necessarily straightforward or “fun.”&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%2Fvyjxge3kqk26cy92xx66.gif" 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%2Fvyjxge3kqk26cy92xx66.gif" alt="long-values-file" width="480" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With so many configuration options, we must be getting something good right? Well yeah, we are, by deploying kube-prometheus-stack we get all of this right out of the box: &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%2F2fcquzgd73xf9cc83ap1.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%2F2fcquzgd73xf9cc83ap1.png" alt="stack-diagram" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Top Layer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User:&lt;/strong&gt; Interacts with Grafana and Kubernetes API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Visualization and Alerting Layer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grafana.com/" rel="noopener noreferrer"&gt;Grafana&lt;/a&gt;:&lt;/strong&gt; Connects to Prometheus for data visualization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://prometheus.io/docs/alerting/latest/alertmanager/" rel="noopener noreferrer"&gt;Alertmanager&lt;/a&gt;:&lt;/strong&gt; Connected to Prometheus for alert management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/prometheus/prometheus" rel="noopener noreferrer"&gt;Prometheus Server&lt;/a&gt;:&lt;/strong&gt; Central component collecting and storing metrics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://observability.thomasriley.co.uk/prometheus/configuring-prometheus/using-service-monitors/" rel="noopener noreferrer"&gt;ServiceMonitors &amp;amp; PodMonitors&lt;/a&gt;:&lt;/strong&gt; Define how Prometheus scrapes metrics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/" rel="noopener noreferrer"&gt;Prometheus Rules&lt;/a&gt;:&lt;/strong&gt; Includes both alerting and recording rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exporters Layer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://prometheus.io/docs/guides/node-exporter/" rel="noopener noreferrer"&gt;Node Exporter&lt;/a&gt;:&lt;/strong&gt; Collects node-level metrics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/kubernetes/kube-state-metrics" rel="noopener noreferrer"&gt;Kube State Metrics&lt;/a&gt;:&lt;/strong&gt; Collects metrics from Kubernetes API objects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Other Exporters:&lt;/strong&gt; Additional exporters for various applications and services.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes Cluster:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kubernetes Nodes&lt;/strong&gt;: Running applications and system components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Applications:&lt;/strong&gt; Monitored by the Kube Prometheus Stack.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Luckily, &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; now supports the &lt;code&gt;Kube-Prometheus-Stack&lt;/code&gt;. Package configuration, lifecycle management, and installation can be done in record time.&lt;/p&gt;

&lt;p&gt;In this blog post, we will explore the steps to configure and install the &lt;code&gt;Kube-Prometheus-Stack&lt;/code&gt; using &lt;a href="https://glasskube.dev/" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt;, wasting no unnecessary time wrestling with never-ending values files and getting you working dashboards and alerts quicker than ever before.&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirements:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Access to a &lt;strong&gt;Kubernetes cluster&lt;/strong&gt; (&lt;a href="https://minikube.sigs.k8s.io/docs/start" rel="noopener noreferrer"&gt;Minikube&lt;/a&gt; will be fine)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; installed&lt;/li&gt;
&lt;li&gt;An extra screen for all the cool dashboards you are going to want to look at all the time. 🤣&lt;/li&gt;
&lt;/ul&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%2Fys9jr0f6ke1f7db3kfn0.gif" 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%2Fys9jr0f6ke1f7db3kfn0.gif" alt="image" width="350" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Before we begin
&lt;/h2&gt;

&lt;p&gt;For us at &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; crafting great content is as important as building great software. If this is the first time you've heard of us, we are working to build the next generation &lt;code&gt;Package Manager for Kubernetes&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on GitHub.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a cluster
&lt;/h2&gt;

&lt;p&gt;Install &lt;a href="https://minikube.sigs.k8s.io/docs/start" rel="noopener noreferrer"&gt;Minikube&lt;/a&gt; then run:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Check your installation by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minukube status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Desired output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;➜  ~ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Glasskube
&lt;/h2&gt;

&lt;p&gt;If you already &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;installed&lt;/a&gt; glasskube you can skip this step.&lt;br&gt;
If not, glasskube can easily be installed by following your distribution's specific instructions.&lt;/p&gt;

&lt;p&gt;MacOs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew install glasskube/tap/glasskube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Linux (Ubuntu/Debian)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -LO https://releases.dl.glasskube.dev/glasskube_v0.4.0_amd64.deb
sudo dpkg -i glasskube_v0.4.0_amd64.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More installation &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;guides here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After installing Glasskube on your local machine, make sure to install the necessary components in your Kubernetes cluster by running &lt;code&gt;glasskube bootstrap&lt;/code&gt;. For more information, check out our bootstrap guide.&lt;/p&gt;

&lt;p&gt;Once Glasskube has been installed access the UI with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Navigate to &lt;code&gt;http://localhost:8580/&lt;/code&gt; to access it. &lt;/p&gt;

&lt;h2&gt;
  
  
  Kube-prometheus-stack installation
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Installation can be done via the CLI, UI or even through a YAML package definition file. Since we will customize the deployment we will use the UI for this example.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Package Customization
&lt;/h2&gt;

&lt;p&gt;Glasskube offers a series of customisations that we can be tweaked and adjusted from the CLI or GUI, saving you from having to render and configure the &lt;code&gt;values.yaml&lt;/code&gt; file directly. &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%2Fw7txd2o9vw0mxvrebj3g.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%2Fw7txd2o9vw0mxvrebj3g.png" alt="parameter config" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s take them one by one. &lt;/p&gt;

&lt;h3&gt;
  
  
  Enable Alertmanager 🚨
&lt;/h3&gt;

&lt;p&gt;We want &lt;code&gt;Alertmanager&lt;/code&gt; to be enabled so we can leverage the metrics prometheus exposes to create helpful alerts.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Grafana Domain 📊
&lt;/h3&gt;

&lt;p&gt;We will leave this empty for this demo since we would need to deploy an ingress controller to our cluster to handle the ingress object associated with the Grafana service. We could use &lt;a href="https://glasskube.dev/guides/ingress-nginx/" rel="noopener noreferrer"&gt;Ingress-nginx&lt;/a&gt; or &lt;a href="https://github.com/caddyserver/ingress" rel="noopener noreferrer"&gt;Caddy-ingress&lt;/a&gt; which are also supported by Glasskube for this. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Glasskube will automatically port-forward the Grafana pod so we can access the dashboard via the &lt;code&gt;Open&lt;/code&gt; button.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Node Exporter host network 💽
&lt;/h3&gt;

&lt;p&gt;Let’s also enable this to export node level metrics like memory and node level CPU usage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prometheus retention 📅
&lt;/h3&gt;

&lt;p&gt;This is a duration in days for how long we want to persist the collected metrics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prometheus storage size
&lt;/h3&gt;

&lt;p&gt;The amount of storage requests we consider the package will need. &lt;/p&gt;

&lt;h3&gt;
  
  
  Parameter input methods 🗄️
&lt;/h3&gt;

&lt;p&gt;Glasskube allows for various methods of parameter input:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From a &lt;strong&gt;Kubernetes Secret&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;From &lt;strong&gt;ConfigMap&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Value from &lt;strong&gt;Package Configuration&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Via the &lt;strong&gt;UI&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&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%2Fe8dd9vj10hqw13qk98td.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%2Fe8dd9vj10hqw13qk98td.png" alt="data input methods" width="800" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By choosing to inject data via &lt;strong&gt;Kubernetes Secrets&lt;/strong&gt;, &lt;strong&gt;ConfigMaps&lt;/strong&gt; and &lt;strong&gt;Package configuration&lt;/strong&gt; we can maintain simplicity without compromising security. &lt;/p&gt;

&lt;p&gt;Here is the example of how we would reference a specific &lt;code&gt;configMap&lt;/code&gt; we have already created and deployed to our cluster. &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%2F67dqnt7cxgpeq1zvdea4.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%2F67dqnt7cxgpeq1zvdea4.png" alt="Value from ConfigMap" width="800" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 If you're using &lt;code&gt;Kube-prometheus-stack&lt;/code&gt; and considering Glasskube for package lifecycle management but need support for specific key parameter customizations, please &lt;a href="https://github.com/glasskube/glasskube/issues" rel="noopener noreferrer"&gt;open an issue&lt;/a&gt; on GitHub with your use case. We'll do our best to expand the parameter list accordingly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Install via Glasskkube
&lt;/h2&gt;

&lt;p&gt;Once the configuration section is complete, install &lt;code&gt;kube-prometheus-stack.&lt;/code&gt;&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%2F2ch181euwexulffkli9d.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%2F2ch181euwexulffkli9d.png" alt="Glasskube UI" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon installation you can see that the &lt;code&gt;kube-prometheus-stack&lt;/code&gt; namespace has been created. And a series of pods have been deployed, including the &lt;code&gt;grafana&lt;/code&gt; dashboard, the &lt;code&gt;prometheus operator&lt;/code&gt; and the &lt;code&gt;kube state metrics&lt;/code&gt; pods too.&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%2Fl3pgws4cf2qtib4449m3.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%2Fl3pgws4cf2qtib4449m3.png" alt="cli output" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Access the dashboards
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;In next weeks blog post we will access the dashboard via a custom dedicated Grafana URL&lt;/em&gt; &lt;/p&gt;
&lt;/blockquote&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%2Fmnt9zl5qxuq8cd54qwni.gif" 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%2Fmnt9zl5qxuq8cd54qwni.gif" alt="open command" width="560" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit the &lt;code&gt;Open&lt;/code&gt; button or if you want to access Grafana on a different port you can simply &lt;code&gt;port-forward&lt;/code&gt; the pod, which will map the exposed Grafana port to a port on your localhost. I've arbitrarily chosen to &lt;code&gt;port-forward&lt;/code&gt; to &lt;code&gt;localhost 52222&lt;/code&gt; since it's available.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl port-forward POD_NAME 52222:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Head over to &lt;code&gt;http://localhost:52222/&lt;/code&gt; and you will then be greated by the Granfana login page. To find your credentials which are stored in a Kubernetes secret that was generated as part of the deployed stack, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get secret kube-prometheus-stack-kube-prometheus-stack-grafana  -o go-template='
{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which will output something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;admin-password: prom-operator
admin-user: admin
ldap-toml:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upon access you we be greeted by a long list of powerful pre-configured Grafana dashboards which are already showing local cluster metrics:&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%2F6qet3srm7xly065jfbx5.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%2F6qet3srm7xly065jfbx5.png" alt="dashboards" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Easily access CPU usage information
&lt;/h3&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%2Fikbx8hwn3ffssi7zeutr.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%2Fikbx8hwn3ffssi7zeutr.png" alt="CPU dashboard" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Here is a segment of the nifty CoreDNS dashboard that also comes preconfigured
&lt;/h3&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%2Fywy90tbmkhuhrz0bb0ul.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%2Fywy90tbmkhuhrz0bb0ul.png" alt="CoreDNS" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Alerting
&lt;/h2&gt;

&lt;p&gt;We already get many useful alerts created for us right out of the box. &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%2Fptnr7vl5hux0hur8tzh3.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%2Fptnr7vl5hux0hur8tzh3.png" alt="alerting rules" width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this snippet you can see that some of the preconfigured alerts are already firing: ↘️&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%2F0dguekqv6cg5yox9ofq4.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%2F0dguekqv6cg5yox9ofq4.png" alt="firing alerts" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to be notified in via &lt;strong&gt;email&lt;/strong&gt;, &lt;strong&gt;PagerDuty&lt;/strong&gt; or any number of third party supported you will just need to add your &lt;a href="https://grafana.com/docs/grafana/latest/alerting/fundamentals/notifications/contact-points/#:~:text=A%20contact%20point%20is%20a,custom%20message%2C%20or%20notification%20templates." rel="noopener noreferrer"&gt;contact points&lt;/a&gt; of preference and then add them as destination inside &lt;a href="https://grafana.com/docs/grafana/latest/alerting/configure-notifications/create-notification-policy/" rel="noopener noreferrer"&gt;custom notification policies&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The &lt;code&gt;Kube-prometheus-stack&lt;/code&gt; offers tremendous &lt;strong&gt;"out-of-the-box"&lt;/strong&gt; value for Kubernetes cluster monitoring, eliminating the need to start from scratch. It bundles essential components for metrics exposure, extraction, alerting, and visualization, helping you establish a robust monitoring posture from the get-go. With official support from &lt;code&gt;Glasskube&lt;/code&gt;, managing and updating a comprehensive, best practice-compliant monitoring stack has never been easier.&lt;/p&gt;




&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on GitHub.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>opensource</category>
      <category>kubernetes</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Log and trace management made easy. Quickwit Integration via Glasskube</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Mon, 01 Jul 2024 12:14:52 +0000</pubDate>
      <link>https://dev.to/distr/log-and-trace-management-made-easy-quickwit-integration-via-glasskube-2hg2</link>
      <guid>https://dev.to/distr/log-and-trace-management-made-easy-quickwit-integration-via-glasskube-2hg2</guid>
      <description>&lt;p&gt;Distributed application troubleshooting can be a nightmare. Unless you have the budget for expensive proprietary monitoring SaaS solutions or the expertise to run and maintain an complex ELK stack you might feel as if you are stuck in a cave without a flashlight. &lt;/p&gt;

&lt;p&gt;Luckily, viable open-source alternatives like &lt;a href="https://quickwit.io/" rel="noopener noreferrer"&gt;Quickwit&lt;/a&gt; are here to come to the rescue. By weaving together existing tooling for log and trace ingesting as well as pairing well with dashboard and visualisation tools such as Grafana and Jaeger. And sandwiching powerful indexing storage and search capabilities in between. Even if the tool sounds new, it won’t be for long. &lt;/p&gt;

&lt;p&gt;We recently integrated Quickwit with &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; and it’s available to be easily deployed to your cluster. I spoke directly with Quickwit co-founder &lt;a href="https://www.linkedin.com/in/fran%C3%A7ois-massot-473006b/" rel="noopener noreferrer"&gt;François Massot&lt;/a&gt; to get the insider scoop, and to learn how the tool works. Let's dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  But what is Quickwit exactly? 🤷
&lt;/h2&gt;

&lt;p&gt;Quickwit is a cloud-native search engine that emerged with the goal of creating an open-source alternative to expensive monitoring software like Datadog and Splunk. Along the way, they’ve also developed and open-sourced several components, including ChitChat (cluster membership protocol), mrecordlog (WAL), Whichlang (fast language detection), witty actors (actor framework), and bitpacking (SIMD algorithms for integer compression).&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%2F154x37vzjunqayriczlx.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%2F154x37vzjunqayriczlx.png" alt="quickmit-diagram" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quickwit, with its robust Elasticsearch-compatible API, integrates well with tooling from the OSS ecosystem, such as Grafana, Jaeger, and OpenTelemetry. Users are successfully deploying Quickwit at scale, with hundreds of nodes and hundreds of terabytes of data ingested daily, all while enjoying significant cost reductions and how thanks to Glasskube to can get up and running in no time.&lt;/p&gt;

&lt;p&gt;Quickwit excels in handling logs, traces, security data, and append-only datasets, with plans to support metrics soon. A key feature is the usage of object storage for the indexed data, which simplifies cluster management, cuts infrastructure costs, and enhances reliability. Multiple storage options are available such as local disk, Amazon S3, Azure Blob storage or Garage, an OSS distributed object storage, are available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions for the co-founder François Massot 🙋
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the benefits of using external Object Storage as opposed to node attached storage?
&lt;/h3&gt;

&lt;p&gt;There are a lot of benefits! From the beginning, we chose to decouple compute and storage to make our search engine scalable, reliable, and very cost-efficient. If you want to remember one thing distinguishing Quickwit from traditional search engines, this is decoupled storage and computing.&lt;/p&gt;

&lt;p&gt;Firstly, it provides elasticity, allowing us to scale storage and compute resources independently, which is ideal for cloud environments. Secondly, it’s cost-efficient, as object storage like S3 is cheaper than traditional disk storage, especially for large volumes of log data. And you don’t need to replicate your index data; this is done by the object storage layer. Additionally, it ensures high durability and availability, reducing the risk of data loss. Last, but not least, it simplifies cluster management as most of Quickiwt’s components are stateless.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance Comparison: Is Quickwit Faster than Elasticsearch?
&lt;/h3&gt;

&lt;p&gt;It depends!&lt;/p&gt;

&lt;p&gt;On indexing, Quickwit is generally twice as fast as Elasticsearch and uses less CPU. Our users, like Binance, report a reduction of 80% of CPU usage at indexing!&lt;/p&gt;

&lt;p&gt;The story is different regarding querying, as Elasticsearch has all its data on a local disk, typically SSD, and Quickwit has its indexed data in very slow object storage. In this case, you can expect query time to be lower. But Quickwit's main goal is to be sub-second queries, which is perfectly fine in the observability/security domains. If we look at this indicator, Quickwit is on par with Elasticsearch and is even faster for demanding analytics queries, whereas the data is stored on object storage!&lt;/p&gt;

&lt;h3&gt;
  
  
  What's in store for quickwit in the future?
&lt;/h3&gt;

&lt;p&gt;We have a very ambitious roadmap! Here are the key features that will be added in the following 12 months:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Distributed ingest (July 2024)&lt;/strong&gt;: High-throughput indexing on tens of thousands of indexes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenSearch Dashboard support (Q3 2024)&lt;/strong&gt;: This will enable OpenSearch users to migrate seamlessly to Quickwit with their existing dashboards.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Metrics support (Q4 2024)&lt;/strong&gt;: New storage engine optimized for time series data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Distributed SQL engine (Q1 2025)&lt;/strong&gt;: Distributed SQL engine for analytics on top of Apache Arrow, Datafusion, and Ballista.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pipe-based query language (Q2 2025)&lt;/strong&gt;: Introduction of a flexible and powerful query language similar to SPL (Splunk Query Language)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Log management 🪵
&lt;/h3&gt;

&lt;p&gt;Quickwit is built from the ground up to efficiently index unstructured data, and search it effortlessly on cloud storage. Moreover, Quickwit supports OpenTelemetry gRPC and HTTP (protobuf only) protocols out of the box and provides a REST API ready to ingest any JSON formatted logs. This makes Quickwit a perfect fit for logs!&lt;/p&gt;

&lt;h3&gt;
  
  
  Distributed tracing 📊
&lt;/h3&gt;

&lt;p&gt;Distributed Tracing involves monitoring application requests as they traverse various services like frontend, backend, and databases. It's instrumental for understanding application behavior and diagnosing performance issues.&lt;/p&gt;

&lt;p&gt;Additionally, Quickwit seamlessly integrates with OpenTelemetry using gRPC and HTTP protocols (protobuf only), as well as Jaeger's gRPC API (SpanReader only). This means you can store traces in Quickwit and effortlessly query them using Jaeger's UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key features 🔑
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Full-text &lt;em&gt;search&lt;/em&gt; and &lt;em&gt;aggregation&lt;/em&gt; queries&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Elasticsearch&lt;/em&gt; query language support&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Sub-second search&lt;/em&gt; on cloud storage (Amazon S3, Azure Blob Storage, …)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Decoupled compute&lt;/em&gt; and &lt;em&gt;storage&lt;/em&gt;, stateless &lt;em&gt;indexers &amp;amp; searchers&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Schemaless&lt;/em&gt; or &lt;em&gt;strict&lt;/em&gt; schema &lt;em&gt;indexing&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Schemaless analytics&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Grafana&lt;/em&gt; data source&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Jaeger-native&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;OTEL-native&lt;/em&gt; for logs and traces&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Kubernetes ready&lt;/em&gt; via Glasskube&lt;/li&gt;
&lt;li&gt;&lt;em&gt;RESTful API&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation guide 🦮
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites​
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Access to a Kubernetes cluster (you can easily create a local cluster by using &lt;a href="https://minikube.sigs.k8s.io/docs/start/?arch=%2Fmacos%2Fx86-64%2Fstable%2Fbinary+download" rel="noopener noreferrer"&gt;Minikube&lt;/a&gt; or &lt;a href="https://kind.sigs.k8s.io/" rel="noopener noreferrer"&gt;Kind&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://kubernetes.io/docs/tasks/tools/" rel="noopener noreferrer"&gt;kubectl&lt;/a&gt; isn't strictly speaking a dependency for installing packages via glasskube, but it is the recommended way to interact with the cluster. Therefore, it is highly recommended. Installation instructions are available for macOS, Linux and Windows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install Glasskube
&lt;/h2&gt;

&lt;p&gt;If you already &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;installed&lt;/a&gt; glasskube you can skip this step.&lt;br&gt;
If not, glasskube can easily be installed by following your distribution's specific instructions.&lt;/p&gt;

&lt;p&gt;For this demo I'll be using a MacOs distribution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;glasskube/tap/glasskube &lt;span class="c"&gt;# install the glasskube cli&lt;/span&gt;
minikube start &lt;span class="c"&gt;# start a minikube Kubernetes cluster&lt;/span&gt;
glasskube bootstrap &lt;span class="c"&gt;# install glasskube on the kind cluster&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more installation &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;guides, find them here.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once Glasskube has been installed access via the UI with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glasskube serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The dashboard will open up on &lt;code&gt;http://localhost:8580/&lt;/code&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating an S3-Compatible Bucket
&lt;/h2&gt;

&lt;p&gt;Before installing Quickwit, you'll need to create an object storage bucket to hold your Quickwit &lt;code&gt;indexes&lt;/code&gt;. You can use use your choice of Cloud provider such as &lt;a href="https://www.scaleway.com/en/" rel="noopener noreferrer"&gt;Scaleway&lt;/a&gt;, &lt;a href="https://aws.amazon.com/" rel="noopener noreferrer"&gt;AWS&lt;/a&gt; S3 or &lt;a href="https://min.io/" rel="noopener noreferrer"&gt;MinIO&lt;/a&gt;. Refer to our official Quickwit &lt;a href="https://quickwit.io/docs/configuration/storage-config" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; for storage configuration details.&lt;/p&gt;

&lt;p&gt;Here I will be creating an &lt;code&gt;AWS S3 bucket&lt;/code&gt; to store the Quickwit indexes.&lt;br&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%2Fa3aed8xtewfgf10filkj.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%2Fa3aed8xtewfgf10filkj.png" alt="s3-dashboard" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the AWS management console and create a new S3 bucket.&lt;/li&gt;
&lt;li&gt;In &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html" rel="noopener noreferrer"&gt;IAM generate an API key&lt;/a&gt;, with S3 permissions, save the 'Access Key Id' and 'Secret Key', we will need them shortly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Deploy Quickwit​
&lt;/h2&gt;

&lt;p&gt;From the Glasskube dashboard, find the Quickwit pacakge and add your custom configuration parameters.&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%2F9ye6uqvhdwciumt65aal.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%2F9ye6uqvhdwciumt65aal.png" alt="quickmit-parameters" width="800" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;defaultIndexRootUri&lt;/strong&gt;: for this demo it's &lt;code&gt;s3://quickwit-indexes&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;metastoreUri:&lt;/strong&gt; we won't use PostgreSQL so let's pick the same value we used for &lt;code&gt;defaultIndexRootUri&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;s3AccessKeyId:&lt;/strong&gt; the &lt;code&gt;"Access Key Id"&lt;/code&gt; from AWS we generated before.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;s3Endpoint:&lt;/strong&gt; Custom endpoint for use with S3-compatible providers. Not needed for S3 configuration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;s3Flavor:&lt;/strong&gt; we are using the default &lt;code&gt;empty value&lt;/code&gt; for genuine S3-compatible object storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;s3Region:&lt;/strong&gt; &lt;code&gt;US-east-1&lt;/code&gt; in my case.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;s3SecretAccessKey:&lt;/strong&gt; the &lt;code&gt;"Secret Key"&lt;/code&gt; from AWS we generated before.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here you can find the &lt;a href="https://quickwit.io/blog/glasskube" rel="noopener noreferrer"&gt;official Quickwit documentation &lt;/a&gt;for parameter completion. &lt;/p&gt;

&lt;p&gt;It's also possible to install and configure Quickwit using the Glasskube CLI by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;glasskube &lt;span class="nb"&gt;install &lt;/span&gt;quickwit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once installed, you can see that a &lt;code&gt;quickwit&lt;/code&gt; namespace has been created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;default
flux-system
glasskube-system
kube-node-lease
kube-public
kube-system
kubernetes-dashboard
quickwit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, check to see if the pods are running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;NAME                                               READY   STATUS    RESTARTS      AGE
quickwit-quickwit-control-plane-86bd9955f7-bwm2r   1/1     Running   1 &lt;span class="o"&gt;(&lt;/span&gt;27m ago&lt;span class="o"&gt;)&lt;/span&gt;   29m
quickwit-quickwit-indexer-0                        1/1     Running   1 &lt;span class="o"&gt;(&lt;/span&gt;27m ago&lt;span class="o"&gt;)&lt;/span&gt;   29m
quickwit-quickwit-janitor-9479697ff-x4x2c          1/1     Running   1 &lt;span class="o"&gt;(&lt;/span&gt;27m ago&lt;span class="o"&gt;)&lt;/span&gt;   29m
quickwit-quickwit-metastore-56ff74df9f-k6d2g       1/1     Running   0             29m
quickwit-quickwit-searcher-0                       1/1     Running   1 &lt;span class="o"&gt;(&lt;/span&gt;27m ago&lt;span class="o"&gt;)&lt;/span&gt;   29m
quickwit-quickwit-searcher-1                       1/1     Running   0             27m
quickwit-quickwit-searcher-2                       1/1     Running   0             27m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can try to access to the Quickwit UI using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;kubectl &lt;span class="nt"&gt;-n&lt;/span&gt; quickwit port-forward pod/quickwit-quickwit-searcher-0 7280
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Head over to &lt;a href="http://localhost:7280" rel="noopener noreferrer"&gt;http://localhost:7280&lt;/a&gt;. And you should be ready to go!&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%2Fchju7g5d8nqx6nguzhbp.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%2Fchju7g5d8nqx6nguzhbp.png" alt="quickwit dashboard" width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Create your first index​
&lt;/h3&gt;

&lt;p&gt;Before adding &lt;strong&gt;documents&lt;/strong&gt; to &lt;a href="https://quickwit.io/" rel="noopener noreferrer"&gt;Quickwit&lt;/a&gt;, you need to create an &lt;strong&gt;index&lt;/strong&gt; configured with a YAML config file. This config file notably lets you define how to map your input documents to your index fields and whether these fields should be stored and indexed. See the &lt;a href="https://quickwit.io/docs/main-branch/configuration/index-config" rel="noopener noreferrer"&gt;index config documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Let's create an index configured to receive Stackoverflow posts (questions and answers).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# First, download the stackoverflow dataset config from Quickwit repository.
curl -o stackoverflow-index-config.yaml https://raw.githubusercontent.com/quickwit-oss/quickwit/main/config/tutorials/stackoverflow/index-config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The index config defines three fields: &lt;strong&gt;title&lt;/strong&gt;, &lt;strong&gt;body&lt;/strong&gt; and &lt;strong&gt;creationDate&lt;/strong&gt;. &lt;em&gt;title&lt;/em&gt; and &lt;em&gt;body&lt;/em&gt; &lt;a href="https://quickwit.io/docs/configuration/index-config#text-type" rel="noopener noreferrer"&gt;are indexed and tokenized&lt;/a&gt;, and they are also used as default search fields, which means they will be used for search if you do not target a specific field in your query. &lt;em&gt;creationDate&lt;/em&gt; serves as the timestamp for each record. There are no more explicit field definitions as we can use the default &lt;a href="https://quickwit.io/docs/main-branch/configuration/index-config#mode" rel="noopener noreferrer"&gt;dynamic mode&lt;/a&gt;: the undeclared fields will still be indexed, by default fast fields are enabled to enable aggregation queries. and the raw tokenizer is used for text.&lt;/p&gt;

&lt;p&gt;And here is the complete config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Index config file for stackoverflow dataset.&lt;/span&gt;
&lt;span class="c1"&gt;#&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.7&lt;/span&gt;

&lt;span class="na"&gt;index_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stackoverflow&lt;/span&gt;

&lt;span class="na"&gt;doc_mapping&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;field_mappings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;title&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;text&lt;/span&gt;
      &lt;span class="na"&gt;tokenizer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;default&lt;/span&gt;
      &lt;span class="na"&gt;record&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;position&lt;/span&gt;
      &lt;span class="na"&gt;stored&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;body&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;text&lt;/span&gt;
      &lt;span class="na"&gt;tokenizer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;default&lt;/span&gt;
      &lt;span class="na"&gt;record&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;position&lt;/span&gt;
      &lt;span class="na"&gt;stored&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;creationDate&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;datetime&lt;/span&gt;
      &lt;span class="na"&gt;fast&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
      &lt;span class="na"&gt;input_formats&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;rfc3339&lt;/span&gt;
      &lt;span class="na"&gt;fast_precision&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;seconds&lt;/span&gt;
  &lt;span class="na"&gt;timestamp_field&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;creationDate&lt;/span&gt;

&lt;span class="na"&gt;search_settings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;default_search_fields&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;body&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;indexing_settings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;commit_timeout_secs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we can create the index with the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./quickwit index create --index-config ./stackoverflow-index-config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check that a directory &lt;code&gt;./qwdata/indexes/stackoverflow&lt;/code&gt; has been created, Quickwit will write index files here and a &lt;code&gt;metastore.json&lt;/code&gt; which contains the &lt;a href="https://quickwit.io/docs/overview/architecture#index" rel="noopener noreferrer"&gt;index metadata&lt;/a&gt;. You're now ready to fill the index.&lt;/p&gt;

&lt;p&gt;Continue on to the Quickwit documentation to add your &lt;a href="https://quickwit.io/docs/get-started/quickstart#lets-add-some-documents" rel="noopener noreferrer"&gt;first documents&lt;/a&gt; and execute your &lt;a href="https://quickwit.io/docs/get-started/quickstart#execute-search-queries" rel="noopener noreferrer"&gt;first search queries&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on GitHub.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>database</category>
      <category>opensource</category>
      <category>aws</category>
    </item>
    <item>
      <title>Glasskube v0.10.0 out now!</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Mon, 24 Jun 2024 11:27:08 +0000</pubDate>
      <link>https://dev.to/distr/glasskube-v0100-out-now-3ipi</link>
      <guid>https://dev.to/distr/glasskube-v0100-out-now-3ipi</guid>
      <description>&lt;p&gt;Welcome back to another &lt;code&gt;new release&lt;/code&gt; blog post 🚀&lt;/p&gt;

&lt;p&gt;This is where we cover the newest shipped features, enhancements, bug fixes and cover all of the recent &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; news to make sure you are fully up to speed. We have been riding a continous wave off momentum of internal feature developments as well as interest from the wider community which has led to the delivery of &lt;strong&gt;Glasskube v0.10.0&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Let’s check out what you can expect to find in this new minor release. &lt;/p&gt;

&lt;h2&gt;
  
  
  🚨 Alert: Breaking changes on the horizon ⛓️‍💥
&lt;/h2&gt;

&lt;p&gt;Up until now, Glasskube packages could only be installed once per cluster, which sometimes imposed unnecessary restrictions and limited certain use cases.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;From v0.10.0 onwards, the author of a package can specify a &lt;strong&gt;"scope,"&lt;/strong&gt; which can be either &lt;strong&gt;"Cluster"&lt;/strong&gt; or &lt;strong&gt;"Namespaced"&lt;/strong&gt; (with the default being "Cluster"). Based on the package scope, the Glasskube system creates either a cluster-scoped or namespace-scoped custom resource. The name of the cluster-scoped CRD is &lt;code&gt;ClusterPackage&lt;/code&gt;, while the name for the namespace-scoped CRD is &lt;code&gt;Package&lt;/code&gt;. This update introduces a breaking change since we previously used the &lt;code&gt;Package&lt;/code&gt; CRD name for cluster-scoped resources. However, we decided to implement this change to align with common Kubernetes nomenclature (e.g., &lt;code&gt;Role&lt;/code&gt;/ &lt;code&gt;ClusterRole&lt;/code&gt;). &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Additional features and UI enhancements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To assist in upgrading to v0.10.0 the &lt;code&gt;glasskube purge&lt;/code&gt; command was added to help remove the previous installation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;glasskube repo update&lt;/code&gt; command was also added to fetch the latest package manifests from configured Glasskube package repository.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Access to the full changelog &lt;a href="https://github.com/glasskube/glasskube/releases" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrading to v0.10.0
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;For first time installations, please follow the installation guide &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To upgrade the Glasskube CLI, Install the newest binary files if you are on &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;Linux&lt;/a&gt; or &lt;a href="https://releases.dl.glasskube.dev/glasskube_v0.9.0_windows_x86_64.zip" rel="noopener noreferrer"&gt;Windows&lt;/a&gt; machines. &lt;/p&gt;

&lt;p&gt;For macOS, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;brew upgrade glasskube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To upgrade Glasskube’s cluster components follow to &lt;a href="https://glasskube.dev/docs/getting-started/upgrading/" rel="noopener noreferrer"&gt;upgrading guide here&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  🆕 New Packages integrations available now
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Quickwit
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://quickwit.io/" rel="noopener noreferrer"&gt;Quickwit&lt;/a&gt; is a cloud-native search engine that emerged with the goal of creating an open-source alternative to expensive monitoring software like Datadog/Splunk. With its robust Elasticsearch-compatible API, Quickwit integrates well with tooling from the OSS ecosystem, such as Grafana, Jaeger, and OpenTelemetry. &lt;/p&gt;

&lt;p&gt;Users are successfully deploying Quickwit at scale, with hundreds of nodes and hundreds of terabytes of data ingested daily, all while enjoying significant cost reductions and how thanks to Glasskube to can get up and running in no time. Quickwit excels in handling logs, traces, security data, and append-only datasets, with plans to support metrics soon.&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%2F49oonpe9gv2zet0vs9aj.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%2F49oonpe9gv2zet0vs9aj.png" alt="Glasskube and Quickwit" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hatchet
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hatchet.run/" rel="noopener noreferrer"&gt;Hatchet&lt;/a&gt; is a distributed, fault-tolerant task queue which replaces traditional message brokers and pub/sub systems, built to solve problems like concurrency, fairness, and durability.&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%2Fv7p2mniv0hgb9q7hhzz0.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%2Fv7p2mniv0hgb9q7hhzz0.png" alt="Hatchet-glasskube" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find installation instructions &lt;a href="https://docs.hatchet.run/self-hosting/kubernetes-glasskube" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⏭️ Next packages to be supported
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Kubeflow
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://www.kubeflow.org/" rel="noopener noreferrer"&gt;Kubeflow&lt;/a&gt; project is dedicated to making deployments of machine learning (ML) workflows on Kubernetes simple, portable and scalable. Their goal is not to recreate other services, but to provide a straightforward way to deploy best-of-breed open-source systems for ML to diverse infrastructures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Headlamp
&lt;/h3&gt;

&lt;p&gt;Out of the box, &lt;a href="https://headlamp.dev/" rel="noopener noreferrer"&gt;Headlamp&lt;/a&gt; is a fully functional Kubernetes UI. By leveraging its powerful plugin system, builders can shape Headlamp to fit their bespoke use-cases, products, and environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Velero
&lt;/h3&gt;

&lt;p&gt;Under the VMWare umbrella, &lt;a href="https://velero.io/" rel="noopener noreferrer"&gt;Velero&lt;/a&gt; is an open source tool to safely backup and restore, perform disaster recovery, and migrate Kubernetes cluster resources and persistent volumes.&lt;/p&gt;

&lt;h2&gt;
  
  
  📹 Updated demo video
&lt;/h2&gt;

&lt;p&gt;Check out the newest Glasskube demo video delivered by Philip, where you can find the latest project updates up to v0.9.0.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/aIeTHGWsG2c"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;

&lt;p&gt;If you haven’t already, head on over to the &lt;a href="https://www.youtube.com/@glasskube/videos" rel="noopener noreferrer"&gt;Glasskube YouTube channel&lt;/a&gt; where you can find the growing archive of weekly Community Calls, Release videos and even some short form content. &lt;/p&gt;
&lt;h2&gt;
  
  
  ☁️ Join Glasskube Cloud
&lt;/h2&gt;

&lt;p&gt;We are starting to build our Glasskube cloud offering to include advanced features in security, accessibility, and team collaboration. Stay updated on our progress by signing up &lt;a href="https://glasskube.cloud/signup.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&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%2F7jya4p0vqd8dgpmoy74c.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%2F7jya4p0vqd8dgpmoy74c.png" alt="Glasskube cloud snippet" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on GitHub.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>devops</category>
      <category>kubernetes</category>
      <category>programming</category>
    </item>
    <item>
      <title>10 Essential Books to Accelerate your Cloud Career</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Wed, 19 Jun 2024 13:17:44 +0000</pubDate>
      <link>https://dev.to/distr/10-essential-books-to-accelerate-your-cloud-career-6jf</link>
      <guid>https://dev.to/distr/10-essential-books-to-accelerate-your-cloud-career-6jf</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR 🤓
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DevOps&lt;/strong&gt; and &lt;strong&gt;cloud engineers&lt;/strong&gt; need not have a floor-to-ceiling bookshelf full of books to enhance their skills. &lt;strong&gt;A few key books are all you need (at least at the beginning)&lt;/strong&gt;. Below I highlight key titles for both junior and senior DevOps and cloud engineers, focusing on improving productivity, understanding cloud native technologies and cloud infrastructure. Emphasizing &lt;strong&gt;practical application&lt;/strong&gt; and continuous learning is essential for advancing a career in the rapidly evolving cloud industry.&lt;/p&gt;




&lt;p&gt;With the vast amount of valuable and entertaining sources of Cloud Engineering information, from &lt;a href="https://open.spotify.com/show/6VRDZ6E89JfNY9BCANx70m?si=c08f83248aee4df7" rel="noopener noreferrer"&gt;podcasts&lt;/a&gt; and &lt;a href="https://www.youtube.com/@KodeKloud" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; channels to even &lt;a href="https://www.youtube.com/watch?v=BE77h7dmoQU" rel="noopener noreferrer"&gt;movies&lt;/a&gt;, it can sometimes make us question the authenticity of the well-stocked bookshelves we see behind team members on our daily Zoom calls. &lt;strong&gt;Do they actually read those books, or are they just for show?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As someone who has always loved books for their content and entertainment value, I've found myself increasingly drawn to them in recent years for the change of mental pace they provide compared to other modern content mediums.&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%2Femn3uta3irrsmltoiku7.gif" 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%2Femn3uta3irrsmltoiku7.gif" alt="reading-gif" width="470" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike other technical book recommendation articles, I want to distinguish between four distinct categories of books that I find helpful to keep in mind. Not every book on this list is meant to be read from cover to cover, nor is every book a dense technical textbook that will gather dust on your shelf after a quick leaf-through. &lt;/p&gt;

&lt;p&gt;The handful of book recommendations that have made an impact on my own cloud journey &lt;strong&gt;fall into the following categories&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core concepts:&lt;/strong&gt; 🏗️&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud Computing: Concepts, Technology &amp;amp; Architecture&lt;/li&gt;
&lt;li&gt;The DevOps Handbook&lt;/li&gt;
&lt;li&gt;Cloud Native Infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Reference books:&lt;/strong&gt; 🔎&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site Reliability Engineering&lt;/li&gt;
&lt;li&gt;AWS Fundamentals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Page turners:&lt;/strong&gt; 📑&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Phoenix Project&lt;/li&gt;
&lt;li&gt;Accelerate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not cloud specific but still must reads:&lt;/strong&gt;📍&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wiring the winning organisation&lt;/li&gt;
&lt;li&gt;Slow productivity&lt;/li&gt;
&lt;li&gt;Designing Data-Intensive Applications&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🚨 Disclaimer: Gene Kim is going to feature prominently on this list &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Before we begin
&lt;/h2&gt;

&lt;p&gt;For us at &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; crafting great content is as important as building great software. If this is the first time you've heard of us, we are working to build the next generation &lt;code&gt;Package Manager for Kubernetes&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on GitHub.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Core concepts 🏗️
&lt;/h2&gt;

&lt;p&gt;These are the types of books that provide beginners with &lt;strong&gt;essential core concepts and frameworks&lt;/strong&gt;, forming a solid foundation that helps future lessons fall right into place.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Cloud Computing: Concepts, Technology &amp;amp; Architecture
&lt;/h3&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%2Fnpfg6ecfvb1o7r26cdf7.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%2Fnpfg6ecfvb1o7r26cdf7.png" alt="cloud-computing" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Originally published in 2013, this book is respected industry wide and is a comprehensive guide to cloud computing by exploring its history, models, mechanisms, architectures, and security considerations. Combining case studies with technical analysis, the book examines topics ranging from cloud-enabling technologies to cloud service level agreements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You will get a comprehensive and &lt;strong&gt;vendor-neutral understanding of cloud technologies&lt;/strong&gt;, making it easier to assess various cloud solutions and providers objectively.&lt;/li&gt;
&lt;li&gt;Fundamental &lt;strong&gt;cloud computing concepts, models, and mechanisms&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;A deeper understanding of &lt;strong&gt;cloud characteristics, security threats, and risk management frameworks&lt;/strong&gt;, crucial for designing secure and reliable cloud solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"There is no greater danger to a business than approaching cloud computing adoption with ignorance. The magnitude of a failed adoption effort not only correspondingly impacts IT departments, but can actually regress a business to a point where it finds itself steps behind from where it was prior to the adoption—and, perhaps, even more steps behind competitors that have been successful at achieving their goals in the meantime."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt; &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%2Fi00obtif4agkln48lwv7.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%2Fi00obtif4agkln48lwv7.png" alt="cloud-review" width="800" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://www.oreilly.com/library/view/cloud-computing-concepts/9780133387568/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The DevOps Handbook
&lt;/h3&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%2Fzn870tcuyzreoqcwzvus.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%2Fzn870tcuyzreoqcwzvus.png" alt="devops-hb-cover" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;By presenting the “Three ways” as the principles for mitigating these challenges and achieving world-class performance, the book illustrates how organizations can adopt DevOps principles and practices to accelerate delivery, improve reliability, and create a more satisfying and productive work environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Three Ways&lt;/strong&gt; (Flow, Feedback &amp;amp; Continual Learning and Experimentation).&lt;/li&gt;
&lt;li&gt;Focus on &lt;strong&gt;Deployment Lead Time.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Conway%27s_law" rel="noopener noreferrer"&gt;Conway’s law.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"DevOps isn't about automation, just as astronomy isn't about telescopes."&lt;/em&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2Fy0j47u1q1fb4jamxcyva.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%2Fy0j47u1q1fb4jamxcyva.png" alt="devops-review" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://itrevolution.com/product/the-devops-handbook-second-edition/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Cloud Native Infrastructure
&lt;/h3&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%2Fg1k95xt1eulbux4o1geb.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%2Fg1k95xt1eulbux4o1geb.png" alt="cn-cover" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The authors explain key concepts like representing infrastructure through code, APIs, managing application life cycles in a cloud-native way, and ensuring security and compliance, but overall the book stresses that cloud native infrastructure is about adapting principles and processes more than specific technologies, impacting application management as much as hardware. &lt;/p&gt;

&lt;p&gt;It guides readers on when and why to adopt these practices, outlining how they differ from traditional approaches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud native infrastructure &lt;strong&gt;prioritizes building infrastructure with software&lt;/strong&gt; over manual configuration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resiliency&lt;/strong&gt; is paramount in cloud native infrastructure.&lt;/li&gt;
&lt;li&gt;Cloud native infrastructure &lt;strong&gt;necessitates a shift in mindset&lt;/strong&gt; and company culture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embracing chaos&lt;/strong&gt; and designing for failure are essential.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The only systems that should never fail are those that keep you alive (e.g., heart implants, and brakes)"&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2Fam7khik68bij17hznpsb.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%2Fam7khik68bij17hznpsb.png" alt="Cloud-native-review" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://www.oreilly.com/library/view/cloud-native-infrastructure/9781491984291/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference books 🔎
&lt;/h2&gt;

&lt;p&gt;Keep these books close by, preferably within arm's reach. In truth, the "Core Concepts" books could also fall into this category and vice versa. As you build your personal home library, you'll definitely want hard copies of these books. This way, you can reference them easily, make annotations, earmark important sections, and fully extract the valuable insights they offer.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Site Reliability Engineering (SRE)
&lt;/h3&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%2F36edy12z1m1md5gj1icr.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%2F36edy12z1m1md5gj1icr.png" alt="sre-cover" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Site Reliability Engineering (SRE), a discipline pioneered by Google, offers a distinct approach to managing large-scale software systems by emphasizing the application of software engineering principles to operations. The book explores this approach in detail, providing insights into Google's production environment, SRE principles such as embracing risk and eliminating toil, and practical practices including monitoring, incident response, and capacity planning. &lt;/p&gt;

&lt;p&gt;It emphasizes the importance of automation, simplicity in software design, and a blameless postmortem culture for continuous improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;core&lt;/strong&gt; principles and practices of &lt;strong&gt;Site Reliability Engineering&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Gain insights into Google's production environment and the challenges of running &lt;strong&gt;large-scale systems&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;How to apply &lt;strong&gt;SRE principles&lt;/strong&gt; to their own organizations, regardless of size or technical expertise.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"If a human operator needs to touch your system during normal operations, you have a bug. The definition of normal changes as your systems grow."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2F2pedygn90llvtg9sdczl.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%2F2pedygn90llvtg9sdczl.png" alt="sre-review" width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://sre.google/books/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. AWS Fundamentals
&lt;/h3&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%2Fiqqe3pyhrpgcsn296qlu.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%2Fiqqe3pyhrpgcsn296qlu.png" alt="aws-cover" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;"AWS Fundamentals" guides readers through the essentials of Amazon Web Services (AWS), emphasizing practical application over certification preparation. It provides a comprehensive overview of core AWS services like EC2, S3, RDS, DynamoDB, Lambda, and more, categorized by function (compute, database and storage, messaging, etc. &lt;/p&gt;

&lt;p&gt;The authors offer practical examples, use cases, configuration recommendations, and tips for each service. Additionally, the book introduces Infrastructure as Code (IaC), explaining its importance and demonstrating how to use frameworks like CloudFormation, Serverless, and CDK to provision infrastructure. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding the &lt;strong&gt;core building blocks of AWS&lt;/strong&gt; (a lot of core cloud concepts are valid for over cloud providers).&lt;/li&gt;
&lt;li&gt;Learning how to apply AWS knowledge in &lt;strong&gt;real-world scenarios.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Gaining an understanding of &lt;strong&gt;Infrastructure as Code&lt;/strong&gt; (IaC).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Learning AWS doesn’t need to be hard. It is important to focus on the basics and to understand them well. Once this is done all new services or features can be understood really well.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2Fiu2fyrkna92rek37y3zv.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%2Fiu2fyrkna92rek37y3zv.png" alt="aws-fundamentals-review" width="432" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://awsfundamentals.com/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Page turners 📑
&lt;/h2&gt;

&lt;p&gt;Apart from teaching valuable professional lessons these books have felt as entertaining as other non technical works of fiction or non-fiction. All three left me with a strong “I need you to read this“ feeling. &lt;/p&gt;

&lt;h3&gt;
  
  
  6. The Phoenix project
&lt;/h3&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%2Fgcz8ipmf9j77l3ht5wpb.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%2Fgcz8ipmf9j77l3ht5wpb.png" alt="phoenix-cover" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;A novel (yes an actual novel) that follows Bill Palmer, a VP of IT Operations at Parts Unlimited, who is tasked with salvaging the company's failing IT project, code-named "Phoenix." As Bill navigates the challenges of a stressful work environment full of miscommunication, finger-pointing, and a looming audit, he crosses paths with Erik, a board member who introduces him to the principles of DevOps, without calling it that. &lt;/p&gt;

&lt;p&gt;Throughout the story, Bill and his team work to implement these principles, striving to streamline their workflow and improve collaboration between Development and IT Operations. The book is special since the conceptual thrust of the book of spreading DevOps practices is delivered in the refreshing form of a fully fledged narrative novel. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;three ways&lt;/strong&gt; is also touched upon in this book (similar to the DevOps Handbook).&lt;/li&gt;
&lt;li&gt;The importance of &lt;strong&gt;identifying and managing constraints&lt;/strong&gt; to optimize the flow of work.&lt;/li&gt;
&lt;li&gt;The importance of &lt;strong&gt;collaboration&lt;/strong&gt; and &lt;strong&gt;communication&lt;/strong&gt; between Development, IT Operations, and the business as a whole.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Being able to take needless work out of the system is more important than being able to put more work into the system.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2Fww59cx1cecsa4s2ru3nq.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%2Fww59cx1cecsa4s2ru3nq.png" alt="phoenix-review" width="800" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://itrevolution.com/product/the-phoenix-project/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Accelerate
&lt;/h3&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%2Fmbgt8w1disnuykguanqq.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%2Fmbgt8w1disnuykguanqq.png" alt="accelerate-cover" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The book presents four years of research exploring the practices that contribute to high-performing technology organizations. The authors sought to identify the capabilities that drive software delivery performance and, in turn, impact organizational performance. Their findings highlight twenty-four key capabilities, categorized as continuous delivery, architecture, product and process, lean management and monitoring, and cultural, that demonstrably improve software delivery and overall business outcomes. &lt;/p&gt;

&lt;p&gt;The book emphasizes that these capabilities are measurable and improvable, offering guidance for organizations to assess their current state and embark on a journey of continuous improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Software delivery performance&lt;/strong&gt; is a key predictor of organizational performance&lt;/li&gt;
&lt;li&gt;A set of capabilities, including &lt;strong&gt;technical practices&lt;/strong&gt;, &lt;strong&gt;Lean management&lt;/strong&gt;, and a &lt;strong&gt;generative culture&lt;/strong&gt;, drive improvements in software delivery performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transformational leadership&lt;/strong&gt; is crucial in enabling and amplifying the adoption of these capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The most important characteristic of high-performing teams is that they are never satisfied: they always strive to get better."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2Fgxskcoibuunvft84mvq5.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%2Fgxskcoibuunvft84mvq5.png" alt="accelerate-review" width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://itrevolution.com/product/accelerate/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not cloud specific but still must reads📍
&lt;/h2&gt;

&lt;p&gt;Not specifically cloud related at all but these are book that for different reasons I feel can round out a cloud engineer. &lt;/p&gt;

&lt;h3&gt;
  
  
  8. Wiring the Winning Organization
&lt;/h3&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%2Fl7k50mm9pvqllxki6nyt.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%2Fl7k50mm9pvqllxki6nyt.png" alt="wiring-cover" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I'm a huge fan of reading "leadership" or "management" focused books, even though I'm not in either of those positions. Learning what leadership should care about and the key ingredients needed to achieve excellent results serves as a cheat sheet for any individual contributor wanting to stand out by being impactful. Change doesn’t always have to come from the top, you can push it from wherever you find yourself.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The book presents a new theory of performance management, emphasizing how leaders can create the conditions for their organizations to achieve exceptional results. The book introduces three key mechanisms for building a "winning organization": slowification (making problem-solving easier), simplification (making problems easier to solve), and amplification (making problems more visible). &lt;/p&gt;

&lt;p&gt;Through a combination of theoretical explanations, practical case studies, and real-world examples, the authors demonstrate how these mechanisms can be applied across diverse industries and organizational contexts to achieve superior performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Greatness in any endeavor is achievable through a focus on refining the &lt;strong&gt;"social circuitry"&lt;/strong&gt; of an organization.&lt;/li&gt;
&lt;li&gt;Three key mechanisms &lt;strong&gt;slowification&lt;/strong&gt;, &lt;strong&gt;simplification&lt;/strong&gt;, and &lt;strong&gt;amplification&lt;/strong&gt; can be employed to move an organization from a &lt;strong&gt;"danger zone"&lt;/strong&gt; to a "&lt;strong&gt;winning&lt;/strong&gt; zone".&lt;/li&gt;
&lt;li&gt;Leaders who embrace these mechanisms can create organizations that achieve extraordinary results.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Slowification enables the shift from reactive, "fast thinking" based on ingrained habits to more effective "slow thinking" that allows for deliberation, reflection, and creativity in problem-solving.“&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2Fgy73k0tmgjyk5jehu4oj.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%2Fgy73k0tmgjyk5jehu4oj.png" alt="wiring-review" width="800" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://itrevolution.com/product/wiring-the-winning-organization/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Slow productivity
&lt;/h3&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%2Fxj76w8setfiv38hjs354.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%2Fxj76w8setfiv38hjs354.png" alt="slow-prod-cover" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Slow Productivity by Cal Newport challenges the modern obsession with visible busyness as a measure of productivity, what he terms pseudo-productivity. Instead, the book champions a slow productivity philosophy based on three core principles: doing fewer things, working at a natural pace, and obsessing over quality. &lt;br&gt;
This philosophy argues that by intentionally limiting workloads, embracing a sustainable work pace, and prioritizing quality over quantity, knowledge workers can achieve greater meaning and produce superior results. &lt;/p&gt;

&lt;p&gt;The book explores the theoretical underpinnings of these principles and offers practical strategies for implementing them in various professional settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To do &lt;strong&gt;less&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Work at the more &lt;strong&gt;natural pace&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Obsess over &lt;strong&gt;quality&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"for all of our complaining about the term, knowledge workers have no agreed-upon definition of what “productivity” even means."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2F84ck5pcb3idjgi7oj6yl.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%2F84ck5pcb3idjgi7oj6yl.png" alt="slow-review" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://calnewport.com/slow/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  10. Designing Data-Intensive Applications
&lt;/h3&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%2Fb26uimgoj36uc95x1hd4.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%2Fb26uimgoj36uc95x1hd4.png" alt="data-intensive-book" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;As cloud engineers, we collaborate closely with the developers in our organization who write the applications we deploy and maintain. While this book doesn’t provide directly actionable knowledge for our day-to-day tasks, it has given me a deeper understanding of the concepts underpinning the creation of our organization’s apps. More importantly, it has provided me with a common language to effectively communicate with the developers on my team.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Synopsis:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Designing Data-Intensive Applications, by Martin Kleppmann, explores the fundamental principles and practical considerations for building reliable, scalable, and maintainable data systems. The book examines various data models, including relational, document, and graph-based models, and their respective query languages, analyzing their suitability for different applications. &lt;/p&gt;

&lt;p&gt;It also examines storage engines, data encoding formats, and schema evolution. A key focus is the exploration of distributed data systems, including replication, partitioning (sharding), and the challenges of maintaining consistency and consensus in such environments. The book uses real-world examples of successful data systems to illustrate key concepts and trade-offs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will learn:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Various &lt;strong&gt;data models&lt;/strong&gt;, including relational, document, and graph-based models, and their respective query languages, analyzing their suitability for different applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage engines&lt;/strong&gt; and how databases arrange data on disk to find it again efficiently&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt;, &lt;strong&gt;scalability&lt;/strong&gt;, and &lt;strong&gt;maintainability&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quote from the book:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;A review that caught my eye:&lt;/strong&gt;&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%2Fkx4z0k4x269gn7qdtaxa.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%2Fkx4z0k4x269gn7qdtaxa.png" alt="data-review" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Get it &lt;a href="https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;



&lt;p&gt;If you like our content and want to support us on this mission, we'd appreciate it if you could give us a star ⭐️ on GitHub.&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%2Fz881yt0e33ikhnsnta79.gif" 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%2Fz881yt0e33ikhnsnta79.gif" alt="giff" width="480" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Star us on GitHub 🙏&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>Glasskube reaches 1k stars 🌟</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Mon, 10 Jun 2024 09:04:10 +0000</pubDate>
      <link>https://dev.to/distr/glasskube-reaches-1k-stars-o5j</link>
      <guid>https://dev.to/distr/glasskube-reaches-1k-stars-o5j</guid>
      <description>&lt;p&gt;I was trying to thinking of sayings or mantra’s ambitious people repeat to themselves to keep themselves motivated. A few came to mind: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Fortune favors the bold."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"No guts, no glory."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"You miss 100% of the shots you don't take."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Nothing ventured, nothing gained."&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many of us have heard these sayings or something similar before, what you have less often which I think is &lt;strong&gt;equally important&lt;/strong&gt; maybe doesn’t fit that well into a motivating one liner but might go something like this: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Sure, shoot for the stars but make sure to celebrate every win along the way. Because the journey is equally as important as the eventual goal.&lt;/em&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While nobody starts a project with the sole aim of getting 1,000 GitHub stars, the entire &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; team is incredibly proud of reaching this milestone so quickly. I wanted to take a moment to reflect on our rapid organic growth and celebrate our achievements.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Glasskube?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; is the next-generation Kubernetes package manager, now available in its beta version. With Glasskube, you can effortlessly install, upgrade, configure, and manage your Kubernetes cluster packages. Check out the available packages here. Glasskube streamlines repetitive and cumbersome maintenance tasks, making cluster management a breeze. The project is evolving rapidly, with new functionalities being shipped with every weekly release.&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%2Fr7j70qlz9agbi24zhtar.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%2Fr7j70qlz9agbi24zhtar.png" alt="glasskube-dashboard" width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So go ahead, dive in, explore, and share your thoughts with us! Your feedback is incredibly valuable as we strive to make Glasskube the best Kubernetes package manager out there. We're also beginning to develop Glasskube Cloud, building on the requests from our current users to enhance the tool further. We're eager to hear which features you'd like to see included in the Glasskube Cloud offering.&lt;/p&gt;

&lt;p&gt;The best way to stay in the loop is to sign up for Glasskube Cloud and be informed when it's ready: &lt;a href="https://glasskube.cloud/" rel="noopener noreferrer"&gt;https://glasskube.cloud/&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The story of our organic growth so far
&lt;/h2&gt;

&lt;p&gt;Having oficially launched the project in February 2024 we are super happy to have hit the 1000k milestone in the first days of June. &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%2Fk8qw0vnkgs16fj9q5xph.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%2Fk8qw0vnkgs16fj9q5xph.png" alt="Glasskube star growth" width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s take a look at some of the work be have been doing to make this happen. &lt;/p&gt;

&lt;h3&gt;
  
  
  We’ve been shipping 🚢
&lt;/h3&gt;

&lt;p&gt;In the past few months, our team and a growing legion of open-source contributors have helped us ship eight minor version releases, the latest being v0.8.0. You can find the full changelog &lt;a href="https://github.com/glasskube/glasskube/releases" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Jakob and Christophe, both Glasskube developers, have been hard at work rolling out new features and functionalities. They've also been invaluable in providing feedback and managing the PR review process, ensuring that code is merged swiftly and safely.&lt;/p&gt;

&lt;p&gt;Every contributor, found on the &lt;a href="https://discord.gg/STk5Z3nFmT" rel="noopener noreferrer"&gt;Glasskube Discord server&lt;/a&gt;, has brought something valuable to the community. However, a few deserve a special shoutout: Hanshal, Utkarsh, and Baalakshan. These contributors have been diligently submitting valuable PRs, addressing open issues, and advocating for Glasskube wherever they go.&lt;/p&gt;

&lt;p&gt;We've been organizing weekly community calls every Monday on the Discord server. These calls have been a fantastic opportunity to share news, align expectations, and grow together. Some contributors have even given short talks exploring concepts like Kubernetes CRDs, presented by Hanshal, and Chaos Engineering, shared by Baalakshan.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/c0Y9m7HQv9s"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;
&lt;h3&gt;
  
  
  Meetups
&lt;/h3&gt;

&lt;p&gt;Cofounders Philip and Louis, myself and Community members have been really active attending meetups and conferences around Europe and India. We were at a few KCD’s, AWS Summit Madrid and other CNCF meetups too. It has been a great way to spark conversations and share the work that’s being done. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/8FSaYcJgQXo?start=607"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Partnerships 🫂
&lt;/h3&gt;

&lt;p&gt;We have partnered with third party packages such as &lt;a href="https://keptn.sh/latest/docs/installation/#install-keptn-via-glasskube" rel="noopener noreferrer"&gt;Keptn&lt;/a&gt; and &lt;a href="https://quickwit.io/" rel="noopener noreferrer"&gt;Quickwit&lt;/a&gt; to expedite their integration onto Glasskube.&lt;/p&gt;

&lt;p&gt;You can now find installation steps right in the documentation of the supported packages.&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%2Fed24wokm42bo6l01xpde.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%2Fed24wokm42bo6l01xpde.png" alt="Keptn install" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Content creation 📚
&lt;/h3&gt;

&lt;p&gt;As we build and continually refine a quality product to support our ever-expanding user base, we aim to be a consistent source of valuable content. This includes in-depth Kubernetes topics like this, more technical product explorations like this, and even broader opinion pieces like our Git guide and our article on the current state of the DevOps scene.&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%2Fh99pcowhe2oett5o0n08.gif" 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%2Fh99pcowhe2oett5o0n08.gif" alt="content" width="600" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Check out our latest launch video 🚀
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/HAtWQZ0Ex-I"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Building Glasskube so far has been such a gratifiying experience, on the one hand we are connecting and understanding the issues so many cloud practitioners are having in there efforts to deal with Kubernetes Package management in their daily routines. Better understanding them and delivering on their requests is special. &lt;/p&gt;

&lt;p&gt;On the other hand, collaborating with so many stellar open-source community contributors is a massive perk and added bonus of building an OSS tool in public. Much of our early growth can be directly attributed to these outstanding OSS contributors. We hope to continue this collaboration as we aim for 2, 3, and 10k stars, and more importantly, to make Glasskube a tool installed in Kubernetes clusters far and wide.&lt;/p&gt;




&lt;p&gt;If you get value from the work we do, we'd appreciate it if you could&lt;br&gt;
&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;⭐️ Star Glasskube on GitHub 🙏&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&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%2Fmwm56xwcn9qhzp7xnndu.gif" alt="star-on-github" width="400" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>github</category>
    </item>
  </channel>
</rss>
