Dela via


Självstudie: Använda Telepresence för att utveckla och testa mikrotjänster lokalt

Telepresence är ett SANDBOX-projekt (Cloud Native Computing Foundation) som skapats av teamet på Ambassador Labs. Med telepresence kan utvecklare köra tjänster lokalt på utvecklingsdatorn när de är anslutna till ett fjärranslutet Kubernetes-kluster. Den här konfigurationen gör det enklare att utveckla, felsöka och testa program som interagerar med andra tjänster i klustret utan att behöva distribuera om eller återskapa hela programmet i Kubernetes varje gång ändringar görs.

Kommentar

Telepresence är ett CNCF-projekt med öppen källkod. Microsoft erbjuder inte stöd för problem som du kan ha med Telepresence. Om du har problem med att använda Telepresence går du till deras GitHub-problemsida för Telepresence och öppnar ett problem.

I den här självstudien ansluter du ett AKS-kluster till Telepresence och ändrar sedan ett exempelprogram som körs lokalt.

Så här fungerar Telepresence

Telepresence matar in trafikagenter i arbetsbelastningspodden som en sidovagn. Trafikagenterna fungerar som en proxy och omdirigerar inkommande och utgående nätverkstrafik från AKS-klustret till den lokala datorn. Sedan kan du utveckla och testa i din lokala miljö som om den lokala datorn fanns i AKS-klustret. Processen omfattar:

  • Ansluta till ditt AKS-kluster till Telepresence.
  • Ange den tjänst eller distribution som du vill fånga upp inkommande och utgående trafik för och sedan omdirigera till din lokala miljö.
  • Köra den lokala versionen av tjänsten. Telepresence ansluter den lokala versionen av tjänsten till klustret via proxypodden.

Förutsättningar

  • Ett AKS-kluster. Om du inte har ett kluster som du kan använda för den här självstudien skapar du ett med hjälp av Självstudie – Skapa ett AKS-kluster (Azure Kubernetes Service).
  • Kubectl installeras och på sökvägen i kommandoradsmiljön som du använder för utveckling. I den här självstudien används kubectl för att hantera Kubernetes-klustret. kubectl är redan installerat om du använder Azure Cloud Shell. Om du vill installera kubectl lokalt använder du az aks install-cli kommandot .
  • Installera Node.js LTS. Kör kommandot node --version för att verifiera att Node.js har installerats.

Ansluta till klustret med kubectl

Kommentar

Ange värdena för $MY_RESOURCE_GROUP_NAME och $MY_AKS_CLUSTER_NAME i enlighet med detta.

Innan du kan installera Telepresence och interagera med ditt AKS-kluster kontrollerar du att du är ansluten till klustret. Om du inte installerade kubectl i avsnittet Krav gör du det innan du fortsätter.

  1. Konfigurera kubectl för att ansluta till ditt AKS-kluster med kommandot az aks get-credentials . Det här kommandot laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem.

    az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAME
    
  2. Kontrollera anslutningen till klustret med kommandot kubectl cluster-info . Det här kommandot visar namnet på klustret så att du kan bekräfta att du är ansluten till klustret som du vill arbeta med.

    kubectl cluster-info
    

Klona exempelappen och distribuera den till ditt AKS-kluster

Aks-store-demo-appen som används i den här självstudien är en grundläggande store-klientapp, inklusive följande Kubernetes-distributioner och -tjänster:

Skärmbild av Azure Store-exempelarkitektur.

  • Butiksfront: Webbprogram där kunder kan visa produkter och göra beställningar.
  • Produkttjänst: Visar produktinformation.
  • Ordertjänst: Gör beställningar.
  • Rabbit MQ: Meddelandekö för en orderkö.
  1. Använd git för att klona exempelprogrammet till utvecklingsmiljön.

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  2. Ändra till den klonade katalogen.

    cd aks-store-demo
    
  3. Distribuera appen till ditt AKS-kluster.

    kubectl apply -f aks-store-quickstart.yaml
    

Installera Telepresence

Om du vill fånga upp trafik till och från ditt AKS-kluster måste du installera Telepresence-klienten på den lokala datorn och trafikhanteraren till AKS-klustret.

Installera Telepresence-klienten

Välj det operativsystem som du använder på den lokala datorn och installera den versionen av Telepresence.

Se dokumentationen om Telepresence för installationsanvisningar.

Installera Trafikhanteraren för Telepresence

För att dirigera molntrafik till din lokala dator använder Telepresence en trafikhanterare. Helm används för att distribuera trafikhanteraren till ditt Kubernetes-kluster.

telepresence helm install

Fånga upp trafik till din tjänst

Utför följande steg för att fånga upp trafik som går till din tjänst i AKS-klustret och dirigera den till den lokala datorn.

  1. Från kommandoraden på den lokala datorn kör du telepresence connect för att ansluta till AKS-klustret och Kubernetes API-servern.

    telepresence connect
    

    Ett lyckat svar från telepresence connect visar klusternamnet och standardnamnområdet som Telepresence är anslutet till, ungefär som i följande exempel.

    Connected to context myAKSCluster, namespace default (https://myAKSCluster-dns-ck7w5t5h.hcp.eastus2.azmk8s.io:443)
    
  2. telepresence list Använd kommandot för att visa en lista över de tjänster som du kan avlyssna.

    telepresence list
    

    Ett lyckat svar visar tillgängliga tjänster, ungefär som i följande exempel.

    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. Leta reda på namnet på den port som du behöver för att fånga upp trafik från att använda kubectl get service service-name --output yaml. I den här självstudien anger du följande kommando på kommandoraden.

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

    I det här exemplet returneras porten för avlyssning, 80.

    80
    
  4. Fånga upp trafiken från din tjänst i AKS-klustret med hjälp av telepresence intercept kommandot med följande format: $ telepresence intercept <service-name> --port <local-port>[:<remote-port>] --env-file <path-to-env-file>

    • --port anger den lokala porten och fjärrporten för AKS-klustret.
    • --env-file anger sökvägen där Telepresence skapar en env-fil som innehåller de miljövariabler som behövs för att fånga upp trafik. Den här filen måste finnas för att kunna fånga upp tjänstens trafik till den lokala datorn. Om en fil inte finns skapar telepresence den åt dig.

    Kommentar

    sshfs krävs för att volymmonteringar ska fungera korrekt under skärningspunkter för både Linux- och macOS-versioner av Telepresence. Mer information finns i dokumentationen om Telepresence om du inte har installerat den.

    I den här självstudien anger du följande kommando för att fånga upp trafiken.

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

    Ett lyckat svar visar vilka anslutningar Telepresence fångar upp, ungefär som i följande exempel.

    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
    

Ändra din lokala kod och se ändringar i realtid

När Telepresence har konfigurerats kan du sömlöst ändra din lokala kod och se ändringarna återspeglas i realtid. På så sätt kan du testa och felsöka lokalt när du använder AKS-klustret.

  1. Navigera och öppna components/TopNav.Vue i programmet som du klonade tidigare.

  2. Ändra navigeringsobjektet Products till New Products, enligt följande exempel, och spara ändringarna.

    <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. Kör följande kommandon för att köra appen lokalt.

    1. npm install – Installerar beroendena.
    2. npm run serve – Startar utvecklingsservern.

När du går till den offentliga IP-adressen store-front för tjänsten i aks-klustret finns den uppdaterade navigeringen och trafiken dirigeras till din lokalt igång-version av tjänsten. Dina lokala ändringar återspeglas i realtid och interagerar med andra tjänster i AKS-klustret.

Videodemo

Följande video ger en tydlig och kortfattad genomgång av Telepresences F5-felsökningsfunktioner.

Gå vidare

I den här självstudien beskrivs hur du använder Telepresence med ett exempelprogram på AKS. Telepresence erbjuder mer djupgående dokumentation på sin webbplats. Innehållet omfattar vanliga frågor och svar, felsökning, teknisk referens, grundläggande begrepp, självstudier och länkar till communityn.