![Nomad](https://hackmd.io/_uploads/SJkLzy5lgx.png) Running in prod since 2020 --- # Agenda - Intro - My Setup - Demo - Questions --- ## About Me René Moser (resmo) - System Engineer (Owner moser-systems.com) - **Ansible** (consulting, training, OSS) - IaaS / PaaS **Clouds** (private/public integration) --- ## My Mantra - **Simple** (cost effective, maintenance, architecture) - **Scalable** (in and out) - **Mature** (development, license, support) --- # What is Nomad? --- Clustered Job Scheduler --- ![HashiCorp-Nomad-DE-1-1024x820](https://hackmd.io/_uploads/r1oC5zqxel.png) --- ## Project Nomad --- - Released September 2015 - By HashiCorp (IBM 04.2024) - Written in Golang - Release 1.10 - License ... --- ## Users - Roblox (100 mio players 2020) - Cloudflare - Trivago - CircleCI - SAP - PagerDuty - ... https://developer.hashicorp.com/nomad/docs/who-uses-nomad --- ## Modus Operandi --- ![Modus Operandi](https://hackmd.io/_uploads/HycNtz8Wkx.svg) --- ## Raft https://raft.github.io/ --- ![HashiCorp-Nomad-DE-2-1024x696](https://hackmd.io/_uploads/HyHpjGcgxe.png) --- ## Job Drivers --- - **Docker** - Exec2 - Podman - Virt - Systemd-nspawn (Community) - Firecracker MicroVMs (Community) - ... --- ## Job Types --- - Service - Batch - System - SysBatch --- ``` job "adminer" { datacenters = ["dc1"] type = "service" group "adminer" {} } ``` --- ``` group "adminer" { count = 1 network { port "http" { to = 8080 } } task "web" { driver = "docker" config { image = "adminer:4.8.1" ports = [ "http", ] } resources { cpu = 200 memory = 256 } service { name = "adminer" port = "http" check { name = "alive" type = "tcp" interval = "10s" timeout = "2s" } } ``` --- ## What else --- - UI / API / CLI - Namespace - ACL (optional) - Nomad Variables (or Hashi Vault) - Nomad Service Discovery (or Consul) - OIDC Auth (since 1.5) - CNI / CSI (optional) - ... --- ## Want more? --- - **Rolling** updates - **Canary** updates - Auto **revert** - Auto **promote** --- **Single** binary! (140M) --- ## Enterpri$e (LTS) - Dynamic Application Sizing - Multiregion Deployments - Resource Quota - ... --- Ngine Workload Platform --- ![ngine_platform](https://hackmd.io/_uploads/S15aGHP-kl.svg) --- ## Ingress Router traefik! ![traefik](https://hackmd.io/_uploads/Bk6dwsAWJe.jpg) - Reads Consul Catalog for treafik labels - 443 TCP Proxy for https - 80 Reverse Proxy for http --- ## Projects - namespaces: name-tier e.g. mosersystems-prod - TLS per project --- ## Caddy ![caddy](https://hackmd.io/_uploads/SJabviCbyg.png) --- Caddy - Reverse web proxy - LetsEncrypt / ZeroSSL - Consul Storage plugin - Allocation count >1 - OIDC with caddy-security plugin - uses consul DNS to route to services --- ## Monitoring Stack - Prometheus - Grafana - Promtail (System task) - Loki - cAdvisor / Node / Nomad / Consul exporters - Alertmanager --- ## Auto Update / Scale - Watchtower - Autoscaler - Ngine Chaotic --- ## Infra - Debian 12 / Rocky Linux 9 - 5 (~) Nodes (ARM/x86) - 20 GB RAM - 10 Cores - 69 Allocs (70%) - Price: ~ €30 /month (incl. CSI Volumes 4 x 10 GB) --- ## Deployment - GitLab CI - Ansible (github.com/ngine-io/) --- ## vs. Kubernetes k8s: "v1.31 support to **5,000 nodes** and **300,000 total containers**" --- ## Nomad "proven to scale to cluster sizes **that exceed 10,000 nodes** in real-world production environments" --- ## Nomad "deployed across **multiple** availability zones, regions, and data centers with a **single** or **multiple clusters**" --- ## Nomad "**has performed** a benchmark on scalability with **2 million container challenge in 2020** --- # Pros / Cons --- ## Pro Nomad - Single binary, easy to install and operate - Mature - Does **one thing**, does it **damn well** - Support possible (Enterprise) --- ## Contra Nomad - Not open source (source available though), MPL < 2023 < BUSL --- ## Contra Nomad Organizations providing **competitive offerings** to HashiCorp will **no longer be permitted** to use the community edition product **free of charge** under our BUSL license. --- # Demo --- # Questions? Links: Ansible Hashi Collection: gh/ngine-io/ansible-collection-hashi Ansible Hcloud Role: gh/ngine-io/ansible-role-hcloud --- Thanks! https://www.renemoser.net ![qrcode](https://hackmd.io/_uploads/rJ0JDsR-Jx.svg) ---
{"description":"View the slide with \"Slide Mode\".","slideOptions":"{\"theme\":\"white\"}","contributors":"[{\"id\":\"4f12f2ea-eb5d-4395-a9a8-8cf5af5b2c6c\",\"add\":30104,\"del\":25418}]","title":"Hashi Nomad 2025"}
    347 views