Uso de Bridge to Kubernetes con un ejemplo
Nota:
Microsoft tiene previsto dejar de mantener activamente el proyecto Puente a Kubernetes. En los próximos meses pasaremos a archivar el proyecto. Mientras tanto, el proyecto sigue disponible para su uso y descarga. Durante este período, esperamos explorar y recomendar proyectos de la comunidad que proporcionen beneficios similares a Puente a Kubernetes para su uso futuro. Si tiene alguna pregunta, póngase en contacto con nosotros en nuestro panel de problemas en GitHub.
En este ejemplo se muestra cómo se puede usar Bridge to Kubernetes para desarrollar una versión de microservicio de una aplicación TODO simple en cualquier clúster de Kubernetes. Este ejemplo, con Visual Studio Code, se ha adaptado a partir del código proporcionado por TodoMVC. En este ejemplo, usamos MiniKube para hospedar la aplicación, pero estos pasos funcionarán con cualquier clúster de Kubernetes.
El ejemplo de aplicación TODO se compone de un front-end y un back-end que proporciona almacenamiento persistente. Este ejemplo extendido agrega un componente de estadísticas y divide la aplicación en varios microservicios, en concreto:
- El front-end llama a la API de base de datos para conservar y actualizar los elementos de TODO.
- El servicio de API de base de datos se basa en una base de datos Mongo para conservar los elementos de TODO.
- El front-end escribe eventos de adición, finalización y eliminación en una cola RabbitMQ.
- Un trabajo de estadísticas recibe eventos de la cola RabbitMQ y actualiza una caché Redis.
- Una API de estadísticas expone las estadísticas almacenadas en caché para que las muestre el front-end.
En total, esta aplicación TODO extendida contiene seis componentes interrelacionados.
Prerrequisitos
- Cualquier clúster de Kubernetes o el administrador de paquetes Chocolatey para instalar MiniKube
- En Windows 10, Hyper-V
- Kubectl instalado y en la ruta de acceso en un entorno de línea de comandos de su elección
- La extensión de Visual Studio Code Bridge to Kubernetes
Instalación de Minikube
Puede usar cualquier proveedor de Kubernetes con Bridge to Kubernetes. En este artículo, se usa MiniKube. MiniKube es un proveedor ligero de Kubernetes que permite hospedar Kubernetes en la máquina local. Siga las instrucciones de instalación para instalar MiniKube en Windows 10, Linux o macOS.
Para obtener los mejores resultados en Windows 10, debe usar el administrador de máquinas virtuales de Hyper-V y crear un conmutador virtual.
Una vez instalado, inicie MiniKube, especifique que use Hyper-V y proporcione el nombre del conmutador virtual principal. Este comando debe ejecutarse desde un símbolo del sistema con privilegios de Administrador.
minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"
Implementación de la aplicación
Clone el repositorio Bridge to Kubernetes y abra una ventana de comandos con la carpeta de trabajo actual en todo-app.
Cree un espacio de nombres para el ejemplo.
kubectl create namespace todo-app
A continuación, aplique el manifiesto de implementación:
kubectl apply -n todo-app -f deployment.yaml
Se trata de una implementación sencilla que expone el front-end mediante un servicio de tipo LoadBalancer
. Espere a que se ejecuten todos los pods y a que la dirección IP externa del servicio frontend
esté disponible.
Si va a realizar pruebas con MiniKube, debe usar minikube tunnel
para resolver una dirección IP externa.
kubectl get services -n todo-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend LoadBalancer 10.0.49.177 127.0.0.1 80:30145/TCP 18h
Vaya a la aplicación mediante la dirección IP externa y el puerto local (el primer número de la columna de puertos).
http://{external-ip}:{local-port}
Pruebe la aplicación en ejecución en el explorador. Al agregar, completar y eliminar elementos de la aplicación TODO, tenga en cuenta que la página de estadísticas se actualiza con las métricas esperadas.
Depuración del servicio stats-api
Ahora puede usar la extensión Bridge to Kubernetes para mostrar cómo se puede redirigir el tráfico desde el clúster de Kubernetes a una versión en ejecución local de stats-api.
cd stats-api/
Abra el código fuente de stats-api en VS Code.
code .
Una vez iniciado VS Code, abra el panel de Kubernetes desde la barra lateral izquierda de VS Code y, a continuación, seleccione el espacio de nombres todo-app en el clúster de MiniKube. Haga clic con el botón derecho en el nodo todo-app y elija Use Namespace (Usar espacio de nombres).
Instale las dependencias mediante la ejecución de npm install
en una ventana de terminal (CTRL + ~).
npm install
A continuación, coloque un punto de interrupción en la línea 17 de server.js
.
Abra la paleta de comandos (CTRL+MAYÚS+P o Cmd+Mayús+P en un equipo Mac) y escriba Bridge to Kubernetes. Seleccione la opción Bridge to Kubernetes: Configure (Bridge to Kubernetes: Configurar).
Se le pedirá que configure el servicio que quiere reemplazar, el puerto al que va a reenviar desde el equipo de desarrollo y la tarea de inicio que se va a usar.
Elija el servicio stats-api
.
Después de seleccionar el servicio, se le pedirá que escriba el puerto TCP de la aplicación local. Para este ejemplo, escriba 3001.
Elija Run Script: dev (Ejecutar script: dev) como tarea de inicio.
Tiene la opción de ejecutar con aislamiento o sin. Si ejecuta con aislamiento, solo sus solicitudes se enrutan a su proceso local. Otros desarrolladores pueden usar el clúster sin verse afectados. Si no ejecuta con aislamiento, todo el tráfico se redirige al proceso local. Para más información sobre esta opción, vea Uso de funciones de enrutamiento para desarrollar de forma aislada. En este ejemplo, vamos a usar nonisolated.
Nota:
VS Code le pide que permita que el EndpointManager se ejecute con permisos elevados y modifique el archivo hosts.
El perfil de depuración de Bridge to Kubernetes se ha configurado correctamente.
Seleccione el icono Depurar de la izquierda y seleccione Run Script: dev with Kubernetes (Ejecutar script: dev con Kubernetes). Haga clic en el botón Inicio situado junto a Run Script: dev with Kubernetes (Ejecutar script: dev con Kubernetes).
El equipo de desarrollo está conectado cuando la barra de estado de VS Code se vuelve naranja y la extensión de Kubernetes muestra que está conectado. Una vez que el equipo de desarrollo está conectado, el tráfico comienza a redirigirse a ese equipo para el elemento stats-api que va a reemplazar.
Vaya al punto de entrada de front-end de todo-app. Para minikube, usaremos 127.0.0.1
. Para acceder a la dirección URL del punto de conexión local de la aplicación, abra el menú de Kubernetes en la barra de estado y elija la entrada del punto de conexión.
Realice una solicitud a stats-api eligiendo el vínculo stats.
Observe que el tráfico que se inició inicialmente en el clúster se redirige a la versión en ejecución local (fuera del clúster) donde se desencadenó el punto de interrupción.
Presione Reproducir y deje que la solicitud continúe hasta que se complete de forma transparente.
Este ejemplo es solo una muestra de cómo utilizar Bridge to Kubernetes en clústeres no AKS. Pruébelo en su propio proyecto a continuación.
Limpieza
Para limpiar los recursos generados por este ejemplo, ejecute:
kubectl delete namespace todo-app
Pasos siguientes
También puede implementar la aplicación en Azure Kubernetes Service (AKS) con Bridge to Kubernetes. Consulte Uso de Bridge to Kubernetes con AKS