This commit is contained in:
Hrankin, Aleksandr (contracted)
2026-02-19 11:34:13 +00:00
commit f243f440c3
191 changed files with 6183 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
resource "helm_release" "metallb" {
name = "metallb"
repository = "https://metallb.github.io/metallb"
chart = "metallb"
namespace = "metallb-system"
create_namespace = true
}

View File

@@ -0,0 +1,7 @@
terraform {
required_providers {
helm = {
source = "hashicorp/helm"
}
}
}

View File

@@ -0,0 +1,31 @@
# Это пул IP-адресов, из которого MetalLB будет брать “external IP” и назначать их сервисам типа LoadBalancer
resource "kubernetes_manifest" "metallb_ip_pool" {
manifest = {
apiVersion = "metallb.io/v1beta1"
kind = "IPAddressPool"
metadata = {
name = var.pool_name
namespace = var.namespace
}
spec = {
addresses = var.addresses
}
}
}
# Это говорит MetalLB: рекламируй (announce) адреса из этого пула в L2 режиме.
resource "kubernetes_manifest" "metallb_l2" {
manifest = {
apiVersion = "metallb.io/v1beta1"
kind = "L2Advertisement"
metadata = {
name = var.l2_name
namespace = var.namespace
}
spec = {
ipAddressPools = [var.pool_name]
}
}
depends_on = [kubernetes_manifest.metallb_ip_pool]
}

View File

@@ -0,0 +1,3 @@
output "pool_name" {
value = var.pool_name
}

View File

@@ -0,0 +1,22 @@
variable "addresses" {
type = list(string)
description = "MetalLB address pool ranges"
}
variable "namespace" {
type = string
description = "Namespace where MetalLB is installed"
default = "metallb-system"
}
variable "pool_name" {
type = string
description = "IPAddressPool name"
default = "default-pool"
}
variable "l2_name" {
type = string
description = "L2Advertisement name"
default = "default-l2"
}

View File

@@ -0,0 +1,7 @@
terraform {
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
}
}
}