Uso de Bridge to Kubernetes con un ejemplo
Nota
Bridge to Kubernetes se retirará el 30 de abril de 2025. Para obtener más información sobre las alternativas al retiro y al código abierto, consulte los problemas yen GitHub.
En este ejemplo se muestra cómo se puede usar Bridge to Kubernetes para desarrollar una versión basada en microservicios de una aplicación TODO sencilla en cualquier clúster de Kubernetes. Este ejemplo, con Visual Studio Code, se ha adaptado del código proporcionado por TodoMVC. En este ejemplo, se usa MiniKube para hospedar la aplicación, pero estos pasos deben funcionar 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 una serie de microservicios, en concreto:
- El front-end llama a la API de base de datos para conservar y actualizar los elementos de TODO.
- El servicio database-api se basa en una base de datos de Mongo para conservar elementos TODO;
- El front-end escribe eventos de adición, finalización y eliminación en una cola RabbitMQ;
- Un trabajador de estadísticas recibe eventos de la cola RabbitMQ y actualiza una caché de Redis;
- Una API de estadísticas expone las estadísticas almacenadas en caché para que se muestre el front-end.
En todo, esta aplicación de tareas pendientes extendida se compone de seis componentes relacionados entre sí.
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, usamos MiniKube. MiniKube es un proveedor ligero de Kubernetes que le permite hospedar Kubernetes en la máquina local. Siga las instrucciones de instalación de 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 para usar Hyper-V y proporcione el nombre del conmutador virtual principal. Este comando debe ejecutarse desde una ventana de comandos 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 todos los pods se ejecuten y que la dirección IP externa del servicio frontend
esté disponible.
Si está probando 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 tareas pendientes, observe 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 demostrar 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 ejecutando 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 (Puente de a Kubernetes: configuración de).
Se le pedirá que configure el servicio que desea reemplazar, el puerto para 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. En este ejemplo, escriba 3001.
Elija Run Script: dev (Ejecutar script: dev) como tarea de inicio.
Tiene la opción de funcionar de manera aislada o no aislada. 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 obtener más información sobre esta opción, consulte Uso de funcionalidades de enrutamiento para desarrollar de forma aislada. En este ejemplo, vamos a usar nonisolated.
de aislamiento
Nota
VS Code le pide que permita que EndpointManager se ejecute con privilegios elevados y modifique el archivo de 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.
Depuración de
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 redirigió 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 ilustración de cómo usar Bridge to Kubernetes en clústeres que no son de 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