Compartir a través de


Tutorial: utilizar la Telepresencia para desarrollar y probar microservicios localmente

La Telepresencia es un proyecto de espacio aislado de Cloud Native Computing Foundation (CNCF) creado por el equipo de Ambassador Labs. La Telepresencia permite a los desarrolladores ejecutar servicios localmente en su máquina de desarrollo mientras están conectados a un clúster remoto de Kubernetes. Esta configuración facilita el desarrollo, depuración y prueba de aplicaciones que interactúan con otros servicios del clúster sin tener que volver a implementar ni volver a compilar toda la aplicación en Kubernetes cada vez que se realizan cambios.

Nota:

La Telepresencia es un proyecto CNCF de código abierto. Microsoft no ofrece soporte técnico para problemas que podría tener con la Telepresencia. Si tiene problemas al utilizar la Telepresencia, visite la página de problemas de la Telepresencia en GitHub y abra un problema.

En este tutorial, conectará un clúster de AKS a la Telepresencia y, a continuación, modificará una aplicación de ejemplo que se ejecuta localmente.

Funcionamiento de la Telepresencia

La Telepresencia inserta agentes de tráfico en el pod de carga de trabajo como sidecar. Los agentes de tráfico actúan como un proxy, redirigiendo el tráfico de red entrante y saliente desde el clúster AKS a su máquina local. Luego, puede desarrollar y probar en su entorno local como si su máquina local estuviera en el clúster AKS. El proceso implica:

  • Conexión al clúster de AKS a la Telepresencia.
  • Especificando el servicio o la implementación para los que desea interceptar el tráfico entrante y saliente y, a continuación, volver a enrutar al entorno local.
  • Ejecutando la versión local del servicio. La Telepresencia conecta la versión local del servicio al clúster a través del pod proxy.

Requisitos previos

  • Un clúster de AKS. Si no tiene un clúster que puede usar para este tutorial, cree uno mediante Tutorial: crear un clúster de Azure Kubernetes Service (AKS).
  • Kubectl está instalado y en la ruta de acceso en el entorno de línea de comandos que se usa para el desarrollo. En este tutorial se usa kubectl para administrar el clúster de Kubernetes. Si usa Azure Cloud Shell, kubectl ya está instalado. Para instalar kubectl localmente, use el comando az aks install-cli.
  • Instalación de Node.js LTS. Ejecute el comando node --version para comprobar que Node.js está instalado.

Conexión a un clúster mediante kubectl

Nota:

Establezca los valores de $MY_RESOURCE_GROUP_NAME y $MY_AKS_CLUSTER_NAME en consecuencia.

Antes de poder instalar la Telepresencia e interactuar con el clúster de AKS, asegúrese de que está conectado al clúster. Si no ha instalado kubectl en la sección Requisitos previos, hágalo antes de continuar.

  1. Configure kubectl para conectarse al clúster de AKS mediante el comando az aks get-credentials. Con este comando se descargan las credenciales y se configura la CLI de Kubernetes para usarlas.

    az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAME
    
  2. Compruebe la conexión al clúster mediante el comando kubectl cluster-info. Este comando muestra el nombre del clúster para que pueda confirmar que está conectado al clúster con el que desea trabajar.

    kubectl cluster-info
    

Clone la aplicación de muestra e impleméntela en su clúster AKS

El aplicación aks-store-demo que se usa en este tutorial es una aplicación front-end básica de la tienda, incluidas las siguientes implementaciones y servicios de Kubernetes:

Captura de pantalla de la arquitectura de ejemplo de Azure Store.

  • Escaparate: aplicación web para que los clientes vean productos y realicen pedidos.
  • Servicio de producto: muestra información del producto.
  • Servicio de pedidos: realiza pedidos.
  • Rabbit MQ: cola de mensajes para una cola de pedidos.
  1. Use git para clonar la aplicación en su entorno de desarrollo.

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  2. Cambie al directorio clonado.

    cd aks-store-demo
    
  3. implementar la aplicación en el clúster de AKS;

    kubectl apply -f aks-store-quickstart.yaml
    

Instalar la Telepresencia

Para interceptar el tráfico hacia y desde el clúster de AKS, debe instalar el cliente de la Telepresencia en el equipo local y el administrador de tráfico en el clúster de AKS.

Instalar el cliente de la Telepresencia

Elija el sistema operativo que usa en el equipo local e instale esa versión de la Telepresencia.

Consulte la documentación de la Telepresencia para obtener instrucciones de instalación.

Instalar el administrador de tráfico de la Telepresencia

Para enrutar el tráfico en la nube a la máquina local, la Telepresencia usa un administrador de tráfico. Helm se usa para implementar el administrador de tráfico en el clúster de Kubernetes.

telepresence helm install

Intercepte el tráfico hacia su servicio

Complete los pasos siguientes para interceptar el tráfico que va al servicio en el clúster de AKS y enrutarlo a la máquina local.

  1. Desde la línea de comandos de la máquina local, ejecute telepresence connect para conectarse al clúster de AKS y al servidor de API de Kubernetes.

    telepresence connect
    

    Una respuesta correcta de telepresence connect muestra el nombre del clúster y el espacio de nombres predeterminado al que se conecta la Telepresencia, similar al ejemplo siguiente.

    Connected to context myAKSCluster, namespace default (https://myAKSCluster-dns-ck7w5t5h.hcp.eastus2.azmk8s.io:443)
    
  2. Use el comando telepresence list para mostrar una lista de los servicios que puede interceptar.

    telepresence list
    

    Una respuesta correcta muestra los servicios disponibles, de forma similar al ejemplo siguiente.

    order-service  : ready to intercept (traffic-agent not yet installed)
    product-service: ready to intercept (traffic-agent not yet installed)
    rabbitmq       : ready to intercept (traffic-agent not yet installed)
    store-front    : ready to intercept (traffic-agent not yet installed)
    
  3. Busque el nombre del puerto que necesita para interceptar el tráfico mediante kubectl get service service-name --output yaml. Para este tutorial, escriba el siguiente comando en la línea de comandos.

    kubectl get service store-front -ojsonpath='{.spec.ports[0].port}'
    

    En este ejemplo, se devuelve el puerto que se va a interceptar, 80.

    80
    
  4. Intercepte el tráfico del servicio en el clúster de AKS mediante el comando telepresence intercept con el siguiente formato: $ telepresence intercept <service-name> --port <local-port>[:<remote-port>] --env-file <path-to-env-file>

    • --port especifica el puerto local y el puerto remoto del clúster de AKS.
    • --env-file especifica la ruta de acceso donde la Telepresencia crea un archivo env que contiene las variables de entorno necesarias para interceptar el tráfico. Este archivo debe existir para interceptar correctamente el tráfico del servicio a la máquina local. Si no existe un archivo, la telepresencia la crea automáticamente.

    Nota:

    sshfs es necesario para que los montajes de volúmenes funcionen correctamente durante las interceptaciones para las versiones de Linux y macOS de Telepresence. Si no lo tiene instalado, consulte la documentación de la Telepresencia para obtener más información.

    Para este tutorial, escriba el siguiente comando para interceptar el tráfico.

    cd src/store-front
    telepresence intercept store-front --port 8080:80 --env-file .env
    

    Una respuesta correcta muestra qué conexiones intercepta la Telepresencia, similar al ejemplo siguiente.

    Using Deployment store-front
    Intercept name         : store-front
    State                  : ACTIVE
    Workload kind          : Deployment
    Destination            : 127.0.0.1:8080
    Service Port Identifier: 80/TCP
    Volume Mount Point     : /tmp/telfs-3392425241
    Intercepting           : all TCP connections
    

Modificar el código local y ver los cambios en tiempo real

Con la Telepresencia configurada, puede modificar sin problemas el código local y ver los cambios reflejados en tiempo real. Esto le permite probar y depurar localmente mientras aprovecha el clúster de AKS.

  1. Navegue y abra components/TopNav.Vue en la aplicación que ha clonado anteriormente.

  2. Cambie el elemento de navegación Products a New Products, como se muestra en el ejemplo siguiente y guarde los cambios.

    <template>
      <nav>
        <div class="logo">
          <router-link to="/">
            <img src="/contoso-pet-store-logo.png" alt="Contoso Pet Store Logo" />
          </router-link>
        </div>
        <button class="hamburger" @click="toggleNav">
          <span class="hamburger-icon"></span>
        </button>
        <ul class="nav-links" :class="{ 'nav-links--open': isNavOpen }">
          <li><router-link to="/" @click="closeNav">Products</router-link></li>
          <li>
            <router-link to="/cart" @click="closeNav">Cart ({{ cartItemCount }})</router-link>
          </li>
        </ul>
      </nav>
    </template>
    
  3. Ejecute los siguientes comandos para ejecutar la aplicación localmente.

    1. npm install: instala las dependencias.
    2. npm run serve: inicia el servidor de desarrollo.

Al ir a la dirección IP pública del servicio store-front en el clúster de AKS, la navegación actualizada está presente y el tráfico se enruta a la versión en ejecución local del servicio. Los cambios locales se reflejan en tiempo real e interactúan con otros servicios del clúster de AKS.

Demostración de vídeo

En el vídeo siguiente se proporciona un tutorial claro y conciso de las funcionalidades de depuración F5 de la Telepresencia.

Paso siguiente

En este tutorial se explica cómo usar la Telepresencia con una aplicación de ejemplo en AKS. La Telepresencia ofrece documentación más detallada sobre su sitio web. Su contenido trata las preguntas más frecuentes, la solución de problemas, la referencia técnica, los conceptos básicos, los tutoriales y los vínculos a la comunidad.