Guida introduttiva: creare un Gateway applicativo per contenitori - distribuzione personalizzata

Questa guida presuppone che si stia seguendo la strategia di distribuzionebring your own, in cui il controller ALB fa riferimento alle risorse del Gateway applicativo per contenitori create in precedenza in Azure. Si presuppone che i cicli di vita delle risorse vengano gestiti in Azure, indipendentemente da quanto definito all'interno di Kubernetes.

Prerequisiti

Assicurarsi di aver distribuito prima il controller ALB nel cluster Kubernetes. È possibile seguire la Guida di avvio rapido: distribuire il Gateway applicativo per contenitori ALB Controller se non è già stato distribuito il controller ALB.

Creare la risorsa Gateway applicativo per contenitori

Eseguire il comando seguente per creare la risorsa del Gateway applicativo di Azure per contenitori.

RESOURCE_GROUP='<your resource group name>'
AGFC_NAME='alb-test' # Name of the Application Gateway for Containers resource to be created
az network alb create -g $RESOURCE_GROUP -n $AGFC_NAME

Creare una risorsa front-end

Eseguire il comando seguente per creare la risorsa front-end del Gateway applicativo per contenitori.

FRONTEND_NAME='test-frontend'
az network alb frontend create -g $RESOURCE_GROUP -n $FRONTEND_NAME --alb-name $AGFC_NAME

Creare una risorsa di associazione

Delegare una subnet alla risorsa di associazione

Per creare una risorsa di associazione, è prima necessario fare riferimento a una subnet per il Gateway applicativo per contenitori per stabilire la connettività. Verificare che la subnet per un'associazione del Gateway applicativo per contenitori sia almeno una classe C o superiore (/24 o un prefisso CIDR più piccolo). Per questo passaggio, è possibile riutilizzare una subnet esistente e abilitare la delega della subnet, oppure creare una nuova rete virtuale, una subnet e abilitare la delega della subnet.

Per fare riferimento a una subnet esistente, eseguire il comando seguente per impostare le variabili per fare riferimento alla subnet nei passaggi successivi.

VNET_NAME='<name of the virtual network to use>'
VNET_RESOURCE_GROUP='<the resource group of your VNET>'
ALB_SUBNET_NAME='subnet-alb' # subnet name can be any non-reserved subnet name (i.e. GatewaySubnet, AzureFirewallSubnet, AzureBastionSubnet would all be invalid)

Abilitare la delega della subnet per il servizio del Gateway applicativo per contenitori. La delega per il Gateway applicativo per contenitori è identificata dal tipo di risorsa Microsoft.ServiceNetworking/trafficControllers .

az network vnet subnet update \
    --resource-group $VNET_RESOURCE_GROUP  \
    --name $ALB_SUBNET_NAME \
    --vnet-name $VNET_NAME \
    --delegations 'Microsoft.ServiceNetworking/trafficControllers'
ALB_SUBNET_ID=$(az network vnet subnet list --resource-group $VNET_RESOURCE_GROUP --vnet-name $VNET_NAME --query "[?name=='$ALB_SUBNET_NAME'].id" --output tsv)
echo $ALB_SUBNET_ID

Concedere le autorizzazioni a un'identità gestita

Il controller ALB deve avere la possibilità di effettuare il provisioning di nuove risorse del Gateway applicativo per contenitori e di unirsi alla subnet destinata alla risorsa di associazione del Gateway applicativo per contenitori.

In questo esempio, si delega il ruolo AppGW per Configuration Manager dei contenitori al gruppo di risorse e si delega il ruolo Collaboratore di rete alla subnet usata dalla subnet di associazione del Gateway applicativo per contenitori, che contiene l'autorizzazione Microsoft.Network/virtualNetworks/subnets/join/action.

Se necessario, è possibile creare e assegnare un ruolo personalizzato con l'autorizzazione Microsoft.Network/virtualNetworks/subnets/join/action per eliminare altre autorizzazioni contenute nel ruoloCollaboratore di rete. Altre informazioni sulla gestione delle autorizzazioni della subnet.

IDENTITY_RESOURCE_NAME='azure-alb-identity'

resourceGroupId=$(az group show --name $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 RG containing Application Gateway for Containers resource
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $resourceGroupId --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" 

Creare una risorsa di associazione

Eseguire il comando seguente per creare la risorsa di associazione e connetterla alla subnet a cui si fa riferimento. La creazione dell'associazione del Gateway applicativo per contenitori può richiedere tra i 5 e i 6 minuti.

ASSOCIATION_NAME='association-test'
az network alb association create -g $RESOURCE_GROUP -n $ASSOCIATION_NAME --alb-name $AGFC_NAME --subnet $ALB_SUBNET_ID

Passaggi successivi

Congratulazioni, è stato installato il controller ALB nel cluster e sono state distribuite le risorse del Gateway applicativo per contenitori in Azure.

Provare alcune delle guide pratiche per distribuire un'applicazione di esempio, dimostrando alcuni dei concetti di bilanciamento del carico del Gateway applicativo contenitori.