Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här dokumentet hjälper dig att konfigurera ett exempelprogram som använder följande resurser från Gateway-API:et:
- Gateway – skapa en gateway med en http-lyssnare
- HTTPRoute – skapa en HTTP-väg som refererar till två serverdelstjänster med olika vikter
Bakgrund
Med Application Gateway för containrar kan du ange vikter och flytta trafik mellan olika serverdelsmål. Se följande exempelscenario:
Förutsättningar
Om du följer BYO-distributionsstrategin, säkerställer du att du har konfigurerat Application Gateway för containrar och ALB Controller.
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 ett HTTP-exempelprogram:
Använd följande deployment.yaml-fil i klustret för att skapa ett exempelwebbprogram för att demonstrera stöd för trafikdelning/viktad resursallokering.kubectl apply -f https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/refs/heads/main/articles/application-gateway/for-containers/examples/traffic-split-scenario/deployment.yamlDet här kommandot skapar följande i klustret:
- Ett namnområde med namnet
test-infra - Två tjänster som heter
backend-v1ochbackend-v2itest-infranamnrymden - Två distributioner kallade
backend-v1ochbackend-v2i namnrymdentest-infra
- Ett namnområde med namnet
Distribuera de gateway-API-resurser som krävs
Skapa en gateway:
kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: gateway-01
namespace: test-infra
annotations:
alb.networking.azure.io/alb-namespace: alb-test-infra
alb.networking.azure.io/alb-name: alb-test
spec:
gatewayClassName: azure-alb-external
listeners:
- name: http
port: 80
protocol: HTTP
allowedRoutes:
namespaces:
from: Same
EOF
Anmärkning
När ALB-styrenheten skapar Application Gateway for Containers-resurser i Azure Resource Manager använder den följande namngivningskonvention för en klientdelsresurs: fe-<eight randomly generated characters>.
Om du vill ändra namnet på den klientdelsresurs som skapats i Azure kan du överväga att följa distributionsstrategin bring-your-own.
När gatewayresursen har skapats kontrollerar du att statusen är giltig, att lyssnaren är programmerad och att en adress har tilldelats till gatewayen.
kubectl get gateway gateway-01 -n test-infra -o yaml
Exempel på resultatet av en lyckad gateway-skapelse.
status:
addresses:
- type: Hostname
value: xxxx.yyyy.alb.azure.com
conditions:
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Valid Gateway
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
listeners:
- attachedRoutes: 0
conditions:
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: ""
observedGeneration: 1
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Listener is accepted
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
name: gateway-01-http
supportedKinds:
- group: gateway.networking.k8s.io
kind: HTTPRoute
När gatewayen har skapats skapar du en HTTPRoute
kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: traffic-split-route
namespace: test-infra
spec:
parentRefs:
- name: gateway-01
rules:
- backendRefs:
- name: backend-v1
port: 8080
weight: 50
- name: backend-v2
port: 8080
weight: 50
EOF
När HTTPRoute-resursen har skapats kontrollerar du att vägen är Godkänd och att Application Gateway for Containers-resursen är programmerad.
kubectl get httproute traffic-split-route -n test-infra -o yaml
Kontrollera att statusen för Application Gateway for Containers-resursen har uppdaterats.
status:
parents:
- conditions:
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: ""
observedGeneration: 1
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: Route is Accepted
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
controllerName: alb.networking.azure.io/alb-controller
parentRef:
group: gateway.networking.k8s.io
kind: Gateway
name: gateway-01
namespace: test-infra
Testa åtkomst till programmet
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:
fqdn=$(kubectl get gateway gateway-01 -n test-infra -o jsonpath='{.status.addresses[0].value}')
Curling av det här FQDN:t bör returnera svar från serverdelarna/poddarna enligt konfigurationen på HTTPRoute.
# this curl command will return 50% of the responses from backend-v1
# and the remaining 50% of the responses from backend-v2
watch -n 1 curl http://$fqdn
Grattis, du har installerat ALB Controller, distribuerat en backend-applikation och dirigerat trafik till applikationen via ingressen på Application Gateway för containrar.