Instalace AGIC pomocí nového nasazení služby Application Gateway
Pokyny v tomto článku předpokládají, že chcete nainstalovat kontroler příchozího přenosu dat služby Application Gateway (AGIC) v prostředí, které nemá žádné existující komponenty.
Tip
Zvažte službu Application Gateway pro kontejnery pro vaše řešení příchozího přenosu dat Kubernetes. Další informace najdete v tématu Rychlý start: Nasazení služby Application Gateway pro kontejnery ALB Controller.
Instalace požadovaných nástrojů příkazového řádku
Pro všechny operace příkazového řádku v tomto článku doporučujeme používat Azure Cloud Shell . Cloud Shell můžete otevřít výběrem tlačítka Spustit Cloud Shell .
Případně můžete cloud Shell otevřít na webu Azure Portal výběrem jeho ikony.
Vaše instance Cloud Shellu už má všechny potřebné nástroje. Pokud se rozhodnete použít jiné prostředí, ujistěte se, že jsou nainstalované následující nástroje příkazového řádku:
az
: Azure CLI (pokyny k instalaci)kubectl
: Nástroj příkazového řádku Kubernetes (pokyny k instalaci)helm
: Správce balíčků Kubernetes (pokyny k instalaci)jq
: Procesor JSON příkazového řádku (pokyny k instalaci)
Vytvoření identity
Pomocí následujícího postupu vytvořte objekt instančního objektu Microsoft Entra.
Vytvořte instanční objekt Active Directory, který zahrnuje roli řízení přístupu na základě role (RBAC) Azure:
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)
Zaznamenejte
appId
hodnoty apassword
hodnoty z výstupu JSON. Budete je používat v dalších krocích.appId
K získáníid
nového instančního objektu použijte hodnotu z výstupu předchozího příkazu:objectId=$(az ad sp show --id $appId --query "id" -o tsv)
Výstupem tohoto příkazu je
objectId
. Tuto hodnotu si poznamenejte, protože ji použijete v dalším kroku.Vytvořte soubor parametrů, který použijete v nasazení šablony Azure Resource Manageru (šablona ARM):
cat <<EOF > parameters.json { "aksServicePrincipalAppId": { "value": "$appId" }, "aksServicePrincipalClientSecret": { "value": "$password" }, "aksServicePrincipalObjectId": { "value": "$objectId" }, "aksEnableRBAC": { "value": false } } EOF
Pokud chcete nasadit cluster s podporou RBAC Kubernetes, nastavte
aksEnableRBAC
natrue
hodnotu .
Nasazení komponent
Následující postup přidá tyto komponenty do vašeho předplatného:
- Azure Kubernetes Service (AKS)
- Aplikace Azure lication Gateway v2
- Virtuální síť Azure se dvěma podsítěmi
- Veřejná IP adresa
- Spravovaná identita, kterou bude používat identita podu Microsoft Entra.
Nasazení komponent:
Stáhněte si šablonu ARM:
wget https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/deploy/azuredeploy.json -O template.json
Nasaďte šablonu ARM pomocí Azure CLI a podle potřeby ji upravte. Nasazení může trvat až 5 minut.
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
Po dokončení nasazení stáhněte výstup nasazení do souboru s názvem
deployment-outputs.json
:az deployment group show -g $resourceGroupName -n $deploymentName --query "properties.outputs" -o json > deployment-outputs.json
Nastavení AGIC
Podle pokynů v předchozí části jste vytvořili a nakonfigurovali nový cluster AKS a nasazení služby Application Gateway. Teď jste připraveni nasadit ukázkovou aplikaci a kontroler příchozího přenosu dat do nové infrastruktury Kubernetes.
Nastavení přihlašovacích údajů Kubernetes
V následujících krocích je potřeba nastavit příkaz kubectl , který použijete pro připojení k novému clusteru Kubernetes. Cloud Shell už je kubectl
nainstalovaný. K získání přihlašovacích údajů pro Kubernetes použijete az
(Azure CLI).
Získejte přihlašovací údaje pro nově nasazenou instanci AKS. Další informace o následujícíchpříkazch
# use the deployment-outputs.json file 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
Instalace identity podu Microsoft Entra
Identita podu Microsoft Entra poskytuje přístup na základě tokenů k Azure Resource Manageru.
Identita podu Microsoft Entra přidá do clusteru Kubernetes následující komponenty:
- Definice vlastních prostředků Kubernetes (CRD):
AzureIdentity
,AzureAssignedIdentity
AzureIdentityBinding
- Komponenta spravovaného kontroleru identit (MIC)
- Komponenta NMI (Node Managed Identity)
Pokud chcete do clusteru nainstalovat identitu podu Microsoft Entra, použijte jeden z následujících příkazů:
Cluster AKS s podporou RBAC Kubernetes:
kubectl create -f https://raw.githubusercontent.com/Azure/aad-pod-identity/master/deploy/infra/deployment-rbac.yaml
Cluster AKS s podporou RBAC Kubernetes:
kubectl create -f https://raw.githubusercontent.com/Azure/aad-pod-identity/master/deploy/infra/deployment.yaml
Přidání úložiště Helm
Helm je správce balíčků pro Kubernetes. Použijete ho application-gateway-kubernetes-ingress
k instalaci balíčku.
Pokud používáte Cloud Shell, nemusíte instalovat Helm. Cloud Shell se dodává s Helmem verze 3. Spuštěním jednoho z následujících příkazů přidejte úložiště AGIC Helm:
Cluster AKS s podporou RBAC Kubernetes:
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
Cluster AKS s podporou RBAC Kubernetes:
helm init
Instalace chartu Helm kontroleru příchozího přenosu dat
deployment-outputs.json
Pomocí souboru, který jste vytvořili dříve, vytvořte následující proměnné: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)
Stáhnout
helm-config.yaml
, který konfiguruje AGIC:wget https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/sample-helm-config.yaml -O helm-config.yaml
Nebo zkopírujte následující soubor YAML:
# 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 accessible 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>
Upravte nově stažený
helm-config.yaml
soubor a vyplňte oddíly proappgw
aarmAuth
: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
Poznámka:
Pokud nasazujete do suverénního cloudu (například Azure Government), musíte přidat
appgw.environment
parametr konfigurace a nastavit ho na odpovídající hodnotu.Tady jsou hodnoty:
verbosityLevel
: Nastaví úroveň podrobností infrastruktury protokolování AGIC. Možné hodnoty najdete v tématu Úrovně protokolování.appgw.environment
: Nastaví cloudové prostředí. Možné hodnoty:AZURECHINACLOUD
,AZUREGERMANCLOUD
,AZUREPUBLICCLOUD
,AZUREUSGOVERNMENTCLOUD
.appgw.subscriptionId
: ID předplatného Azure, ve kterém se nachází služba Application Gateway. Příklad:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.appgw.resourceGroup
: Název skupiny prostředků Azure, ve které jste vytvořili nasazení služby Application Gateway. Příklad:app-gw-resource-group
.appgw.name
: Název nasazení služby Application Gateway. Příklad:applicationgatewayd0f0
.appgw.shared
: Logický příznak, který má výchozí hodnotufalse
. Nastavte ho,true
pokud potřebujete sdílené nasazení služby Application Gateway.kubernetes.watchNamespace
: Určuje obor názvů, který má AGIC sledovat. Hodnota oboru názvů může být jedna řetězcová hodnota nebo seznam oborů názvů oddělených čárkami.armAuth.type
: Může býtaadPodIdentity
neboservicePrincipal
.armAuth.identityResourceID
: ID prostředku spravované identity Azure.armAuth.identityClientID
: ID klienta identity.armAuth.secretJSON
: Potřeba pouze v případě, že jako typ tajného kódu zvolíte instanční objekt (to znamená, že je nastaven naarmAuth.type
servicePrincipal
hodnotu ).
Poznámka:
V předchozích krocích jste vytvořili
identityResourceID
hodnotyidentityClientID
pro nasazení komponent. Můžete je získat znovu pomocí následujícího příkazu:az identity show -g <resource-group> -n <identity-name>
V příkazu
<resource-group>
je skupina prostředků vašeho nasazení služby Application Gateway. Zástupný<identity-name>
symbol je název vytvořené identity. Všechny identity pro konkrétní předplatné můžete vypsat pomocí .az identity list
Nainstalujte balíček AGIC:
helm install agic-controller oci://mcr.microsoft.com/azure-application-gateway/charts/ingress-azure --version 1.7.5 -f helm-config.yaml
Instalace ukázkové aplikace
Teď, když máte nainstalovanou službu Application Gateway, AKS a AGIC, můžete ukázkovou aplikaci nainstalovat přes Azure Cloud Shell:
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
Jako další možnost můžete:
Stáhněte si předchozí soubor YAML:
curl https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml -o aspnetapp.yaml
Použijte soubor YAML:
kubectl apply -f aspnetapp.yaml
Související obsah
- Další příklady, jak zveřejnit službu AKS na internetu prostřednictvím protokolu HTTP nebo HTTPS pomocí služby Application Gateway, najdete v tomto návodu.
- Informace o službě Application Gateway pro kontejnery najdete v tomto článku s přehledem.