Autor: Jon García Beaskoetxea
El objetivo principal de este trabajo era poner en práctica los conocimientos teóricos adquiridos durante la asignatura sobre técnicas de gestión y orquestración de contenedores.
En este documento se busca dar instrucciones a comandos relevantes dentro del trabajo. Se recomienda también revisar la documentación, ya que esta contiene puntualizaciones relevantes.
NOTA: es posible que los comandos necesiten ser ejecutados con privilegios, esto se consigue añadiendo sudo al inicio de ellos.
Estando en el mismo directorio que el fichero Dockerfile se ejecuta el siguiente comando (importante el '.' al final):
docker build .
Alternativamente se puede crear la imagen especificando un nombre.
docker build . -t "<nombre-imagen>"
Se suele recomendar agregar el usuario al inicio, separado de una '/' con el nombre de la imagen. Esto es útil para poder subir la imagen a Docker Hub:
docker build . -t "<usuario-docker-hub>/<nombre-imagen>"
Se crea un repositorio en Docker Hub con el mismo nombre que la imagen.
Si no se ha seguido la recomendación del apartado anterior sobre llamar a la imagen con el usuario y el nombre de la imagen, se puede cambiar el nombre de la imagen con:
docker tag <nombre-imagen>:<tag> <nombre-repositorio>:<tag>
Por último se sube la imagen con:
docker push <nombre-repositorio>:<tag>
Estando en el mismo directorio que el fichero docker-compose.yml se ejecuta el siguiente comando:
docker compose up
Como se indica en la documentación, se puede emplear el parámetro -d para ejecutarlo en segundo plano, pero ver el texto de salida en primer plano es de gran utilidad para ver el estado del script.
Una vez se ha lanzado el Docker Compose y este ha empezado a crear los contenedores, se puede acceder al contenedor de OrientDB para ver los resultados.
Para ser precavidos, conviene esperar a que termine de ejecutarse el script app.py del contenedor del cliente, esto se puede ver en los mensajes de la terminal que crea el cliente.
Los pasos son los siguientes:
- Abrir otra terminal y ejecutar el siguiente comando para ver los contenedores en ejecución actualmente:
docker ps
-
Fijarse en el contenedor que corresponde al servicio de OrientDB, y copiar su ID de contenedor.
-
Para abrir una terminal dentro del contenedor, ejecutar lo siguiente sustituyendo ID por el ID del contenedor obtenido anteriormente:
docker exec -it <ID> /bin/sh
- Para abrir la consola de OrientDB, ejecutar:
./bin/console.sh
- Conectarse a la base de datos con:
CONNECT remote:localhost root root_passwd
- Ejecutar lo siguiente para ver si se ha podido acceder correctamente:
LIST DATABASES
Si en la salida se ve 'pythonDB' se ha accedido correctamente. Si menciona que faltan permisos, algo ha salido mal :/
- Conectarse a la base de datos que crea el cliente Python:
CONNECT remote:localhost/pythonDB root root_passwd
- En este punto se puede probar a listar la clase que ha introducido el cliente, y ver si es correcto:
SELECT * FROM miClase
Si la salida es lo siguiente, ha ido todo bien:
+----+-----+-------+-----------+--------+
|# |@RID |@CLASS |version |item |
+----+-----+-------+-----------+--------+
|0 |#11:0|miClase|3.0 |OrientDB|
|1 |#11:1|miClase|1.5.1 |pyorient|
|2 |#11:2|miClase|3.11-alpine|python |
+----+-----+-------+-----------+--------+
También se puede probar a ir a localhost o la dirección de la máquina y el puerto 80 y ver si la página web está disponible.
Para terminar la ejecución del despliegue de Docker Compose, en caso de haberlo iniciado con el parámetro -d, el comando es:
docker compose down
Alternativamente si se ha seguido el consejo de no ejecutar en segundo plano, vale con pulsar la combinación de teclas 'Ctrl + C' en el terminal, y este hará que todos los contenedores se detengan.
Para el despliegue en Kubernetes, se describen los comandos a ejecutar.
Estando en el mismo directorio que los ficheros YAML (.yml), se recomienda que el orden de los objetos sea:
- ClusterIP:
kubectl apply -f orientdb-cluster-ip-service.yml
- PersistentVolume:
kubectl apply -f volumen-persistente.yml
- PersistentVolumeClaim:
kubectl apply -f reclamacion.yml
- Deployment de OrientDB:
kubectl apply -f deployment-orientdb.yml
- Deployment de Cliente:
kubectl apply -f deployment-cliente.yml
Al destruir los objetos creados en el despliegue se puede seguir cualquier orden. Sin embargo, se recomienda seguir el orden inverso al del creación.
En los comandos solo cambia que en lugar de apply es delete, el resto queda igual.
Por ejemplo, el primer comando sería:
kubectl delete -f deployment-cliente.yml