Shitty IaC
0
fork

Configure Feed

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

ansible/k8s: add trmnl terminus server

geesawra 771390e2 0485135e

+250
+6
ansible/2_services.yml
··· 62 62 values_files: 63 63 - k8s/immich_values.yml 64 64 65 + - name: Deploy TRMNL 66 + tags: trmnl 67 + kubernetes.core.k8s: 68 + state: present 69 + src: k8s/trmnl.yml 70 + 65 71 - name: Deploy reverse proxied services 66 72 tags: reverse-proxy 67 73 kubernetes.core.k8s:
+244
ansible/k8s/trmnl.yml
··· 1 + apiVersion: v1 2 + kind: Namespace 3 + metadata: 4 + name: trmnl 5 + --- 6 + apiVersion: v1 7 + kind: Secret 8 + metadata: 9 + name: trmnl-config 10 + namespace: trmnl 11 + type: Opaque 12 + stringData: 13 + APP_SECRET: "6897a13b-0dbd-43a3-9e31-3ee585b0c7b2a1b8d092-5bc5-4cdf-b553-66cd2853db22" 14 + --- 15 + apiVersion: postgresql.cnpg.io/v1 16 + kind: Cluster 17 + metadata: 18 + name: trmnl-database 19 + namespace: trmnl 20 + spec: 21 + instances: 1 22 + storage: 23 + size: 1Gi 24 + --- 25 + apiVersion: v1 26 + kind: PersistentVolumeClaim 27 + metadata: 28 + name: trmnl-keyvalue-data 29 + namespace: trmnl 30 + spec: 31 + storageClassName: nfs-client 32 + accessModes: 33 + - ReadWriteOnce 34 + resources: 35 + requests: 36 + storage: 1Gi 37 + --- 38 + apiVersion: v1 39 + kind: PersistentVolumeClaim 40 + metadata: 41 + name: trmnl-web-uploads 42 + namespace: trmnl 43 + spec: 44 + storageClassName: nfs-client 45 + accessModes: 46 + - ReadWriteMany 47 + resources: 48 + requests: 49 + storage: 1Gi 50 + --- 51 + kind: Deployment 52 + apiVersion: apps/v1 53 + metadata: 54 + name: trmnl-keyvalue 55 + namespace: trmnl 56 + labels: 57 + app: trmnl-keyvalue 58 + spec: 59 + replicas: 1 60 + selector: 61 + matchLabels: 62 + app: trmnl-keyvalue 63 + template: 64 + metadata: 65 + labels: 66 + app: trmnl-keyvalue 67 + spec: 68 + containers: 69 + - name: valkey 70 + image: valkey/valkey:9-alpine 71 + ports: 72 + - containerPort: 6379 73 + protocol: TCP 74 + command: 75 + - valkey-server 76 + - --requirepass 77 + - valkey 78 + - --maxmemory 79 + - 512mb 80 + - --maxmemory-policy 81 + - noeviction 82 + - --port 83 + - "6379" 84 + volumeMounts: 85 + - mountPath: /data 86 + name: keyvalue-data 87 + resources: 88 + limits: 89 + memory: 512Mi 90 + cpu: "0.5" 91 + volumes: 92 + - name: keyvalue-data 93 + persistentVolumeClaim: 94 + claimName: trmnl-keyvalue-data 95 + --- 96 + kind: Service 97 + apiVersion: v1 98 + metadata: 99 + name: trmnl-keyvalue 100 + namespace: trmnl 101 + spec: 102 + type: ClusterIP 103 + selector: 104 + app: trmnl-keyvalue 105 + ports: 106 + - protocol: TCP 107 + port: 6379 108 + targetPort: 6379 109 + --- 110 + kind: Deployment 111 + apiVersion: apps/v1 112 + metadata: 113 + name: trmnl-web 114 + namespace: trmnl 115 + labels: 116 + app: trmnl-web 117 + spec: 118 + replicas: 1 119 + selector: 120 + matchLabels: 121 + app: trmnl-web 122 + template: 123 + metadata: 124 + labels: 125 + app: trmnl-web 126 + spec: 127 + containers: 128 + - name: web 129 + image: ghcr.io/usetrmnl/terminus:latest 130 + ports: 131 + - containerPort: 8080 132 + protocol: TCP 133 + env: 134 + - name: HANAMI_PORT 135 + value: "8080" 136 + - name: API_URI 137 + value: "https://trmnl.clorofilla.casa" 138 + - name: APP_SETUP 139 + value: "true" 140 + - name: APP_SECRET 141 + valueFrom: 142 + secretKeyRef: 143 + name: trmnl-config 144 + key: APP_SECRET 145 + - name: DATABASE_URL 146 + valueFrom: 147 + secretKeyRef: 148 + name: trmnl-database-app 149 + key: uri 150 + - name: KEYVALUE_URL 151 + value: "redis://:valkey@trmnl-keyvalue:6379/0" 152 + volumeMounts: 153 + - mountPath: /app/public/uploads 154 + name: web-uploads 155 + resources: 156 + limits: 157 + memory: 1Gi 158 + cpu: "1" 159 + volumes: 160 + - name: web-uploads 161 + persistentVolumeClaim: 162 + claimName: trmnl-web-uploads 163 + --- 164 + kind: Deployment 165 + apiVersion: apps/v1 166 + metadata: 167 + name: trmnl-worker 168 + namespace: trmnl 169 + labels: 170 + app: trmnl-worker 171 + spec: 172 + replicas: 1 173 + selector: 174 + matchLabels: 175 + app: trmnl-worker 176 + template: 177 + metadata: 178 + labels: 179 + app: trmnl-worker 180 + spec: 181 + containers: 182 + - name: worker 183 + image: ghcr.io/usetrmnl/terminus:latest 184 + command: ["bundle", "exec", "sidekiq", "-r", "./config/sidekiq.rb"] 185 + env: 186 + - name: HANAMI_PORT 187 + value: "8080" 188 + - name: API_URI 189 + value: "https://trmnl.clorofilla.casa" 190 + - name: APP_SECRET 191 + valueFrom: 192 + secretKeyRef: 193 + name: trmnl-config 194 + key: APP_SECRET 195 + - name: DATABASE_URL 196 + valueFrom: 197 + secretKeyRef: 198 + name: trmnl-database-app 199 + key: uri 200 + - name: KEYVALUE_URL 201 + value: "redis://:valkey@trmnl-keyvalue:6379/0" 202 + volumeMounts: 203 + - mountPath: /app/public/uploads 204 + name: web-uploads 205 + resources: 206 + limits: 207 + memory: 1Gi 208 + cpu: "1" 209 + volumes: 210 + - name: web-uploads 211 + persistentVolumeClaim: 212 + claimName: trmnl-web-uploads 213 + --- 214 + kind: Service 215 + apiVersion: v1 216 + metadata: 217 + name: trmnl-web 218 + namespace: trmnl 219 + spec: 220 + type: ClusterIP 221 + selector: 222 + app: trmnl-web 223 + ports: 224 + - protocol: TCP 225 + port: 8080 226 + targetPort: 8080 227 + --- 228 + apiVersion: traefik.io/v1alpha1 229 + kind: IngressRoute 230 + metadata: 231 + name: trmnl-route 232 + namespace: trmnl 233 + spec: 234 + entryPoints: 235 + - websecure 236 + routes: 237 + - kind: Rule 238 + match: Host(`trmnl.clorofilla.casa`) 239 + priority: 10 240 + services: 241 + - name: trmnl-web 242 + port: 8080 243 + tls: 244 + certResolver: default