Aracılığıyla paylaş


Azure Container Apps'te ilk kapsayıcılı işlevlerinizi oluşturma

Bu makalede, Linux kapsayıcısında çalışan bir işlev uygulaması oluşturacak ve bunu bir kapsayıcı kayıt defterinden Azure Container Apps ortamına dağıtacaksınız. Container Apps'e dağıtarak işlev uygulamalarınızı bulutta yerel mikro hizmetlerle tümleştirebilirsiniz. Daha fazla bilgi için bkz. Azure İşlevleri barındıran Azure Container Apps.

Bu makalede, Linux kapsayıcısında çalışan işlevlerin nasıl oluşturulacağı ve kapsayıcının bir Container Apps ortamına nasıl dağıtılacağı gösterilmektedir.

Bu hızlı başlangıcı tamamlamak, Azure hesabınızda birkaç ABD doları veya daha az bir maliyete neden olur ve işiniz bittiğinde kaynakları temizleyerek en aza indirebilirsiniz.

Geliştirme dilinizi seçin

İlk olarak, docker kapsayıcısında dile özgü linux temel görüntüsü kullanarak proje kodunuzu işlev uygulaması olarak oluşturmak için Azure İşlevleri araçlarını kullanırsınız. Makalenin üst kısmında istediğiniz dili seçtiğinizden emin olun.

Çekirdek Araçlar, projeniz için otomatik olarak işlev diliniz için doğru temel görüntünün en güncel sürümünü kullanan bir Dockerfile oluşturur. Kapsayıcınızı en son temel görüntüden düzenli olarak güncelleştirmeli ve kapsayıcınızın güncelleştirilmiş sürümünden yeniden dağıtmalısınız. Daha fazla bilgi için bkz . Kapsayıcılı işlev uygulamaları oluşturma.

Önkoşullar

Başlamadan önce aşağıdaki gereksinimleri karşılamanız gerekir:

  • .NET 6 SDK'sını yükleyin.
  • Azure CLI sürüm 2.4 veya sonraki bir sürüm.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Oluşturduğunuz kapsayıcılı işlev uygulaması görüntüsünü bir kapsayıcı kayıt defterinde yayımlamak için yerel bilgisayarınızda çalışan bir Docker Kimliği ve Docker gerekir. Docker kimliğiniz yoksa bir Docker hesabı oluşturabilirsiniz.

Kayıt defteri örneği oluşturmak için Container Registry hızlı başlangıcının Kapsayıcı kayıt defteri oluşturma bölümünü de tamamlamanız gerekir. Tam oturum açma sunucusu adınızı not edin.

Sanal ortam oluşturma ve etkinleştirme

Uygun bir klasörde aşağıdaki komutları çalıştırarak adlı .venvbir sanal ortam oluşturun ve etkinleştirin. Azure İşlevleri tarafından desteklenen Python sürümlerinden birini kullandığınızdan emin olun.

python -m venv .venv
source .venv/bin/activate

Python venv paketini Linux dağıtımınıza yüklemediyse aşağıdaki komutu çalıştırın:

sudo apt-get install python3-venv

Bu etkinleştirilmiş sanal ortamda sonraki tüm komutları çalıştırırsınız.

Yerel işlevler projesini oluşturma ve test etme

Terminalde veya komut isteminde, geçerli klasörde bir işlev uygulaması projesi oluşturmak için seçtiğiniz dil için aşağıdaki komutu çalıştırın:

func init --worker-runtime dotnet-isolated --docker
func init --worker-runtime node --language javascript --docker
func init --worker-runtime powershell --docker
func init --worker-runtime python --docker
func init --worker-runtime node --language typescript --docker

Boş bir klasörde aşağıdaki komutu çalıştırarak İşlevler projesini bir Maven arketipinden oluşturun:

mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8 -Ddocker

parametresi İşlevler -DjavaVersion çalışma zamanına hangi Java sürümünün kullanılacağını bildirir. İşlevlerinizin Java 11 üzerinde çalışmasını istiyorsanız -DjavaVersion=11 ifadesini kullanın. belirtmediğinizde Maven varsayılan olarak Java 8'i kullanır -DjavaVersion. Daha fazla bilgi için bkz . Java sürümleri.

Önemli

Bu JAVA_HOME makaleyi tamamlamak için ortam değişkeni, JDK'nin doğru sürümünün yükleme konumuna ayarlanmalıdır.

Maven, projeyi dağıtımda oluşturma işlemini tamamlamak için gereken değerleri ister. istemleri izleyin ve aşağıdaki bilgileri sağlayın:

İstem Value Açıklama
Groupıd com.fabrikam Java için paket adlandırma kurallarını izleyerek projenizi tüm projelerde benzersiz olarak tanımlayan bir değer.
Artifactıd fabrikam-functions Sürüm numarası olmayan jar'ın adı olan bir değer.
version 1.0-SNAPSHOT Varsayılan değeri seçin.
Paket com.fabrikam.functions Oluşturulan işlev kodu için Java paketi olan bir değer. Varsayılan değeri kullanın.

Onaylamak için Enter tuşuna basın Y .

Maven, proje dosyalarını artifactId adlı yeni bir klasörde oluşturur. Bu örnekte şöyledirfabrikam-functions: .

seçeneği--docker, proje için Azure İşlevleri ve seçilen çalışma zamanıyla kullanmak için uygun bir kapsayıcı tanımlayan bir Dockerfile oluşturur.

Proje klasörüne gidin:

cd fabrikam-functions

Aşağıdaki komutu kullanarak projenize işlev ekleyin. Burada --name bağımsız değişken işlevinizin benzersiz adıdır ve --template bağımsız değişken işlevin tetikleyicisini belirtir. func new projenizde bir C# kod dosyası oluşturur.

func new --name HttpExample --template "HTTP trigger"

Aşağıdaki komutu kullanarak projenize işlev ekleyin. Burada --name bağımsız değişken işlevinizin benzersiz adıdır ve --template bağımsız değişken işlevin tetikleyicisini belirtir. func new, function.json adlı bir yapılandırma dosyası içeren işlev adıyla eşleşen bir alt klasör oluşturur.

func new --name HttpExample --template "HTTP trigger"

İşlevi yerel olarak test etmek için proje klasörünün kökünde yerel Azure İşlevleri çalışma zamanı ana bilgisayarını başlatın.

func start  
func start  
npm install
npm start
mvn clean package  
mvn azure-functions:run

Çıkışa HttpExample yazılan uç noktayı gördükkten sonra bu uç noktaya gidin. Yanıt çıkışında bir karşılama iletisi görmeniz gerekir.

Çıkışa HttpExample yazılan uç noktayı gördükkten sonra adresine http://localhost:7071/api/HttpExample?name=Functionsgidin. Tarayıcının, sorgu parametresine sağlanan değeri geri Functionsdöndüren bir "hello" iletisi görüntülemesi name gerekir.

Konağı durdurmak için Ctrl+C (macOS'ta C Komutu+) tuşlarına basın.

Kapsayıcı görüntüsünü oluşturma ve yerel olarak doğrulama

(İsteğe bağlı) Proje klasörünün kökündeki Dockerfile dosyasını inceleyin. Dockerfile, linux üzerinde işlev uygulamasını çalıştırmak için gerekli ortamı açıklar. Azure İşlevleri için desteklenen temel görüntülerin tam listesi Azure İşlevleri temel görüntü sayfasında bulunabilir.

Kök proje klasöründe docker build komutunu çalıştırın, olarak bir ad sağlayın ve olarak azurefunctionsimagev1.0.0etiketleyin. <DOCKER_ID> değerini Docker Hub hesabınızın kimliğiyle değiştirin. Bu komut, kapsayıcı için Docker görüntüsünü derler.

docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .

Komut tamamlandığında, yeni kapsayıcıyı yerel olarak çalıştırabilirsiniz.

Derlemeyi doğrulamak için docker run komutunu kullanarak görüntüyü yerel bir kapsayıcıda çalıştırın, yerine <DOCKER_ID> Docker Hub hesap kimliğinizi yazın ve bağlantı noktaları bağımsız değişkenini olarak -p 8080:80ekleyin:

docker run -p 8080:80 -it <DOCKER_ID>/azurefunctionsimage:v1.0.0

Görüntü yerel kapsayıcıda başladıktan sonra, öncekiyle aynı karşılama iletisini görüntülemesi gereken öğesine göz atın http://localhost:8080/api/HttpExample. Oluşturduğunuz HTTP ile tetiklenen işlev anonim yetkilendirme kullandığından, erişim anahtarı almak zorunda kalmadan kapsayıcıda çalışan işlevi çağırabilirsiniz. Daha fazla bilgi için bkz . Yetkilendirme anahtarları.

Görüntü yerel kapsayıcıda başladıktan sonra, öncekiyle aynı "hello" iletisini görüntülemesi gereken öğesine gidin http://localhost:8080/api/HttpExample?name=Functions. Oluşturduğunuz HTTP ile tetiklenen işlev anonim yetkilendirme kullandığından, erişim anahtarı almak zorunda kalmadan kapsayıcıda çalışan işlevi çağırabilirsiniz. Daha fazla bilgi için bkz . Yetkilendirme anahtarları.

Kapsayıcıdaki işlev uygulamasını doğruladıktan sonra yürütmeyi durdurmak için Ctrl+C (macOS'ta C Komutu+) tuşlarına basın.

Kapsayıcı görüntüsünü kayıt defterinde yayımlama

Kapsayıcı görüntünüzü bir barındırma ortamına dağıtım için kullanılabilir hale getirmek için kapsayıcı kayıt defterine göndermeniz gerekir.

Azure Container Registry, kapsayıcı görüntülerini ve ilgili yapıtları oluşturmaya, depolamaya ve yönetmeye yönelik özel bir kayıt defteri hizmetidir. Kapsayıcılarınızı Azure hizmetlerinde yayımlamak için özel bir kayıt defteri hizmeti kullanmalısınız.

  1. Kayıt defteri örneğinizde oturum açmak için aşağıdaki komutu kullanın:

    az acr login --name <REGISTRY_NAME>
    

    Önceki komutta değerini Container Registry örneğinizin adıyla değiştirin <REGISTRY_NAME> .

  2. Görüntünüzü kayıt defteri oturum açma sunucunuzun tam adıyla etiketlemek için aşağıdaki komutu kullanın:

    docker tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 
    

    değerini kayıt defteri oturum açma sunucunuzun tam adıyla ve <DOCKER_ID> Docker kimliğiniz ile değiştirin<LOGIN_SERVER>.

  3. Kapsayıcıyı kayıt defteri örneğine göndermek için aşağıdaki komutu kullanın:

    docker push <LOGIN_SERVER>/azurefunctionsimage:v1.0.0
    
  4. İşlevler'in bir kullanıcı adı ve parolayla kayıt defterine bağlanabilmesi için yerleşik yönetici hesabını etkinleştirmek için aşağıdaki komutu kullanın:

    az acr update -n <REGISTRY_NAME> --admin-enabled true
    
  1. İşlevlerin kayıt defterine bağlanması gereken yönetici kullanıcı adını ve parolasını almak için aşağıdaki komutu kullanın:

    az acr credential show -n <REGISTRY_NAME> --query "[username, passwords[0].value]" -o tsv
    

    Önemli

    Yönetici hesabı kullanıcı adı ve parolası önemli kimlik bilgileridir. Bunları güvenli bir şekilde depolayıp genel depo gibi erişilebilir bir konumda saklamayı unutmayın.

İşleviniz için destekleyici Azure kaynakları oluşturma

Kapsayıcınızı Azure'a dağıtmadan önce üç kaynak oluşturmanız gerekir:

Bu öğeleri oluşturmak için aşağıdaki komutları kullanın.

  1. Henüz yapmadıysanız Azure'da oturum açın.

    Komutu sizi az login Azure hesabınızda oturum açar. Hesabınızla ilişkili birden fazla aboneliğiniz olduğunda kullanın az account set .

  2. Azure CLI'yi en son sürüme güncelleştirmek için aşağıdaki komutu çalıştırın:

    az upgrade
    

    Azure CLI sürümünüz en son sürüm değilse bir yükleme başlar. Yükseltmenin şekli işletim sisteminize bağlıdır. Yükseltme tamamlandıktan sonra devam edebilirsiniz.

  3. Azure Container Apps uzantısını yükselten ve Container Apps için gereken ad alanlarını kaydeden aşağıdaki komutları çalıştırın:

    az extension add --name containerapp --upgrade -y
    az provider register --namespace Microsoft.Web 
    az provider register --namespace Microsoft.App 
    az provider register --namespace Microsoft.OperationalInsights 
    
  4. adlı AzureFunctionsContainers-rgbir kaynak grubu oluşturun.

    az group create --name AzureFunctionsContainers-rg --location eastus
    

    Bu az group create komut, Doğu ABD bölgesinde bir kaynak grubu oluşturur. Bunun yerine, az account list-locations komutundan döndürülen kullanılabilir bir bölge kodunu kullanarak yakınınızda bir bölge kullanmak istiyorsanız. Sonraki komutları yerine özel bölgenizi eastuskullanacak şekilde değiştirmeniz gerekir.

  5. İş yükü profilleri etkinken Azure Container App ortamı oluşturun.

    az containerapp env create --name MyContainerappEnvironment --enable-workload-profiles --resource-group AzureFunctionsContainers-rg --location eastus
    

    Bu komutun tamamlanması 10 dakika kadar sürebilir.

  6. Kaynak grubunuz ve bölgenizde genel amaçlı bir depolama hesabı oluşturun.

    az storage account create --name <STORAGE_NAME> --location eastus --resource-group AzureFunctionsContainers-rg --sku Standard_LRS
    

    az storage account create komutu depolama hesabını oluşturur.

    Önceki örnekte değerini size uygun ve Azure Depolama'da benzersiz bir adla değiştirin<STORAGE_NAME>. Depolama adları yalnızca 3 ile 24 karakter arasında sayı ve küçük harf içermelidir. Standard_LRSİşlevler tarafından desteklenen genel amaçlı bir hesap belirtir.

  7. Devam etmeden önce, ortamınızın hazır olduğunu doğrulamak için bu komutu kullanın.

    az containerapp env show -n MyContainerappEnvironment -g AzureFunctionsContainers-rg
    

Görüntüyle Azure'da işlev uygulaması oluşturma ve yapılandırma

Azure'daki bir işlev uygulaması, Azure Container Apps ortamınızda işlevlerinizin yürütülmesini yönetir. Bu bölümde, bir Container Apps ortamındaki bir kapsayıcı kayıt defterindeki bir görüntüden işlev uygulaması oluşturmak için önceki bölümdeki Azure kaynaklarını kullanacaksınız. Ayrıca yeni ortamı gerekli Azure Depolama hesabına bir bağlantı dizesi ile yapılandırabilirsiniz.

az functionapp create Komutunu kullanarak Azure Container Apps tarafından desteklenen yeni yönetilen ortamda bir işlev uygulaması oluşturun:

az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime dotnet-isolated --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime node --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime java --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime powershell --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime python --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime node --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-server <LOGIN_SERVER> --registry-username <REGISTRY_NAME> --registry-password <ADMIN_PASSWORD> 

komutunda az functionapp create --environment parametresi Container Apps ortamını, parametresi ise --image işlev uygulaması için kullanılacak görüntüyü belirtir. Bu örnekte değerini depolama hesabı için önceki bölümde kullandığınız adla değiştirin <STORAGE_NAME> . Ayrıca değerini size uygun genel olarak benzersiz bir adla, <LOGIN_SERVER> tam Container Registry sunucunuzla, <REGISTRY_NAME> hesabın kayıt defteri adıyla ve <ADMIN_PASSWORD> yönetici hesabınızın parolasıyla değiştirin<APP_NAME>.

Önemli

Yönetici hesabı kullanıcı adı ve parolası önemli kimlik bilgileridir. Bunları güvenli bir şekilde depolayıp genel depo gibi erişilebilir bir konumda saklamayı unutmayın.

Belirtilmesi --workload-profile-name "Consumption" , uygulamanızı varsayılan Consumption iş yükü profilini kullanarak bir ortamda oluşturur ve bu da Bir Container Apps Tüketim planında çalışmakla aynı maliyete sahiptir. İşlev uygulamasını ilk oluşturduğunuzda, ilk görüntüyü kayıt defterinizden çeker.

Bu noktada, işlevleriniz bir Container Apps ortamında çalışır ve gerekli uygulama ayarları zaten eklenmiştir. Gerektiğinde, işlevler uygulamanıza İşlevler için standart şekilde başka ayarlar ekleyebilirsiniz. Daha fazla bilgi için bkz . Uygulama ayarlarını kullanma.

İpucu

İşlev kodunuzda sonraki değişiklikleri yaptığınızda kapsayıcıyı yeniden oluşturmanız, görüntüyü kayıt defterinde yeniden yayımlamanız ve işlev uygulamasını yeni görüntü sürümüyle güncelleştirmeniz gerekir. Daha fazla bilgi için bkz . Kayıt defterinde bir görüntüyü güncelleştirme

Azure'da işlevlerinizi doğrulama

Görüntü Azure'daki işlev uygulamanıza dağıtıldığında artık HTTP istekleri aracılığıyla işlevi çağırabilirsiniz.

  1. Yeni işlevinizin URL'sini almak için aşağıdaki az functionapp function show komutu çalıştırın:

    az functionapp function show --resource-group AzureFunctionsContainers-rg --name <APP_NAME> --function-name HttpExample --query invokeUrlTemplate 
    

    değerini işlev uygulamanızın adıyla değiştirin <APP_NAME> .

  1. Sorgu dizesini ?name=Functionsekleyerek işlev uç noktasını çağırmak HttpExample için az önce aldığınız URL'yi kullanın.
  1. İşlev uç noktasını çağırmak için az önce aldığınız URL'yi HttpExample kullanın.

Bu URL'ye gittiğinizde, tarayıcının işlevi yerel olarak çalıştırdığınızdakine benzer bir çıkış görüntülemesi gerekir.

İstek URL'si şuna benzer olmalıdır:

https://myacafunctionapp.kindtree-796af82b.eastus.azurecontainerapps.io/api/httpexample?name=functions

https://myacafunctionapp.kindtree-796af82b.eastus.azurecontainerapps.io/api/httpexample

Kaynakları temizleme

Bu makalede oluşturduğunuz kaynakları kullanarak Azure İşlevi ile çalışmaya devam etmek istiyorsanız, tüm bu kaynakları yerinde bırakabilirsiniz.

Bu işlev uygulaması dağıtımıyla çalışmayı bitirdiğinizde, bu gruptaki AzureFunctionsContainers-rg tüm kaynakları temizlemek için kaynak grubunu silin:

az group delete --name AzureFunctionsContainers-rg

Sonraki adımlar