# Instalación ## Versión para kubernetes y Rancher ### Estructura de carpetas en K8S . ├── ConfigMaps │   ├── env-prod-configmap-local.yaml │   ├── env-prod-configmap.yaml │   └── env-prod-db-configmap.yaml ├── Deployments │   ├── db-deployment.yaml │   ├── nginx-deployment.yaml │   └── reymota-deployment.yaml ├── Makefile ├── namespace.yaml ├── PVC │   ├── postgres-data-persistentvolumeclaim.yaml │   ├── reymota-prod-persistentvolumeclaim.yaml │   └── static-volume-persistentvolumeclaim.yaml ├── reg-secret.yaml ├── Services │   ├── db-service.yaml │   ├── nginx-service.yaml │   ├── reymota-ingress.yaml │   └── reymota-service.yaml └── Shells ├── borraNS.sh ├── entraPsql.sh └── entra.sh ## Creación de Persistent Volume Claims En Rancher está instalado el operador **longhorn** que se encarga de crear los Persistent Volumes automáticamente cuando se crea una PVC La primera vez hay que crear las PVC. Si la aplicación cambia, no haría falta volver a crearlas, a no ser que los cambios afecten mucho a la estructura de las base de datos. kubectl create -f postgres-data-persistentvolumeclaim.yaml kubectl create -f reymota-prod-persistentvolumeclaim.yaml kubectl create -f static-volume-persistentvolumeclaim.yaml ## Despliegue de la aplicación make clean ; make install Si la aplicación hubiese cambiado y tuvieramos que crear una nueva imagen, entonces make esto hace todo: la imagen, para los pods y los lanza otra vez # Migraciones La primera vez, hay que entrar en el pod de vehículos con 'entra.sh', desde el directorio K8S/Shells y python manage.py makemigrations lyrics python manage.py makemigrations reymotausers python manage.py makemigrations repostajes python manage.py migrate ## Comprobar la base de datos Con la shell K8S/Shells/entraPsql.sh: \l para listar las BD \c reymota para usar nuestra db \dt para ver las tablas # Importar datos Si tenemos un fichero json con los datos de otra instalación, podemos importarlo. ## Descargar los datos Primero tendríamos que descargar los datos a través del api de la otra instalación. curl https://reymota.es/usuarios/api/usuarios/ > mediafiles/usuarios.json curl https://reymota.es/lyrics/api/artistas/ > mediafiles/artistas.json curl https://reymota.es/lyrics/api/albumes/ > mediafiles/albumes.json curl https://reymota.es/lyrics/api/canciones/ > mediafiles/canciones.json curl https://reymota.es/repostajes/api/vehiculos/ > mediafiles/vehiculos.json curl https://reymota.es/repostajes/api/repostajes/ > mediafiles/repostajes.json ## Importar los datos Es importante hacerlo en este orden ya que hay dependencias entre las tablas ./manage.py importar_usuarios mediafiles/usuarios.json ./manage.py importar_artistas mediafiles/artistas.json ./manage.py importar_albumes mediafiles/albumes.json ./manage.py importar_canciones mediafiles/canciones.json ./manage.py importar_vehiculos mediafiles/vehiculos.json ./manage.py importar_repostajes mediafiles/repostajes.json ## Copiar imágenes desde el host Ejemplo para copiar las portadas de los álbumes kubectl -n ranchermota cp /media/creylopez/vmcluster/reymota/media/cover_image/ reymota-b6f9c5bbf-mrvh6:/app/reymota/mediafiles ## Crear datos Si no tenemos datos y vamos a crear una instancia de cero, lo primero que hay que hacer es crear un superusuario ./manage.py createsuperuser A continuación, desde el interfaz web, se crean los datos. # Miscelánea ## Cambiar la secuencia de lo sid ALTER SEQUENCE tablename_id_seq RESTART WITH nn; esto se hace cuando restauro un volcado de la bd sobre una instalación nueva. Si hay índices ya creados, hay que reinciar a partir del último.