Compartir a través de


Uso de bridge to Kubernetes con AKS

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 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 en ejecución en un clúster de Kubernetes, consulte Desarrollo con Kubernetes. Si usa otro clúster, como una instancia de MiniKube que se ejecuta localmente, consulte Uso de Bridge to Kubernetes con un ejemplo.

Requisitos previos

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

Instale la aplicación de ejemplo.

Descargue 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\

Conéctese al clúster e implemente 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

Pruebe la aplicación.

En el mismo terminal que ha usado antes, ejecute el comando siguiente y copie la dirección IP para el servicio de 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

Depure el servicio stats-api

En el mismo terminal que ha usado antes, escriba el siguiente comando para abrir stats-api en VS Code.

code ./stats-api

A continuación, 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 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.

Captura de pantalla que muestra el espacio de nombres Bridge to Kubernetes.

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 (Bridge to Kubernetes: Configurar).

Captura de pantalla que muestra la ventana de comandos de configuración de Bridge to Kubernetes.

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.

Captura de pantalla en la que se muestra la selección del servicio al que conectarse.

Importante

Solo puede redirigir servicios que tengan un único pod.

Después de seleccionar el servicio, se le pedirá que escriba el puerto TCP de la aplicación local. Para este ejemplo, escriba 3001.

Captura de pantalla que muestra la ventana escribir el número de puerto.

Elija Run Script: dev (Ejecutar script: dev) como tarea de inicio.

Captura de pantalla que muestra la ventana elegir la tarea iniciar el depurador.

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, se continúa en modo no aislado. Si ha elegido el aislamiento, task.json tiene el prefijo que debe usar para enrutar la solicitud a la máquina.

Captura de pantalla que muestra la ventana elegir opción de aislamiento.

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 esta configuración más tarde, 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 (Bridge to Kubernetes: Configurar).

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).

Captura de pantalla que muestra la ventana elegir el perfil de inicio de depuración.

Nota

Se le pedirá que permita que EndpointManager se ejecute con privilegios elevados y modifique el archivo 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.

Captura de pantalla que muestra la ventana elegir la depuración con Puente a Kubernetes.

Vaya al punto de entrada de front-end 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 ha seleccionado 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.

Captura de pantalla que muestra la opción del sitio web en ejecución: elija el vínculo de estado.

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.

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 activado para depuraciones futuras, o bien puede eliminarlo con 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.