Files
a13labs.infra/terraform/modules/utils/wol_proxy/proxy.tf
T
alexandre.pires e6a3f3affd Add custom error pages and Nginx configuration for proxy module
- Introduced custom HTML error pages for various HTTP status codes (400, 401, 403, 404, 408, 429, 500, 502, 503, 504) in the proxy module.
- Created a .gitignore file to exclude non-HTML files in the error resources directory.
- Updated Nginx configuration to serve custom error pages for upstream errors.
- Added new Nginx configuration templates for handling HTTP and stream protocols.
- Implemented Wireguard configuration templates and associated variables for secure connections.
- Established Kubernetes resources for Stunnel and Wireguard, including deployment, service accounts, and config maps.
- Defined variables for the Stunnel and Wireguard modules to facilitate configuration.
- Created a new Wol Proxy module with Kubernetes resources for deployment and service management.
2025-10-02 00:19:01 +02:00

124 lines
2.3 KiB
Terraform

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 = "wol-proxy"
}
port {
name = "upstream"
port = var.proxy_port
target_port = var.proxy_port
}
}
lifecycle {
ignore_changes = [
metadata[0].annotations
]
}
}