init
This commit is contained in:
7
terraform/modules/k8s/metallb/helm/main.tf
Normal file
7
terraform/modules/k8s/metallb/helm/main.tf
Normal 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
|
||||
}
|
||||
7
terraform/modules/k8s/metallb/helm/versions.tf
Normal file
7
terraform/modules/k8s/metallb/helm/versions.tf
Normal file
@@ -0,0 +1,7 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
helm = {
|
||||
source = "hashicorp/helm"
|
||||
}
|
||||
}
|
||||
}
|
||||
31
terraform/modules/k8s/metallb/resources/manifest.tf
Normal file
31
terraform/modules/k8s/metallb/resources/manifest.tf
Normal 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]
|
||||
}
|
||||
3
terraform/modules/k8s/metallb/resources/outputs.tf
Normal file
3
terraform/modules/k8s/metallb/resources/outputs.tf
Normal file
@@ -0,0 +1,3 @@
|
||||
output "pool_name" {
|
||||
value = var.pool_name
|
||||
}
|
||||
22
terraform/modules/k8s/metallb/resources/variables.tf
Normal file
22
terraform/modules/k8s/metallb/resources/variables.tf
Normal 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"
|
||||
}
|
||||
7
terraform/modules/k8s/metallb/resources/versions.tf
Normal file
7
terraform/modules/k8s/metallb/resources/versions.tf
Normal file
@@ -0,0 +1,7 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
kubernetes = {
|
||||
source = "hashicorp/kubernetes"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user