Add Celery worker/beat deployments and fix crawler API config
Add celery worker and celery beat deployments for background task processing and scheduled scraping. Fix API container name, add image_pull_policy Always, and add missing path_type to ingress rules.
This commit is contained in:
parent
ccf25cc99c
commit
cf25e1af4e
3 changed files with 144 additions and 4 deletions
|
|
@ -121,8 +121,9 @@ resource "kubernetes_deployment" "realestate-crawler-api" {
|
||||||
}
|
}
|
||||||
spec {
|
spec {
|
||||||
container {
|
container {
|
||||||
name = "realestate-crawler-ui"
|
name = "realestate-crawler-api"
|
||||||
image = "viktorbarzin/realestatecrawler:latest"
|
image = "viktorbarzin/realestatecrawler:latest"
|
||||||
|
image_pull_policy = "Always"
|
||||||
env {
|
env {
|
||||||
name = "ENV"
|
name = "ENV"
|
||||||
value = "prod"
|
value = "prod"
|
||||||
|
|
@ -250,7 +251,8 @@ resource "kubernetes_ingress_v1" "proxied-ingress" {
|
||||||
host = "wrongmove.viktorbarzin.me"
|
host = "wrongmove.viktorbarzin.me"
|
||||||
http {
|
http {
|
||||||
path {
|
path {
|
||||||
path = "/"
|
path = "/"
|
||||||
|
path_type = "Prefix"
|
||||||
backend {
|
backend {
|
||||||
service {
|
service {
|
||||||
name = "realestate-crawler-ui"
|
name = "realestate-crawler-ui"
|
||||||
|
|
@ -261,7 +263,8 @@ resource "kubernetes_ingress_v1" "proxied-ingress" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
path {
|
path {
|
||||||
path = "/api"
|
path = "/api"
|
||||||
|
path_type = "Prefix"
|
||||||
backend {
|
backend {
|
||||||
service {
|
service {
|
||||||
name = "realestate-crawler-api"
|
name = "realestate-crawler-api"
|
||||||
|
|
@ -277,6 +280,143 @@ resource "kubernetes_ingress_v1" "proxied-ingress" {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Celery worker for background task processing
|
||||||
|
resource "kubernetes_deployment" "realestate-crawler-celery" {
|
||||||
|
metadata {
|
||||||
|
name = "realestate-crawler-celery"
|
||||||
|
namespace = kubernetes_namespace.realestate-crawler.metadata[0].name
|
||||||
|
labels = {
|
||||||
|
app = "realestate-crawler-celery"
|
||||||
|
tier = var.tier
|
||||||
|
}
|
||||||
|
}
|
||||||
|
spec {
|
||||||
|
replicas = 1
|
||||||
|
strategy {
|
||||||
|
type = "Recreate"
|
||||||
|
}
|
||||||
|
selector {
|
||||||
|
match_labels = {
|
||||||
|
app = "realestate-crawler-celery"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
template {
|
||||||
|
metadata {
|
||||||
|
labels = {
|
||||||
|
app = "realestate-crawler-celery"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
spec {
|
||||||
|
container {
|
||||||
|
name = "celery-worker"
|
||||||
|
image = "viktorbarzin/realestatecrawler:latest"
|
||||||
|
image_pull_policy = "Always"
|
||||||
|
command = ["python", "-m", "celery", "-A", "celery_app", "worker", "--loglevel=info"]
|
||||||
|
env {
|
||||||
|
name = "ENV"
|
||||||
|
value = "prod"
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
name = "DB_CONNECTION_STRING"
|
||||||
|
value = "mysql://wrongmove:${var.db_password}@mysql.dbaas.svc.cluster.local:3306/wrongmove"
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
name = "CELERY_BROKER_URL"
|
||||||
|
value = "redis://redis.redis.svc.cluster.local:6379/0"
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
name = "CELERY_RESULT_BACKEND"
|
||||||
|
value = "redis://redis.redis.svc.cluster.local:6379/1"
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
name = "SLACK_WEBHOOK_URL"
|
||||||
|
value = lookup(var.notification_settings, "slack", "")
|
||||||
|
}
|
||||||
|
volume_mount {
|
||||||
|
name = "data"
|
||||||
|
mount_path = "/app/data"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
volume {
|
||||||
|
name = "data"
|
||||||
|
nfs {
|
||||||
|
path = "/mnt/main/real-estate-crawler"
|
||||||
|
server = "10.0.10.15"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Celery beat for scheduled task management
|
||||||
|
resource "kubernetes_deployment" "realestate-crawler-celery-beat" {
|
||||||
|
metadata {
|
||||||
|
name = "realestate-crawler-celery-beat"
|
||||||
|
namespace = kubernetes_namespace.realestate-crawler.metadata[0].name
|
||||||
|
labels = {
|
||||||
|
app = "realestate-crawler-celery-beat"
|
||||||
|
tier = var.tier
|
||||||
|
}
|
||||||
|
}
|
||||||
|
spec {
|
||||||
|
replicas = 1
|
||||||
|
strategy {
|
||||||
|
type = "Recreate" # Only one beat instance should run at a time
|
||||||
|
}
|
||||||
|
selector {
|
||||||
|
match_labels = {
|
||||||
|
app = "realestate-crawler-celery-beat"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
template {
|
||||||
|
metadata {
|
||||||
|
labels = {
|
||||||
|
app = "realestate-crawler-celery-beat"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
spec {
|
||||||
|
container {
|
||||||
|
name = "celery-beat"
|
||||||
|
image = "viktorbarzin/realestatecrawler:latest"
|
||||||
|
command = ["python", "-m", "celery", "-A", "celery_app", "beat", "--loglevel=info"]
|
||||||
|
env {
|
||||||
|
name = "ENV"
|
||||||
|
value = "prod"
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
name = "DB_CONNECTION_STRING"
|
||||||
|
value = "mysql://wrongmove:${var.db_password}@mysql.dbaas.svc.cluster.local:3306/wrongmove"
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
name = "CELERY_BROKER_URL"
|
||||||
|
value = "redis://redis.redis.svc.cluster.local:6379/0"
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
name = "CELERY_RESULT_BACKEND"
|
||||||
|
value = "redis://redis.redis.svc.cluster.local:6379/1"
|
||||||
|
}
|
||||||
|
env {
|
||||||
|
name = "SCRAPE_SCHEDULES"
|
||||||
|
value = lookup(var.notification_settings, "scrape_schedules", "")
|
||||||
|
}
|
||||||
|
volume_mount {
|
||||||
|
name = "data"
|
||||||
|
mount_path = "/app/data"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
volume {
|
||||||
|
name = "data"
|
||||||
|
nfs {
|
||||||
|
path = "/mnt/main/real-estate-crawler"
|
||||||
|
server = "10.0.10.15"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
resource "kubernetes_cron_job_v1" "scrape-rightmove" {
|
resource "kubernetes_cron_job_v1" "scrape-rightmove" {
|
||||||
metadata {
|
metadata {
|
||||||
name = "scrape-rightmove"
|
name = "scrape-rightmove"
|
||||||
|
|
|
||||||
Binary file not shown.
BIN
terraform.tfvars
BIN
terraform.tfvars
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue