Uso de Bridge to Kubernetes con AKS
Nota
Bridge to Kubernetes se retirará el 30 de abril de 2025. Para obtener más información sobre el retiro y las alternativas de código abierto, consulte el problema de GitHub .
En este tutorial, usará una aplicación web de microservicios de ejemplo de AKS específica para aprender a usar Bridge to Kubernetes para depurar localmente en un único pod que forma parte de un clúster de Azure Kubernetes Service (AKS).
Antes de empezar
En esta guía se usa la aplicación de ejemplo Todo App para demostrar cómo conectar el equipo de desarrollo a un clúster de Kubernetes que se ejecuta en AKS. Si ya tiene su propia aplicación que se ejecuta en un clúster de Kubernetes, consulte Desarrollo con Kubernetes. Si usa otro clúster, como MiniKube que se ejecuta localmente, consulte Uso de Bridge to Kubernetes con un ejemplo.
Prerrequisitos
- Una suscripción de Azure. Si no tiene una suscripción de Azure, puede crear una cuenta gratuita .
- CLI de Azure instalada.
- Visual Studio Code que se ejecuta en macOS, Windows 10 o Linux.
- La extensión Bridge to Kubernetes instalada en Visual Studio Code.
Creación de un clúster de Kubernetes
Cree un clúster de AKS en una región admitida. Los comandos siguientes crean un grupo de recursos denominado MyResourceGroup
y un clúster de AKS denominado MyAKS
.
az group create \
--name MyResourceGroup \
--location eastus
az aks create \
--resource-group MyResourceGroup \
--name MyAKS \
--location eastus \
--node-count 3 \
--generate-ssh-keys
Instalación de la aplicación de ejemplo
Descarga del código e instalación de dependencias
git clone https://github.com/hsubramanianaks/b2k-samples
cd b2k-samples/todo-app
npm install stats-api\
Conexión al clúster e implementación de la aplicación
En el equipo de desarrollo, descargue y configure la CLI de Kubernetes para conectarse al clúster de Kubernetes mediante az aks get-credentials
.
az aks get-credentials --resource-group MyResourceGroup --name MyAKS
kubectl create namespace todo-app
kubectl config set-context --current --namespace=todo-app
kubectl apply -f deployment.yaml --namespace todo-app
Prueba de la aplicación
En el mismo terminal que estaba usando anteriormente, ejecute el siguiente comando y copie la dirección IP para el servicio front-end en la columna DIRECCIÓN IP externa.
kubectl get services
Para probar la aplicación, abra la dirección URL: {your external IP from above command goes here}.nip.io
Depurar el servicio stats-api
En el mismo terminal que estaba usando anteriormente, escriba el siguiente comando para abrir stats-api en VS Code.
code ./stats-api
En primer lugar, coloque un punto de interrupción en la línea 17 de server.js
.
A continuación, asegúrese de que el espacio de nombres todo-app
en el clúster de MyAKS
esté establecido como predeterminado (si tiene * junto a él). Si no está establecido como predeterminado, haga clic con el botón derecho en el nodo todo-app y elija Usar espacio de nombres.
A continuación, configure bridge: 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
.
Importante
Solo puede redirigir los servicios que tienen un único pod.
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 ejecutar en modo aislado o no aislado. 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, se continúa en modo no aislado. Si eligió el aislamiento, task.json tiene el prefijo que debe usar para enrutar la solicitud a la máquina.
Nota
En los inicios posteriores, simplemente hará clic en el icono de depuración sin pasar por esta configuración y se le pedirá el nombre del servicio, el puerto, la tarea de inicio o si se va a ejecutar aislado. Estos valores se guardan en .vscode/tasks.json
. Para cambiar estas opciones más adelante, abra la paleta de comandos (CTRL+MAYÚS+P o Cmd+Mayús+P en un equipo Mac) y ejecute el comando Bridge to Kubernetes: Configure.
El perfil de depuración de Bridge to Kubernetes se ha configurado correctamente.
Para iniciar la depuración, seleccione el icono Depurar de la izquierda y seleccione Ejecutar script: desarrollo con Kubernetes. Haga clic en el botón Inicio situado junto a Run Script: dev with Kubernetes (Ejecutar script: dev con Kubernetes).
Nota
Se le pedirá que permita que EndpointManager se ejecute con privilegios elevados y modifique el archivo de hosts.
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 frontal de la aplicación a través de la dirección IP externa que encontró anteriormente, {your external IP from get services command}.nip.io
. Tenga en cuenta que si seleccionó el modo de aislamiento, debe usar {your prefix - can be found in task.json}.{your external IP from get services command}.nip.io
.
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.
Limpieza
Al detener el depurador, se revierten todos los cambios en el clúster. Tenga en cuenta que, si se estaba ejecutando con aislamiento, el pod del administrador de enrutamiento se dejará allí para acelerar el inicio del depurador la próxima vez.
Puede dejar el clúster de AKS activo para la depuración futura o puede eliminarlo usando el siguiente comando.
az aks delete --name MyAKS --resource-group MyResourceGroup
Pasos siguientes
Obtenga más información sobre Bridge to Kubernetes en Cómo funciona Bridge to Kubernetes.