Kapsayıcılar ve Azure İşlevleri ile çalışma

Bu makalede, Azure İşlevleri'nin Azure Container Apps ortamında çalışan kapsayıcılı işlev uygulamalarıyla çalışmak için sağladığı destek gösterilmektedir. Daha fazla bilgi için bkz. Azure İşlevleri barındıran Azure Container Apps.

Bu makalede, Azure İşlevleri'nin Linux kapsayıcılarında çalışan işlev uygulamalarıyla çalışmak için sağladığı destek gösterilmektedir.

Makalenin üst kısmında kapsayıcılı işlev uygulamanız için barındırma ortamını seçin.

Doğrudan geçmek istiyorsanız, aşağıdaki makalede Linux kapsayıcısında çalışan ilk işlevinizi oluşturma ve görüntüyü bir kapsayıcı kayıt defterinden desteklenen bir Azure barındırma hizmetine dağıtma adımları gösterilmektedir:

Azure Container Apps'te ilk kapsayıcılı Azure İşlevleri oluşturma

Azure Container Apps dağıtımları hakkında daha fazla bilgi edinmek için bkz. Azure İşlevleri barındıran Azure Container Apps.

Kapsayıcılı işlev uygulamaları oluşturma

İşlevler, işlev uygulamalarınızı oluşturup koruduğunuz Linux kapsayıcıları olarak dağıtmayı ve çalıştırmayı kolaylaştırır. İşlevler, kapsayıcılı işlev uygulamaları oluştururken kullanabileceğiniz dile özgü temel görüntüler kümesini korur.

Önemli

Kendi kapsayıcılarınızı oluştururken kapsayıcınızın temel görüntüsünü desteklenen en son temel görüntüye güncel tutmanız gerekir. Azure İşlevleri için desteklenen temel görüntüler dile özgü olup Azure İşlevleri temel görüntü depolarında bulunur.

İşlevler ekibi, bu temel görüntüler için aylık güncelleştirmeleri yayımlamaya kararlıdır. Düzenli güncelleştirmeler, hem İşlevler çalışma zamanı hem de diller için en son ikincil sürüm güncelleştirmelerini ve güvenlik düzeltmelerini içerir. Kapsayıcınızı düzenli olarak en son temel görüntüden güncelleştirmeli ve kapsayıcınızın güncelleştirilmiş sürümünü yeniden dağıtmalısınız.

Komut satırından yerel kapsayıcılı işlev uygulamasını oluşturma ve görüntüyü bir kapsayıcı kayıt defterinde yayımlama hakkında tam bir örnek için bkz . Yerel kapsayıcıda işlev uygulaması oluşturma.

Dockerfile oluşturma

İşlevler araçları, işlev kodu projenizle bir Dockerfile oluşturan bir Docker seçeneği sağlar. Doğru temel görüntüden (dil ve sürüm) türetilen bir kapsayıcıda işlevlerinizi oluşturmak için docker ile bu dosyayı kullanabilirsiniz.

Dockerfile oluşturma yönteminiz, projenizi nasıl oluşturduğunuza bağlıdır.

Tam bir örnek için bkz . Yerel kapsayıcıda işlev uygulaması oluşturma.

bir kapsayıcıda işlev uygulamanızı oluşturma

Kod projenizde İşlevler tarafından oluşturulan bir Dockerfile ile Docker'ı kullanarak yerel bilgisayarınızda kapsayıcılı işlev uygulamasını oluşturabilirsiniz. Aşağıdaki docker build komut, yerel dizindeki projeden kapsayıcılı işlevlerinizin bir görüntüsünü oluşturur:

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

Kapsayıcının nasıl oluşturulacağını gösteren bir örnek için bkz . Kapsayıcı görüntüsünü derleme ve yerel olarak doğrulama.

Kayıt defterindeki bir görüntüyü güncelleştirme

İşlev kodu projenizde değişiklik yaptığınızda veya en son temel görüntüye güncelleştirmeniz gerektiğinde, kapsayıcıyı yerel olarak yeniden oluşturmanız ve güncelleştirilmiş görüntüyü seçtiğiniz kapsayıcı kayıt defterine yeniden yayımlamanız gerekir. Aşağıdaki komut, görüntüyü kök klasörden güncelleştirilmiş bir sürüm numarasıyla yeniden oluşturur ve kayıt defterinize gönderir:

az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .

değerini Container Registry örneğinizle ve <LOGIN_SERVER> oturum açma sunucusu adıyla değiştirin<REGISTRY_NAME>.

Bu noktada, yeni görüntüyü kullanmak için var olan bir dağıtımı güncelleştirmeniz gerekir. İşlev uygulamasını, Azure CLI'yi kullanarak veya Azure portalında yeni görüntüyü kullanacak şekilde güncelleştirebilirsiniz:

az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>

Bu örnekte, <IMAGE_NAME> sürüme sahip yeni görüntünün tam adıdır. Özel kayıt defterleri için bir kullanıcı adı ve parola girmeniz gerekir. Bu kimlik bilgilerini güvenli bir şekilde depolayın.

Kapsayıcıları kullanarak Azure portal oluşturma

Azure portalında bir işlev uygulaması oluşturduğunuzda, işlev uygulamasını kapsayıcı kayıt defterindeki bir görüntüden dağıtmayı seçebilirsiniz. Kapsayıcı kayıt defterinde kapsayıcılı işlev uygulaması oluşturmayı öğrenmek için bkz . kapsayıcıda işlev uygulamanızı oluşturma.

Aşağıdaki adımlar, kapsayıcı kayıt defterinden mevcut bir kapsayıcılı işlev uygulamasını oluşturur ve dağıtır.

  1. Azure portalı menüsünde veya Giriş sayfasında Kaynak oluştur'u seçin.

  2. Yeni sayfasında İşlem>İşlevi Uygulaması'nı seçin.

  3. Barındırma seçeneği seçin'in altında Premium plan>Seç'i seçin.

    Bu, Premium planında dinamik ölçeklendirmeyi destekleyen Azure İşlevleri tarafından barındırılan bir işlev uygulaması oluşturur. App Service planında da çalıştırmayı seçebilirsiniz, ancak bu tür bir ayrılmış planda işlev uygulamanızın ölçeklendirmesini yönetmeniz gerekir.

  4. Temel Bilgiler sayfasında, aşağıdaki tabloda belirtilen işlev uygulaması ayarlarını kullanın:

    Ayar Önerilen değer Açıklama
    Abonelik Aboneliğiniz İşlev uygulamanızı oluşturduğunuz abonelik.
    Kaynak Grubu myResourceGroup İşlev uygulamanızı oluşturduğunuz yeni kaynak grubunun adı. Mevcut bir kaynak grubunda yeni işlev uygulamaları oluştururken bilinen sınırlamalar olduğundan bir kaynak grubu oluşturmanız gerekir.
    İşlev Uygulamasının adı Benzersiz ad* Yeni işlev uygulamanızı tanımlayan ad. Geçerli karakterler şunlardır: a-z (büyük/küçük harf duyarsız), 0-9 ve -.
    Kod veya kapsayıcı görüntüsü dağıtmak istiyor musunuz? Kapsayıcı görüntüsü Bir kayıt defterinden kapsayıcılı işlev uygulaması dağıtma. Kayıt defterinde işlev uygulaması oluşturmak için bkz . Yerel kapsayıcıda işlev uygulaması oluşturma.
    Bölge Tercih edilen bölge Size yakın veya işlevlerinizin erişebileceği diğer hizmetlere yakın bir bölge seçin.
    Linux planı Yeni plan (varsayılan) Uygulamanızı barındırmak için yeni bir Premium plan oluşturur. Ayrıca mevcut bir premium planı da seçebilirsiniz.
    Fiyatlandırma planı Elastik Premium EP1 EP1 en uygun fiyatlı plandır. Gerekirse daha büyük bir plan seçebilirsiniz.
    Alanlar Arası Yedeklilik Devre dışı Bu özelliğe üretim dışı bir uygulamada ihtiyacınız yoktur.

    *Uygulama adı, barındırılan tüm Azure İşlevleri uygulamalar arasında genel olarak benzersiz olmalıdır.

  5. Depolama sekmesinde yeni bir depolama hesabı oluşturmanın varsayılan seçeneklerini ve İzleme sekmesinde yeni bir Application Insight örneğini kabul edin. Ayrıca mevcut bir depolama hesabını veya Application Insights örneğini kullanmayı da seçebilirsiniz.

  6. Uygulama yapılandırma seçimlerini gözden geçirmek için Gözden Geçir + oluştur'u seçin.

  7. Gözden geçir ve oluştur sayfasında ayarlarınızı gözden geçirin ve ardından oluştur'u seçerek işlev uygulamasını varsayılan bir temel görüntü kullanarak sağlayın.

  8. İşlev uygulaması kaynağınız oluşturulduktan sonra Kaynağa git'i seçin ve işlev uygulaması sayfasında Dağıtım merkezi'ni seçin.

  9. Dağıtım merkezinde, kapsayıcı kayıt defterinizi görüntünün kaynağı olarak bağlayabilirsiniz. Ayrıca, kayıt defterindeki kapsayıcınızda güncelleştirmelerin daha sağlam bir şekilde sürekli dağıtımı için GitHub Actions'ı veya Azure Pipelines'ı etkinleştirebilirsiniz.

Kapsayıcıları kullanarak Azure portal oluşturma

Azure portalında Container Apps tarafından barındırılan bir işlev uygulaması oluşturduğunuzda, işlev uygulamanızı kapsayıcı kayıt defterindeki bir görüntüden dağıtmayı seçebilirsiniz. Kapsayıcı kayıt defterinde kapsayıcılı işlev uygulaması oluşturmayı öğrenmek için bkz . kapsayıcıda işlev uygulamanızı oluşturma.

Aşağıdaki adımlar, kapsayıcı kayıt defterinden mevcut bir kapsayıcılı işlev uygulamasını oluşturur ve dağıtır.

  1. Azure portalı menüsünde veya Giriş sayfasında Kaynak oluştur'u seçin.

  2. Yeni sayfasında İşlem>İşlevi Uygulaması'nı seçin.

  3. Barındırma seçeneği belirtin altında Kapsayıcı Uygulamaları ortamı>Seç'i seçin.

  4. Temel Bilgiler sayfasında, aşağıdaki tabloda belirtilen işlev uygulaması ayarlarını kullanın:

    Ayar Önerilen değer Açıklama
    Abonelik Aboneliğiniz İşlev uygulamanızı oluşturduğunuz abonelik.
    Kaynak Grubu myResourceGroup İşlev uygulamanızı oluşturduğunuz yeni kaynak grubunun adı. Mevcut bir kaynak grubunda yeni işlev uygulamaları oluştururken bilinen sınırlamalar olduğundan bir kaynak grubu oluşturmanız gerekir.
    İşlev Uygulamasının adı Benzersiz ad* Yeni işlev uygulamanızı tanımlayan ad. Geçerli karakterler şunlardır: a-z (büyük/küçük harf duyarsız), 0-9 ve -.
    Bölge Tercih edilen bölge Size yakın veya işlevlerinizin erişebileceği diğer hizmetlere yakın bir bölge seçin.

    *Uygulama adı, Azure Container Apps ortamında benzersiz olmalıdır.

  5. Hala Temel Bilgiler sayfasında, Azure Container Apps ortamı için önerilen yeni ortamı kabul edin. Maliyetleri en aza indirmek için, yeni varsayılan ortam Tüketim + Ayrılmış içinde varsayılan iş yükü profiliyle ve alanlar arası yedeklilik olmadan oluşturulur. Daha fazla bilgi için bkz. Azure İşlevleri barındıran Azure Container Apps.

    Ayrıca mevcut bir Container Apps ortamını kullanmayı da seçebilirsiniz. Özel ortam oluşturmak için bunun yerine Yeni oluştur'u seçin. Kapsayıcı Uygulamaları Ortamı Oluştur sayfasında, gereksiz iş yükü profilleri ekleyebilir veya alanlar arası yedekliliği etkinleştirebilirsiniz. Ortamlar hakkında bilgi edinmek için bkz . Azure Container Apps ortamları.

  6. Dağıtım sekmesini seçin ve Hızlı başlangıç görüntüsünü kullan'ın seçimini kaldırın. Aksi takdirde işlev uygulaması, işlev uygulama dilinizin temel görüntüsünden dağıtılır.

  7. Genel veya özel görüntü türünüzü seçin. Azure Container Registry veya başka bir özel kayıt defteri kullanıyorsanız Özel'i seçin. Kayıt defteri ön eki de dahil olmak üzere Görüntü adını sağlayın. Özel kayıt defteri kullanıyorsanız, görüntü kayıt defteri kimlik doğrulaması kimlik bilgilerini sağlayın. Genel ayarı yalnızca Docker Hub'da genel olarak depolanan görüntüleri destekler.

  8. Kapsayıcı kaynağı ayırma'nın altında istediğiniz CPU çekirdeği sayısını ve kullanılabilir belleği seçin. Ortamınızda başka iş yükü profilleri ekleniyorsa, bilinmeyen bir İş Yükü profili seçebilirsiniz. Bu sayfadaki seçenekler uygulamanızı barındırma maliyetini etkiler. Olası maliyetlerinizi tahmin etmek için Container Apps fiyatlandırma sayfasına bakın.

  9. Uygulama yapılandırma seçimlerini gözden geçirmek için Gözden Geçir + oluştur'u seçin.

  10. Gözden geçir ve oluştur sayfasında ayarlarınızı gözden geçirin ve ardından Oluştur'u seçerek işlev uygulamasını sağlayın ve kapsayıcı görüntünüzü kayıt defterinden dağıtın.

Azure İşlevleri'da resimlerle çalışma

İşlev uygulaması kapsayıcınız bir kayıt defterinden dağıtıldığında, İşlevler kaynak görüntü hakkındaki bilgileri korur.

Görüntü hakkında veri almak veya kullanılan dağıtım görüntüsünü değiştirmek için aşağıdaki komutları kullanın:

Container Apps iş yükü profilleri

İş yükü profilleri, dağıtım kaynaklarınızı daha iyi denetlemenize olanak sağlayan Container Apps özelliğidir. Azure Container Apps'te Azure İşlevleri iş yükü profillerini de destekler. Daha fazla bilgi için bkz . Azure Container Apps'te iş yükü profilleri.

Ayrıca, uygulamanıza ayrılan CPU ve bellek kaynaklarının miktarını da ayarlayabilirsiniz.

Azure CLI'yi kullanarak veya Azure portalında hem iş yükü profilleri hem de kaynak ayırmaları oluşturabilir ve yönetebilirsiniz.

Kapsayıcı uygulaması ortamınızı oluştururken iş yükü profillerini etkinleştirirsiniz. Örnek için bkz . Profilde kapsayıcı uygulaması oluşturma.

Ortamınızda profil ekleyebilir, düzenleyebilir ve silebilirsiniz. Örnek için bkz . Profil ekleme.

İş yükü profillerinin etkinleştirildiği bir ortamda kapsayıcılı işlev uygulaması oluşturduğunuzda, çalıştırılacak profili de belirtmeniz gerekir. Bu örnekte olduğu gibi komutunun --workload-profile-name parametresini az functionapp create kullanarak profili belirtirsiniz:

az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime <LANGUAGE_STACK> --image <IMAGE_URI> --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE> 

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 değiştirin <APP_NAME> .

Uygulamanıza ayrılan kaynakları ayarlamak için değerini istediğiniz sanal CPU sayısıyla değiştirin ve değerini profilin izin verdiği en yüksek değere kadar en az 0,5 ile değiştirin <CPU_COUNT> . için <MEMORY_SIZE>1 GB'tan profilin izin verdiği maksimuma kadar ayrılmış bir bellek miktarı seçin.

Ayrılmış kaynakları ve uygulamanız tarafından kullanılan iş yükü profilini yönetmek için komutunu kullanabilirsiniz az functionapp container set .

az functionapp container set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --workload-profile-name  <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE> 

Uygulama ayarları

Azure İşlevleri, kapsayıcılı işlev uygulamaları için uygulama ayarlarıyla standart şekilde çalışmanıza olanak tanır. Daha fazla bilgi için bkz . Uygulama ayarlarını kullanma.

Azure'a sürekli dağıtımı etkinleştirme

Kapsayıcılı işlev uygulamanızı Azure Container Apps'te barındırdığınızda, kaynak kod deposundan sürekli dağıtım ayarlamanın iki yolu vardır:

Kapsayıcı kayıt defterindeki görüntü değişikliklerine göre kapsayıcıları sürekli olarak dağıtamazsınız. Bunun yerine bu kaynak kodu tabanlı sürekli dağıtım işlem hatlarını kullanmanız gerekir.

Azure'a sürekli dağıtımı etkinleştirme

Önemli

Kapsayıcınız Elastik Premium planında çalıştırılırken web kancası tabanlı dağıtım şu anda desteklenmiyor. Bu bölümde açıklanan sürekli dağıtım yöntemini kullanmanız gerekiyorsa kapsayıcınızı bir App Service planına dağıtın. Elastik Premium planında çalışırken, depodaki kapsayıcınızda güncelleştirmeler yaptığınızda uygulamanızı el ile yeniden başlatmanız gerekir.

Ayrıca Azure Pipelines veya GitHub Actions kullanarak bir kaynak kodu deposundan sürekli dağıtım yapılandırabilirsiniz.

Kayıt defterindeki görüntüyü her güncelleştirdiğinizde Azure İşlevleri'nin görüntü dağıtımınızı otomatik olarak güncelleştirmesini etkinleştirebilirsiniz.

  1. Sürekli dağıtımı etkinleştirmek ve web kancası URL'sini almak için aşağıdaki komutu kullanın:

    az functionapp deployment container config --enable-cd --query CI_CD_URL --output tsv --name <APP_NAME> --resource-group AzureFunctionsContainers-rg
    

    komutu az functionapp deployment container config sürekli dağıtımı etkinleştirir ve dağıtım web kancası URL'sini döndürür. Komutunu kullanarak az functionapp deployment container show-cd-url bu URL'yi daha sonra alabilirsiniz.

    Daha önce olduğu gibi işlevini işlev uygulama adınızla değiştirin <APP_NAME> .

  2. Dağıtım web kancası URL'sini panoya kopyalayın.

  3. Docker Hub'ı açın, oturum açın ve gezinti çubuğunda Depolar'ı seçin. Resmi bulup seçin, Web kancaları sekmesini seçin, bir Web kancası adı belirtin, URL'nizi Web Kancası URL'sine yapıştırın ve ardından Oluştur'u seçin.

    Docker Hub pencerenize web kancasının nasıl ekleneceğini gösteren ekran görüntüsü.

  4. Web kancası ayarlandığında, Azure İşlevleri Docker Hub'da görüntünüzü her güncelleştirdiğinizde yeniden dağıtır.

SSH bağlantılarını etkinleştirme

SSH, kapsayıcı ile istemci arasında güvenli iletişime olanak tanır. SSH etkinleştirildiğinde App Service Gelişmiş Araçları'nı (Kudu) kullanarak kapsayıcınıza bağlanabilirsiniz. SSH kullanarak kapsayıcınıza kolay bağlantı sağlamak için Azure İşlevleri, SSH'nin zaten etkin olduğu bir temel görüntü sağlar. Yalnızca Dockerfile'ınızı düzenlemeniz, ardından görüntüyü yeniden oluşturmanız ve yeniden dağıtmanız gerekir. Ardından Gelişmiş Araçlar (Kudu) aracılığıyla kapsayıcıya bağlanabilirsiniz.

  1. Dockerfile dosyanızda aşağıdaki örnekte olduğu gibi dizeyi -appservice yönergenizdeki FROM temel görüntüye ekleyin:

    FROM mcr.microsoft.com/azure-functions/node:4-node18-appservice
    

    Bu örnek, Node.js sürüm 18 temel görüntüsünün SSH özellikli sürümünü kullanır. SSH özellikli temel görüntünün en son sürümünü kullandığınızı doğrulamak için Azure İşlevleri temel görüntü depolarını ziyaret edin.

  2. Komutunu kullanarak docker build görüntüyü yeniden derleyin, aşağıdaki örnekte olduğu gibi öğesini Docker Hub hesap kimliğiniz ile değiştirin <DOCKER_ID> .

    docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
    
  3. Güncelleştirilmiş görüntüyü Docker Hub'a gönderin. Bu işlem ilk gönderimden çok daha kısa sürer. Görüntünün yalnızca güncelleştirilmiş kesimlerinin şimdi karşıya yüklenmesi gerekir.

    docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0
    
  4. Azure İşlevleri görüntüyü otomatik olarak işlev uygulamanıza yeniden dağıtır; işlem bir dakikadan kısa sürede gerçekleşir.

  5. Tarayıcıda açın https://<app_name>.scm.azurewebsites.net/ ve değerini benzersiz adınız ile değiştirin <app_name> . Bu URL, işlev uygulaması kapsayıcınız için Gelişmiş Araçlar (Kudu) uç noktasıdır.

  6. Azure hesabınızda oturum açın ve kapsayıcıyla bağlantı kurmak için SSH'yi seçin. Azure kapsayıcı görüntüsünü güncelleştirmeye devam ediyorsa bağlanma işlemi birkaç dakika sürebilir.

  7. Kapsayıcınızla bir bağlantı kurulduktan sonra, şu anda çalışan işlemleri görüntülemek için komutunu çalıştırın top .

    SSH oturumunda çalışan Linux top komutunu gösteren ekran görüntüsü.

Aşağıdaki makaleler kapsayıcıları dağıtma ve yönetme hakkında daha fazla bilgi sağlar: