Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia de Creacion de Microservicio en La Nube
Guia de Creacion de Microservicio en La Nube
Crear Microservicio
Preparación
Para este manual, se necesitaran las siguientes herramientas:
Creación de la aplicación
Cree una carpeta aparte donde guardar la aplicación. Puede ser un repositorio local (que se
explicará luego como hacerlo) o en una carpeta aparte si se desea.
En el visual studio code, cree una aplicación webapi mediante el terminal (es válido cualquier
aplicación, pero para este manual, veremos con un web API):
(Para ver el listado de las aplicaciones que se pueden crear, déjalo como dotnet new)
En ella, para agregar código con la cual el microservicio se comunicará, se debe de hacer desde
el controlador. Funciona lo mismo para los demás tipos de aplicaciones.
pág. 1
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Vamos a hacer algunos cambios para probar: cambiamos uno de los valores dentro de get y
añadimos otro campo donde se genere un número aleatorio (si quiere agrege otra cosa para
probar).
Ahora que se tiene el código fuente, para lanzarlo como microservicio, es indispensable tener
en la aplicación 2 archivos:
pág. 2
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Donde dice [Nombre de la aplicación] debes poner el nombre del proyecto que hayas puesto
tal y como está. De lo contrario, no funcionará la imagen.
En el archivo .yaml van las configuraciones necesarias para cuando se despliegue al kubernetes
pág. 3
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Azure Repos
Se asumirá aquí que ya tiene un proyecto de Azure DevOps para este proceso. Sino, debe de
crear uno.
Desde ahí elige la parte donde se muestra el nombre del repositorio para crear uno, ya sea
desde cero o importando uno.
pág. 4
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Github
En el github, seleccione el botón que dice “New Repository”.
pág. 5
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Pasar el código
Sea cual sea el sitio, ahora se debe de pasar el código al repositorio. Para ello, clonamos el
repositorio localmente con una dirección que se nos da.
(Nota: en el azure devops, la dirección que te dan es un poco diferente y no tiene .git al final,
pero funciona de la misma forma que en el github).
Si se clona el repositorio de Azure DevOps, te pedirá que ingreses con tu usuario y contraseña
de Azure DevOps (ya sea el normal o el que se crea en git credentials en el repositorio). Si es
desde el Github, no hay necesidad de un ingreso de Datos (solo ocurre si haces commit y no se
haya configurado la cuenta en primer lugar).
pág. 6
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Una vez hecha la clonación, se puede crear una aplicación desde ahí o pasar todo el código que
se creó en una carpeta aparte. Luego se hace un commit. Para ello, en el VSCode, vamos a la
pestaña de Control de código.
Seleccionamos el botón + para fijar los cambios. Eso si, antes ignoremos los archivos
temporales. En ese caso, se seleccionan los archivos temporales (normalmente están ubicadas
en las carpetas bin y obj), click derecho selecciona “Añadir a gitignore” (o Add a gitignore).
pág. 7
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Ahora se puede hacer el commit con normalidad. Escribe un nombre de commit (No debe
pasar de 50 caracteres) y pulsa el check para commitear.
pág. 8
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Si todo está bien, entonces se realizará el commit con normalidad y debería visualizarse en la
pestaña de commits, ya sea el de Azure DevOps o Github, dependiendo de donde hayas creado
y clonado el repositorio.
pág. 9
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Selecciona “+ Agregar” para crear un grupo de recursos nuevo. Vamos a crear uno Llamado
“Taller” y se encontrará Ubicada en el Este de EEUU 2.
Una vez llenados los campos, se habrá creado después de minutos el registro de contenedores
donde se almacenarán las imágenes de docker.
Para generar el usuario y contraseña del registro, vaya a la opción “Claves de accesso” del
registro de contenedor ya creado y habilite Usuario administrador (si es que no lo habilito)
pág. 11
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Esto es importante para la comunicación entre el registro y el cluster, que se verá en detalle
luego.
También desde ahí se puede ver el servidor de inicio de sección que nos servirá luego.
pág. 12
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
pág. 13
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
1. Suscripción
2. El grupo de recursos a la que pertenecerá
3. El nombre del cluster que le pondrá
4. La región en la que estará. Como las anteriores, es recomendable usar el de Este de
EEUU 2.
5. La versión de Kubernetes con la que trabajará (puede dejarlo tal como está)
6. El prefijo de nombre DNS (se genera conforme le des nombre al cluster. Es mejor no
cambiarlo a menos que sepas lo que haces).
7. El tamaño de los nodos con los que trabajará (de eso hablaremos de inmediato)
8. El número de nodos para el cluster. Se recomienda cambiar la cantidad de nodos a 1
puesto que, al menos en este caso, no necesitaremos de muchos recursos.
Nunca olvides cambiar el tamaño para que no cuente mucho al utilizar el recurso (eso va
también para todo los demás recursos que tengan distintos planes. Si existe un plan gratuito,
mejor).
En la pantalla, puesto que no existe un plan gratuito para Kubernetes, selecciona el tamaño
que menos cuesta de todas:
pág. 14
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Ahora movemos a la pestaña Autenticación y desde ahí deshabilita el RBAC: Control de acceso
basado en rol (Puede que lo necesites en algún Proyecto de la vida real, pero para este
manual, que no necesita de autenticación de usuario alguna, lo vamos a deshabilitar).
pág. 15
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Ahora pulse crear y espere hasta que se termine de implementar el cluster. Esto toma unos
minutos (el Portal le avisará cuando esté listo).
Crear Imagen
Para este manual, se hará todo el proceso mediante la nube en si. Si se desea hacerlo
localmente, se deben de instalar adicionalmente el azure cli y el kubectl para la ejecución de
los comandos que se verán a continuación. Se recomienda en el Cloud sheel (el CLI de Azure)
elegir bash.
Para pasar el código fuente al almacenamiento de la nube (que se crea la primera vez que se
utiliza el comando de Azure), se clona desde una carpeta aparte (si se desea) usando:
Luego:
pág. 16
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
(Recuerda: en el azure devops, la dirección que te dan es un poco diferente y no tiene .git al
final, pero funciona de la misma forma que en el github).
Como se mencionó antes, si se clona desde Azure DevOps, les pedirá usuario y contraseña para
poder hacer la clonación (en este caso, dichos campos se pueden configurar en las
credenciales git que se encuentran en el repositorio de Azure DevOps). Si es desde Github, no
necesita hacer ningún paso adicional.
Una vez hecho eso, pulsen el botón donde se muestran 2 llaves para ver las carpetas
disponibles. Entre ellas está la carpeta creada junto con el repositorio ya clonado.
az acr build –image [nombre de la imagen. Puede ser cualquier nombre, recuerda que las letras
deben de estar en minuscula] –registry [nombre del recursos de acr en la que se guardará la
imagen] [La dirección del dockerfile.]
pág. 17
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
az aks get-credentials –n [nombre del cluster] –g [nombre del grupo de recursos donde
pertenece].
Una vez se ejecute con éxito, verifica que haya contacto con el cluster. Ejecuta cualquier
comando del kubectl para verificar (ej: kubectl get nodes, kubectl get services, etc.). Si sale
error al momento de ejecutar alguno de los comandos, vuelve a exponer los credenciales con
el comando ya visto.
az aks install-cli
Crear secreto
Para mantener contacto entre el registro de contenedor y el cluster, debe de crearse un
secreto para ello. Para crearlo, ejecuta el siguiente comando:
pág. 18
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Para este manual, llamaremos el secreto “secretomanual”. Puede llamarlo como quiera
Una vez encontrado, verifiquemos que el nombre de la app (los campos name y app deben de
estar iguales, menos un campo name que se verá de inmediato, el resto puede estar tal como
pág. 19
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
se dejó) este como deberían estar (Para este taller, llamaremos “tallerapi” a nuestro
microservicio, se puede poner cualquier nombre) y cambiamos 2 campos:
kubectl apply –f [ubicación exacta del archivo yaml junto con el archivo mismo]
Si todo está en orden, verá mensajes señalando que todo fue creado con éxito.
pág. 20
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
En el campo donde dice external , espere al menos 1 minuto para que le dé un ip con el cual
acceder (si es que ejecuta el comando al momento de crearse el servicio. Sino, aparece normal
el IP externo).
Ingresar a la aplicación
Una vez hecho esto y pasado el minuto, hay 2 formas para acceder: desde el mismo azure cli
con la ip ya creada o desde un Panel donde se pueden ver todos los detalles del cluster.
Desde comando
Ejecute kubectl get services Como se mencionó antes y copie el IP externo del microservicio.
Normalmente si se trata de una aplicación normal como una web, ingresar solo el IP te
redirecciona a ese microservicio con normalidad, con todo y vista. Pero como es una web API,
se deben de agregar los siguientes parámetros.
[el ip del microservicio]/api/values (el nombre del controlador. Puede ser otro dependiendo de
como llames al controlador).
Desde Panel
Ve al cluster y busca la opción de Panel de Kubernetes.
pág. 21
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
pág. 22
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Nota: ignora la advertencia de que no funciona en Cloud Shell, puede ejecutar los comandos
que ves en pantalla con normalidad.
pág. 23
Autor: Alvaro Racchumi
Edición: Baneza
28/6/19
Baja más abajo hacia la parte de services y selecciona donde dice External endpoints
De nuevo, como es una aplicación web api, al momento de ingresar a la dirección señalada,
agrega los paramentros /api/values para ver el resultado. Si fuera cualquier otro microservicio,
ingresando a la IP es suficiente.
Y listo, ahora ya sabes cómo crear un Microservicio en el Kubernetes. Puede seguir probando
con otros tipos de aplicaciones.
pág. 24
Autor: Alvaro Racchumi
Edición: Baneza