Publicar en kubernetes aplicación asp.net core
En la entrada http://www.jcamweb.com/blog/aspnet/asp-net-core-web-api-compartido-en-windows-azure-api/ detallamos el interés y pasos de usar el Api Management de Windows Azure para tener una asp.net core api publicada en el cloud. Pero qué pasa si queremos olvidarnos de desarrollar para un sistema operativo / entorno concreto, ir comprobando que librerías deben estar instaladas para ejecutar nuestra aplicación, y tener servidores / escalabilidad de inmediato. La respuesta es publicar en kubernetes.
Puede decirse que kubernetes es de hecho el sistema operativo del cloud. Proporciona las herramientas necesarias para construir e implementar aplicaciones distribuidas fiables y escalables. En el artículo, usaremos la aplicación BasicCalculator en asp.net core y llevarla a kubernetes. Con esto conseguiremos que nuestra aplicación sea altamente fiable y disponible, es decir; no pueda fallar ni debería tener ningún tiempo de caida. También debe ser escalable, sin un rediseño radical del sistema existente. Kubernetes proporciona servicios relevantes para lograr todo esto para nuestra aplicación en Dockers. Los pasos serán, lleva la aplicación a gcp y usar console para compilar, crear imagen, docker, imagen y posteriormente crear un cluster kubernetes sobre el que desplegar la aplicación.
Desde el repositorio GitHub, clonamos el código, compilamos y publicamos la aplicación, con lo que tendremos la interfaz de la figura superior. Después de [dotnet publish -c Release]. Crearemos el fichero Dockerfile, y con [docker build -t gcr.io/${PROJECT_ID}/basiccalculator:v1 .] y [docker push gcr.io/${PROJECT_ID}/basiccalculator:v1] tendremos el contenedor en el repositorio, desde podremos usarlo para la instancia de cluster.
Así nos aparecerá en el menú kubernete. Usaremos:
kubectl run basiccalculator \
--image=gcr.io/${PROJECT_ID}/basiccalculator:v1 \
--port=8085
para tener la aplicación en un pod Kubernetes, un grupo de contenedores que se implementan juntos en el mismo host. Si, como en este caso, se despliega contenedores individuales, podemos reemplazar la palabra «pod» por «contenedor» y comprender con precisión el término. Para acceder externamente a nuestra aplicación, debemos hacerla disponible: [kubectl expose deployment basiccalculator –type=»LoadBalancer» –port=8085] y obtener la ip pública, «kubectl get services».
Asi veremos y accederemos desde su ip externa.