Adde a few changes

This commit is contained in:
2025-07-06 22:56:13 +02:00
parent 1cc8294883
commit bef5d94023
8 changed files with 221 additions and 3 deletions
@@ -56,6 +56,7 @@ ufw_outgoing_traffic:
- 8880 # Kokoro-FastAPI
- 11434 # Ollama
- 16443 # Kubernetes API
- 8188 # comfyui
- 4443
- 9443
- 995 # POP3S
+8
View File
@@ -39,3 +39,11 @@ module "nextcloud" {
tls_enabled = true
issuer = local.internal_issuer
}
module "comfyui_proxy" {
source = "../../modules/apps/wol_proxy"
upstream = local.comfyui_proxy
proxy_port = local.comfyui_proxy.port
namespace = "comfyui"
}
+9 -3
View File
@@ -87,8 +87,7 @@ locals {
https_port = 8443
tls = true
fqdn = ["comfyui.lab.alexpires.me"]
upstream = "http://comfyui-backend.lab.alexpires.me:8188"
resolver = "10.19.4.136"
upstream = "http://upstream.comfyui.svc.cluster.local:8188"
locations = [
{
@@ -109,13 +108,20 @@ locals {
}
ollama_proxy = {
enabled = true
enabled = true
mac = "04:7c:16:d6:63:66"
ip = "10.19.4.106"
port = "11434"
scheme = "http"
}
comfyui_proxy = {
mac = "04:7c:16:d6:63:66"
ip = "10.19.4.106"
port = "8188"
scheme = "http"
}
scaleway_smtp_host = "smtp.tem.scw.cloud"
nextcloud_fqdn = "cloud.alexpires.me"
@@ -0,0 +1,34 @@
# resource "kubernetes_ingress_v1" "proxy" {
# metadata {
# name = "ingress"
# namespace = kubernetes_namespace.proxy.metadata[0].name
# annotations = {
# "kubernetes.io/ingress.class" = "public"
# "cert-manager.io/cluster-issuer" = "letsencrypt-prod"
# "kubernetes.io/tls-acme" = "true"
# "nginx.ingress.kubernetes.io/ssl-redirect" = "true"
# }
# }
# spec {
# tls {
# hosts = [var.fqdn]
# secret_name = "proxy-tls"
# }
# rule {
# host = var.fqdn
# http {
# path {
# backend {
# service {
# name = "upstream"
# port {
# number = var.proxy_port
# }
# }
# }
# }
# }
# }
# }
# }
+5
View File
@@ -0,0 +1,5 @@
resource "kubernetes_namespace" "proxy" {
metadata {
name = var.namespace
}
}
@@ -0,0 +1,9 @@
terraform {
required_version = "~>1.8"
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "2.36.0"
}
}
}
+123
View File
@@ -0,0 +1,123 @@
resource "kubernetes_service_account" "proxy" {
metadata {
name = "wol-proxy-sa"
namespace = kubernetes_namespace.proxy.metadata[0].name
}
automount_service_account_token = false
}
resource "kubernetes_deployment" "proxy" {
metadata {
name = "wol-proxy"
namespace = kubernetes_namespace.proxy.metadata[0].name
labels = {
app = "wol-proxy"
}
}
spec {
replicas = 1
selector {
match_labels = {
app = "wol-proxy"
}
}
strategy {
type = "Recreate"
}
template {
metadata {
labels = {
app = "wol-proxy"
}
}
spec {
service_account_name = kubernetes_service_account.proxy.metadata[0].name
automount_service_account_token = false
host_network = true
container {
name = "app"
image = "a13labs/wol_proxy:${var.tag}"
image_pull_policy = "Always"
security_context {
capabilities {
add = ["NET_RAW"]
}
}
port {
name = "upstream"
container_port = var.proxy_port
}
env {
name = "UPSTREAM_MAC"
value = var.upstream.mac
}
env {
name = "UPSTREAM_IP"
value = var.upstream.ip
}
env {
name = "UPSTREAM_PORT"
value = var.upstream.port
}
env {
name = "UPSTREAM_SCHEME"
value = var.upstream.scheme
}
env {
name = "PROXY_PORT"
value = var.proxy_port
}
readiness_probe {
tcp_socket {
port = var.proxy_port
}
initial_delay_seconds = 5
period_seconds = 10
failure_threshold = 10
}
}
}
}
}
}
resource "kubernetes_service" "proxy" {
metadata {
name = "upstream"
namespace = kubernetes_namespace.proxy.metadata[0].name
}
spec {
selector = {
app = "proxy"
}
port {
name = "upstream"
port = var.proxy_port
target_port = var.proxy_port
}
}
lifecycle {
ignore_changes = [
metadata[0].annotations
]
}
}
@@ -0,0 +1,32 @@
variable "upstream" {
description = "Configuration for the upstream proxy"
type = object({
mac = optional(string, "")
ip = optional(string, "")
port = optional(string, "")
scheme = optional(string, "http")
})
}
# variable "fqdn" {
# description = "The fully qualified domain name for the app server"
# type = string
# }
variable "tag" {
description = "The version of app to install"
type = string
default = "v0.4.0"
}
variable "namespace" {
description = "The namespace for the proxy"
type = string
default = "wol-proxy"
}
variable "proxy_port" {
description = "The port on which the proxy will listen"
type = number
default = 8080
}