- Implemented samba service

- Improved firewall rules
This commit is contained in:
2025-06-06 23:49:38 +02:00
parent 3ea65f060f
commit d3b8aff1ae
13 changed files with 285 additions and 53 deletions
@@ -306,27 +306,6 @@ resource "kubernetes_deployment" "reverse_proxy" {
}
}
readiness_probe {
http_get {
path = "/"
port = 8080
}
initial_delay_seconds = 5
period_seconds = 10
}
liveness_probe {
http_get {
path = "/"
port = 8080
}
initial_delay_seconds = 5
period_seconds = 10
failure_threshold = 10
timeout_seconds = 5
success_threshold = 1
}
security_context {
allow_privilege_escalation = false
}
+1 -1
View File
@@ -54,7 +54,7 @@ resource "kubernetes_deployment" "openwebui" {
}
strategy {
type = "Recreate"
type = "RollingUpdate"
}
template {
+4
View File
@@ -0,0 +1,4 @@
locals {
samba_version = var.tag
}
+147
View File
@@ -0,0 +1,147 @@
resource "kubernetes_namespace" "samba" {
metadata {
name = "samba"
}
}
resource "kubernetes_service_account" "samba" {
metadata {
name = "samba-sa"
namespace = kubernetes_namespace.samba.metadata[0].name
}
automount_service_account_token = false
}
resource "kubernetes_secret" "samba_secrets" {
metadata {
name = "samba-credentials"
namespace = kubernetes_namespace.samba.metadata[0].name
}
data = {
USERNAME = var.samba_username
PASSWORD = var.samba_password
}
}
resource "kubernetes_deployment" "samba" {
metadata {
name = "samba"
namespace = kubernetes_namespace.samba.metadata[0].name
labels = {
samba = "samba"
}
}
spec {
replicas = 1
selector {
match_labels = {
samba = "samba"
}
}
strategy {
type = "Recreate"
}
template {
metadata {
labels = {
samba = "samba"
}
}
spec {
service_account_name = kubernetes_service_account.samba.metadata[0].name
automount_service_account_token = false
container {
name = "samba"
image = "dockurr/samba:${local.samba_version}"
security_context {
allow_privilege_escalation = false
}
port {
name = "smb-1"
container_port = 445
host_port = 445
protocol = "TCP"
}
port {
name = "smb-2"
container_port = 139
host_port = 139
protocol = "TCP"
}
env {
name = "USER"
value_from {
secret_key_ref {
name = kubernetes_secret.samba_secrets.metadata[0].name
key = "USERNAME"
}
}
}
env {
name = "PASS"
value_from {
secret_key_ref {
name = kubernetes_secret.samba_secrets.metadata[0].name
key = "PASSWORD"
}
}
}
volume_mount {
name = "storage"
mount_path = "/storage"
}
}
volume {
name = "storage"
host_path {
path = var.shared_folder
}
}
}
}
}
}
resource "kubernetes_service" "samba" {
metadata {
name = "samba-ports"
namespace = kubernetes_namespace.samba.metadata[0].name
}
spec {
selector = {
samba = "samba"
}
port {
name = "smb"
port = 445
target_port = 445
}
type = "LoadBalancer"
}
lifecycle {
ignore_changes = [
metadata[0].annotations
]
}
}
+9
View File
@@ -0,0 +1,9 @@
terraform {
required_version = "~>1.8"
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "2.36.0"
}
}
}
+23
View File
@@ -0,0 +1,23 @@
variable "tag" {
description = "The version of app to install"
type = string
default = "latest"
}
variable "shared_folder" {
description = "Path to the shared folder on the host"
type = string
}
variable "samba_username" {
description = "Username for Samba access"
type = string
default = "samba"
}
variable "samba_password" {
description = "Password for Samba access"
type = string
default = "samba"
sensitive = true
}