Share via


Quickstart: Application Gateway for Containers maken die worden beheerd door DE ALB-controller

In deze handleiding wordt ervan uitgegaan dat u de implementatiestrategie van de ALB-controllervolgt, waarbij alle Application Gateway for Containers-resources worden beheerd door de ALB-controller. De levenscyclus wordt bepaald door de resources die zijn gedefinieerd in Kubernetes. De APPLICATION Gateway for Containers-resource wordt gemaakt wanneer een aangepaste applicationLoadBalancer-resource in het cluster is gedefinieerd. De levenscyclus van Application Gateway for Containers is gebaseerd op de levenscyclus van de aangepaste resource.

Vereisten

Zorg ervoor dat u DE ALB-controller voor het eerst hebt geïmplementeerd in uw Kubernetes-cluster. Zie quickstart: Application Gateway for Containers ALB Controller implementeren als u de ALB-controller nog niet hebt geïmplementeerd.

Uw virtuele netwerk/subnet voorbereiden voor Application Gateway voor containers

Als er geen subnet beschikbaar is met ten minste 250 beschikbare IP-adressen en gedelegeerd aan de Application Gateway for Containers-resource, gebruikt u de volgende stappen om een nieuw subnet te maken en subnetdelegering in te schakelen. De adresruimte van het nieuwe subnet mag geen bestaande subnetten in het VNet overlappen.

Als u Application Gateway for Containers wilt implementeren in het virtuele netwerk met uw AKS-cluster, voert u de volgende opdracht uit om het virtuele netwerk van het cluster te zoeken en toe te wijzen. Deze informatie wordt gebruikt in de volgende stap.

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'

MC_RESOURCE_GROUP=$(az aks show --name $AKS_NAME --resource-group $RESOURCE_GROUP --query "nodeResourceGroup" -o tsv)
CLUSTER_SUBNET_ID=$(az vmss list --resource-group $MC_RESOURCE_GROUP --query '[0].virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].subnet.id' -o tsv)
read -d '' VNET_NAME VNET_RESOURCE_GROUP VNET_ID <<< $(az network vnet show --ids $CLUSTER_SUBNET_ID --query '[name, resourceGroup, id]' -o tsv)

Voer de volgende opdracht uit om een nieuw subnet met ten minste 250 beschikbare IP-adressen te maken en subnetdelegering in te schakelen voor de Application Gateway for Containers-koppelingsresource:

SUBNET_ADDRESS_PREFIX='<network address and prefix for an address space under the vnet that has at least 250 available addresses (/24 or larger subnet)>'
ALB_SUBNET_NAME='subnet-alb' # subnet name can be any non-reserved subnet name (i.e. GatewaySubnet, AzureFirewallSubnet, AzureBastionSubnet would all be invalid)
az network vnet subnet create \
  --resource-group $VNET_RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name $ALB_SUBNET_NAME \
  --address-prefixes $SUBNET_ADDRESS_PREFIX \
  --delegations 'Microsoft.ServiceNetworking/trafficControllers'
ALB_SUBNET_ID=$(az network vnet subnet show --name $ALB_SUBNET_NAME --resource-group $VNET_RESOURCE_GROUP --vnet-name $VNET_NAME --query '[id]' --output tsv)

Machtigingen voor beheerde identiteit delegeren

De ALB-controller heeft de mogelijkheid nodig om nieuwe Application Gateway voor Containers-resources in te richten en het subnet te koppelen dat is bedoeld voor de koppelingsresource Application Gateway for Containers.

In dit voorbeeld delegeren we de rol AppGW voor Containers Configuration Manager aan de resourcegroep met het beheerde cluster en delegeren we de rol Netwerkbijdrager aan het subnet dat wordt gebruikt door het subnet application gateway for Containers association, dat de machtiging Microsoft.Network/virtualNetworks/subnetten/join/action bevat.

Desgewenst kunt u een aangepaste rol maken en toewijzen met de machtiging Microsoft.Network/virtualNetworks/subnetten/join/action om andere machtigingen in de rol Inzender voor netwerken te elimineren. Meer informatie over het beheren van subnetmachtigingen.

IDENTITY_RESOURCE_NAME='azure-alb-identity'

MC_RESOURCE_GROUP=$(az aks show --name $AKS_NAME --resource-group $RESOURCE_GROUP --query "nodeResourceGroup" -otsv | tr -d '\r')

mcResourceGroupId=$(az group show --name $MC_RESOURCE_GROUP --query id -otsv)
principalId=$(az identity show -g $RESOURCE_GROUP -n $IDENTITY_RESOURCE_NAME --query principalId -otsv)

# Delegate AppGw for Containers Configuration Manager role to AKS Managed Cluster RG
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $mcResourceGroupId --role "fbc52c3f-28ad-4303-a892-8a056630b8f1" 

# Delegate Network Contributor permission for join to association subnet
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $ALB_SUBNET_ID --role "4d97b98b-1d4f-4787-a291-c67834d212e7" 

ApplicationLoadBalancer Kubernetes-resource maken

  1. De Kubernetes-naamruimte definiëren voor de ApplicationLoadBalancer-resource
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
  name: alb-test-infra
EOF
  1. Definieer de ApplicationLoadBalancer-resource , waarbij u de subnet-id opgeeft waarin de koppelingsresource van Application Gateway for Containers moet worden geïmplementeerd. De koppeling brengt connectiviteit tot stand van Application Gateway for Containers naar het gedefinieerde subnet (en verbonden netwerken indien van toepassing) om verkeer naar een gedefinieerde back-end te kunnen proxyen.

Notitie

Wanneer de ALB-controller de Application Gateway for Containers-resources in ARM maakt, gebruikt deze de volgende naamconventies voor de bijbehorende resources:

  • alb-8 willekeurig gegenereerde tekens> om de Application Gateway for Containers-resource< te definiëren
  • as-8< willekeurig gegenereerde tekens> om de koppelingsresource te definiëren

Als u de naam van de resources die in Azure zijn gemaakt, wilt wijzigen, kunt u overwegen om uw eigen implementatiestrategie te volgen.

Voer de volgende opdracht uit om de Application Gateway for Containers-resource en -koppeling te maken.

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: ApplicationLoadBalancer
metadata:
  name: alb-test
  namespace: alb-test-infra
spec:
  associations:
  - $ALB_SUBNET_ID
EOF

Het maken van de Application Gateway for Containers-resources valideren

Zodra de ApplicationLoadBalancer-resource is gemaakt, kunt u de voortgang van de implementatie van de Application Gateway for Containers-resources bijhouden. De implementatie wordt overgestapt van InProgress naar de geprogrammeerde status wanneer de inrichting is voltooid. Het kan 5-6 minuten duren voordat de Application Gateway voor Containers-resources is gemaakt.

U kunt de status van de ApplicationLoadBalancer-resource controleren door de volgende opdracht uit te voeren:

kubectl get applicationloadbalancer alb-test -n alb-test-infra -o yaml -w

Voorbeelduitvoer van een geslaagde inrichting van de Application Gateway for Containers-resource van Kubernetes.

status:
  conditions:
  - lastTransitionTime: "2023-06-19T21:03:29Z"
    message: Valid Application Gateway for Containers resource
    observedGeneration: 1
    reason: Accepted
    status: "True"
    type: Accepted
  - lastTransitionTime: "2023-06-19T21:03:29Z"
    message: alb-id=/subscriptions/xxx/resourceGroups/yyy/providers/Microsoft.ServiceNetworking/trafficControllers/alb-zzz
    observedGeneration: 1
    reason: Ready
    status: "True"
    type: Deployment

Volgende stappen

Gefeliciteerd, u hebt DE ALB-controller op uw cluster geïnstalleerd en de Application Gateway for Containers-resources in Azure geïmplementeerd.

Probeer een paar van de handleidingen voor het implementeren van een voorbeeldtoepassing, waarin enkele application gateway-concepten voor taakverdeling van containers worden gedemonstreerd.