Sökväg, sidhuvud och frågesträngsroutning med Application Gateway för containrar – Gateway-API
Artikel
Det här dokumentet hjälper dig att konfigurera ett exempelprogram som använder resurserna från Gateway-API:et för att demonstrera trafikroutning baserat på URL-sökväg, frågesträng och sidhuvud. Steg tillhandahålls för att:
Skapa en HTTPRoute-resurs som refererar till en serverdelstjänst.
Använd HTTPRouteMatch för att utföra matches den vägen baserat på sökväg, sidhuvud och frågesträng.
Bakgrund
Application Gateway för containrar möjliggör trafikroutning baserat på URL-sökväg, frågesträng och sidhuvud. Se följande exempelscenario:
Förutsättningar
Om du följer BYO-distributionsstrategin kontrollerar du att du har konfigurerat application gateway för containrar-resurser och ALB-styrenhet
Om du följer den hanterade distributionsstrategin för ALB kontrollerar du att du har etablerat ALB-styrenheten och etablerat Application Gateway for Containers-resurserna via den anpassade resursen ApplicationLoadBalancer.
Distribuera HTTP-exempelprogrammet Använd följande deployment.yaml-fil i klustret för att skapa ett exempelwebbprogram för att demonstrera sökväg, fråga och rubrikbaserad routning.
När ALB-styrenheten skapar Application Gateway for Containers-resurser i ARM använder den följande namngivningskonvention för en klientdelsresurs: fe-8< slumpmässigt genererade tecken>
RESOURCE_GROUP='<resource group name of the Application Gateway For Containers resource>'
RESOURCE_NAME='alb-test'
RESOURCE_ID=$(az network alb show --resource-group $RESOURCE_GROUP --name $RESOURCE_NAME --query id -o tsv)
FRONTEND_NAME='frontend'
När gatewayen har skapats skapar du en HTTPRoute för att definiera två olika matchningar och en standardtjänst att dirigera trafik till.
Så här lyder följande regler:
Om sökvägen är /bar dirigeras trafiken till backend-v2-tjänsten på port 8080 OR
Om begäran innehåller ett HTTP-huvud med namnmagi och värde-foo innehåller URL:en frågesträng som definierar namnet bra med ett exempelvärde, OCH sökvägen är /some/thing, skickas begäran till backend-v2 på port 8080.
Annars dirigeras alla andra begäranden till backend-v1-tjänsten på port 8080.
Nu är vi redo att skicka trafik till vårt exempelprogram via det FQDN som tilldelats klientdelen. Använd följande kommando för att hämta FQDN.
Bash
fqdn=$(kubectl get gateway gateway-01 -n test-infra -o jsonpath='{.status.addresses[0].value}')
Med hjälp av curl-kommandot kan vi verifiera tre olika scenarier:
Sökvägsbaserad routning
I det här scenariot dirigeras klientbegäran som skickas till http://frontend-fqdn/bar backend-v2-tjänsten.
Kör följande kommando:
Bash
curl http://$fqdn/bar
Observera att containern som betjänar begäran är backend-v2.
Frågesträng + rubrik + sökvägsroutning
I det här scenariot dirigeras klientbegäran som skickas till http://frontend-fqdn/some/thing?great=example med en huvudnyckel/värde-del av "magic: foo" till backend-v2-tjänsten.
Observera att containern som betjänar begäran är backend-v2.
Standardväg
Om inget av de två första scenarierna är uppfyllt dirigerar Application Gateway for Containers alla andra begäranden till backend-v1-tjänsten.
Kör följande kommando:
Bash
curl http://$fqdn/
Observera att containern som betjänar begäran är backend-v1.
Grattis, du har installerat ALB Controller, distribuerat ett serverdelsprogram och dirigerat trafik till programmet via Gateway-API:et på Application Gateway för containrar.
I den här modulen lär du dig att förbättra programresiliensen genom att distribuera belastning över flera servrar och använda sökvägsbaserad routning för att dirigera webbtrafik.