Öğretici: Azure Arc özellikli Kubernetes'te Azure Container Apps'i etkinleştirme (Önizleme)
Azure Arc özellikli Kubernetes kümeleriyle, Azure Container Apps uygulamalarınızı diğer tüm bölgelerde olduğu gibi dağıtmak için şirket içi veya bulut Kubernetes kümenizde Container Apps özellikli bir özel konum oluşturabilirsiniz.
Bu öğreticide Arc özellikli Kubernetes kümenizde Azure Container Apps'in nasıl etkinleştirileceği gösterilir. Bu öğreticide şunları yapacaksınız:
- Bağlı bir küme oluşturun.
- Log Analytics çalışma alanı oluşturma.
- Container Apps uzantısını yükleyin.
- Özel bir konum oluşturun.
- Azure Container Apps bağlı ortamını oluşturun.
Not
Önizleme sırasında Arc üzerinde Azure Container Apps üretim yapılandırmalarında desteklenmez. Bu makale yalnızca değerlendirme amacıyla örnek bir yapılandırma sağlar.
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 etkinleştirmek istemeyebilirsiniz.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı.
- Kuruluşunuz yoksa şimdi ücretsiz olarak bir tane oluşturabilirsiniz.
- Azure CLI’yi yükleyin.
- Azure Container Registry gibi bir genel veya özel kapsayıcı kayıt defterine erişim.
- Genel önizlemenin gereksinimlerini ve sınırlamalarını gözden geçirin. Küme gereksinimleri özel öneme sahiptir.
Ayarlama
Aşağıdaki Azure CLI uzantılarını yükleyin.
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
Gerekli ad alanlarını kaydedin.
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
Kubernetes küme dağıtımınıza göre ortam değişkenlerini ayarlayın.
GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"
Bağlı küme oluşturma
Aşağıdaki 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 bir küme oluşturun.
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
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.
az group create --name $GROUP_NAME --location $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
Log Analytics çalışma alanı, Azure Arc özellikli Kubernetes kümesinde çalışan Container Apps uygulamaları için günlüklere erişim sağlar. Log Analytics çalışma alanı isteğe bağlıdır ancak önerilir.
Log Analytics çalışma alanı oluşturma.
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
Container Apps uzantısını yükleme
Önemli
Azure Yerel'de AKS'ye dağıtılıyorsa, uzantıyı yüklemeye çalışmadan önce HAProxy veya özel bir yük dengeleyici kurduğunuzdan emin olun.
Aşağıdaki ortam değişkenlerini Container Apps uzantısının istenen adına, kaynakların sağlanması gereken küme ad alanına ve Azure Container Apps bağlı ortamının adına ayarlayın. için
<connected-environment-name>
benzersiz bir ad seçin. Bağlı ortam adı, Azure Container Apps bağlı ortamında oluşturacağınız uygulamanın etki alanı adının bir parçası olacaktır.EXTENSION_NAME="appenv-ext" NAMESPACE="appplat-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
Log Analytics etkinken Container Apps uzantısını Azure Arc'a bağlı kümenize yükleyin. Log Analytics daha sonra uzantıya eklenemez.
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}"
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
Özel konum için oluşturulan hizmet hesabı. değerine default
ayarlanması önerilir.appsNamespace
Uygulama tanımlarını ve düzeltmelerini oluşturmak için kullanılan ad alanı. Uzantı yayın ad alanıyla eşleşmelidir . clusterName
Bu uzantıda oluşturulacak Container Apps uzantısı Kubernetes ortamının adı. logProcessor.appLogs.destination
isteğe bağlı. Uygulama günlükleri için hedef. 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.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. id
Container Apps 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 tamamlanana kadar beklemesini sağlayabilirsiniz:
az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
Kubernetes kümenizde oluşturulmuş podları görmek için kullanabilirsiniz kubectl
:
kubectl get pods -n $NAMESPACE
Bu podlar ve sistemdeki rolleri hakkında daha fazla bilgi edinmek için bkz . Azure Arc'a genel bakış.
Özel konum oluşturma
Özel konum , Azure Container Apps bağlı ortamına atadığınız bir Azure konumudur.
Aşağıdaki ortam değişkenlerini özel konumun istenen adına ve Azure Arc'a bağlı kümenin kimliğine 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, komutu 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)
Azure Container Apps bağlı ortamını oluşturma
Özel konumda uygulama oluşturmaya başlayabilmeniz için önce bir Azure Container Apps bağlı ortamına ihtiyacınız vardır.
Container Apps bağlı ortamını oluşturun:
az containerapp connected-env create \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID \ --location $LOCATION
Aşağıdaki komutla Container Apps bağlı 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 containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME