Öğretici: Azure Container Apps'te mikro hizmetler arasında iletişim
Azure Container Apps, giriş etkinse her kapsayıcı uygulamasını bir etki alanı adı aracılığıyla kullanıma sunar. Dış ortamdaki kapsayıcı uygulamaları için giriş uç noktaları genel olarak erişilebilir veya yalnızca aynı ortamdaki diğer kapsayıcı uygulamaları tarafından kullanılabilir.
Belirli bir kapsayıcı uygulamasının tam etki alanı adını bildiğinizde, paylaşılan ortamdaki diğer kapsayıcı uygulamalarından hizmete doğrudan çağrılar yapabilirsiniz.
Bu öğreticide, Kodunuzu Azure Container Apps'e dağıtma hızlı başlangıcında dağıtılan API'ye doğrudan hizmet çağrısı yapan ikinci bir kapsayıcı uygulaması dağıtacaksınız.
Aşağıdaki ekran görüntüsünde, bu makalenin sonunda kapsayıcı uygulamalarına dağıtan kullanıcı arabirimi mikro hizmeti gösterilmektedir.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure Container Apps'e ön uç uygulaması dağıtma
- Ön uç uygulamasını önceki hızlı başlangıçta dağıtılan API uç noktasına bağlama
- Ön uç uygulamasının arka uç API'siyle iletişim kurabildiğini doğrulama
Önkoşullar
Buluta kod hızlı başlangıçta, müzik albümlerinin listesini döndürmek için bir arka uç web API'si dağıtılır. Albüm API'sini mikro hizmeti dağıtmadıysanız Hızlı Başlangıç: Devam etmek için kodunuzu Azure Container Apps'e dağıtma bölümüne dönün.
Ayarlama
Şu anda Azure'da kimliğiniz doğrulandıysa ve hızlı başlangıçta tanımlanan ortam değişkenlerine sahipseniz, aşağıdaki adımları atlayın ve doğrudan GitHub deposunu hazırlama bölümüne gidin.
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
Azure CLI'da oturum açın.
az login
az acr login --name $ACR_NAME
GitHub deposunu hazırlama
Yeni bir tarayıcı sekmesinde kullanıcı arabirimi uygulamasının deposuna gidin ve sayfanın üst kısmındaki Çatal düğmesini seçerek deponun hesabınıza çatalını oluşturun.
GitHub'daki yönergeleri izleyerek deponun çatalını oluşturun ve işlem tamamlandıktan sonra buraya dönün.
Koddan buluta klasörünün üst öğesine gidin. Hala koddan buluta/src dizinindeyseniz, üst klasöre dönmek için aşağıdaki komutu kullanabilirsiniz.
cd ../..
Çatallanmış deponuzu code-to-cloud-ui klasörüne kopyalamak için aşağıdaki git komutunu kullanın:
git clone https://github.com/$GITHUB_USERNAME/containerapps-albumui.git code-to-cloud-ui
Not
clone
Komut başarısız olursa, deponun çatalını başarıyla oluşturduğunuzu denetleyin.Ardından, dizini kopyalanan deponun src klasörüne değiştirin.
cd code-to-cloud-ui/src
Ön uç uygulamasını oluşturma
az acr build --registry $ACR_NAME --image albumapp-ui .
Komutun çıktısı az acr build
, kaynak kodun Azure'a yükleme ilerleme durumunu ve işlemin ayrıntılarını docker build
gösterir.
Aşağıdaki komut albüm kullanıcı arabirimi 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/albumapp-ui" .
Görüntüyü ACR 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/albumapp-ui"
Kapsayıcı uygulamaları arasında iletişim kurma
Önceki hızlı başlangıçta, albüm API'si bir kapsayıcı uygulaması oluşturularak ve dış giriş etkinleştirilerek dağıtıldı. Kapsayıcı uygulamasının girişinin dış olarak ayarlanması HTTP uç nokta URL'sinin genel kullanıma sunulmasını sağladı.
Şimdi aşağıdaki adımları izleyerek ön uç uygulamayı API uç noktasını çağıracak şekilde yapılandırabilirsiniz:
- API uygulamasını tam etki alanı adı (FQDN) için sorgula.
- UI uygulamasının kod içindeki albüm API çağrısının temel URL'sini ayarlayabilmesi için API FQDN'sini
az containerapp create
bir ortam değişkeni olarak geçirin.
Kullanıcı arabirimi uygulaması, albüm API'sini çağırmak için sağlanan uç noktayı kullanır. Aşağıdaki kod, yollar > index.js dosyasında kullanılan koddan bir alıntıdır.
const api = axios.create({
baseURL: process.env.API_BASE_URL,
params: {},
timeout: process.env.TIMEOUT || 5000,
});
Özelliğin baseURL
değerini ortam değişkeninden nasıl aldığına API_BASE_URL
dikkat edin.
API uç noktası adresini sorgulamak için aşağıdaki komutu çalıştırın.
API_BASE_URL=$(az containerapp show --resource-group $RESOURCE_GROUP --name $API_NAME --query properties.configuration.ingress.fqdn -o tsv)
Artık değişkenini API_BASE_URL
albüm API'sinin FQDN'siyle ayarladığınıza göre, bunu ön uç kapsayıcı uygulamasına ortam değişkeni olarak sağlayabilirsiniz.
Ön uç uygulamasını dağıtma
Aşağıdaki komutla kapsayıcı uygulamanızı oluşturun ve dağıtın.
az containerapp create \
--name $FRONTEND_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $ACR_NAME.azurecr.io/albumapp-ui \
--target-port 3000 \
--env-vars API_BASE_URL=https://$API_BASE_URL \
--ingress external \
--registry-server $ACR_NAME.azurecr.io \
--query properties.configuration.ingress.fqdn
bağımsız değişkenini --env-vars "API_BASE_URL=https://$API_ENDPOINT"
öğesine az containerapp create
ekleyerek, ön uç uygulamanız için bir ortam değişkeni tanımlarsınız. Bu söz dizimi ile adlı API_BASE_URL
ortam değişkeni API'nin FQDN'sine ayarlanır.
Komutun az containerapp create
çıkışı ön uç uygulamasının URL'sini gösterir.
Web sitesini görüntüleme
Web sitesini görüntülemek için kapsayıcı uygulamasının FQDN'sini kullanın. Sayfa aşağıdaki ekran görüntüsüne benzer.
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz, 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.
Dikkat
Bu komut, belirtilen kaynak grubunu ve içindeki tüm kaynakları siler. Bu öğreticinin kapsamı dışındaki kaynaklar belirtilen kaynak grubunda varsa, bunlar da silinir.
az group delete --name $RESOURCE_GROUP
İpucu
Sorun mu yaşıyorsunuz? Azure Container Apps deposunda bir sorun açarak GitHub'da bize bildirin.