<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Declarative Systems - Nik3sx on Declarative Systems</title><link>https://nik3sx.jmoore53.com/</link><description>Recent content in Declarative Systems - Nik3sx on Declarative Systems</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://nik3sx.jmoore53.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting up Traefik</title><link>https://nik3sx.jmoore53.com/nik3sx/setting-up-services/1-traefik/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/setting-up-services/1-traefik/</guid><description>&lt;h1 id="setting-up-traefik"&gt;Setting up Traefik&lt;a class="anchor" href="#setting-up-traefik"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Traefik was one of the more difficult services to setup.
Every other service comes nearly configured out of the box with few exceptions.
Traefik required quite a bit of careful consideration and configuration when setting up.&lt;/p&gt;
&lt;p&gt;Because we have configured a default setting within K3s to disable traefik we are not able to name our configuration for traefik &lt;code&gt;traefik.yaml&lt;/code&gt;, hence I have named this file &lt;code&gt;traefik-custom.yaml&lt;/code&gt;.
The reason for this is that k3s sees the &lt;code&gt;traefik.yaml&lt;/code&gt; file, checks it&amp;rsquo;s own confiugration and sees traefik disabled, so it immedietly rectifies by deleting the file.&lt;/p&gt;</description></item><item><title>Why NIX</title><link>https://nik3sx.jmoore53.com/nik3sx/1-why-nix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/1-why-nix/</guid><description>&lt;h1 id="why-nix"&gt;Why Nix&lt;a class="anchor" href="#why-nix"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;One of the things nix provides is a way to define entire systems and environments as reproducable, declarative code.
The same configuration file provides identical results across machines reducing drift and inconsistencies.&lt;/p&gt;
&lt;h2 id="modular-system"&gt;Modular System&lt;a class="anchor" href="#modular-system"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Whether a component needs to be added or removed this is all able to be done via code.&lt;/p&gt;
&lt;h2 id="nix-store"&gt;Nix Store&lt;a class="anchor" href="#nix-store"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Nix store is the foundation of how Nix manages software and system state.
It is a content-addressed directory where all packages, dependencies, and build outputs are stored in isolated immutable paths.&lt;/p&gt;</description></item><item><title>Setting up K3s on NIX</title><link>https://nik3sx.jmoore53.com/nik3sx/2-setting-up-k3s/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/2-setting-up-k3s/</guid><description>&lt;h1 id="setting-up-k3s-on-nix"&gt;Setting up K3s on NIX&lt;a class="anchor" href="#setting-up-k3s-on-nix"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="flakenix"&gt;Flake.nix&lt;a class="anchor" href="#flakenix"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Below is the flake I am using for this project.
You may note I have a couple different outputs, including one configuration, and two packages (images using nixosgenerators).
Being able to use QEMU to quickly launch an image from my local pc using the &lt;code&gt;./result/bin/&lt;/code&gt; folder.
The other two outputs are actual qcow and vhd images for use within my other testing environments (&lt;code&gt;virt-manager&lt;/code&gt; and &lt;code&gt;aws&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Setting up Vaultwarden</title><link>https://nik3sx.jmoore53.com/nik3sx/setting-up-services/2-vaultwarden/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/setting-up-services/2-vaultwarden/</guid><description>&lt;h1 id="setting-up-vaultwarden"&gt;Setting up Vaultwarden&lt;a class="anchor" href="#setting-up-vaultwarden"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;*Vaultwarden is a lightweight, self-hosted implementation of the Bitwarden server API.&lt;/p&gt;
&lt;p&gt;It lets you run your own password manager backend (instead of using Bitwarden’s cloud service), while still using official Bitwarden clients. It is written in Rust and designed to be resource-efficient, making it suitable for small servers or homelab setups.*&lt;/p&gt;
&lt;p&gt;I wanted to show a few services, but for the most part after K3s is up and online the services are self explanitory through code.
Each service is likely to vary in its own way, but I wanted to present a few.&lt;/p&gt;</description></item><item><title>Root User Provisioning Service</title><link>https://nik3sx.jmoore53.com/nik3sx/4-root-user-provisioning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/4-root-user-provisioning/</guid><description>&lt;h1 id="root-user-provisioning-service"&gt;Root User Provisioning Service&lt;a class="anchor" href="#root-user-provisioning-service"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This is one of the more controversial services I have, but I needed a way to restore the system without anything except the ISO and a password.&lt;/p&gt;
&lt;p&gt;With this service I am setting up root provisioning via a web link.
I will curl the link with a post request and then it will add SSH keys to the root user on the server.&lt;/p&gt;
&lt;p&gt;Is this dangerous? Yes, however I understand the risks associated. I also tried to design the service to only run if the system was net new. The service will exit if the done file already exists &lt;code&gt;/var/lib/nik3sx/boot-unlock-service/done&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Setting up Kanboard</title><link>https://nik3sx.jmoore53.com/nik3sx/setting-up-services/3-kanboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/setting-up-services/3-kanboard/</guid><description>&lt;h1 id="setting-up-firefly3"&gt;Setting up Firefly3&lt;a class="anchor" href="#setting-up-firefly3"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;*Kanboard is a lightweight, self-hosted Kanban-style project management tool.&lt;/p&gt;
&lt;p&gt;It lets you organize tasks on boards with columns (e.g., To Do → Doing → Done), focusing on simplicity, minimal dependencies, and low resource usage.*&lt;/p&gt;
&lt;p&gt;I wanted to show a few services, but for the most part after K3s is up and online the services are self explanitory through code.
Each service is likely to vary in its own way, but I wanted to present a few.&lt;/p&gt;</description></item><item><title>Setting up Firefly3</title><link>https://nik3sx.jmoore53.com/nik3sx/setting-up-services/4-firefly3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/setting-up-services/4-firefly3/</guid><description>&lt;h1 id="setting-up-firefly3"&gt;Setting up Firefly3&lt;a class="anchor" href="#setting-up-firefly3"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;*Firefly III is a self-hosted personal finance manager.&lt;/p&gt;
&lt;p&gt;It helps you track expenses, income, budgets, and accounts, giving you detailed insight into your spending while keeping all financial data under your control.*&lt;/p&gt;
&lt;p&gt;I wanted to show a few services, but for the most part after K3s is up and online the services are self explanitory through code.
Each service is likely to vary in its own way, but I wanted to present a few.&lt;/p&gt;</description></item><item><title>Systemd Services</title><link>https://nik3sx.jmoore53.com/nik3sx/5-systemd-service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/5-systemd-service/</guid><description>&lt;h1 id="systemd-services"&gt;Systemd Services&lt;a class="anchor" href="#systemd-services"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Using Systemd seemed like the only choice available for the setup of some of these services.
Systemd provided the service management, dependency handling, and monitoring I needed.&lt;/p&gt;
&lt;h2 id="service-management"&gt;Service Management&lt;a class="anchor" href="#service-management"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Most of these scripts only need to run if the server is unconfigured.
Using systemd I can set these scripts to be oneshot services.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;serviceConfig &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;oneshot&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Below is an example service for &lt;code&gt;k3s&lt;/code&gt; to ensure the API is online before attempting to apply the manifest files.&lt;/p&gt;</description></item><item><title>Encrypting and Decrypting</title><link>https://nik3sx.jmoore53.com/nik3sx/6-encrypting-and-decrypting-secrets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/6-encrypting-and-decrypting-secrets/</guid><description>&lt;h1 id="encrypting-and-decrypting"&gt;Encrypting and decrypting&lt;a class="anchor" href="#encrypting-and-decrypting"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;One of the features I needed for a full declarative setup was a way to restore data back to the system.
If I were not using a separate file system mounted like &lt;code&gt;/var&lt;/code&gt; or &lt;code&gt;/lib&lt;/code&gt; I would need a way to restore data.
With restoration of data I needed a way to encrypt files with Age and then decrypt the files with Age as well.&lt;/p&gt;
&lt;p&gt;Below is the Systemd service and Golang program I wrote to solve for this problem.
It is named &lt;code&gt;smanager&lt;/code&gt; for &amp;ldquo;secrets manager&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Luks and /var/lib for Data</title><link>https://nik3sx.jmoore53.com/nik3sx/7-luks-and-lib/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/7-luks-and-lib/</guid><description>&lt;h1 id="luks-and-varlib"&gt;Luks and /var/lib&lt;a class="anchor" href="#luks-and-varlib"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;I am currently running this configuration inside &lt;code&gt;virt-manager&lt;/code&gt; for a virtual machine.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t currently have this setup for this use case, however it is something I plan to implement.
The reason I don&amp;rsquo;t have this implemented is due to the way disks are shared within AWS.
I can share this as an EBS volume, but there is more work that is needed like getting the disk uuid.&lt;/p&gt;</description></item><item><title>Restoring Data</title><link>https://nik3sx.jmoore53.com/nik3sx/8-restoring-data/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/8-restoring-data/</guid><description>&lt;h1 id="restoring-data"&gt;Restoring Data&lt;a class="anchor" href="#restoring-data"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;After the &lt;code&gt;smanager&lt;/code&gt; program has unlocked the environment variables Restic is able to restore data.&lt;/p&gt;
&lt;p&gt;Below are some of the scripts I use to restore data to services.&lt;/p&gt;
&lt;p&gt;Every service is a bit different especially with database restores, but below documents the three core services I have.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Unlock restic backups&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/var/lib/nik3sx/smanager/agefile-pass -decrypt -in /var/lib/nik3sx/smanager/env.age -out /var/lib/nik3sx/smanager/env
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;source /var/lib/nik3sx/smanager/env
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic snapshots
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Restore Vaultwarden&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p /var/lib/restore_vw
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic restore &amp;lt;snapshot-id&amp;gt; --target /var/lib/restore_vw
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp -r /var/lib/restore_vw/.../vaultwarden/bw-data/* /var/lib/nik3sx/vaultwarden/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl rollout restart deployment vaultwarden
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Restore Kanboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p /var/lib/restore_kb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic restore &amp;lt;snapshot-id&amp;gt; --target /var/lib/restore_kb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /var/lib/restore_kb/.../backup-2026-01-14.sql | kubectl exec -i pods/db-55d74b64-2rqxv -- mariadb -u kb -pkb-secret kanboard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Restore Firefly_III&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p /var/lib/restore_f3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic restore &amp;lt;snapshot-id&amp;gt; --target /var/lib/restore_f3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl create configmap firefly-env --from-env-file&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/var/lib/restore_f3/.env -n firefly
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl create secret generic firefly-db-env --from-env-file&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/var/lib/restore_f3/.db.env -n firefly
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /var/lib/restore_f3/.../backup-2026-01-14.sql | kubectl exec -i pods/db-55d74b64-2rqxv -- mariadb -u kb -pkb-secret kanboard&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Rate Limiting</title><link>https://nik3sx.jmoore53.com/nik3sx/9-rate-limiting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/9-rate-limiting/</guid><description>&lt;h1 id="rate-limiting"&gt;Rate Limiting&lt;a class="anchor" href="#rate-limiting"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This was built as a go service to ingest logs and then limit IPs.&lt;/p&gt;
&lt;h2 id="adding-pvc"&gt;Adding PVC&lt;a class="anchor" href="#adding-pvc"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;apiVersion&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;kind&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;PersistentVolume&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;traefik-pv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;capacity&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;storage&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;2Gi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;accessModes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;ReadWriteOnce&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;storageClassName&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;traefik-local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;local&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;path&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;/var/lib/nik3sx/traefik&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;nodeAffinity&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;required&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;nodeSelectorTerms&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;matchExpressions&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;key&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;kubernetes.io/hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;operator&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;In&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;values&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;l-nodet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;apiVersion&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;kind&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;PersistentVolumeClaim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;traefik-pvc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;accessModes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;ReadWriteOnce&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;storageClassName&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;traefik-local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;resources&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;requests&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;storage&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;2Gi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;apiVersion&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;helm.cattle.io/v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;kind&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;HelmChart&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;traefik&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;namespace&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;kube-system&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;chart&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;https://%{KUBERNETES_API}%/static/charts/traefik-34.2.1+up34.2.0.tgz&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;set&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;global.systemDefaultRegistry&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;valuesContent&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;|-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Needed to add this persistence using the pvc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;persistence&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;enabled&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;existingClaim&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;traefik-pvc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;path&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;/data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# End line addition&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;deployment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;podAnnotations&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;prometheus.io/port&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;8082&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;prometheus.io/scrape&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;providers&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;kubernetesIngress&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;publishedService&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;enabled&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;priorityClassName&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;system-cluster-critical&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;repository&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;rancher/mirrored-library-traefik&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;tag&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;3.3.6&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This allows us to access the access logs from the host for our go service.&lt;/p&gt;</description></item><item><title>Deploying</title><link>https://nik3sx.jmoore53.com/nik3sx/10-deploying/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nik3sx.jmoore53.com/nik3sx/10-deploying/</guid><description>&lt;h1 id="deploying"&gt;Deploying&lt;a class="anchor" href="#deploying"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;My next itch I needed to scratch was the solution to deploy nix hosts.
Deploying NIX on the local host is easy with qemu, but I needed a better cloud solution to deploy &lt;code&gt;nik3sx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Because there was no native solution for deploying NIX images I decided to use a debian base and then a firecracker runtime for NIX.&lt;/p&gt;
&lt;h1 id="microvm"&gt;MicroVM&lt;a class="anchor" href="#microvm"&gt;#&lt;/a&gt;&lt;/h1&gt;</description></item></channel></rss>