Cvičení – Připojení komponent nativních pro cloud

Dokončeno

Kubernetes poskytuje podům vlastní IP adresy a poskytuje jeden název DNS pro sadu podů. Soubory manifestu služby obsahují pokyny ke spolehlivému zveřejnění podů pomocí zásad, které definují, jak se k nim připojit. Pokud je image kontejneru znovu nasazená, nemusíte kvůli pokynům v manifestu služby překonfigurovat připojení.

Kontrolery příchozího přenosu dat definují, jak se vaše aplikace může připojit k vnějšímu světu. V ukázkovém scénáři musí inteligentní chladničky odesílat zprávy do kontejneru Node.js a kontrolery příchozího přenosu dat určují konfiguraci tohoto připojení.

V této lekci se naučíte:

  • Nakonfigurujte manifest příchozího přenosu dat, aby k imagi kontejneru měly přístup externí aplikace.
  • Nasaďte kontroler příchozího přenosu dat.
  • Vytvořte webovou aplikaci pomocí image Dockeru.

Konfigurace manifestu příchozího přenosu dat

  1. Pomocí příkazu identifikujte plně kvalifikovaný název domény (FQDN) hostitele, který má povolený přístup ke clusteru az aks show , a zadejte dotaz na addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName hodnotu.

    az aks show --resource-group $RESOURCEGROUP --name $CLUSTERNAME -o tsv --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
    
  2. Zkopírování výstupu a otevření integrovaného editoru v Cloud Shellu pomocí code .

  3. ingress.yaml Otevřete soubor a nahraďte apiVersion hodnotu networking.k8s.io/v1 a host hodnotu plně kvalifikovaným názvem domény, který jste zkopírovali v předchozím kroku.

    Soubor by měl vypadat jako v následujícím příkladu:

    # ingress.yaml
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cna-express
      annotations:
        kubernetes.io/ingress.class: addon-http-application-routing
    spec:
      rules:
      - host: cna-express.<exampleURL.eastus.aksapp.io>
        http:
          paths:
          - path: / # Which path is this rule referring to
            pathType: Prefix
            backend: # How the ingress will handle the requests
              service:
                name: cna-express # Which service the request will be forwarded to
                port: 
                  name: http # Which port in that service    
    
  4. Uložte soubor manifestu pomocí ctrl + S a zavřete editor pomocí kombinace kláves CTRL + Q.

Nasazení příchozího přenosu dat

  1. Pomocí příkazu odešlete manifest příchozího přenosu dat do clusteru kubectl apply .

    kubectl apply -f ./ingress.yaml
    

    Výstup tohoto příkazu by měl vypadat zhruba jako v následujícím příkladu:

    ingress.networking.k8s.io/cna-express created
    
  2. Vraťte Cloud Shell do zdrojové složky pomocí cd ...

    cd ..
    

Mezi vytvořením příchozího přenosu dat a vytvořením záznamu zóny může docházet k malému zpoždění. I když k tomu dojde, můžeme webovou aplikaci vytvořit.

Vytvoření webové aplikace pomocí image Dockeru

  1. Přejděte na web Azure Portal a vyberte registr kontejneru.

  2. V části Nastavení vyberte Přístupové klíče.

  3. Vyberte možnost Správa uživatele, která aktivuje uživatelský účet správce registru.

    Screenshot that shows the Access keys page for the container registry with Admin user selected.

Kontrola příchozího přenosu dat

  1. Pomocí příkazu přejděte do Azure Cloud Shellu a zkontrolujte, jestli nasazení proběhlo úspěšně kubectl get ingress .

    kubectl get ingress cna-express
    

    Výstup tohoto příkazu by měl vypadat zhruba jako v následujícím příkladu:

    NAME              HOSTS                                           ADDRESS        PORTS   AGE
    cna-express       cna.5cd29ec927f24764b052.eastus.aksapp.io       52.226.96.30   80      4m44s
    

    Ujistěte se, že je sloupec ADDRESS výstupu vyplněný IP adresou.

  2. Zobrazte seznam zón DNS, abyste zjistili, jestli je náš DNS vytvořený pomocí az network dns zone list příkazu.

    az network dns zone list --output table
    

    Výstup tohoto příkazu by měl vypadat zhruba jako v následujícím příkladu:

    Name                               ResourceGroup                                 RecordSets    MaxRecordSets
    -------------------------------------  --------------------------------------------  ------------  ---------------
    5cd29ec927f24764b052.eastus.aksapp.io  mc_rg-contoso-video_aks-contoso-video_eastus  4             10000
    
  3. Zkopírujte hodnoty a NameResourceGroup použijte je v dalším kroku.

  4. Pomocí příkazu vypíšete záznamy DNS pro zónu az network dns record-set list . Nahraďte <name> hodnoty <resource-group> , které jste zkopírovali v předchozím kroku.

    az network dns record-set list -g <resource-group> -z <name> --output table
    

    Výstup tohoto příkazu by měl vypadat zhruba jako v následujícím příkladu:

    Fqdn                                            Name     ProvisioningState    ResourceGroup                                 Ttl
    ----------------------------------------------  -------  -------------------  --------------------------------------------  ------
    5cd29ec927f24764b052.eastus.aksapp.io.          @        Succeeded            mc_learn-cna-rg_cna-demo-aks_eastus           172800
    5cd29ec927f24764b052.eastus.aksapp.io.          @        Succeeded            mc_learn-cna-rg_cna-demo-aks_eastus           3600
    cna.5cd29ec927f24764b052.eastus.aksapp.io.      cna      Succeeded            mc_learn-cna-rg_cna-demo-aks_eastus           300
    cna.5cd29ec927f24764b052.eastus.aksapp.io.      cna      Succeeded            mc_learn-cna-rg_cna-demo-aks_eastus           300
    

    Ujistěte se, že jsou na konci seznamu dva nové záznamy s námi vytvořeným hostitelem v klíči host. Hodnota ProvisioningState je Succeeded. Rozšíření záznamů zóny může trvat několik minut.

  5. Otevřete prohlížeč a přejděte na úplnou adresu URL plně kvalifikovaného názvu domény aksapp.io popsané ve výstupu. Měla by se zobrazit zpráva "hello world". Nezapomeňte nezahrnovat od . konce adresy URL.

    Screenshot of the deployment test.

Vytvoření webové aplikace

  1. Vraťte se na web Azure Portal a vyberte Vytvořit prostředek.

  2. Vyberte Web>Webová aplikace.

  3. Na kartě Základy zadejte pro každé nastavení následující hodnoty:

    Nastavení Hodnota
    Podrobnosti projektu
    Předplatné Vyberte výchozí předplatné Azure, ve kterém můžete vytvářet a spravovat prostředky.
    Skupina prostředků V rozevíracím seznamu vyberte existující skupinu prostředků.
    Podrobnosti o instanci
    Název Zadejte jedinečný název a poznamenejte si ho k pozdějšímu použití.
    Publikování Kontejner Dockeru
    Operační systém Linux
    Oblast Ponechte výchozí nastavení nebo vyberte umístění blízko vás.
    Cenové plány
    Plán pro Linux Ponechte jako výchozí.
    Cenový plán Vyberte zdarma F1 0,00 USD/měsíc.
  4. Vyberte kartu Dockeru v horní části obrazovky.

  5. Na kartě Docker zadejte pro každé nastavení následující hodnoty:

    Nastavení Hodnota
    Možnosti Jeden kontejner
    Zdroj image Azure Container Registry
    Registr Vyberte registr.
    Image webimage
    Značka (tag) latest
    Spouštěcí příkaz Toto nastavení nechte prázdné.
  6. Vyberte Zkontrolovat a vytvořit vytvořit>.

Konfigurace webové aplikace

  1. Po dokončení nasazení vyberte Přejít k prostředku.

  2. V části Nastavení vyberte Konfigurace.

  3. V části Nastavení aplikace vyberte Nové nastavení aplikace.

  4. Zkopírujte následující hodnotu a vložte ji do pole Název .

    SOCKET_SERVER_URL
    
  5. Pro hodnotu použijte stejnou aksapp.io adresu URL plně kvalifikovaného názvu domény, kterou jste použili s kontrolerem příchozího přenosu dat, a pro přístup k webové stránce hello world.

  6. Vyberte OK>Uložit>pokračovat.

    Screenshot that shows the Web App application setting being set.

  7. Vraťte se do Cloud Shellu a pomocí následujícího příkazu vytvořte proměnnou prostředí pro název webové aplikace. Nezapomeňte nahradit <webapp-name> názvem vaší webové aplikace.

    WEBAPPNAME=<webapp-name>
    

Testování řešení

  • Spusťte následující příkaz a vyberte adresu URL vaší webové aplikace.

    echo select the link below
    echo http://$WEBAPPNAME.azurewebsites.net
    

A je to! Vytvořili jste škálovatelné řešení nativní pro cloud. S prostředky a kódem, které jste vytvořili, si můžete pohrát. Až budete hotovi, spusťte v Azure Cloud Shellu další krok, kterým odstraníte skupinu prostředků a vyhnete se zbytečným poplatkům za váš účet.

az group delete --name $RESOURCEGROUP