diff --git a/main.tf b/main.tf index 08e31a20..b2023082 100644 --- a/main.tf +++ b/main.tf @@ -121,6 +121,9 @@ variable "onlyoffice_jwt_token" { type = string } variable "xray_reality_clients" { type = list(map(string)) } variable "xray_reality_private_key" { type = string } variable "xray_reality_short_ids" { type = list(string) } +variable "tiny_tuya_api_key" { type = string } +variable "tiny_tuya_api_secret" { type = string } +variable "tiny_tuya_service_secret" { type = string } provider "kubernetes" { @@ -506,6 +509,10 @@ module "kubernetes_cluster" { xray_reality_clients = var.xray_reality_clients xray_reality_private_key = var.xray_reality_private_key xray_reality_short_ids = var.xray_reality_short_ids + + tiny_tuya_api_key = var.tiny_tuya_api_key + tiny_tuya_api_secret = var.tiny_tuya_api_secret + tiny_tuya_service_secret = var.tiny_tuya_service_secret } diff --git a/modules/kubernetes/main.tf b/modules/kubernetes/main.tf index c6cdf442..4a89d174 100644 --- a/modules/kubernetes/main.tf +++ b/modules/kubernetes/main.tf @@ -100,6 +100,9 @@ variable "onlyoffice_jwt_token" { type = string } variable "xray_reality_clients" { type = list(map(string)) } variable "xray_reality_private_key" { type = string } variable "xray_reality_short_ids" { type = list(string) } +variable "tiny_tuya_api_key" { type = string } +variable "tiny_tuya_api_secret" { type = string } +variable "tiny_tuya_service_secret" { type = string } @@ -697,3 +700,12 @@ module "networking-toolbox" { source = "./networking-toolbox" tls_secret_name = var.tls_secret_name } + +module "tuya-bridge" { + source = "./tuya-bridge" + tls_secret_name = var.tls_secret_name + + tiny_tuya_api_key = var.tiny_tuya_api_key + tiny_tuya_api_secret = var.tiny_tuya_api_secret + tiny_tuya_service_secret = var.tiny_tuya_service_secret +} diff --git a/modules/kubernetes/tuya-bridge/main.tf b/modules/kubernetes/tuya-bridge/main.tf new file mode 100644 index 00000000..c3f77c30 --- /dev/null +++ b/modules/kubernetes/tuya-bridge/main.tf @@ -0,0 +1,93 @@ +variable "tls_secret_name" {} +variable "tiny_tuya_api_key" { type = string } +variable "tiny_tuya_api_secret" { type = string } +variable "tiny_tuya_service_secret" { type = string } + +resource "kubernetes_namespace" "tuya-bridge" { + metadata { + name = "tuya-bridge" + labels = { + "istio-injection" : "disabled" + } + } +} + +module "tls_secret" { + source = "../setup_tls_secret" + namespace = "tuya-bridge" + tls_secret_name = var.tls_secret_name +} + +resource "kubernetes_deployment" "tuya-bridge" { + metadata { + name = "tuya-bridge" + namespace = "tuya-bridge" + labels = { + app = "tuya-bridge" + } + } + spec { + replicas = 3 + selector { + match_labels = { + app = "tuya-bridge" + } + } + template { + metadata { + labels = { + app = "tuya-bridge" + } + } + spec { + container { + image = "viktorbarzin/tuya_bridge" + name = "tuya-bridge" + port { + container_port = 8080 + } + env { + name = "TINYTUYA_API_KEY" + value = var.tiny_tuya_api_key + } + env { + name = "TINYTUYA_API_SECRET" + value = var.tiny_tuya_api_secret + } + env { + name = "SERVICE_API_KEY" # used for auth the API endpoint + value = var.tiny_tuya_service_secret + } + } + } + } + } +} + +resource "kubernetes_service" "tuya-bridge" { + metadata { + name = "tuya-bridge" + namespace = "tuya-bridge" + labels = { + "app" = "tuya-bridge" + } + } + + spec { + selector = { + app = "tuya-bridge" + } + port { + name = "http" + port = "80" + target_port = "8080" + } + } +} + +module "ingress" { + source = "../ingress_factory" + namespace = "tuya-bridge" + name = "tuya-bridge" + tls_secret_name = var.tls_secret_name +} diff --git a/terraform.tfstate b/terraform.tfstate index c79109f2..ffe46b6a 100644 Binary files a/terraform.tfstate and b/terraform.tfstate differ diff --git a/terraform.tfvars b/terraform.tfvars index 7dd5bf4e..6b369a9e 100644 Binary files a/terraform.tfvars and b/terraform.tfvars differ