Azure Arc destekli bir Kubernetes kümesini App Service, İşlevler ve Logic Apps (Önizleme) hizmetlerini çalıştıracak şekilde ayarlama
Azure Arc özellikli bir Kubernetes kümeniz varsa, app service özellikli bir özel konum oluşturmak ve buna web uygulamaları, işlev uygulamaları ve mantıksal uygulamalar dağıtmak için bu kümeyi kullanabilirsiniz.
Azure Arc özellikli Kubernetes, şirket içi veya bulut Kubernetes kümenizi Azure'da App Service, İşlevler ve Logic Apps'te görünür hale getirmenizi sağlar. Bir uygulama oluşturabilir ve başka bir Azure bölgesi gibi buna dağıtabilirsiniz.
Önkoşullar
Azure hesabınız yoksa bugün ücretsiz bir hesap için kaydolun.
Genel önizlemenin gereksinimlerini ve sınırlamalarını gözden geçirin. Küme gereksinimleri özel öneme sahiptir.
Azure CLI uzantıları ekleme
Azure Cloud Shell'de Bash ortamını başlatın.
Bu CLI komutları henüz çekirdek CLI kümesinin 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 öğreticide, sıfırdan bir ortam ayarlamaya yönelik somut yönergeler sağlamak için Azure Kubernetes Service (AKS) kullanılır. Ancak bir üretim iş yükü için azure arc zaten Azure'da yönetildiğinden aks kümesinde Azure Arc'ı etkinleştirmek istemeyebilirsiniz. Adımlar hizmeti anlamaya başlamanıza yardımcı olur, ancak üretim dağıtımları için bunlar açıklayıcı değil, açıklayıcı olarak görüntülenmelidir. Azure Arc özellikli Kubernetes kümesi oluşturmayla ilgili genel yönergeler için bkz . Hızlı Başlangıç: Mevcut bir Kubernetes kümesini Azure Arc'a bağlama.
Azure Kubernetes Service'te genel IP adresiyle bir küme oluşturun. değerini istediğiniz kaynak grubu adıyla değiştirin
<group-name>
.AKS_CLUSTER_GROUP_NAME="<group-name>" # Name of resource group for the AKS cluster AKS_NAME="${aksClusterGroupName}-aks" # Name of the AKS cluster RESOURCE_LOCATION="eastus" # "eastus" or "westeurope" az group create -g $AKS_CLUSTER_GROUP_NAME -l $RESOURCE_LOCATION az aks create --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --enable-aad --generate-ssh-keys
kubeconfig dosyasını alın ve kümeyle bağlantınızı test edin. Varsayılan olarak, kubeconfig dosyası öğesine
~/.kube/config
kaydedilir.az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get ns
Azure Arc kaynaklarınızı içerecek bir kaynak grubu oluşturun. değerini istediğiniz kaynak grubu adıyla değiştirin
<group-name>
.GROUP_NAME="<group-name>" # Name of resource group for the connected cluster az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
Oluşturduğunuz kümeyi Azure Arc'a bağlayın.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
Bağlantıyı aşağıdaki komutla doğrulayın. özelliği olarak
Succeeded
gösterilmelidirprovisioningState
. Aksi takdirde, komutu bir dakika sonra yeniden çalıştırın.az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
Log Analytics çalışma alanı oluşturma
Azure Arc'ta App Service çalıştırmak için Log Analytic çalışma alanı gerekli olmasa da, geliştiriciler Azure Arc özellikli Kubernetes kümesinde çalışan uygulamaları için uygulama günlüklerini bu şekilde alabilir.
Kolaylık olması için şimdi çalışma alanını oluşturun.
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
Mevcut Log Analytics çalışma alanının kodlanmış çalışma alanı kimliğini ve paylaşılan anahtarını almak için aşağıdaki komutları çalıştırın. Bir sonraki adımda bunlara ihtiyacınız olacak.
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
App Service uzantısını yükleme
App Service uzantısının istenen 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. App Service Kubernetes ortamında oluşturulan uygulamanın etki alanı adının bir parçası olduğundan için
<kube-environment-name>
benzersiz bir ad seçin.EXTENSION_NAME="appservice-ext" # Name of the App Service extension NAMESPACE="appservice-ns" # Namespace in your cluster to install the extension and provision resources KUBE_ENVIRONMENT_NAME="<kube-environment-name>" # Name of the App Service Kubernetes environment resource
Log Analytics etkinken App Service uzantısını Azure Arc'a bağlı kümenize yükleyin. Log Analytics gerekli olmasa da, daha sonra uzantıya ekleyemezsiniz, bu nedenle şimdi yapmak daha kolaydır.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --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=${KUBE_ENVIRONMENT_NAME}" \ --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" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
Not
Uzantıyı Log Analytics tümleştirmesi olmadan yüklemek için komuttan son üç
--configuration-settings
parametreyi kaldırın.Aşağıdaki tabloda, komutu çalıştırırken çeşitli
--configuration-settings
parametreler açıklanmaktadır:Parametre Açıklama Microsoft.CustomLocation.ServiceAccount
Oluşturulan özel konum için oluşturulması gereken hizmet hesabı. Bunun değerine default
ayarlanması önerilir.appsNamespace
Uygulama tanımlarını ve podlarını sağlamak için ad alanı. Uzantı yayın ad alanıyla eşleşmelidir . clusterName
Bu uzantıda oluşturulan App Service Kubernetes ortamının adı. keda.enabled
KEDA'nın Kubernetes kümesine yüklenip yüklenmeyeceği. veya false
kabul edertrue
.buildService.storageClassName
Derleme yapıtlarını depolamak için derleme hizmetinin depolama sınıfının adı. gibi default
bir değer, varsayılan olarak işaretlenmiş herhangi bir sınıfı değil, adlıdefault
bir sınıfı belirtir. Varsayılan, Azure Yerel'de AKS ve AKS için geçerli bir depolama sınıfıdır, ancak diğer dağıtımlar/platformlar için olmayabilir.buildService.storageAccessMode
Adlandırılmış depolama sınıfıyla kullanılacak erişim modu. veya ReadWriteMany
kabul ederReadWriteOnce
.customConfigMap
App Service Kubernetes ortamı tarafından ayarlanacak yapılandırma eşlemesinin adı. Şu anda değerini değeriyle appsNamespace
değiştirerek<namespace>
olmalıdır<namespace>/kube-environment-config
.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group
Azure Kubernetes Service kümesinin bulunduğu kaynak grubunun adı. Geçerli ve yalnızca temel küme Azure Kubernetes Service olduğunda gereklidir. logProcessor.appLogs.destination
isteğe bağlı. veya none
kabul ederlog-analytics
, hiçbiri seçildiğinde platform günlükleri devre dışı bırakılır.logProcessor.appLogs.logAnalyticsConfig.customerId
Yalnızca logProcessor.appLogs.destination
olarak ayarlandığındalog-analytics
gereklidir. 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.sharedKey
Yalnızca logProcessor.appLogs.destination
olarak ayarlandığındalog-analytics
gereklidir. Base64 kodlu Log Analytics çalışma alanı paylaşılan anahtarı. Bu parametre korumalı bir ayar olarak yapılandırılmalıdır.id
App Service uzantısının özelliğini daha sonra için kaydedin.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)
Devam etmeden önce uzantının tamamen yüklenmesini bekleyin. Aşağıdaki komutu çalıştırarak terminal oturumunuzun bu işlem tamamlanana kadar beklemesini sağlayabilirsiniz:
az resource wait --ids $EXTENSION_ID --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
Kubernetes kümenizde oluşturulan podları görmek için kullanabilirsiniz kubectl
:
kubectl get pods -n $NAMESPACE
App Service uzantısı tarafından oluşturulan podlardan bu podlar ve sistemdeki rolleri hakkında daha fazla bilgi edinebilirsiniz.
Ö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'a bağlı kümenin kimliği için aşağıdaki ortam değişkenlerini ayarlayın.
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)
Özel konumu oluşturun:
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_ID
Not
Kümenizde özel konum oluştururken sorunlarla karşılaşırsanız, kümenizde özel konum özelliğini etkinleştirmeniz gerekebilir. Cli'de hizmet sorumlusu kullanarak oturum açtıysanız veya küme kaynağında kısıtlı izinlere sahip bir Microsoft Entra kullanıcısıyla oturum açtıysanız bu gereklidir.
Aşağıdaki komutla özel konumun başarıyla oluşturulduğunu doğrulayın. Çıkış, özelliğini olarak
Succeeded
göstermelidirprovisioningState
. Aksi takdirde, bir dakika sonra yeniden çalıştırın.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
Sonraki adım için özel konum kimliğini kaydedin.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv)
App Service Kubernetes ortamını oluşturma
Özel konumda uygulama oluşturmaya başlamadan önce bir App Service Kubernetes ortamına ihtiyacınız vardır.
App Service Kubernetes ortamını oluşturun:
az appservice kube create \ --resource-group $GROUP_NAME \ --name $KUBE_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID
Aşağıdaki komutla App Service Kubernetes ortamının başarıyla oluşturulduğunu doğrulayın. Çıkış, özelliğini olarak
Succeeded
göstermelidirprovisioningState
. Aksi takdirde, bir dakika sonra yeniden çalıştırın.az appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME