<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Secrets on bismigel</title><link>https://bismigel.dev/tags/secrets/</link><description>Recent content in Secrets on bismigel</description><generator>Hugo</generator><language>en-us</language><copyright>bismigel</copyright><lastBuildDate>Mon, 12 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://bismigel.dev/tags/secrets/index.xml" rel="self" type="application/rss+xml"/><item><title>Secrets without plaintext</title><link>https://bismigel.dev/posts/2026-10-12-secrets-without-plaintext/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://bismigel.dev/posts/2026-10-12-secrets-without-plaintext/</guid><description/><content:encoded><![CDATA[<p>No secret sits in Git as readable text. Two tools handle the two halves.</p>
<h1 id="in-the-cluster-sealed-secrets">In the cluster: Sealed Secrets</h1>
<p>A controller in the cluster holds a private key. The matching public key encrypts:</p>
<div class="code-block">
  <div class="code-block-header">
    <span class="code-block-lang">shell</span>
    <button type="button" class="code-copy" aria-label="Copy code">
      <span class="code-copy-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg>
</span>
      <span class="code-copy-icon code-copy-icon-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
</span>
      <span class="code-copy-label">Copy</span>
    </button>
  </div>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">kubectl create secret generic app <span class="se">\
</span></span></span><span class="line"><span class="cl">  --from-literal<span class="o">=</span><span class="nv">KEY</span><span class="o">=</span>value --dry-run<span class="o">=</span>client -o yaml <span class="se">\
</span></span></span><span class="line"><span class="cl">  <span class="p">|</span> kubeseal --format yaml &gt; sealed-secret.yaml</span></span></code></pre></div>
</div>
<p>The output is safe to commit. On sync the controller decrypts it into a real Secret.</p>
<h1 id="on-the-host-sops-with-age">On the host: SOPS with age</h1>
<p>Host secrets, such as tunnel credentials, stay encrypted in the NixOS repo and are decrypted at activation. The age identity is the machine's own SSH host key.</p>
<div class="code-block">
  <div class="code-block-header">
    <span class="code-block-lang">shell</span>
    <button type="button" class="code-copy" aria-label="Copy code">
      <span class="code-copy-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/></svg>
</span>
      <span class="code-copy-icon code-copy-icon-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
</span>
      <span class="code-copy-label">Copy</span>
    </button>
  </div>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sops secrets/homelab.yaml    <span class="c1"># edit; re-encrypts on save</span></span></span></code></pre></div>
</div>
<h1 id="the-rule">The rule</h1>
<p>Plaintext never enters Git. If a value has to live in the repo, it is encrypted first.</p>
<blockquote>
<p>Back up the sealing key. Without it, sealed secrets cannot be opened again.</p>
</blockquote>
]]></content:encoded></item></channel></rss>