From d8c0c027de8a5131d91e41f81b9af840b4b0b0fd Mon Sep 17 00:00:00 2001 From: viktorbarzin Date: Sat, 18 Mar 2023 17:36:37 +0000 Subject: [PATCH] add webhook handler and env variables [ci skip] --- main.tf | 30 +++++++--- modules/create-vm/main.tf | 4 +- modules/kubernetes/finance_app/main.tf | 81 ++++++++++++++++++++++++++ modules/kubernetes/main.tf | 20 ++++--- 4 files changed, 117 insertions(+), 18 deletions(-) diff --git a/main.tf b/main.tf index 19cb0e09..049a0b55 100644 --- a/main.tf +++ b/main.tf @@ -55,6 +55,7 @@ variable "finance_app_imap_host" {} variable "finance_app_imap_user" {} variable "finance_app_imap_password" {} variable "finance_app_imap_directory" {} +variable "finance_app_monzo_registered_accounts_json" {} variable "ansible_prefix" { default = "ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible/vault_pass.txt ansible-playbook -i playbook/hosts.yaml playbook/linux.yml -t linux/initial_setup" @@ -177,6 +178,20 @@ module "k8s_node5" { network = "dKubernetes" provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node5 -e k8s_master='wizard@${module.k8s_master.guest_ip}'" + vsphere_password = var.vsphere_password + vsphere_user = var.vsphere_user + vsphere_server = var.vsphere_server + vsphere_datastore = "r730-datastore" + vsphere_resource_pool = "R730" + +} +module "devvm" { + source = "./modules/create-vm" + vm_name = "devvm" + vm_mac_address = "00:50:56:b0:a1:41" + network = "dKubernetes" + # provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node5 -e k8s_master='wizard@${module.k8s_master.guest_ip}'" + vsphere_password = var.vsphere_password vsphere_user = var.vsphere_user vsphere_server = var.vsphere_server @@ -252,11 +267,12 @@ module "kubernetes_cluster" { shadowsocks_password = var.shadowsocks_password # finance app - finance_app_monzo_client_id = var.finance_app_monzo_client_id - finance_app_monzo_client_secret = var.finance_app_monzo_client_secret - finance_app_sqlite_db_path = var.finance_app_sqlite_db_path - finance_app_imap_host = var.finance_app_imap_host - finance_app_imap_user = var.finance_app_imap_user - finance_app_imap_password = var.finance_app_imap_password - finance_app_imap_directory = var.finance_app_imap_directory + finance_app_monzo_client_id = var.finance_app_monzo_client_id + finance_app_monzo_client_secret = var.finance_app_monzo_client_secret + finance_app_sqlite_db_path = var.finance_app_sqlite_db_path + finance_app_imap_host = var.finance_app_imap_host + finance_app_imap_user = var.finance_app_imap_user + finance_app_imap_password = var.finance_app_imap_password + finance_app_imap_directory = var.finance_app_imap_directory + finance_app_monzo_registered_accounts_json = var.finance_app_monzo_registered_accounts_json } diff --git a/modules/create-vm/main.tf b/modules/create-vm/main.tf index 611648ea..a59e97a5 100644 --- a/modules/create-vm/main.tf +++ b/modules/create-vm/main.tf @@ -29,8 +29,8 @@ variable "vm_disk_size" { variable "provisioner_command" { description = "Additional provisioning commands to run" - # default = "#" - type = string + default = "#" + type = string } variable "network" { diff --git a/modules/kubernetes/finance_app/main.tf b/modules/kubernetes/finance_app/main.tf index 2238e97b..39504462 100644 --- a/modules/kubernetes/finance_app/main.tf +++ b/modules/kubernetes/finance_app/main.tf @@ -6,6 +6,10 @@ variable "imap_host" {} variable "imap_user" {} variable "imap_password" {} variable "imap_directory" {} +variable "prod_graphql_endpoint" { + default = "https://finance.viktorbarzin.me/graphql" +} +variable "monzo_registered_accounts_json" {} resource "kubernetes_namespace" "finance_app" { @@ -133,6 +137,48 @@ resource "kubernetes_deployment" "finance_app" { } } +resource "kubernetes_deployment" "finance_app_backend_webhook_handler" { + metadata { + name = "finance-app-backend-webhook-handler" + namespace = "finance-app" + labels = { + app = "finance-app-backend-webhook-handler" + } + } + spec { + replicas = 1 + strategy { + type = "RollingUpdate" + } + selector { + match_labels = { + app = "finance-app-backend-webhook-handler" + } + } + template { + metadata { + labels = { + app = "finance-app-backend-webhook-handler" + } + } + spec { + container { + image = "viktorbarzin/finance-app-backend-webhook-handler" + name = "finance-app-backend-webhook-handler" + env { + name = "MONZO_REGISTERED_ACCOUNTS_JSON" + value = var.monzo_registered_accounts_json + } + env { + name = "GRAPHQL_ENDPOINT" + value = var.prod_graphql_endpoint + } + } + } + } + } +} + resource "kubernetes_deployment" "finance_app_frontend" { metadata { name = "finance-app-frontend" @@ -187,6 +233,25 @@ resource "kubernetes_service" "finance_app" { } } +resource "kubernetes_service" "finance_app_backend_webhook_handler" { + metadata { + name = "finance-app-backend-webhook-handler" + namespace = "finance-app" + labels = { + app = "finance-app-backend-webhook-handler" + } + } + + spec { + selector = { + app = "finance-app-backend-webhook-handler" + } + port { + name = "http" + port = "5000" + } + } +} resource "kubernetes_service" "finance_app_frontend" { metadata { name = "finance-app-frontend" @@ -253,5 +318,21 @@ resource "kubernetes_ingress_v1" "finance_app" { } } } + rule { + host = "finance.viktorbarzin.me" + http { + path { + path = "/webhook" + backend { + service { + name = "finance-app-backend-webhook-handler" + port { + number = 5000 + } + } + } + } + } + } } } diff --git a/modules/kubernetes/main.tf b/modules/kubernetes/main.tf index fcd04c7d..80ff1c2c 100644 --- a/modules/kubernetes/main.tf +++ b/modules/kubernetes/main.tf @@ -43,6 +43,7 @@ variable "finance_app_imap_host" {} variable "finance_app_imap_user" {} variable "finance_app_imap_password" {} variable "finance_app_imap_directory" {} +variable "finance_app_monzo_registered_accounts_json" {} resource "null_resource" "core_services" { # List all the core modules that must be provisioned first @@ -256,13 +257,14 @@ module "home_assistant" { } module "finance_app" { - source = "./finance_app" - tls_secret_name = var.tls_secret_name - monzo_client_id = var.finance_app_monzo_client_id - monzo_client_secret = var.finance_app_monzo_client_secret - sqlite_db_path = var.finance_app_sqlite_db_path - imap_host = var.finance_app_imap_host - imap_user = var.finance_app_imap_user - imap_password = var.finance_app_imap_password - imap_directory = var.finance_app_imap_directory + source = "./finance_app" + tls_secret_name = var.tls_secret_name + monzo_client_id = var.finance_app_monzo_client_id + monzo_client_secret = var.finance_app_monzo_client_secret + sqlite_db_path = var.finance_app_sqlite_db_path + imap_host = var.finance_app_imap_host + imap_user = var.finance_app_imap_user + imap_password = var.finance_app_imap_password + imap_directory = var.finance_app_imap_directory + monzo_registered_accounts_json = var.finance_app_monzo_registered_accounts_json }