consolidate MetalLB IPs: 5 → 1 (10.0.20.200)
Migrate all 11 LoadBalancer services to share 10.0.20.200: - Update annotations: metallb.universe.tf → metallb.io - Pin all services to 10.0.20.200 with allow-shared-ip: shared - Standardize externalTrafficPolicy to Cluster (required for IP sharing) - Remove redundant port 80 (roundcube) from mailserver LB - Update CoreDNS forward: 10.0.20.204 → 10.0.20.200 - Update cloudflared tunnel target: 10.0.20.202 → 10.0.20.200 Services consolidated: coturn, headscale, kms, qbittorrent, shadowsocks, torrserver, wireguard, mailserver, traefik, xray, technitium
This commit is contained in:
parent
fc432197aa
commit
c49e4561a3
18 changed files with 49 additions and 41 deletions
|
|
@ -63,7 +63,7 @@ resource "cloudflare_zero_trust_tunnel_cloudflared_config" "sof" {
|
||||||
content {
|
content {
|
||||||
hostname = ingress_rule.value == "viktorbarzin.me" ? ingress_rule.value : "${ingress_rule.value}.viktorbarzin.me"
|
hostname = ingress_rule.value == "viktorbarzin.me" ? ingress_rule.value : "${ingress_rule.value}.viktorbarzin.me"
|
||||||
path = "/"
|
path = "/"
|
||||||
service = "https://10.0.20.202:443"
|
service = "https://10.0.20.200:443"
|
||||||
origin_request {
|
origin_request {
|
||||||
no_tls_verify = true
|
no_tls_verify = true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -193,8 +193,8 @@ resource "kubernetes_service" "coturn" {
|
||||||
name = "coturn"
|
name = "coturn"
|
||||||
namespace = kubernetes_namespace.coturn.metadata[0].name
|
namespace = kubernetes_namespace.coturn.metadata[0].name
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/loadBalancerIPs" = "10.0.20.200"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -287,7 +287,8 @@ resource "kubernetes_service" "headscale-server" {
|
||||||
"app" = "headscale"
|
"app" = "headscale"
|
||||||
}
|
}
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" : "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,8 @@ resource "kubernetes_service" "windows_kms" {
|
||||||
app = "kms-service"
|
app = "kms-service"
|
||||||
}
|
}
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -460,15 +460,14 @@ resource "kubernetes_service" "mailserver" {
|
||||||
}
|
}
|
||||||
|
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spec {
|
spec {
|
||||||
type = "LoadBalancer"
|
type = "LoadBalancer"
|
||||||
load_balancer_ip = "10.0.20.201"
|
external_traffic_policy = "Cluster"
|
||||||
# external_traffic_policy = "Cluster"
|
|
||||||
external_traffic_policy = "Local"
|
|
||||||
selector = {
|
selector = {
|
||||||
app = "mailserver"
|
app = "mailserver"
|
||||||
}
|
}
|
||||||
|
|
@ -500,12 +499,6 @@ resource "kubernetes_service" "mailserver" {
|
||||||
port = 993
|
port = 993
|
||||||
target_port = "imap-secure"
|
target_port = "imap-secure"
|
||||||
}
|
}
|
||||||
|
|
||||||
port {
|
|
||||||
name = "roundcube"
|
|
||||||
protocol = "TCP"
|
|
||||||
port = 80
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ resource "cloudflare_zero_trust_tunnel_cloudflared_config" "sof" {
|
||||||
content {
|
content {
|
||||||
hostname = ingress_rule.value == "viktorbarzin.me" ? ingress_rule.value : "${ingress_rule.value}.viktorbarzin.me"
|
hostname = ingress_rule.value == "viktorbarzin.me" ? ingress_rule.value : "${ingress_rule.value}.viktorbarzin.me"
|
||||||
path = "/"
|
path = "/"
|
||||||
service = "https://10.0.20.202:443"
|
service = "https://10.0.20.200:443"
|
||||||
origin_request {
|
origin_request {
|
||||||
no_tls_verify = true
|
no_tls_verify = true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -283,7 +283,8 @@ resource "kubernetes_service" "headscale-server" {
|
||||||
"app" = "headscale"
|
"app" = "headscale"
|
||||||
}
|
}
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" : "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -460,14 +460,14 @@ resource "kubernetes_service" "mailserver" {
|
||||||
}
|
}
|
||||||
|
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spec {
|
spec {
|
||||||
type = "LoadBalancer"
|
type = "LoadBalancer"
|
||||||
# external_traffic_policy = "Cluster"
|
external_traffic_policy = "Cluster"
|
||||||
external_traffic_policy = "Local"
|
|
||||||
selector = {
|
selector = {
|
||||||
app = "mailserver"
|
app = "mailserver"
|
||||||
}
|
}
|
||||||
|
|
@ -499,12 +499,6 @@ resource "kubernetes_service" "mailserver" {
|
||||||
port = 993
|
port = 993
|
||||||
target_port = "imap-secure"
|
target_port = "imap-secure"
|
||||||
}
|
}
|
||||||
|
|
||||||
port {
|
|
||||||
name = "roundcube"
|
|
||||||
protocol = "TCP"
|
|
||||||
port = 80
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ resource "kubernetes_config_map" "coredns" {
|
||||||
rcode NXDOMAIN
|
rcode NXDOMAIN
|
||||||
fallthrough
|
fallthrough
|
||||||
}
|
}
|
||||||
forward . 10.0.20.204 # Technitium LoadBalancer
|
forward . 10.0.20.200 # Technitium LoadBalancer
|
||||||
cache {
|
cache {
|
||||||
success 10000 300 6
|
success 10000 300 6
|
||||||
denial 10000 300 60
|
denial 10000 300 60
|
||||||
|
|
@ -265,6 +265,10 @@ resource "kubernetes_service" "technitium-dns" {
|
||||||
labels = {
|
labels = {
|
||||||
"app" = "technitium"
|
"app" = "technitium"
|
||||||
}
|
}
|
||||||
|
annotations = {
|
||||||
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spec {
|
spec {
|
||||||
|
|
@ -274,7 +278,7 @@ resource "kubernetes_service" "technitium-dns" {
|
||||||
port = 53
|
port = 53
|
||||||
protocol = "UDP"
|
protocol = "UDP"
|
||||||
}
|
}
|
||||||
external_traffic_policy = "Local"
|
external_traffic_policy = "Cluster"
|
||||||
selector = {
|
selector = {
|
||||||
"dns-server" = "true"
|
"dns-server" = "true"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,10 +144,11 @@ resource "helm_release" "traefik" {
|
||||||
service = {
|
service = {
|
||||||
type = "LoadBalancer"
|
type = "LoadBalancer"
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.io/loadBalancerIPs" = "10.0.20.202"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
spec = {
|
spec = {
|
||||||
externalTrafficPolicy = "Local"
|
externalTrafficPolicy = "Cluster"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,8 @@ resource "kubernetes_service" "wireguard" {
|
||||||
name = "wireguard"
|
name = "wireguard"
|
||||||
namespace = kubernetes_namespace.wireguard.metadata[0].name
|
namespace = kubernetes_namespace.wireguard.metadata[0].name
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
labels = {
|
labels = {
|
||||||
"app" = "wireguard"
|
"app" = "wireguard"
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,8 @@ resource "kubernetes_service" "qbittorrent-torrenting" {
|
||||||
|
|
||||||
}
|
}
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,8 @@ resource "kubernetes_service" "mailserver" { # rename me
|
||||||
app = "shadowsocks"
|
app = "shadowsocks"
|
||||||
}
|
}
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ resource "kubernetes_config_map" "coredns" {
|
||||||
rcode NXDOMAIN
|
rcode NXDOMAIN
|
||||||
fallthrough
|
fallthrough
|
||||||
}
|
}
|
||||||
forward . 10.0.20.204 # Technitium LoadBalancer
|
forward . 10.0.20.200 # Technitium LoadBalancer
|
||||||
cache {
|
cache {
|
||||||
success 10000 300 6
|
success 10000 300 6
|
||||||
denial 10000 300 60
|
denial 10000 300 60
|
||||||
|
|
@ -265,7 +265,10 @@ resource "kubernetes_service" "technitium-dns" {
|
||||||
labels = {
|
labels = {
|
||||||
"app" = "technitium"
|
"app" = "technitium"
|
||||||
}
|
}
|
||||||
annotations = {}
|
annotations = {
|
||||||
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spec {
|
spec {
|
||||||
|
|
@ -275,7 +278,7 @@ resource "kubernetes_service" "technitium-dns" {
|
||||||
port = 53
|
port = 53
|
||||||
protocol = "UDP"
|
protocol = "UDP"
|
||||||
}
|
}
|
||||||
external_traffic_policy = "Local"
|
external_traffic_policy = "Cluster"
|
||||||
selector = {
|
selector = {
|
||||||
"dns-server" = "true"
|
"dns-server" = "true"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -242,7 +242,8 @@ resource "kubernetes_service" "torrserver-bt" {
|
||||||
app = "torrserver-bt"
|
app = "torrserver-bt"
|
||||||
}
|
}
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -144,10 +144,11 @@ resource "helm_release" "traefik" {
|
||||||
service = {
|
service = {
|
||||||
type = "LoadBalancer"
|
type = "LoadBalancer"
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.io/loadBalancerIPs" = "10.0.20.202"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
spec = {
|
spec = {
|
||||||
externalTrafficPolicy = "Local"
|
externalTrafficPolicy = "Cluster"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,8 @@ resource "kubernetes_service" "wireguard" {
|
||||||
name = "wireguard"
|
name = "wireguard"
|
||||||
namespace = kubernetes_namespace.wireguard.metadata[0].name
|
namespace = kubernetes_namespace.wireguard.metadata[0].name
|
||||||
annotations = {
|
annotations = {
|
||||||
"metallb.universe.tf/allow-shared-ip" = "shared"
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
}
|
}
|
||||||
labels = {
|
labels = {
|
||||||
"app" = "wireguard"
|
"app" = "wireguard"
|
||||||
|
|
|
||||||
|
|
@ -189,6 +189,10 @@ resource "kubernetes_service" "xray-reality" {
|
||||||
labels = {
|
labels = {
|
||||||
"app" = "xray"
|
"app" = "xray"
|
||||||
}
|
}
|
||||||
|
annotations = {
|
||||||
|
"metallb.io/loadBalancerIPs" = "10.0.20.200"
|
||||||
|
"metallb.io/allow-shared-ip" = "shared"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spec {
|
spec {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue