Hybrid cloud cluster monorepo with Ansible, K8s, NixOS, and Terraform. cute.haus
ansible terraform nix k8s
0

Configure Feed

Select the types of activity you want to include in your feed.

move switchyard-website to cluster

Aly Raffauf (Jun 21, 2026, 12:55 PM EDT) d78c9120 59601f97

+103 -51
+3
k8s/charts/cert-manager-issuers/values.yaml
··· 15 15 - name: aly-social-tls 16 16 namespace: default 17 17 domain: aly.social 18 + - name: aly-codes-tls 19 + namespace: default 20 + domain: aly.codes
+6
k8s/charts/switchyard/Chart.yaml
··· 1 + apiVersion: v2 2 + name: switchyard 3 + description: Switchyard marketing site (switchyard.aly.codes) 4 + type: application 5 + version: 0.1.0 6 + appVersion: "1.0.0"
+49
k8s/charts/switchyard/templates/deployment.yaml
··· 1 + apiVersion: apps/v1 2 + kind: Deployment 3 + metadata: 4 + name: {{ .Chart.Name }} 5 + labels: 6 + app: {{ .Chart.Name }} 7 + spec: 8 + replicas: 2 9 + selector: 10 + matchLabels: 11 + app: {{ .Chart.Name }} 12 + template: 13 + metadata: 14 + labels: 15 + app: {{ .Chart.Name }} 16 + spec: 17 + topologySpreadConstraints: 18 + - maxSkew: 1 19 + topologyKey: kubernetes.io/hostname 20 + whenUnsatisfiable: DoNotSchedule 21 + labelSelector: 22 + matchLabels: 23 + app: {{ .Chart.Name }} 24 + containers: 25 + - name: {{ .Chart.Name }} 26 + image: ghcr.io/alyraffauf/switchyard-website:latest@sha256:3a19fd38d7d03c5eb36bb3569b1ab1371f00bba19459a0e68e33135f9e899c29 27 + imagePullPolicy: IfNotPresent 28 + ports: 29 + - name: http 30 + containerPort: 80 31 + resources: 32 + requests: 33 + cpu: 10m 34 + memory: 32Mi 35 + limits: 36 + cpu: 100m 37 + memory: 128Mi 38 + livenessProbe: 39 + httpGet: 40 + path: / 41 + port: http 42 + initialDelaySeconds: 5 43 + periodSeconds: 10 44 + readinessProbe: 45 + httpGet: 46 + path: / 47 + port: http 48 + initialDelaySeconds: 2 49 + periodSeconds: 5
+23
k8s/charts/switchyard/templates/ingress.yaml
··· 1 + apiVersion: networking.k8s.io/v1 2 + kind: Ingress 3 + metadata: 4 + name: {{ .Chart.Name }} 5 + labels: 6 + app: {{ .Chart.Name }} 7 + spec: 8 + ingressClassName: traefik 9 + tls: 10 + - hosts: 11 + - "switchyard.aly.codes" 12 + secretName: aly-codes-tls 13 + rules: 14 + - host: "switchyard.aly.codes" 15 + http: 16 + paths: 17 + - path: / 18 + pathType: Prefix 19 + backend: 20 + service: 21 + name: {{ .Chart.Name }} 22 + port: 23 + number: 80
+13
k8s/charts/switchyard/templates/service.yaml
··· 1 + apiVersion: v1 2 + kind: Service 3 + metadata: 4 + name: {{ .Chart.Name }} 5 + labels: 6 + app: {{ .Chart.Name }} 7 + spec: 8 + type: ClusterIP 9 + selector: 10 + app: {{ .Chart.Name }} 11 + ports: 12 + - name: http 13 + port: 80
+8 -2
k8s/helmfile.yaml
··· 199 199 namespace: default 200 200 chart: ./charts/gotenberg 201 201 202 - # Cloudflare Origin TLS Secrets per domain (aly-codes, aly-social, 203 - # cute-haus, morsels-blue). Apps reference these by name in ingress.routes. 202 + # Cloudflare Origin TLS Secrets per domain (morsels-blue). Apps reference 203 + # these by name in ingress.routes. 204 204 - name: cluster-tls 205 205 namespace: default 206 206 chart: ./charts/cluster-tls ··· 218 218 - name: aly-codes 219 219 namespace: default 220 220 chart: ./charts/aly-codes 221 + needs: 222 + - default/cluster-tls 223 + 224 + - name: switchyard 225 + namespace: default 226 + chart: ./charts/switchyard 221 227 needs: 222 228 - default/cluster-tls 223 229
-3
k8s/values/secrets/cluster-tls.yaml
··· 1 1 secret: 2 - aly-codes: 3 - crt: ref+sops://../secrets/cluster-tls.yaml#/secret/aly-codes/crt 4 - key: ref+sops://../secrets/cluster-tls.yaml#/secret/aly-codes/key 5 2 morsels-blue: 6 3 crt: ref+sops://../secrets/cluster-tls.yaml#/secret/morsels-blue/crt 7 4 key: ref+sops://../secrets/cluster-tls.yaml#/secret/morsels-blue/key
-33
terraform/.terraform.lock.hcl
··· 37 37 "zh:f809ab383cca0a5f83072981c64208cbd7fa67e986a86ee02dd2c82333221e32", 38 38 ] 39 39 } 40 - 41 - provider "registry.opentofu.org/hetznercloud/hcloud" { 42 - version = "1.65.0" 43 - constraints = "~> 1.48" 44 - hashes = [ 45 - "h1:+tmL9xlS94St02bC/Tm7QiOkAArgq4kEB4JPJtH2VEc=", 46 - "h1:0MfSCPgLzzdKJxfUb8+NO9ahZ0lBpe+7NflVfcGDQ1E=", 47 - "h1:4uo4/niAft4VImTjXY/DK6i+1Y+7zFk93RypKwtDq/Q=", 48 - "h1:5VOB4I10BtTvesndp4tB545HNV3LRgirNPtt5GYhGic=", 49 - "h1:Sop3y3rvTFuitepYaxn2oUQPJEXSdJWWn2nb8D6/6Fg=", 50 - "h1:VMBBRBZl6gWUZtKqIADqYenynkuyutuwz04mkdO1riE=", 51 - "h1:ZIXcgct2x+2+ReewG1aTNl/D0w83KHw5SKQbnk4YaVo=", 52 - "h1:b2vCJJxVphMYvY90oVt18jODjRzUmhHTgeqtS3terzw=", 53 - "h1:bCXSN6cYKstylsXhi+5ECOkRjAtwTyFOGqRyW4jT8c4=", 54 - "h1:brGYSR/X+oOGHL+eZLMLmfW/xC9l4lEtS5ApM99lHa0=", 55 - "h1:c3cPx8Vz5ExXcPPtfZI1B8coz0Nvw4WNX1kboXyW7jM=", 56 - "h1:e+K+dvJcjsky2iw0bkpuzMm9JRSAuRyqEL9h6kXIZTE=", 57 - "h1:qaXpHRcWSBTA1y56NTXVM1T9M3NUKCYfNpa7koNdytY=", 58 - "zh:069b04e00c5b407d225856542513f2e6b87d99ec18dac76a7f682154cdbb3ec1", 59 - "zh:0bcae45e0e7db18627d6f9bb5ce410fe249e4c056ca6f9c44b36090ce0074241", 60 - "zh:0c11a8a2986d2492e0ef7f5ab7cdbca09ee14e44ffe356c7d8f50d5a598c6cc6", 61 - "zh:26f8eb2d8d5e061f9cd8f543599276164a58b7227e6b3d15fdc195a9e2d3ad7b", 62 - "zh:3af2159aab300ecca70276239489eb4f7913d56ef84b5675690fbc635fe2f9ae", 63 - "zh:4db4ce21f9fdd34f317f5aaef32dfbb6978d0a5cfb510943fd3a919e4175e5fb", 64 - "zh:6dbad73db5e1b4dbbad06ccfbd8b94f9b67acd702abda489f78badba9c68e292", 65 - "zh:99008d3b585aba5ca90d3749e84931f5fa9213d97576eb1ced998816fc821ee8", 66 - "zh:c4e98abc0dc9b7057cbf83fb14809948789d50ced5fd9ac993f0115ebb0dbfea", 67 - "zh:cc801520ebd778826dfcb62f52d2aa909a1b7424e3ee14999b9de1225c276465", 68 - "zh:dc9fefbe06b188cb3e7ab1f51437325b6c5374f0fff9dd63b1b0b9196b281e64", 69 - "zh:ed2a73462cfa74cc6122440faac7ebc7f642e3441bea24ec7e1567e4b0401bb4", 70 - "zh:fa4b87e313b8c3037ea517e8008caa8852ef71ba867f38e4e3c86488f6d5889a", 71 - ] 72 - }
+1 -13
terraform/aly_codes.tf
··· 3 3 "aly.codes", 4 4 "git.aly.codes", 5 5 "status.aly.codes", 6 + "switchyard.aly.codes", 6 7 "vibes.aly.codes", 7 8 ]) 8 9 aly_codes_fm_dkim = toset(["fm1", "fm2", "fm3"]) ··· 40 41 proxied = false 41 42 ttl = 1 42 43 tags = [] 43 - settings = { 44 - flatten_cname = false 45 - } 46 - } 47 - 48 - resource "cloudflare_dns_record" "aly_codes_switchyard_cname" { 49 - zone_id = local.zones.aly_codes 50 - name = "switchyard.aly.codes" 51 - type = "CNAME" 52 - content = "alyraffauf.github.io" 53 - proxied = false 54 - ttl = 1 55 - tags = [] 56 44 settings = { 57 45 flatten_cname = false 58 46 }