add webhook handler and env variables [ci skip]

This commit is contained in:
viktorbarzin 2023-03-18 17:36:37 +00:00
parent 46dc7e8706
commit d8c0c027de
4 changed files with 117 additions and 18 deletions

16
main.tf
View file

@ -55,6 +55,7 @@ variable "finance_app_imap_host" {}
variable "finance_app_imap_user" {} variable "finance_app_imap_user" {}
variable "finance_app_imap_password" {} variable "finance_app_imap_password" {}
variable "finance_app_imap_directory" {} variable "finance_app_imap_directory" {}
variable "finance_app_monzo_registered_accounts_json" {}
variable "ansible_prefix" { 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" 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" network = "dKubernetes"
provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node5 -e k8s_master='wizard@${module.k8s_master.guest_ip}'" 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_password = var.vsphere_password
vsphere_user = var.vsphere_user vsphere_user = var.vsphere_user
vsphere_server = var.vsphere_server vsphere_server = var.vsphere_server
@ -259,4 +274,5 @@ module "kubernetes_cluster" {
finance_app_imap_user = var.finance_app_imap_user finance_app_imap_user = var.finance_app_imap_user
finance_app_imap_password = var.finance_app_imap_password finance_app_imap_password = var.finance_app_imap_password
finance_app_imap_directory = var.finance_app_imap_directory finance_app_imap_directory = var.finance_app_imap_directory
finance_app_monzo_registered_accounts_json = var.finance_app_monzo_registered_accounts_json
} }

View file

@ -29,7 +29,7 @@ variable "vm_disk_size" {
variable "provisioner_command" { variable "provisioner_command" {
description = "Additional provisioning commands to run" description = "Additional provisioning commands to run"
# default = "#" default = "#"
type = string type = string
} }

View file

@ -6,6 +6,10 @@ variable "imap_host" {}
variable "imap_user" {} variable "imap_user" {}
variable "imap_password" {} variable "imap_password" {}
variable "imap_directory" {} variable "imap_directory" {}
variable "prod_graphql_endpoint" {
default = "https://finance.viktorbarzin.me/graphql"
}
variable "monzo_registered_accounts_json" {}
resource "kubernetes_namespace" "finance_app" { 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" { resource "kubernetes_deployment" "finance_app_frontend" {
metadata { metadata {
name = "finance-app-frontend" 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" { resource "kubernetes_service" "finance_app_frontend" {
metadata { metadata {
name = "finance-app-frontend" 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
}
}
}
}
}
}
} }
} }

View file

@ -43,6 +43,7 @@ variable "finance_app_imap_host" {}
variable "finance_app_imap_user" {} variable "finance_app_imap_user" {}
variable "finance_app_imap_password" {} variable "finance_app_imap_password" {}
variable "finance_app_imap_directory" {} variable "finance_app_imap_directory" {}
variable "finance_app_monzo_registered_accounts_json" {}
resource "null_resource" "core_services" { resource "null_resource" "core_services" {
# List all the core modules that must be provisioned first # List all the core modules that must be provisioned first
@ -265,4 +266,5 @@ module "finance_app" {
imap_user = var.finance_app_imap_user imap_user = var.finance_app_imap_user
imap_password = var.finance_app_imap_password imap_password = var.finance_app_imap_password
imap_directory = var.finance_app_imap_directory imap_directory = var.finance_app_imap_directory
monzo_registered_accounts_json = var.finance_app_monzo_registered_accounts_json
} }