From 6e07a68e90b1fbcf600fdda825e5bacc8c5acbeb Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 22 Jun 2025 17:10:32 +0100 Subject: [PATCH] enable django --- .../django/django-db.secret.yaml | 11 +++ .../django/kubeconfig.secret.yaml | 8 ++ module.tf | 7 ++ variables.auto.tfvars | 96 +++++++++++++++++-- 4 files changed, 113 insertions(+), 9 deletions(-) create mode 100644 external_manifests/django/django-db.secret.yaml create mode 100644 external_manifests/django/kubeconfig.secret.yaml diff --git a/external_manifests/django/django-db.secret.yaml b/external_manifests/django/django-db.secret.yaml new file mode 100644 index 0000000..785bce0 --- /dev/null +++ b/external_manifests/django/django-db.secret.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +data: + DB_DATABASE_NAME: ZGphbmdv + DB_HOST: ZGphbmdvLWRiLXN2Yw== + DB_PASSWORD: U3VmZnJhZ2UtTW9uZXliYWdzLUlsbHVzaW9uNw== + DB_USERNAME: ZGphbmdvX3VzZXJuYW1l +kind: Secret +metadata: + creationTimestamp: null + name: django-db-credentials + namespace: django diff --git a/external_manifests/django/kubeconfig.secret.yaml b/external_manifests/django/kubeconfig.secret.yaml new file mode 100644 index 0000000..f035905 --- /dev/null +++ b/external_manifests/django/kubeconfig.secret.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +data: + config: YXBpVmVyc2lvbjogdjEKY2x1c3RlcnM6Ci0gY2x1c3RlcjoKICAgIGNlcnRpZmljYXRlLWF1dGhvcml0eS1kYXRhOiBMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VSQ1ZFTkRRV1V5WjBGM1NVSkJaMGxKU1V0RFJtWm1UMHRLUWtsM1JGRlpTa3R2V2tsb2RtTk9RVkZGVEVKUlFYZEdWRVZVVFVKRlIwRXhWVVVLUVhoTlMyRXpWbWxhV0VwMVdsaFNiR042UVdWR2R6QjVUa1JCZUUxVVVYaFBWRUY1VFdwYVlVWjNNSHBPUkVGNFRWUkZlRTlVUVROTmFscGhUVUpWZUFwRmVrRlNRbWRPVmtKQlRWUkRiWFF4V1cxV2VXSnRWakJhV0UxM1oyZEZhVTFCTUVkRFUzRkhVMGxpTTBSUlJVSkJVVlZCUVRSSlFrUjNRWGRuWjBWTENrRnZTVUpCVVVSalV6ZGhObVJyV1doUFoyczJTRTV3Vm1sSVdXcG1iMHg1S3pWQ1JERlpTa1ExWTNkaWJXOWtWRWRxY21nNWQyeFBSWHBqTkVoME1Ga0thMUJqUVU1TVREQlVla2h3Tmxsb1lta3lSRTVRZVc1cVVucFZhMEpFT1ZOcGFsSTFNa0p3VlM5NlNFOUZlRk40TUhSNlRqTnRSVzFWZVVwUU1qWTVjd28wYmxWMmFqUnRRVWx5TjNCUWNrRnhURU5MVFZoRmQzZFhORkJYTlRrNWFsQkhVRlV2V2tFNFVGUnRaakI0ZWxjNWExVkNUbEo0YVZGMWVrbHBXWE5UQ2pkbWJuQnJVakpZVXpSS1EwVkNjMnRJYXpaSVVFTmpPVFJWVmxGSWRWTm5lWGhTYm1neE1VeFNhVk51WkdKUU9UWkRZbWhpYTNaRGJUVnlPSGsyUW0wS1puWnRWVTlhZURaVVIyUllUekF6Ulc1alUyNVlOMk0zUkV0Sk0zTmhZVnBzV21jelZtTlFTWFYzU2t0blNrZE9kVE01ZDJwelEzZDJXa0psVW1GeFNBcFZRa0ZhV0hKWWFUbE1PRTExVWk5ck1HaFRaakpOYUVGeEsweFlRV2ROUWtGQlIycFhWRUpZVFVFMFIwRXhWV1JFZDBWQ0wzZFJSVUYzU1VOd1JFRlFDa0puVGxaSVVrMUNRV1k0UlVKVVFVUkJVVWd2VFVJd1IwRXhWV1JFWjFGWFFrSlJNREk0ZVROQmVrSXdTMGhyY0RCMVVqaFRWVGhoZUd4ak0xWlVRVllLUW1kT1ZraFNSVVZFYWtGTloyZHdjbVJYU214amJUVnNaRWRXZWsxQk1FZERVM0ZIVTBsaU0wUlJSVUpEZDFWQlFUUkpRa0ZSUWxKb1JVUkhhekJsYmdwak1FMU1UekoxY2xReFNUVk9XRk55UTNobVlTOHlhbUpWWVZNNUwzTk5RamsxU1ZoWU9UbFhWMFJxVUVGdUsyUjVkemRyTW5kbVRYZG9XRGhNSzJoTkNtcDNOVzV2TTNGNldISnJZemR4VXpJNWFsRnBRekU1VDBKQmNsVlhhWGxUT1cxcGVpdFNWbmxGVVZwNVNXMHpWVlJ4U1ZSdFpVeEROM2RHT0VSQmVqVUtkbVl2VkZWSWFreHdPV05XV0VsR0t5czFTWFpUTWt3Mk0zQkZkaXREYzFOVk1IZHVTVlZIWnpneVJqSm5ZM2N2UjJSR05XSnJTRlE0ZVVGSFpGaEdiUW95TTFkWFpWRnhZVTR3VEdwclUzSXZRelJoWWtWME9FeHhSV3A1WVdKMllrMWlRMlpDZUd0U2VYWXJSRVp5YkhRNVJuRmhkRTFQTVcxa1dUZEJaMjFTQ2tOUmNGUk1hRUl5UVd0NmMxRlVUSHByUjFNeFYzUTBUamgzVjFoRWEzbE9WRFEyVlhBdlRXNW5kM0pqTDBWcmFsb3JkbTVXVWtWQmR6VXZNVXA2VkhnS1JGSlZkSHBEWlZsS1dITnZDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsKICAgIHNlcnZlcjogaHR0cHM6Ly8xOTIuMTY4Ljg4LjUyOjY0NDMKICBuYW1lOiBrdWJlcm5ldGVzCmNvbnRleHRzOgotIGNvbnRleHQ6CiAgICBjbHVzdGVyOiBrdWJlcm5ldGVzCiAgICBuYW1lc3BhY2U6IHBpbmNoZmxhdAogICAgdXNlcjoga3ViZXJuZXRlcy1hZG1pbgogIG5hbWU6IGt1YmVybmV0ZXMtYWRtaW5Aa3ViZXJuZXRlcwpjdXJyZW50LWNvbnRleHQ6IGt1YmVybmV0ZXMtYWRtaW5Aa3ViZXJuZXRlcwpraW5kOiBDb25maWcKcHJlZmVyZW5jZXM6IHt9CnVzZXJzOgotIG5hbWU6IGt1YmVybmV0ZXMtYWRtaW4KICB1c2VyOgogICAgY2xpZW50LWNlcnRpZmljYXRlLWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVJKVkVORFFXZHRaMEYzU1VKQlowbEpUblJ4VjBwdFZqbHdOVzkzUkZGWlNrdHZXa2xvZG1OT1FWRkZURUpSUVhkR1ZFVlVUVUpGUjBFeFZVVUtRWGhOUzJFelZtbGFXRXAxV2xoU2JHTjZRV1ZHZHpCNVRrUkJlRTFVVVhoUFZFRjVUV3BhWVVaM01IbE9ha0Y0VFZSTmVFOVVVWGxPVkZKaFRVUlJlQXBHZWtGV1FtZE9Wa0pCYjFSRWJrNDFZek5TYkdKVWNIUlpXRTR3V2xoS2VrMVNhM2RHZDFsRVZsRlJSRVY0UW5Ka1YwcHNZMjAxYkdSSFZucE1WMFpyQ21KWGJIVk5TVWxDU1dwQlRrSm5hM0ZvYTJsSE9YY3dRa0ZSUlVaQlFVOURRVkU0UVUxSlNVSkRaMHREUVZGRlFUZFhZVXRoY0V4Q1pHWlBaVEEzSzNrS1ZHNVJaRVZITTA1NWJGQnRhMnRpYTI5YWMyaDRSR3hXZHl0c01WQTNRamxSTkN0S1UwZ3ZZWFlyY1ZGaFlXSTJjakEzUlhsRUsydEdVaTl4Ym5wcFJRcG9SMmxJVGxoblVsVXhNR1ZqVDBaR1RGRXphemxDVkRaSVZVdHBaamM0WVhONFNFZ3ljbmwzV1U5eFoyUjFTRlk1TjBNeFVISXZaSGxtYXl0cVJWTm5DbGsxUXpkdkt5czVlREJ0U2xjeFNWTm1lV2RGTDJSTWRucHVXRWcxZEc1VVFTOTNlVnB5UVdSWmIxSllVRGhFTlRjeFREbGFMMUJUU1RkSGJYSlBPRFFLVTNoM2JuQjRaWFJZVjBjekwwZEtZVmhuWjBGYWMzZHhOVEUzTXpsSlYzRktWWFl4YTFaNVlsTkpVbnBWYjJSWmJGWTBZeklyT0c5VFVsZFVaV1JYTVFwcFNuQmlZMlJXTW0wNEwxUmlPV0pNWVdWWVZsaHJXa052UldkdldXdzJVRU5TU2sxT01EUjZhaXRZT1U5eFMzSldTVVYxU1ROallqSmpjRTk2TDFRckNuTmpWbVJJZDBsRVFWRkJRbTh4V1hkV1JFRlBRbWRPVmtoUk9FSkJaamhGUWtGTlEwSmhRWGRGZDFsRVZsSXdiRUpCZDNkRFoxbEpTM2RaUWtKUlZVZ0tRWGRKZDBSQldVUldVakJVUVZGSUwwSkJTWGRCUkVGbVFtZE9Wa2hUVFVWSFJFRlhaMEpSTURJNGVUTkJla0l3UzBocmNEQjFVamhUVlRoaGVHeGpNd3BXVkVGT1FtZHJjV2hyYVVjNWR6QkNRVkZ6UmtGQlQwTkJVVVZCUTBJdk5HWm5UUzl2UlRScFRUTlVWSFkxUVVsNlNtRmhlVWRsTWpoaUwwUnZLMFJPQ2sxVlRFeDBVSEkyT0c1U1oyTjVhREJPWWs1WGRtdENVVVEwU0VaamJVUmlSMUkzVlhsQ1NXWjJUWGhIYlN0SlJqbFJSREF6Y0d0UVpVRk9iM05yVFZvS1ZXaG9UV1ZSZDBGSFVYQXhhVnBrUWtwT1FUVlJSbWxVYW1KU1lVRk1WbVk0VDIweFJWRkhOV1VyUnpSQlVXOXVSREZFT0VaVVFsRjZiRmRFYmk5d1ZBbzJNRVp2Y3pKR1ZHdGpSV3RxVWtSNFNtUjRNWEZHVTFaTk5YWTVjeTlCY3pOVVRUVjZWVXMyWm1WVlExTmFVekZQVlVndlVrWnFSMjFTVm1SU2JWQXZDa2Q2Wkc5QmVGWnpSbTFqUW1kNU5tNUpTSEJFUm5vclptbHNVVEpoTUVodVlXbFBjMUJ6Tm1sUVFuQlNXR2RzTm14MWFHMVJiMHBtT0U1QlIzbElUVzBLUlVoSWQyc3hXRWxEUTFrNEwycHJUR2szWkc5clJEWjRNRk41VGxnM1JuWXZXbGhrVmtsTVJXWktlRk5vV0ZGdFdFRTlQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09CiAgICBjbGllbnQta2V5LWRhdGE6IExTMHRMUzFDUlVkSlRpQlNVMEVnVUZKSlZrRlVSU0JMUlZrdExTMHRMUXBOU1VsRmNFRkpRa0ZCUzBOQlVVVkJOMWRoUzJGd1RFSmtaazlsTURjcmVWUnVVV1JGUnpOT2VXeFFiV3RyWW10dlduTm9lRVJzVm5jcmJERlFOMEk1Q2xFMEswcFRTQzloZGl0eFVXRmhZalp5TURkRmVVUXJhMFpTTDNGdWVtbEZhRWRwU0U1WVoxSlZNVEJsWTA5R1JreFJNMnM1UWxRMlNGVkxhV1kzT0dFS2MzaElTREp5ZVhkWlQzRm5aSFZJVmprM1F6RlFjaTlrZVdacksycEZVMmRaTlVNM2J5c3JPWGd3YlVwWE1VbFRabmxuUlM5a1RIWjZibGhJTlhSdVZBcEJMM2Q1V25KQlpGbHZVbGhRT0VRMU56Rk1PVm92VUZOSk4wZHRjazg0TkZONGQyNXdlR1YwV0ZkSE15OUhTbUZZWjJkQlduTjNjVFV4TnpNNVNWZHhDa3BWZGpGclZubGlVMGxTZWxWdlpGbHNWalJqTWlzNGIxTlNWMVJsWkZjeGFVcHdZbU5rVmpKdE9DOVVZamxpVEdGbFdGWllhMXBEYjBWbmIxbHNObEFLUTFKS1RVNHdOSHBxSzFnNVQzRkxjbFpKUlhWSk0yTmlNbU53VDNvdlZDdHpZMVprU0hkSlJFRlJRVUpCYjBsQ1FVRndjRXB6VkVweWMxa3pZWE15Y1FwaFJ6RmpWbXBJTUZCelVWTnlaR1paVjBGd2JWQlVURmgxVGxWbmJHTXlNMDVoWTFNd2JHaHNhM1puTjJ4NE1uRXZkVGxXUzNablJrbHVUSGwwVmpGTENrbDZWMVJTSzNGdFZ6QjNiV3d3Ulc0dk9YRmlPREpDYnpCNFkxcGFkbkp1VEVseFVubDNkbWx1YmtkQ2JVbDJaVVl6TkVoT09IVkxjVzVXUkVGMVZYWUtNVlZFU1dob1NVbFlNMEYyTXpKQmNqRjZabEZVTTJVMlIydzBXbGx2TUVWMFpHcEZMekZrYVRablMybGpTMDlJTVVaUmJHRlRaa1owWkc1TGMwZFVTUXBhVm1sMGVsQkZPR0pOV0RNeE5VWlBWelZXTml0amMzUXphVVpSU3pGWVFscHNWVXgwU25FMloxSTRPU3RvTVVrMFIzZFpVRWhoV2k5VVZuRjRLMWxYQ2pWNGJtbFNWMnBhTm1nMFlUbG5OMlIzTjNaUmMwNVpTME4yUzJ3elJYTnVObkptTlZsSU5YQnRSMk5aUkRsa1FsSnlLMHRJT0dnNVkxaG5OalExVFZRS1oyNXJlVFpUUlVObldVVkJLMmRrVlZkMlVFUnpVVTlhWm5CTVdVSnJZMUJpYXpONE4yNVNXa0pVUjJWUmN5dEhNVUpQV2pWT1NWUnFZVWxUVVhoTVZBcGpNa2xoTlc1cVRtOTNRMVExYm5aTllrRlNUSEpOYnpCVWVtOW1UM0F5VUhGTWVIaFNVVFpUVHpKM1FtZHdjek0wYlZaNFFuTmFOVmxtV21jNE0yaHRDa2xCVjNWcWFHSXJORFJMVXk5dFEyNDBXR2g0V2tKMU56SjRlRGQzT0RCV1prNDVOVWh2VGpaaE5TODFiM1E0ZW5CclNWVTJZbXREWjFsRlFUaDRTVUVLTWxkRlIySTBiVFZWZGxoQ2QydGlZamxTYWtSSGFqbHlVa3hUSzJ0NE9GUkRLeTgwUkZJemRtUlVWa3B1YmpneGRqWkRjVUZRYldGd2NESTFkWFZZWkFwRGRsaHBkbWxQZVUxd2NVRk1aV1pWWTBsVFlVbGtXbTlvV21OU1IxTndRMHB1UkdvMmJWTkZVVmx0TlZVMWJTODFSeTlDTHpWcU5HbHlUakZsZVdKMENtcDRlRE5wVGtWWk9VSmtlVE56SzJOeWFEUkZXVlpqZUdKSk4zZFBTelZxU2xKRU5FTmFZME5uV1VKNmRWRkxPVWRuWjJkSVVHUnNWWGhtZWxJNU5rZ0taMnRKVVhsUU9FOHpWbXhRZFZCbVFtNTBWR2w1UzNwUFMwRTFiSGgzWm1oYWNUTnRjMFpGVms5aldUWnliQzhyVDNKeEx6TmtURFpRU0N0S2VFeFdhUXBPZERSRFVsY3dMMWhaTUZKWk1FRndXa05ST1VzME1uY3pjbFZsTWpCSlFsaHFMMlJsYURBNVRtZHNUUzlZVjFkalVWZHBabEZsYTNOWWJFUk9aQzlXQ2t4VFdFWkVjblZTY0hKcFNGQjFSMHdyVW1aMU1sRkxRbWRSUkhWV1dWUkliMHc0ZVhSd1VXdHhRbmR2V214d1pWcE1NVXBETURSbGRrTnllRVIwVFdFS1RGWXpTRmh6WW1jMGFrMW9WMmhLVm5CNUswdGlWRkZoYTNsVUswRlZNVkExWmtaRFFuSlpMM05CV20wdlNqTjBRbVJuY25aYVVWaERVakJYTURkNWR3b3ZTbWM1ZUM5c01sZGFhVU5TU1hSSVltUXlSM2hZVGs5aVRrTlJlRWxpUTJkSFRXdHZRVWxpZEV4S1NtcHpRazloWkdoYWNXRnJiMnBMT0RKd1MyUkxDbEJQTURSWFVVdENaMUZETW1adlpVcFJObVZEYzA4ekwzWldkVE5TWWpaT1Jpc3lSRXhvY2psamJuSldZVkJQYm5kcFYyaElVa3BUWWtnMmNpdEJWemdLWkd3MGVYTldSakpqTVcxaFoxZG5WM2R0U3pkVFowUlNhbEV5Vnk4d2RUUlJaMVppVVRaQ1kzRjROVlJuZURkdVkzZzRiMjFtT1ZwUmNVUlBUM3B4VFFwc1YyNHZUR3RTWmtkeVREZzJjV1ZLVG1rMGRYVkpUVUkyVW13d1ZuUXdhSHB1SzFsR05XczJlREJUVmt4M1pTdENRbEZKVVZFOVBRb3RMUzB0TFVWT1JDQlNVMEVnVUZKSlZrRlVSU0JMUlZrdExTMHRMUW89Cg== +kind: Secret +metadata: + creationTimestamp: null + name: kubeconfig + namespace: django diff --git a/module.tf b/module.tf index c582bbe..24e90a4 100644 --- a/module.tf +++ b/module.tf @@ -15,6 +15,7 @@ variable "kubernetes" { name = string pvc = optional(bool, false) config_map = optional(bool, false) + secret = optional(bool, false) host_path = optional(string) pvc_size = optional(string) storage_class_name = optional(string, "nfs-storage-intelligent") @@ -463,6 +464,12 @@ resource "kubernetes_deployment_v1" "automatic" { } } + dynamic "secret" { + for_each = volume.value.secret != null ? [1] : [] + content { + secret_name = volume.value.secret + } + } } } diff --git a/variables.auto.tfvars b/variables.auto.tfvars index ab1496d..0730071 100644 --- a/variables.auto.tfvars +++ b/variables.auto.tfvars @@ -1127,10 +1127,9 @@ kubernetes = { image = "alexfozor/flaresolverr:pr-1300-experimental" connected_namespace = "servarr" - enabled = false - image = "ghcr.io/flaresolverr/flaresolverr:latest" - connected_namespace = "tservarr" - service_port = [8191] + #enabled = false + image = "ghcr.io/flaresolverr/flaresolverr:latest" + service_port = [8191] environment = { PUID = { @@ -1273,8 +1272,8 @@ kubernetes = { } immicht = { - enabled = false - replicas = 01 + enabled = false + #replicas = 0 namespace = "immicht" image = "ghcr.io/immich-app/immich-server:v1.134.0" service_port = [2283] @@ -1362,7 +1361,7 @@ kubernetes = { } } - IMMICH_MACHINE_LEARNING_URL = { value = "http://machinelearning-svc:3003" } + IMMICH_MACHINE_LEARNING_URL = { value = "http://machinelearning-svc:3003" } REDIS_HOSTNAME = { value = "immicht-redis-svc" } UPLOAD_LOCATION = { value = "/tmp" } POSTGRESQL_ENABLE_LDAP = { value = "no" } @@ -1373,7 +1372,13 @@ kubernetes = { POSTGRESQL_PGAUDIT_LOG_CATALOG = { value = "off" } POSTGRESQL_CLIENT_MIN_MESSAGES = { value = "error" } POSTGRESQL_SHARED_PRELOAD_LIBRARIES = { value = "pgaudit" } - POSTGRES_INITDB_ARGS = { value = "--data-checksums" } + POSTGRES_INITDB_ARGS = { value = "--data-checksums" } + + BITNAMI_DEBUG = { value = "false" } + REDIS_REPLICATION_MODE = { value = "master" } + ALLOW_EMPTY_PASSWORD = { value = "yes" } + REDIS_TLS_ENABLED = { value = "no" } + REDIS_PORT = { value = "6379" } } pvc = { @@ -1387,7 +1392,8 @@ kubernetes = { } } machinelearning = { - enabled = false + enabled = false + #replicas = 0 connected_namespace = "immicht" image = "ghcr.io/immich-app/immich-machine-learning:v1.134.0" service_port = [3003] @@ -1441,6 +1447,78 @@ kubernetes = { } + django = { + #enabled =false + namespace = "django" + image = "gitea.tryton.geeraert.eu/pi-ux-ce/django-python:latest" + service_port = [8000] + database = { + image = "docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0" + } + requirements = { + limits-cpu = "800m" + limits-memory = "800Mi" + requests-cpu = "10m" + requests-memory = "300Mi" + } + extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/django/kubeconfig.secret.yaml", "/opt/kubernetes/Terraform_kube/external_manifests/django/django-db.secret.yaml"] + + environment = { + + DB_PASSWORD = { + value_from = { + secret_key_ref = { + name = "django-db-credentials" + key = "DB_PASSWORD" + } + } + } + POSTGRES_DB = { + value_from = { + secret_key_ref = { + name = "django-db-credentials" + key = "DB_DATABASE_NAME" + } + } + } + POSTGRES_USER = { + value_from = { + secret_key_ref = { + name = "django-db-credentials" + key = "DB_USERNAME" + } + } + } + POSTGRES_PASSWORD = { + value_from = { + secret_key_ref = { + name = "django-db-credentials" + key = "DB_PASSWORD" + } + } + } + + + DB_HOSTNAME = { + value_from = { + secret_key_ref = { + name = "django-db-credentials" + key = "DB_HOST" + } + } + } + + + } + pvc = { + kubeconfig-secret = { + secret = true + name = "kubeconfig-secret" + mount_path = "/kubeconfig" + } + + } + } }