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. Container Apps'te işlev uygulaması kapsayıcılarını barındırma desteği şu anda önizleme aşamasındadır. 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 Core Tools 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, dağıtımı yeni görüntüyü kullanacak şekilde güncelleştirmeniz gerekir. Aşağıdaki örnek, işlev uygulamasını yeni görüntüyü kullanacak şekilde güncelleştirir:

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 . İşlev uygulamanızı kapsayıcıda 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. 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.

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

  1. Barındırma seçenekleri ve planları bölümünde İşlevler Premium'u seçin.

    Screenshot of the Basics tab in the Azure portal when creating a function app for hosting a container in a Functions Premium plan.

    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.

*Uygulama adı, Azure Container Apps ortamında benzersiz olmalıdır. Önizlemede tüm bölgeler desteklenmez. Daha fazla bilgi için bkz . Container Apps barındırma ile ilgili önemli noktalar.

  1. Barındırma seçenekleri ve planları bölümünde Azure Container Apps Ortam planı'nı seçin.

    Portal create Basics tab for a containerized function app hosted in Azure Container Apps.

    Bu, işlev uygulaması kapsayıcınızı barındırmak için yeni bir Azure Container Apps Ortamı kaynağı oluşturur. Daha fazla bilgi için bkz. Azure İşlevleri barındıran Azure Container Apps.

    Varsayılan olarak ortam, maliyetleri en aza indirmek için alanlar arası yedeklilik olmadan bir Tüketim planında oluşturulur. Ayrıca mevcut bir Container Apps ortamını da seçebilirsiniz. Ortamlar hakkında bilgi edinmek için bkz . Azure Container Apps ortamları.

  1. 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 Uygulama Analizler örneğini kullanmayı da seçebilirsiniz.
  1. Dağıtım sekmesini seçin ve Hızlı başlangıç görüntüsünü kullan'ın seçimini kaldırın. Bunu yapmazsanız işlev uygulaması, işlev uygulama dilinizin temel görüntüsünden dağıtılır.

  2. 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.

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

  4. 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.

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

  2. 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.

  3. İş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.

  4. 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.

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.

Azure CLI'yi kullanarak veya Azure portalında iş yükü profilleri 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. Bunu, komutun parametresini --workload-profile-nameaz functionapp create kullanarak yaparsınız, örneğin şu örnekte:

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> .

Ayrıca değerini, profilin izin verdiği en yüksek sayıya kadar en az 0,5 olan istediğiniz sanal CPU sayısıyla 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.

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

Ö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.

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.

    Screenshot showing how to add the webhook in your Docker Hub window.

  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ğlan 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 .

    Screenshot that shows Linux top command running in an SSH session.

Sonraki adımlar

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