Celestino Rey 6 maanden geleden
bovenliggende
commit
5afe7dab00
2 gewijzigde bestanden met toevoegingen van 63 en 18 verwijderingen
  1. 0 18
      Jenkinsfile
  2. 63 0
      SCHEMAS.md

+ 0 - 18
Jenkinsfile

@@ -38,11 +38,9 @@ pipeline {
           sh """#!/bin/bash
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/pvc-${NOMBRE_APP}.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/pvc-static.yaml
-            sed -i 's|<NS>|"${NAMESPACE}"|' K8S/pvc-postgresql.yaml
 
             kubectl create -f K8S/pvc-${NOMBRE_APP}.yaml
             kubectl create -f K8S/pvc-static.yaml
-            kubectl create -f K8S/pvc-postgresql.yaml
             """
           }
         }
@@ -60,13 +58,11 @@ pipeline {
           sh """#!/bin/bash
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/pvc-${NOMBRE_APP}.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/pvc-static.yaml
-            sed -i 's|<NS>|"${NAMESPACE}"|' K8S/pvc-postgresql.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/patchPVC.sh
 
             sh K8S/patchPVC.sh||true
             kubectl delete -f K8S/pvc-${NOMBRE_APP}.yaml
             kubectl delete -f K8S/pvc-static.yaml
-            kubectl delete -f K8S/pvc-postgresql.yaml
             """
           }
         }
@@ -82,23 +78,16 @@ pipeline {
         container('kubectl') {
           withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {
           sh """#!/bin/bash
-            sed -i 's|<NS>|"${NAMESPACE}"|' K8S/db-deployment.yaml
-            sed -i 's|<NS>|"${NAMESPACE}"|' K8S/db-service.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/${NOMBRE_APP}-deployment.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/${NOMBRE_APP}-ingress.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/reg-secret.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/env-prod-configmap.yaml
-            sed -i 's|<NS>|"${NAMESPACE}"|' K8S/env-prod-db-configmap.yaml
-
-            kubectl delete -f K8S/db-deployment.yaml||true
-            kubectl delete -f K8S/db-service.yaml||true
 
             kubectl delete -f K8S/${NOMBRE_APP}-deployment.yaml||true
             kubectl delete -f K8S/${NOMBRE_APP}-ingress.yaml||true
 
             kubectl delete -f K8S/reg-secret.yaml||true
             kubectl delete -f K8S/env-prod-configmap.yaml||true 
-            kubectl delete -f K8S/env-prod-db-configmap.yaml||true 
           """
           }
         }
@@ -168,20 +157,13 @@ pipeline {
         container('kubectl') {
           withCredentials([file(credentialsId: env.Destino, variable: 'KUBECONFIG')]) {           
           sh """#!/bin/bash
-            sed -i 's|<NS>|"${NAMESPACE}"|' K8S/db-deployment.yaml
-            sed -i 's|<NS>|"${NAMESPACE}"|' K8S/db-service.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/${NOMBRE_APP}-deployment.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/${NOMBRE_APP}-ingress.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/reg-secret.yaml
             sed -i 's|<NS>|"${NAMESPACE}"|' K8S/env-prod-configmap.yaml
-            sed -i 's|<NS>|"${NAMESPACE}"|' K8S/env-prod-db-configmap.yaml
 
             kubectl create -f K8S/reg-secret.yaml||true
             kubectl apply -f K8S/env-prod-configmap.yaml
-            kubectl create -f K8S/env-prod-db-configmap.yaml||true
-
-            kubectl create -f K8S/db-deployment.yaml||true
-            kubectl create -f K8S/db-service.yaml||true
 
             sed -i "s/<TAG>/${BUILD_NUMBER}/" K8S/${NOMBRE_APP}-deployment.yaml
             kubectl apply -f K8S/${NOMBRE_APP}-deployment.yaml

+ 63 - 0
SCHEMAS.md

@@ -0,0 +1,63 @@
+## Implementación SIMPLE (sin librerías externas)
+
+### Crear schemas
+    CREATE SCHEMA proyecto_a;
+    CREATE SCHEMA proyecto_b;
+
+### Configurar search_path por proyecto
+
+En cada proyecto Django, su ```settings.py```:
+
+    DATABASES = {
+        "default": {
+            "ENGINE": "django.db.backends.postgresql",
+            "NAME": "miservicio_db",
+            "USER": "dbuser",
+            "PASSWORD": "secret",
+            "HOST": "localhost",
+            "PORT": 5432,
+            "OPTIONS": {
+                "options": "-c search_path=proyecto_a,public"
+            }
+        }
+    }
+
+En el otro proyecto:
+    "options": "-c search_path=proyecto_b,public"
+
+### Migrar normalmente
+    python manage.py migrate
+
+Django creará automáticamente:
+    
+    proyecto_a.django_migrations
+    proyecto_a.auth_user
+    proyecto_a.miapp_modelo
+    
+- Sin prefijos
+- Sin routers
+- Sin hacks
+- 100 % soportado
+
+### Este detalle es CLAVE
+
+Cada proyecto tendrá sus propias:
+
+- django_migrations
+- auth_*
+- contenttypes
+- sessions
+- admin
+
+NO compartas estas tablas entre proyectos.
+Eso es pedir corrupción de datos.
+
+## Comandos para gestionar schemas
+
+To display schemas:
+
+    \dn - list of schemas
+
+To change schema, you can try:
+
+    SET search_path TO