|
|
9 months ago | |
|---|---|---|
| Yamls | 9 months ago | |
| nginx | 9 months ago | |
| src | 9 months ago | |
| .dockerignore | 9 months ago | |
| Dockerfile | 9 months ago | |
| README.md | 9 months ago | |
| borraDB.sh | 9 months ago | |
| creaDB.sh | 9 months ago | |
| entra.sh | 9 months ago | |
| entrypoint.sh | 9 months ago | |
Crear un proyecto.
oc adm policy add-scc-to-user anyuid -z default
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
oc set volume deployment.apps/riesgos --add -t pvc --claim-size=300M --name=riesgos-riesgos-migrations --claim-name='riesgos-riesgos-migrations' --mount-path='/app/riesgos/migrations'
oc set volume deployment.apps/riesgos --add -t pvc --claim-size=300M --name=riesgos-media --claim-name='riesgos-media' --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' --mount-path='/app/gestion/migrations'
oc set volume deployment.apps/riesgos --add -t pvc --claim-size=300M --name=riesgos-riesgosusers-migrations --claim-name='riesgos-riesgosusers-migrations' --mount-path='/app/riesgosusers/migrations'
oc set volume deployment.apps/riesgos --add -t pvc --claim-size=50G --name=static-volume --claim-name='static-volume' --mount-path='/app/staticfiles'
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-riesgosusers-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'
oc expose service/riesgos
Se hace desde el yaml
oc create -f postgresql-deployment.yaml
python manage.py createsuperuser
python manage.py makemigrations
python manage.py migrate
Con la shell entraPsql.sh:
\l para listar las BD
\c riesgos para usar nuestra db \dt para ver las tablas
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 }}
https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/
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.
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.
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
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
Con la shell entraPsql.sh:
\l para listar las BD
\c riesgos para usar nuestra db
\dt para ver las tablas
https://learndjango.com/tutorials/django-login-and-logout-tutorial
https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/
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.
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.