Zelfstudie: Azure Container Apps inschakelen in Kubernetes met Azure Arc (preview)
Met Kubernetes-clusters met Azure Arc kunt u een aangepaste locatie voor Container Apps maken in uw on-premises of cloud-Kubernetes-cluster om uw Azure Container Apps-toepassingen te implementeren, net als elke andere regio.
In deze zelfstudie leert u hoe u Azure Container Apps inschakelt in uw Kubernetes-cluster met Arc. In deze zelfstudie gaat u:
- Maak een verbonden cluster.
- Maak een Log Analytics-werkruimte.
- Installeer de Container Apps-extensie.
- Maak een aangepaste locatie.
- Maak de met Azure Container Apps verbonden omgeving.
Notitie
Tijdens de preview worden Azure Container Apps in Arc niet ondersteund in productieconfiguraties. Dit artikel bevat alleen een voorbeeldconfiguratie voor evaluatiedoeleinden.
In deze zelfstudie wordt gebruikgemaakt van Azure Kubernetes Service (AKS) om concrete instructies te bieden voor het instellen van een volledig nieuwe omgeving. Voor een productieworkload wilt u Azure Arc echter mogelijk niet inschakelen op een AKS-cluster, omdat deze al wordt beheerd in Azure.
Vereisten
- Een Azure-account met een actief abonnement.
- Als u geen account hebt, kunt u er gratis een maken.
- Installeer de Azure CLI.
- Toegang tot een openbaar of privécontainerregister, zoals Azure Container Registry.
- Bekijk de vereisten en beperkingen van de openbare preview. Van bijzonder belang zijn de clustervereisten.
Instellingen
Installeer de volgende Azure CLI-extensies.
az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
az extension add --name customlocation --upgrade --yes
az extension add --name containerapp --upgrade --yes
Registreer de vereiste naamruimten.
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait
Stel omgevingsvariabelen in op basis van de implementatie van uw Kubernetes-cluster.
GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"
Een verbonden cluster maken
Met de volgende stappen kunt u aan de slag met het begrijpen van de service, maar voor productie-implementaties moeten ze worden weergegeven als illustratief, niet prescriptief. Zie quickstart: Een bestaand Kubernetes-cluster verbinden met Azure Arc voor algemene instructies over het maken van een Kubernetes-cluster met Azure Arc.
Maak een cluster in Azure Kubernetes Service.
az group create --name $AKS_CLUSTER_GROUP_NAME --location $LOCATION az aks create \ --resource-group $AKS_CLUSTER_GROUP_NAME \ --name $AKS_NAME \ --enable-aad \ --generate-ssh-keys
Haal het kubeconfig-bestand op en test de verbinding met het cluster. Standaard wordt het kubeconfig-bestand opgeslagen in
~/.kube/config
.az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get ns
Maak een resourcegroep die uw Azure Arc-resources bevat.
az group create --name $GROUP_NAME --location $LOCATION
Verbind het cluster dat u hebt gemaakt met Azure Arc.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
Valideer de verbinding met de volgende opdracht. De eigenschap moet worden weergegeven
provisioningState
alsSucceeded
. Als dat niet het is, voert u de opdracht na een minuut opnieuw uit.az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
Een Log Analytics-werkruimte maken
Een Log Analytics-werkruimte biedt toegang tot logboeken voor Container Apps-toepassingen die worden uitgevoerd in het Kubernetes-cluster met Azure Arc. Een Log Analytics-werkruimte is optioneel, maar wordt aanbevolen.
Maak een Log Analytics-werkruimte.
WORKSPACE_NAME="$GROUP_NAME-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME
Voer de volgende opdrachten uit om de gecodeerde werkruimte-id en gedeelde sleutel voor een bestaande Log Analytics-werkruimte op te halen. U hebt ze nodig in de volgende stap.
LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace show \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME \ --query customerId \ --output tsv) LOG_ANALYTICS_WORKSPACE_ID_ENC=$(printf %s $LOG_ANALYTICS_WORKSPACE_ID | base64 -w0) # Needed for the next step LOG_ANALYTICS_KEY=$(az monitor log-analytics workspace get-shared-keys \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME \ --query primarySharedKey \ --output tsv) LOG_ANALYTICS_KEY_ENC=$(printf %s $LOG_ANALYTICS_KEY | base64 -w0) # Needed for the next step
De Container Apps-extensie installeren
Belangrijk
Als u implementeert op AKS-HCI , moet u HAProxy of een aangepaste load balancer instellen voordat u de extensie installeert.
Stel de volgende omgevingsvariabelen in op de gewenste naam van de Container Apps-extensie, de clusternaamruimte waarin resources moeten worden ingericht en de naam voor de met Azure Container Apps verbonden omgeving. Kies een unieke naam voor
<connected-environment-name>
. De naam van de verbonden omgeving maakt deel uit van de domeinnaam voor de app die u maakt in de met Azure Container Apps verbonden omgeving.EXTENSION_NAME="appenv-ext" NAMESPACE="appplat-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
Installeer de Container Apps-extensie op uw met Azure Arc verbonden cluster waarvoor Log Analytics is ingeschakeld. Log Analytics kan later niet worden toegevoegd aan de extensie.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --extension-type 'Microsoft.App.Environment' \ --release-train stable \ --auto-upgrade-minor-version true \ --scope cluster \ --release-namespace $NAMESPACE \ --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" \ --configuration-settings "appsNamespace=${NAMESPACE}" \ --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" \ --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${AKS_CLUSTER_GROUP_NAME}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
Notitie
Als u de extensie wilt installeren zonder Log Analytics-integratie, verwijdert u de laatste drie
--configuration-settings
parameters uit de opdracht.In de volgende tabel worden de verschillende
--configuration-settings
parameters beschreven bij het uitvoeren van de opdracht:Parameter Description Microsoft.CustomLocation.ServiceAccount
Het serviceaccount dat is gemaakt voor de aangepaste locatie. Het wordt aanbevolen dat deze is ingesteld op de waarde default
.appsNamespace
De naamruimte die wordt gebruikt om de app-definities en -revisies te maken. Deze moet overeenkomen met die van de naamruimte van de extensierelease. clusterName
De naam van de Kubernetes-omgeving van de Container Apps-extensie die wordt gemaakt op basis van deze extensie. logProcessor.appLogs.destination
Optioneel. Bestemming voor toepassingslogboeken. log-analytics
Accepteert ofnone
, als u geen kiest, worden platformlogboeken uitgeschakeld.logProcessor.appLogs.logAnalyticsConfig.customerId
Alleen vereist als logProcessor.appLogs.destination
deze is ingesteld oplog-analytics
. De met Base64 gecodeerde Log Analytics-werkruimte-id. Deze parameter moet worden geconfigureerd als een beveiligde instelling.logProcessor.appLogs.logAnalyticsConfig.sharedKey
Alleen vereist als logProcessor.appLogs.destination
deze is ingesteld oplog-analytics
. De gedeelde sleutel van de Met Base64 gecodeerde Log Analytics-werkruimte. Deze parameter moet worden geconfigureerd als een beveiligde instelling.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group
De naam van de resourcegroep waarin het Azure Kubernetes Service-cluster zich bevindt. Geldig en alleen vereist wanneer het onderliggende cluster Azure Kubernetes Service is. Sla de
id
eigenschap van de Container Apps-extensie op voor later gebruik.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)
Wacht tot de extensie volledig is geïnstalleerd voordat u doorgaat. U kunt uw terminalsessie laten wachten totdat deze is voltooid door de volgende opdracht uit te voeren:
az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
U kunt de kubectl
pods zien die zijn gemaakt in uw Kubernetes-cluster:
kubectl get pods -n $NAMESPACE
Zie het overzicht van Azure Arc voor meer informatie over deze pods en hun rol in het systeem.
Een aangepaste locatie maken
De aangepaste locatie is een Azure-locatie die u toewijst aan de met Azure Container Apps verbonden omgeving.
Stel de volgende omgevingsvariabelen in op de gewenste naam van de aangepaste locatie en voor de id van het met Azure Arc verbonden cluster.
CUSTOM_LOCATION_NAME="my-custom-location" # Name of the custom location CONNECTED_CLUSTER_ID=$(az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME --query id --output tsv)
Maak de aangepaste locatie:
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_ID
Notitie
Als u problemen ondervindt met het maken van een aangepaste locatie in uw cluster, moet u mogelijk de functie voor aangepaste locatie inschakelen in uw cluster. Dit is vereist als u bent aangemeld bij de CLI met behulp van een service-principal of als u bent aangemeld met een Microsoft Entra-gebruiker met beperkte machtigingen voor de clusterresource.
Controleer of de aangepaste locatie is gemaakt met de volgende opdracht. De uitvoer moet de
provisioningState
eigenschap weergeven alsSucceeded
. Zo niet, voer de opdracht na een minuut opnieuw uit.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
Sla de aangepaste locatie-id op voor de volgende stap.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv)
De met Azure Container Apps verbonden omgeving maken
Voordat u apps op de aangepaste locatie kunt maken, hebt u een met Azure Container Apps verbonden omgeving nodig.
Maak de verbonden Container Apps-omgeving:
az containerapp connected-env create \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID \ --location $LOCATION
Controleer of de verbonden container-apps-omgeving is gemaakt met de volgende opdracht. De uitvoer moet de
provisioningState
eigenschap weergeven alsSucceeded
. Zo niet, voer het na een minuut opnieuw uit.az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME