Aracılığıyla paylaş


Öğretici: Uygulamanızı derleme ve Azure Container Apps'e dağıtma

Bu makalede, tercih ettiğiniz programlama dilini kullanarak kaynak depodan Azure Container Apps'e mikro hizmet oluşturma ve dağıtma işlemleri gösterilmektedir.

Bu, Azure Container Apps'teki temel özellikleri nasıl kullanacağınızı gösteren makale serisinin ilk öğreticisidir. İlk adım, statik bir müzik albümleri koleksiyonu döndüren bir arka uç web API'si hizmeti oluşturmaktır.

Not

Bu uygulamayı, az containerapp up kullanarak hızlı başlangıç: Bir depodan uygulama derleme ve Azure Container Apps'e dağıtma makalesindeki yönergeleri izleyerek de derleyebilir ve dağıtabilirsiniz. Komutu az containerapp up , tek bir komut kullanarak uygulamanızı derlemenin ve Azure Container Apps'e dağıtmanın hızlı ve kullanışlı bir yoludur. Ancak kapsayıcı uygulamanız için aynı özelleştirme düzeyini sağlamaz.

Serideki sonraki öğreticide ön uç web uygulaması derlenecek ve Azure Container Apps'e dağıtılacaktır.

Aşağıdaki ekran görüntüsünde, bu öğreticide dağıtılan albüm API'sinin çıkışı gösterilmektedir.

Albümler API uç noktasından gelen yanıtın ekran görüntüsü.

Önkoşullar

Bu projeyi tamamlamak için aşağıdaki öğeler gerekir:

Gereksinim Yönergeler
Azure hesabı Hesabınız yoksa ücretsiz bir hesap oluşturun. Devam etmek için Azure aboneliğinde Kullanıcı Erişim Yöneticisi veya Sahip iznine sahip olmanız gerekir. Bağlamınız için en kısıtlayıcı rolü kullandığınızdan emin olun.

Ayrıntılar için bkz . Azure portalını ve Azure rollerini kullanarak Azure rolleri atama, Microsoft Entra rolleri ve klasik abonelik yöneticisi rolleri.
GitHub Hesabı Ücretsiz kaydolun.
git Git'i yükleme
Azure CLI Azure CLI’yi yükleyin.
Gereksinim Yönergeler
Azure hesabı Hesabınız yoksa ücretsiz bir hesap oluşturun. Devam etmek için Azure aboneliğinde Katkıda Bulunan veya Sahip iznine sahip olmanız gerekir. Ayrıntılar için Bkz. Azure portalını kullanarak Azure rolleri atama.
GitHub Hesabı Ücretsiz kaydolun.
git Git'i yükleme
Azure CLI Azure CLI’yi yükleyin.
Docker Desktop Docker, macOS, Windows ve Linux üzerinde Docker ortamını yapılandıran yükleyiciler sağlar.

Komut isteminizde Docker'ın çalıştığından emin olmak için yazın docker .

Ayarlama

CLI'dan Azure'da oturum açmak için aşağıdaki komutu çalıştırın ve istemleri izleyerek kimlik doğrulama işlemini tamamlayın.

az login

CLI'nın en son sürümünü çalıştırdığınızdan emin olmak için yükseltme komutunu çalıştırın.

az upgrade

Ardından CLI için Azure Container Apps uzantısını yükleyin veya güncelleştirin.

Azure CLI'da komutları veya PowerShell'deki modülden Az.App cmdlet'leri çalıştırdığınızda az containerapp eksik parametrelerle ilgili hatalar alırsanız, Azure Container Apps uzantısının en son sürümünü yüklediğinizden emin olun.

az extension add --name containerapp --upgrade

Not

Mayıs 2024'den itibaren Azure CLI uzantıları artık önizleme özelliklerini varsayılan olarak etkinleştirmez. Container Apps önizleme özelliklerine erişmek için ile --allow-preview trueContainer Apps uzantısını yükleyin.

az extension add --name containerapp --upgrade --allow-preview true

Geçerli uzantı veya modül yüklendikten sonra ve Microsoft.OperationalInsights ad alanlarını kaydedinMicrosoft.App.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Ortam değişkenlerini oluşturma

Azure CLI kurulumunuz tamamlandıktan sonra bu makalenin tamamında kullanılan ortam değişkenlerini tanımlayabilirsiniz.

Bash kabuğunuzda aşağıdaki değişkenleri tanımlayın.

RESOURCE_GROUP="album-containerapps"
LOCATION="canadacentral"
ENVIRONMENT="env-album-containerapps"
API_NAME="album-api"
FRONTEND_NAME="album-ui"
GITHUB_USERNAME="<YOUR_GITHUB_USERNAME>"

Bu komutu çalıştırmadan önce değerini GitHub kullanıcı adınızla değiştirdiğinizden <YOUR_GITHUB_USERNAME> emin olun.

Ardından, size özel bir kapsayıcı kayıt defteri adı tanımlayın.

ACR_NAME="acaalbums"$GITHUB_USERNAME

GitHub deposunu hazırlama

Tercih ettiğiniz dilin deposuna gidin ve deponun çatalını oluşturun.

Depoyu hesabınıza çatal olarak eklemek için albüm API'sinin üst kısmındaki Çatal düğmesini seçin.

Artık örnek depo çatalınızı kopyalayabilirsiniz.

Çatallanmış deponuzu koddan buluta klasörüne kopyalamak için aşağıdaki git komutunu kullanın:

git clone https://github.com/$GITHUB_USERNAME/containerapps-albumapi-csharp.git code-to-cloud

Ardından, dizini kopyalanan deponun köküne değiştirin.

cd code-to-cloud/src

Azure kaynak grubu oluşturma

Kapsayıcı uygulaması dağıtımınızla ilgili hizmetleri düzenlemek için bir kaynak grubu oluşturun.

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

Azure Container Registry oluşturma

  1. Albüm API'sinin kapsayıcı görüntüsü oluşturulduktan sonra, bunu depolamak için kaynak grubunuzda bir Azure Container Registry (ACR) örneği oluşturun.

    az acr create \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --name $ACR_NAME \
        --sku Basic
    
  2. Kapsayıcı kayıt defterinizin, görüntüleri çekmek için yönetilen kimliği kullanabilmesi için kimlik doğrulaması için Azure Resource Manager (ARM) hedef kitle belirteçlerine izin vermesi gerekir.

    ARM belirteçlerinin Azure Container Registry'nize (ACR) erişmesine izin verilip verilmediğini denetlemek için aşağıdaki komutu kullanın.

    az acr config authentication-as-arm show --registry "$ACR_NAME"
    

    ARM belirteçlerine izin veriliyorsa komut aşağıdaki çıkışları oluşturur.

    {
      "status": "enabled"
    }
    

    status isedisabled, aşağıdaki komutla ARM belirteçlerine izin verin.

    az acr config authentication-as-arm update --registry "$ACR_NAME" --status enabled
    

Kullanıcı tarafından atanan yönetilen kimlik oluşturma

Yönetici kimlik bilgilerini kullanmaktan kaçınmak için, kimlik doğrulaması için yönetilen kimlikleri kullanarak Microsoft Azure Container Registry'deki özel depolardan görüntüleri çekin. Mümkün olduğunda, görüntüleri çekmek için kullanıcı tarafından atanan yönetilen kimliği kullanın.

  1. Kullanıcı tarafından atanmış bir yönetilen kimlik oluşturun. Aşağıdaki komutları çalıştırmadan önce yönetilen kimliğiniz için bir ad seçin ve öğesini adıyla değiştirin \<PLACEHOLDER\> .

    IDENTITY="<YOUR_IDENTITY_NAME>"
    
    az identity create \
        --name $IDENTITY \
        --resource-group $RESOURCE_GROUP
    
  2. Kimliğin kaynak kimliğini alın.

    IDENTITY_ID=$(az identity show \
        --name $IDENTITY \
        --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    

Uygulamanızı derleme

ACR görevleriyle Docker'ı yerel olarak yüklemeden albüm API'sinin docker görüntüsünü derleyebilir ve gönderebilirsiniz.

ACR ile kapsayıcıyı derleme

ACR kullanarak görüntü derleme ve gönderme işlemini başlatmak için aşağıdaki komutu çalıştırın. . Komutun sonundaki docker derleme bağlamını temsil eder, yani bu komut Dockerfile'ın bulunduğu src klasöründe çalıştırılmalıdır.

az acr build --registry $ACR_NAME --image $API_NAME .

Komutun çıktısıaz acr build, kaynak kodun Azure'a yükleme ilerleme durumunu ve ve docker push işlemlerinin docker build ayrıntılarını gösterir.

Uygulamanızı derleme

Aşağıdaki adımlarda Docker kullanarak kapsayıcı görüntünüzü yerel olarak derleme ve görüntüyü yeni kapsayıcı kayıt defterine gönderme adımları gösterilmektedir.

Docker ile kapsayıcı oluşturma

Aşağıdaki komut, albüm API'si için bir kapsayıcı görüntüsü oluşturur ve bunu ACR oturum açma sunucusunun tam adıyla etiketler. . Komutun sonundaki docker derleme bağlamını temsil eder, yani bu komut Dockerfile'ın bulunduğu src klasöründe çalıştırılmalıdır.

docker build --tag $ACR_NAME.azurecr.io/$API_NAME .

Görüntüyü kapsayıcı kayıt defterinize gönderme

İlk olarak Azure Container Registry'nizde oturum açın.

az acr login --name $ACR_NAME

Şimdi görüntüyü kayıt defterinize gönderin.

docker push $ACR_NAME.azurecr.io/$API_NAME

Container Apps ortamı oluşturma

Azure Container Apps ortamı, bir grup kapsayıcı uygulaması çevresinde güvenli bir sınır işlevi görür.

Aşağıdaki komutu kullanarak Container Apps ortamını oluşturun.

az containerapp env create \
  --name $ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION"

Görüntünüzü kapsayıcı uygulamasına dağıtma

Artık bir ortamı oluşturduğunuza göre, komutuyla az containerapp create kapsayıcı uygulamanızı oluşturabilir ve dağıtabilirsiniz.

Aşağıdaki komutla kapsayıcı uygulamanızı oluşturun ve dağıtın.

az containerapp create \
  --name $API_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $ENVIRONMENT \
  --image $ACR_NAME.azurecr.io/$API_NAME \
  --target-port 8080 \
  --ingress external \
  --registry-server $ACR_NAME.azurecr.io \
  --user-assigned "$IDENTITY_ID" \
  --registry-identity "$IDENTITY_ID" \
  --query properties.configuration.ingress.fqdn
  • olarak ayarlandığında --ingressexternalkapsayıcı uygulamanıza genel İnternet'ten erişilebilir.

  • target-port, kapsayıcının istekler için dinlediği bağlantı noktasıyla eşleşecek şekilde ayarlanır8080.

  • query Özelliği olmadan çağrısı, az containerapp create uygulama hakkında zengin bir dizi ayrıntı içeren bir JSON yanıtı döndürür. Sorgu parametresi eklemek, çıkışı yalnızca uygulamanın tam etki alanı adına (FQDN) göre filtreler.

  • Bu komut, rolü kullanıcı tarafından atanan yönetilen kimliğinize ekler acrPull , böylece kapsayıcı kayıt defterinizden görüntü çekebilir.

Dağıtımı doğrulama

FQDN'yi bir web tarayıcısına kopyalayın. Web tarayıcınızdan FQDN'nin /albums uç noktasına gidin.

Albümler API uç noktasından gelen yanıtın ekran görüntüsü.

Kaynakları temizleme

Mikro hizmetler arasındaki iletişim öğreticisine devam etmeyecekseniz, bu hızlı başlangıç sırasında oluşturulan Azure kaynaklarını kaldırabilirsiniz. Bu hızlı başlangıçta oluşturulan tüm kaynaklarla birlikte kaynak grubunu silmek için aşağıdaki komutu çalıştırın.

az group delete --name $RESOURCE_GROUP

İpucu

Sorun mu yaşıyorsunuz? Azure Container Apps deposunda bir sorun açarak GitHub'da bize bildirin.

Sonraki adımlar

Bu hızlı başlangıç, Azure Container Apps içindeki çeşitli özellikleri gösteren bir dizi aşamalı öğreticinin giriş noktasıdır. Bu makalede dağıttığınız API'yi çağıran bir web ön ucundan iletişimi etkinleştirmeyi öğrenmek için devam edin.