You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
creylopez 83fbc41a9d Añado el nombre de la storageClass 9 months ago
Yamls Según lo cree en code.siemens.com 9 months ago
nginx Según lo cree en code.siemens.com 9 months ago
src Según lo cree en code.siemens.com 9 months ago
.dockerignore Según lo cree en code.siemens.com 9 months ago
Dockerfile Según lo cree en code.siemens.com 9 months ago
README.md Añado el nombre de la storageClass 9 months ago
borraDB.sh Según lo cree en code.siemens.com 9 months ago
creaDB.sh Según lo cree en code.siemens.com 9 months ago
entra.sh Según lo cree en code.siemens.com 9 months ago
entrypoint.sh Según lo cree en code.siemens.com 9 months ago

README.md

Versión para openshift

Instalación

Crear un proyecto.

Running Commands as Root in OpenShift

oc adm policy add-scc-to-user anyuid -z default

app riesgos

A continuación añadir una app desde Agregar, importar desde git.

oc new-app https://code.siemens.com/celestino.rey/riesgos.git -e DEBUG="False" -e VERSION=11.0 --name='riesgos'

Tal y como está la estructura de directorios, deberia detectar automáticamente una compilación Python

asignación de los volúmenes

Si la pvc no está creada

oc set volume deployment.apps/riesgos --add -t pvc --claim-size=300M --name=riesgos-riesgos-migrations --claim-name='riesgos-riesgos-migrations' --claim-class='lvms-vg1' --mount-path='/app/riesgos/migrations'

oc set volume deployment.apps/riesgos --add -t pvc --claim-size=300M --name=riesgos-media --claim-name='riesgos-media' --claim-class='lvms-vg1' --mount-path='/app/mediafiles'

oc set volume deployment.apps/riesgos --add -t pvc --claim-size=300M --name=riesgos-gestion-migrations --claim-name='riesgos-gestion-migrations' --claim-class='lvms-vg1' --mount-path='/app/gestion/migrations'

oc set volume deployment.apps/riesgos --add -t pvc --claim-size=300M --name=riesgos-usuarios-migrations --claim-name='riesgos-usuarios-migrations' --claim-class='lvms-vg1' --mount-path='/app/riesgos/migrations'

oc set volume deployment.apps/riesgos --add -t pvc --claim-size=50G --name=static-volume --claim-name='static-volume' --claim-class='lvms-vg1' --mount-path='/app/staticfiles'

Si la pvc ya está creada

oc set volume deployment.apps/riesgos --add -t pvc --name=riesgos-riesgos-migrations --claim-name='riesgos-riesgos-migrations' --mount-path='/app/riesgos/migrations'

oc set volume deployment.apps/riesgos --add -t pvc --name=riesgos-media --claim-name='riesgos-media' --mount-path='/app/mediafiles'

oc set volume deployment.apps/riesgos --add -t pvc --name=riesgos-gestion-migrations --claim-name='riesgos-gestion-migrations' --mount-path='/app/gestion/migrations'

oc set volume deployment.apps/riesgos --add -t pvc --name=riesgos-usuarios-migrations --claim-name='riesgos-usuarios-migrations' --mount-path='/app/usuarios/migrations'

oc set volume deployment.apps/riesgos --add -t pvc --name=static-volume --claim-name='static-volume' --mount-path='/app/staticfiles'

Exponer el servicio

oc expose service/riesgos

postgresql

Se hace desde el yaml

oc create -f postgresql-deployment.yaml

python manage.py createsuperuser

python manage.py makemigrations

python manage.py migrate

Comprobar la base de datos

Con la shell entraPsql.sh:

\l para listar las BD

\c riesgos para usar nuestra db \dt para ver las tablas

De dónde cogí ideas

https://learndjango.com/tutorials/django-login-and-logout-tutorial

Username: {{ user.username }}

User Full name: {{ user.get_full_name }}

User Group: {{ user.groups.all.0 }}

Email: {{ user.email }}

Session Started at: {{ user.last_login }}

Para funcionar con gunicorn y nginx

https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/

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.

code.siemens.com

Estructura del proyecto

La estructura del proyecto es la siguiente:

├── K8S
└── riesgos
    ├── accounts
    ├── gestion
    │   └── static
    ├── mediafiles
    │   └── profile_images
    ├── riesgos
    │   └── templatetags
    ├── templates
    │   ├── admin
    │   ├── gestion
    │   └── registration
    └── usuarios
        └── migrations

El nombre del proyecto es 'riesgos'.

El nombre de la app es 'gestion'.

La estructura esta diseñada para añadir mas apps, si fuese necesario.

Dentro del directorio del proyecto, 'riesgos', estan los directorios de:

riesgos: comunes al proyecto
    urls.py:        las url del proyecto
    settings.py:    configuracion del proyecto
    templatetags:   tags personalizados para usar en las templates de html. Aqui esta un tag para obtener varialbes de entorno desde una template

accounts: Tiene las url a las paginas de registro personalizadas

gestion: contiene los ficheros de la app propiamente dichos:
    views.py:   el backend con la logica
    urls.py:    las url de la app
    models.py:  el modelo de la base de datos
    forms.py:   los formularios de entrada de datos

templates:  los html del frontend de la app, organizado en directorios con el nombre de cada app

usuarios:   modelo y formularios personalizados para la tabla de usuarios.

Ademas, hay una shell llamada 'entornoPruebas.sh' que establece ciertas variables cuando se lanza la app con runserver, sin kubernetes.

Instalación

el directorio K8S

Contenido

Dentro del directorio se encuentra todo lo necesario para crear las imagenes y lanzar los deployments.

El Makefile principal tiene los siguientes comandos:

imagen: Crea la imagen de la app. Lo hace invocando a otro Makefile que esta en el directorio principal.

        Las variables de entorno definidas al principio del fichero se usan para poner los tags a las imagenes.

install: Crea los deployments, los volumenes, los claims y los servicios. Los deployment de la app y de nginx se invocan a traves de envsubst que lo que hace es sustituir las referencias a las variables definidas en el Makefile.

clean:  Borra los deployment, los volumenes, los claims y los servicios.

nginx:  Creaba la imagen de nginx. Al subirlo a code.siemens.com, no he encontrado la manera de generar una imagen con un nombre diferente al del proyecto, por lo que he tenido que crear un proyecto nuevo para nginx.

backup: Crea un fichero sql con un backup de la base de datos.

Hay otro Makefile llamado Makefile.local que hace lo mismo pero usando el registry local, para probar. La variable de REGISTRY apunta a code.siemens.com o a localhost:5000

Funcionamiento

Desde el directorio K8S ejecutar make (esto hace todo: la imagen, para los pods y los lanza otra vez)

La primera vez que se ejecuta la aplicacion, hay que entrar en el pod de riesgos con 'entra.sh' y

python manage.py createsuperuser

python manage.py makemigrations # si dice que no hay cambios, añadir las apps una a una (usuarios y gestion)

python manage.py migrate

Comprobar la base de datos

Con la shell entraPsql.sh:

\l para listar las BD

\c riesgos para usar nuestra db
\dt para ver las tablas

De dónde cogí ideas

formularios de login y logout

https://learndjango.com/tutorials/django-login-and-logout-tutorial

Para funcionar con gunicorn y nginx

https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/

Cambiar la secuencia de los id

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.

Funcionamiento con registries

docker login <nombre-del-registry>

después de introducir las correspondientes credenciales

cat $HOME/.docker/config.json |base64 

el resultado se copia y se pega en el fichero reg-secret.yaml, en el apartado .dockerconfigjson. Todo en una línea y quitando los espacios que surgan de componer todo en una línea.