Öğretici: Azure Arc özellikli Kubernetes'te Azure Container Apps'i etkinleştirme

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, Azure Arc özellikli bir Kubernetes kümesinde Azure Container Apps'in nasıl etkinleştirileceği gösterilmektedir. Bu eğitimde, siz:

  • 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.

Önkoşullar

Başlamadan önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

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.Web --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

Bu yönergeler değerlendirme ve öğrenme amaçlarına yöneliktir. Üretim dağıtımları için, Azure Arc özellikli Kubernetes kümesi oluşturmayla ilgili genel yönergeler için Hızlı Başlangıç: Mevcut bir Kubernetes kümesini Azure Arc'a bağlama bölümüne bakın.

Hizmeti kullanmaya başlamak için şu adımları izleyerek bir Azure Kubernetes Service (AKS) kümesi oluşturun ve bunu Azure Arc'a bağlayın:

  1. 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
    
  2. kubeconfig dosyasını alın ve kümeyle bağlantınızı test edin. Varsayılan olarak, kubeconfig dosyası öğesine ~/.kube/configkaydedilir.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Azure Arc kaynaklarınızı içerecek bir kaynak grubu oluşturun.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. 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
    
  5. Bağlantıyı aşağıdaki komutla doğrulayın. özelliği olarak provisioningStategösterilmelidirSucceeded. 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.

  1. 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
    
  2. 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ğunuza emin olun. Yerel bağlamlar için çekirdek dns ayarlamak için de kullanabilirsiniz az containerapp arc setup-core-dns --distro AksAzureLocal .

  1. 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şturduğunuz uygulamanın etki alanı adının bir parçasıdır.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. 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 "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.

    Standart AKS yük dengeleyicisi yerine özel yük dengeleyici kullanan kümeler için yük dengeleyici ayarlandıktan sonra aşağıdaki parametreyi belirtin:

    --configuration-settings "loadBalancerIp=<LOAD_BALANCER_INGRESS_IP>"
    

    LOAD_BALANCER_INGRESS_IP< değerini yük dengeleyicinize atanan gerçek giriş IP adresiyle değiştirin>.

    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ğerini defaultolarak ayarlayın.
    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 Container Apps uzantısı için oluşturulan Kubernetes ortamının adı.
    logProcessor.appLogs.destination isteğe bağlı. Uygulama günlükleri için hedef. veya log-analyticskabul edernone, 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ığında log-analyticsgereklidir. 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ığında log-analyticsgereklidir. Base64 kodlu Log Analytics çalışma alanı paylaşılan anahtarı. Bu parametre korumalı bir ayar olarak yapılandırılmalıdır.
    loadBalancerIp Yük dengeleyicinin giriş IP'si.
  3. 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)
    
  4. 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 çalışan podları görüntülemek için kullanın 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.

  1. 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)
    
  2. Ö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. Küme kaynağında kısıtlı izinlere sahip bir Hizmet Sorumlusu veya Microsoft Entra kullanıcısı kullanarak CLI'da oturum açtığınızda bu özelliği etkinleştirin.

  3. Aşağıdaki komutla özel konumun başarıyla oluşturulduğunu doğrulayın. Çıkış, özelliğini olarak provisioningStategöstermelidirSucceeded. Aksi takdirde, komutu bir dakika sonra yeniden çalıştırın.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. 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.

  1. 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
    
  2. Aşağıdaki komutla Container Apps bağlı ortamının başarıyla oluşturulduğunu doğrulayın. Çıkış, özelliğini olarak provisioningStategöstermelidirSucceeded. Aksi takdirde, bir dakika sonra yeniden çalıştırın.

    az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME
    

Sonraki adımlar