Application Gateway bejövőforgalom-vezérlő (AGIC) telepítése új Application Gateway használatával
Az alábbi utasítások feltételezik, hogy az Application Gateway bejövőforgalom-vezérlője (AGIC) olyan környezetben lesz telepítve, amelyben nincsenek már meglévő összetevők.
Tipp.
Szükséges parancssori eszközök
Javasoljuk az Azure Cloud Shell használatát az alábbi összes parancssori művelethez. Indítsa el a rendszerhéjat shell.azure.com vagy kattintson a hivatkozásra:
Másik lehetőségként indítsa el a Cloud Shellt az Azure Portalról az alábbi ikonnal:
Az Azure Cloud Shell már rendelkezik minden szükséges eszközzel. Ha másik környezetet használ, győződjön meg arról, hogy a következő parancssori eszközök vannak telepítve:
az
- Azure CLI: telepítési utasításokkubectl
- Kubernetes parancssori eszköz: telepítési utasításokhelm
- Kubernetes csomagkezelő: telepítési utasításokjq
- parancssori JSON-processzor: telepítési utasítások
Identitás létrehozása
Kövesse az alábbi lépéseket egy Microsoft Entra szolgáltatásnév-objektum létrehozásához. Jegyezze fel ezeket az appId
password
objectId
értékeket a következő lépésekben.
AD-szolgáltatásnév létrehozása (További információ az Azure RBAC-ről):
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/mySubscriptionID -o json > auth.json appId=$(jq -r ".appId" auth.json) password=$(jq -r ".password" auth.json)
A
appId
JSON-kimenet éspassword
-értékek a következő lépésekben lesznek felhasználvaHasználja az
appId
előző parancs kimenetét azid
új szolgáltatásnév lekéréséhez:objectId=$(az ad sp show --id $appId --query "id" -o tsv)
Ennek a parancsnak a kimenete az
objectId
alábbi Azure Resource Manager-sablonban lesz használvaHozza létre az Azure Resource Manager-sablon későbbi üzembe helyezéséhez használt paraméterfájlt.
cat <<EOF > parameters.json { "aksServicePrincipalAppId": { "value": "$appId" }, "aksServicePrincipalClientSecret": { "value": "$password" }, "aksServicePrincipalObjectId": { "value": "$objectId" }, "aksEnableRBAC": { "value": false } } EOF
Kubernetes RBAC-kompatibilis fürt üzembe helyezéséhez állítsa a mezőt a
aksEnableRBAC
következőre:true
Összetevők üzembe helyezése
Ez a lépés a következő összetevőket adja hozzá az előfizetéshez:
- Azure Kubernetes Service
- Application Gateway v2
- Virtuális hálózat két alhálózattal
- Nyilvános IP-cím
- Felügyelt identitás, amelyet a Microsoft Entra Pod Identity fog használni
Töltse le az Azure Resource Manager-sablont, és szükség szerint módosítsa a sablont.
wget https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/deploy/azuredeploy.json -O template.json
Az Azure Resource Manager-sablon üzembe helyezése az Azure CLI használatával. Az üzembe helyezés akár 5 percet is igénybe vehet.
resourceGroupName="MyResourceGroup" location="westus2" deploymentName="ingress-appgw" # create a resource group az group create -n $resourceGroupName -l $location # modify the template as needed az deployment group create \ -g $resourceGroupName \ -n $deploymentName \ --template-file template.json \ --parameters parameters.json
Miután az üzembe helyezés befejeződött, töltse le az üzembe helyezés kimenetét egy nevű
deployment-outputs.json
fájlba.az deployment group show -g $resourceGroupName -n $deploymentName --query "properties.outputs" -o json > deployment-outputs.json
Az Application Gateway bejövőforgalom-vezérlőjének beállítása
Az előző szakaszban ismertetett utasítások alapján létrehoztunk és konfiguráltunk egy új AKS-fürtöt és egy Application Gatewayt. Most már készen állunk egy mintaalkalmazás és egy bejövőforgalom-vezérlő üzembe helyezésére az új Kubernetes-infrastruktúrában.
A Kubernetes hitelesítő adatainak beállítása
A következő lépésekhez be kell állítani a Kubectl-parancsot , amelyet az új Kubernetes-fürthöz való csatlakozáshoz fogunk használni. A Cloud Shell már telepítve van kubectl
. A parancssori felület használatával az
szerezzük be a Kubernetes hitelesítő adatait.
Hitelesítő adatok lekérése az újonnan üzembe helyezett AKS-hez (további információ):
# use the deployment-outputs.json created after deployment to get the cluster name and resource group name
aksClusterName=$(jq -r ".aksClusterName.value" deployment-outputs.json)
resourceGroupName=$(jq -r ".resourceGroupName.value" deployment-outputs.json)
az aks get-credentials --resource-group $resourceGroupName --name $aksClusterName
A Microsoft Entra Pod Identity telepítése
A Microsoft Entra Pod Identity jogkivonatalapú hozzáférést biztosít az Azure Resource Managerhez (ARM).
A Microsoft Entra Pod Identity a következő összetevőket adja hozzá a Kubernetes-fürthöz:
- Kubernetes CRD-k:
AzureIdentity
, ,AzureAssignedIdentity
AzureIdentityBinding
- Felügyelt identitásvezérlő (MIC) összetevő
- Node Managed Identity (NMI) összetevő
A Microsoft Entra Pod Identity telepítése a fürtre:
Kubernetes RBAC-kompatibilis AKS-fürt
kubectl create -f https://raw.githubusercontent.com/Azure/aad-pod-identity/master/deploy/infra/deployment-rbac.yaml
Kubernetes RBAC letiltott AKS-fürt
kubectl create -f https://raw.githubusercontent.com/Azure/aad-pod-identity/master/deploy/infra/deployment.yaml
A Helm telepítése
A Helm a Kubernetes csomagkezelője. Ezzel telepítjük a application-gateway-kubernetes-ingress
csomagot.
Feljegyzés
A Cloud Shell használata esetén nem kell telepítenie a Helmt. Az Azure Cloud Shell a Helm 3-at használja. Hagyja ki az első lépést, és csak adja hozzá az AGIC Helm-adattárat.
Telepítse a Helmt , és futtassa a következőket a Helm-csomag hozzáadásához
application-gateway-kubernetes-ingress
:Kubernetes RBAC-kompatibilis AKS-fürt
kubectl create serviceaccount --namespace kube-system tiller-sa kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller-sa helm init --tiller-namespace kube-system --service-account tiller-sa
Kubernetes RBAC letiltott AKS-fürt
helm init
Adja hozzá az AGIC Helm-adattárat:
helm repo add application-gateway-kubernetes-ingress https://appgwingress.blob.core.windows.net/ingress-azure-helm-package/ helm repo update
Bejövőforgalom-vezérlő Helm-diagram telepítése
Használja a
deployment-outputs.json
fent létrehozott fájlt, és hozza létre a következő változókat.applicationGatewayName=$(jq -r ".applicationGatewayName.value" deployment-outputs.json) resourceGroupName=$(jq -r ".resourceGroupName.value" deployment-outputs.json) subscriptionId=$(jq -r ".subscriptionId.value" deployment-outputs.json) identityClientId=$(jq -r ".identityClientId.value" deployment-outputs.json) identityResourceId=$(jq -r ".identityResourceId.value" deployment-outputs.json)
Töltse le a helm-config.yaml fájlt, amely konfigurálja az AGIC-t:
wget https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/sample-helm-config.yaml -O helm-config.yaml
Vagy másolja az alábbi YAML-fájlt:
# This file contains the essential configs for the ingress controller helm chart # Verbosity level of the App Gateway Ingress Controller verbosityLevel: 3 ################################################################################ # Specify which application gateway the ingress controller will manage # appgw: subscriptionId: <subscriptionId> resourceGroup: <resourceGroupName> name: <applicationGatewayName> # Setting appgw.shared to "true" will create an AzureIngressProhibitedTarget CRD. # This prohibits AGIC from applying config for any host/path. # Use "kubectl get AzureIngressProhibitedTargets" to view and change this. shared: false ################################################################################ # Specify which kubernetes namespace the ingress controller will watch # Default value is "default" # Leaving this variable out or setting it to blank or empty string would # result in Ingress Controller observing all acessible namespaces. # # kubernetes: # watchNamespace: <namespace> ################################################################################ # Specify the authentication with Azure Resource Manager # # Two authentication methods are available: # - Option 1: AAD-Pod-Identity (https://github.com/Azure/aad-pod-identity) armAuth: type: aadPodIdentity identityResourceID: <identityResourceId> identityClientID: <identityClientId> ## Alternatively you can use Service Principal credentials # armAuth: # type: servicePrincipal # secretJSON: <<Generate this value with: "az ad sp create-for-rbac --subscription <subscription-uuid> --role Contributor --sdk-auth | base64 -w0" >> ################################################################################ # Specify if the cluster is Kubernetes RBAC enabled or not rbac: enabled: false # true/false # Specify aks cluster related information. THIS IS BEING DEPRECATED. aksClusterConfiguration: apiServerAddress: <aks-api-server-address>
Szerkessze az újonnan letöltött helm-config.yaml fájlt, és töltse ki a szakaszokat és
armAuth
a .appgw
sed -i "s|<subscriptionId>|${subscriptionId}|g" helm-config.yaml sed -i "s|<resourceGroupName>|${resourceGroupName}|g" helm-config.yaml sed -i "s|<applicationGatewayName>|${applicationGatewayName}|g" helm-config.yaml sed -i "s|<identityResourceId>|${identityResourceId}|g" helm-config.yaml sed -i "s|<identityClientId>|${identityClientId}|g" helm-config.yaml
Feljegyzés
A szuverén felhőkben (például az Azure Governmentben) történő üzembe helyezéshez a
appgw.environment
konfigurációs paramétert hozzá kell adni, és be kell állítani a megfelelő értékre az alább dokumentált módon.Értékek:
verbosityLevel
: Beállítja az AGIC naplózási infrastruktúra részletességi szintjét. A lehetséges értékek naplózási szintjei című témakörben talál további információt.appgw.environment
: Beállítja a felhőkörnyezetet. Lehetséges értékek:AZURECHINACLOUD
,AZUREGERMANCLOUD
, ,AZUREPUBLICCLOUD
AZUREUSGOVERNMENTCLOUD
appgw.subscriptionId
: Az Az Azure-előfizetés azonosítója, amelyben az Application Gateway található. Példa:a123b234-a3b4-557d-b2df-a0bc12de1234
appgw.resourceGroup
: Annak az Azure-erőforráscsoportnak a neve, amelyben az Application Gateway létrejött. Példa:app-gw-resource-group
appgw.name
: Az Application Gateway neve. Példa:applicationgatewayd0f0
appgw.shared
: Ennek a logikai jelölőnek alapértelmezés szerint afalse
következőnek kell lennie: . Állítsa be,true
ha megosztott application Gatewayre van szüksége.kubernetes.watchNamespace
: Adja meg azt a névteret, amelyet az AGIC-nek figyelnie kell. A névtér értéke lehet egyetlen sztringérték, vagy a névterek vesszővel tagolt listája.armAuth.type
: lehetaadPodIdentity
vagyservicePrincipal
armAuth.identityResourceID
: Az Azure Managed Identity erőforrás-azonosítójaarmAuth.identityClientID
: Az identitás ügyfélazonosítója. Az identityClientID-ről az alábbiakban talál további információt.armAuth.secretJSON
: Csak akkor szükséges, ha a Szolgáltatásnév titkos kód típusa van kiválasztva (amikorarmAuth.type
a rendszer a következőreservicePrincipal
van állítva)
Feljegyzés
Az
identityResourceID
összetevők üzembe helyezése lépések során létrehozott ésidentityClientID
létrehozott értékek, amelyeket a következő paranccsal lehet ismét beszerezni:az identity show -g <resource-group> -n <identity-name>
<resource-group>
a fenti parancs az Application Gateway erőforráscsoportja.<identity-name>
a létrehozott identitás neve. Egy adott előfizetés összes identitása a következő használatával listázható:az identity list
Telepítse az Application Gateway bejövőforgalom-vezérlőcsomagot:
helm install -f helm-config.yaml --generate-name application-gateway-kubernetes-ingress/ingress-azure
Mintaalkalmazás telepítése
Most, hogy telepítettük az Application Gatewayt, az AKS-t és az AGIC-t, telepíthetünk egy mintaalkalmazást az Azure Cloud Shellen keresztül:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: aspnetapp
labels:
app: aspnetapp
spec:
containers:
- image: "mcr.microsoft.com/dotnet/samples:aspnetapp"
name: aspnetapp-image
ports:
- containerPort: 8080
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: aspnetapp
spec:
selector:
app: aspnetapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: aspnetapp
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: aspnetapp
port:
number: 80
pathType: Exact
EOF
Másik lehetőségként a következő lehetőségeket is választhatja:
Töltse le a fenti YAML-fájlt:
curl https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml -o aspnetapp.yaml
Alkalmazza a YAML-fájlt:
kubectl apply -f aspnetapp.yaml
Egyéb példák
Ez az útmutató további példákat tartalmaz arra, hogyan teheti elérhetővé az AKS-szolgáltatást HTTP-n vagy HTTPS-en keresztül az internetre az Application Gateway használatával.