Azure Arc destekli bir Kubernetes kümesini App Service, İşlevler ve Logic Apps (Önizleme) hizmetlerini çalıştıracak şekilde ayarlama
Azure Arc etkin bir Kubernetes kümenizvarsa, bu özelliği kullanarak App Service etkinleştirilmiş bir özel konum oluşturabilir ve Web Apps, işlev uygulamaları ve mantıksal uygulamalar dağıtabilirsiniz.
Azure Arc özellikli Kubernetes, şirket içi veya bulut Kubernetes kümenizi Azure 'da App Service, Işlevler ve Logic Apps görünür hale getirir. Bir uygulama oluşturabilir ve bunu başka bir Azure bölgesi gibi dağıtabilirsiniz.
Önkoşullar
Azure hesabınız yoksa, ücretsiz hesap için bugün kaydolun .
Azure CLı uzantıları ekleme
Azure Cloud Shell'Da Bash ortamını başlatın.
Bu CLı komutları henüz çekirdek CLı kümesinin bir parçası olmadığından, bunları aşağıdaki komutlarla ekleyin.
az extension add --upgrade --yes --name connectedk8s
az extension add --upgrade --yes --name k8s-extension
az extension add --upgrade --yes --name customlocation
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.Web --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube
Bağlı küme oluşturma
Not
Bu öğretici, sıfırdan bir ortam ayarlamaya yönelik somut yönergeler sağlamak için Azure Kubernetes hizmeti 'ni (AKS) kullanır. Ancak, bir üretim iş yükü için Azure 'da zaten Azure 'da yönetiliyor olduğu gibi bir AKS kümesinde Azure yayı 'yi etkinleştirmek istemeyecektir. Aşağıdaki adımlar hizmeti kavramasına başlamanıza yardımcı olur, ancak üretim dağıtımları için, bunların öngörüleri değil tanım olarak görüntülenmesi gerekir. bkz. hızlı başlangıç: azure arc özellikli bir kubernetes kümesi oluşturma hakkında genel yönergeler için mevcut bir kubernetes kümesini azure yaya Bağlan .
Azure Kubernetes hizmetinde genel IP adresiyle bir küme oluşturun. İstediğiniz
<group-name>kaynak grubu adıyla değiştirin.aksClusterGroupName="<group-name>" # Name of resource group for the AKS cluster aksName="${aksClusterGroupName}-aks" # Name of the AKS cluster resourceLocation="eastus" # "eastus" or "westeurope" az group create -g $aksClusterGroupName -l $resourceLocation az aks create --resource-group $aksClusterGroupName --name $aksName --enable-aad --generate-ssh-keys infra_rg=$(az aks show --resource-group $aksClusterGroupName --name $aksName --output tsv --query nodeResourceGroup)Kubeconfig dosyasını alın ve kümeyle bağlantınızı test edin. Varsayılan olarak, kubeconfig dosyası öğesine kaydedilir
~/.kube/config.az aks get-credentials --resource-group $aksClusterGroupName --name $aksName --admin kubectl get nsAzure Arc kaynaklarınızı içerecek bir kaynak grubu oluşturun. İstediğiniz
<group-name>kaynak grubu adıyla değiştirin.groupName="<group-name>" # Name of resource group for the connected cluster az group create -g $groupName -l $resourceLocationoluşturduğunuz kümeyi Azure yaya Bağlan.
clusterName="${groupName}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $groupName --name $clusterNameAşağıdaki komutla bağlantıyı doğrulayın.
provisioningStateÖzelliği olarak göstermelidirSucceeded. Aksi takdirde, bir dakika sonra komutu tekrar çalıştırın.az connectedk8s show --resource-group $groupName --name $clusterName
Log Analytics çalışma alanı oluşturma
Azure Arc 'da App Service çalıştırmak için bir log analitik çalışma alanı gerekli olmasa da, geliştiricilerin Azure Arc özellikli Kubernetes kümesinde çalışan uygulamaları için uygulama günlüklerini nasıl alabildiği.
Basitlik için, çalışma alanını şimdi oluşturun.
workspaceName="$groupName-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $groupName \ --workspace-name $workspaceNameMevcut bir Log Analytics çalışma alanı için kodlanmış çalışma alanı KIMLIĞINI ve paylaşılan anahtarı almak için aşağıdaki komutları çalıştırın. Bir sonraki adımda ihtiyacınız vardır.
logAnalyticsWorkspaceId=$(az monitor log-analytics workspace show \ --resource-group $groupName \ --workspace-name $workspaceName \ --query customerId \ --output tsv) logAnalyticsWorkspaceIdEnc=$(printf %s $logAnalyticsWorkspaceId | base64 -w0) # Needed for the next step logAnalyticsKey=$(az monitor log-analytics workspace get-shared-keys \ --resource-group $groupName \ --workspace-name $workspaceName \ --query primarySharedKey \ --output tsv) logAnalyticsKeyEnc=$(printf %s $logAnalyticsKey | base64 -w0) # Needed for the next step
App Service uzantısını yükler
App Service uzantısınınistenen adı, kaynakların sağlanması gereken küme ad alanı ve App Service Kubernetes ortamının adı için aşağıdaki ortam değişkenlerini ayarlayın.
<kube-environment-name>App Service Kubernetes ortamında oluşturulan uygulamanın etki alanı adının bir parçası olacağı için benzersiz bir ad seçin.extensionName="appservice-ext" # Name of the App Service extension namespace="appservice-ns" # Namespace in your cluster to install the extension and provision resources kubeEnvironmentName="<kube-environment-name>" # Name of the App Service Kubernetes environment resourceApp Service uzantısını, Azure Arc bağlantılı kümenize, Log Analytics etkinleştirilmiş olarak yükler. Log Analytics gerekli olmasa da, bunu daha sonra uzantıya ekleyemezsiniz, bu sayede şimdi daha kolay hale gelir.
az k8s-extension create \ --resource-group $groupName \ --name $extensionName \ --cluster-type connectedClusters \ --cluster-name $clusterName \ --extension-type 'Microsoft.Web.Appservice' \ --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=${kubeEnvironmentName}" \ --configuration-settings "keda.enabled=true" \ --configuration-settings "buildService.storageClassName=default" \ --configuration-settings "buildService.storageAccessMode=ReadWriteOnce" \ --configuration-settings "customConfigMap=${namespace}/kube-environment-config" \ --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${aksClusterGroupName}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${logAnalyticsWorkspaceIdEnc}" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${logAnalyticsKeyEnc}"Not
Uzantıyı Log Analytics tümleştirme olmadan yüklemek için, komuttan son üç parametreyi kaldırın
--configuration-settings.Aşağıdaki tabloda
--configuration-settingskomutunu çalıştırırken çeşitli parametreler açıklanmaktadır:Parametre Açıklama Microsoft.CustomLocation.ServiceAccountOluşturulacak özel konum için oluşturulacak hizmet hesabı. Bu değerin değere ayarlanması önerilir default.appsNamespaceUygulama tanımlarını ve pods 'yi sağlamak için ad alanı. Uzantı sürümü ad alanıyla eşleşmelidir. clusterNameBu uzantıya göre oluşturulacak Kubernetes ortamının App Service adı. keda.enabledKubernetes kümesinde Keda 'nın yüklü olması gerekip gerekmediğini belirtir. Veya kabul eder truefalse.buildService.storageClassNameDerleme yapıtlarının depolandığı derleme hizmeti için depolama sınıfının adı . Benzer bir değer defaultdefault, Varsayılan olarak işaretlenen hiçbir sınıfıdeğil, adlı bir sınıfı belirtir. Varsayılan, AKS ve AKS CI için geçerli bir depolama sınıfıdır, ancak diğer detrler/platformlar için olmayabilir.buildService.storageAccessModeYukarıdaki adlandırılmış depolama sınıfıyla birlikte kullanılacak erişim modu . Veya kabul eder ReadWriteOnceReadWriteMany.customConfigMapApp Service Kubernetes ortamı tarafından ayarlanacak yapılandırma eşlemesinin adı. Şu anda, değeri, <namespace>/kube-environment-config<namespace>Yukarıdaki değeriyle değiştirilerek olmalıdırappsNamespace.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-groupAzure Kubernetes hizmet kümesinin bulunduğu kaynak grubunun adı. Yalnızca temeldeki küme Azure Kubernetes hizmeti olduğunda geçerlidir ve gereklidir. logProcessor.appLogs.destinationİsteğe bağlı. Ya da kabul eder log-analyticsnone, seçme, platform günlüklerini devre dışı bırakır.logProcessor.appLogs.logAnalyticsConfig.customerIdYalnızca logProcessor.appLogs.destinationöğesine ayarlandığında gereklidirlog-analytics. Base64 ile kodlanmış Log Analytics çalışma alanı KIMLIĞI. Bu parametre korumalı bir ayar olarak yapılandırılmalıdır.logProcessor.appLogs.logAnalyticsConfig.sharedKeyYalnızca logProcessor.appLogs.destinationöğesine ayarlandığında gereklidirlog-analytics. Base64 ile kodlanmış Log Analytics çalışma alanı paylaşılan anahtarı. Bu parametre korumalı bir ayar olarak yapılandırılmalıdır.idApp Service uzantısının özelliğini daha sonra kaydedin.extensionId=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $clusterName \ --resource-group $groupName \ --name $extensionName \ --query id \ --output tsv)Devam etmeden önce uzantının tam olarak yüklenmesini bekleyin. Aşağıdaki komutu çalıştırarak, Terminal oturumunuzun bu işlemin tamamlanmasını beklemesini sağlayabilirsiniz:
az resource wait --ids $extensionId --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
kubectlKubernetes kümenizde oluşturulmuş olan Pod 'leri görmek için ' i kullanabilirsiniz:
kubectl get pods -n $namespace
Bu Pod hakkında daha fazla bilgi edinmek için App Service uzantısı tarafından oluşturulan Pod'deki sistem rolü.
Özel konum oluşturma
Azure 'daki özel konum App Service Kubernetes ortamını atamak için kullanılır.
Özel konumun istenen adı ve Azure Arc bağlantılı kümesinin KIMLIĞI için aşağıdaki ortam değişkenlerini ayarlayın.
customLocationName="my-custom-location" # Name of the custom location connectedClusterId=$(az connectedk8s show --resource-group $groupName --name $clusterName --query id --output tsv)Özel konumu oluşturun:
az customlocation create \ --resource-group $groupName \ --name $customLocationName \ --host-resource-id $connectedClusterId \ --namespace $namespace \ --cluster-extension-ids $extensionIdÖzel konumun aşağıdaki komutla başarıyla oluşturulduğunu doğrulayın. Çıktının özelliği olarak gösterilmesi gerekir
provisioningStateSucceeded. Aksi takdirde, bir dakika sonra yeniden çalıştırın.az customlocation show --resource-group $groupName --name $customLocationNameBir sonraki adım için özel konum KIMLIĞINI kaydedin.
customLocationId=$(az customlocation show \ --resource-group $groupName \ --name $customLocationName \ --query id \ --output tsv)
Kubernetes ortamını App Service oluşturma
Özel konumda uygulama oluşturmaya başlayabilmeniz için önce bir App Service Kubernetes ortamıgerekir.
Kubernetes ortamını App Service oluşturun:
az appservice kube create \ --resource-group $groupName \ --name $kubeEnvironmentName \ --custom-location $customLocationIdApp Service Kubernetes ortamının aşağıdaki komutla başarıyla oluşturulduğunu doğrulayın. Çıktının özelliği olarak gösterilmesi gerekir
provisioningStateSucceeded. Aksi takdirde, bir dakika sonra yeniden çalıştırın.az appservice kube show --resource-group $groupName --name $kubeEnvironmentName
