Öğ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.
Ö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 true
Container 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
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
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.
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
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
--ingress
external
kapsayı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.
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.