Azure Arc'ta ilk kapsayıcılı Azure İşlevleri oluşturma (önizleme)
Bu makalede, Linux kapsayıcısında çalışan bir işlev uygulaması oluşturacak ve bunu bir kapsayıcı kayıt defterinden Azure Arc özellikli kubernetes kümesine dağıtacaksınız. Kendi kapsayıcınızı oluşturduğunuzda, işlev uygulamanız için yürütme ortamını özelleştirebilirsiniz. Daha fazla bilgi edinmek için bkz . Azure Arc'ta App Service, İşlevler ve Logic Apps.
Not
Azure Arc özellikli Kubernetes kümesine özel kapsayıcı dağıtma desteği şu anda önizleme aşamasındadır.
Ayrıca, önce kapsayıcı oluşturmadan işlevlerinizi Azure Arc özellikli bir Kubernetes kümesinde yayımlayabilirsiniz. Daha fazla bilgi edinmek için bkz. Azure Arc'ta ilk işlevinizi oluşturma (önizleme)
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:
Azure İşlevleri Core Tools sürüm 4.0.5198'i veya sonraki bir sürümü yükleyin.
- Azure İşlevleri Core Tools sürüm 4.x'i yükleyin.
- Azure İşlevleri tarafından desteklenen bir Node.js sürümü yükleyin.
- Azure İşlevleri tarafından desteklenen bir Python sürümü yükleyin.
Java Geliştirici Seti'nin Azure İşlevleri tarafından desteklenen bir sürümünü yükleyin.
Apache Maven sürüm 3.0 veya üzerini 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ı .venv
bir 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 |
---|---|---|
groupId | com.fabrikam |
Java için paket adlandırma kurallarını izleyerek projenizi tüm projelerde benzersiz olarak tanımlayan bir değer. |
artifactId | 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=Functions
gidin. Tarayıcının, sorgu parametresine sağlanan değeri geri Functions
dö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 azurefunctionsimage
v1.0.0
etiketleyin. <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:80
ekleyin:
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.
Geçerli Azure kimlik bilgilerinizi kullanarak kayıt defteri örneğinizde oturum açmak için şu komutu kullanın:
az acr login --name <REGISTRY_NAME>
Önceki komutta değerini Container Registry örneğinizin adıyla değiştirin
<REGISTRY_NAME>
.Görüntünüzü kayıt defteri oturum açma sunucunuzun tam adıyla etiketlemek için şu 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>
.Kapsayıcıyı kayıt defteri örneğine göndermek için şu komutu kullanın:
docker push <LOGIN_SERVER>/azurefunctionsimage:v1.0.0
App Service Kubernetes ortamı oluşturma
Başlamadan önce, Azure Arc özellikli Kubernetes kümesi için app service Kubernetes ortamı oluşturmanız gerekir.
Not
Ortamı oluştururken hem özel konum adını hem de özel konumu içeren kaynak grubunun adını not aldığınızdan emin olun. İşlev uygulamanızı ortamda oluştururken ihtiyacınız olacak özel konum kimliğini bulmak için bunları kullanabilirsiniz.
Ortamı siz oluşturmadıysanız küme yöneticinize başvurun.
Azure CLI uzantıları ekleme
Azure Cloud Shell'de Bash ortamını başlatın.
Bu CLI komutları henüz çekirdek CLI kümesinin parçası olmadığından, bunları aşağıdaki komutlarla ekleyin:
az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube
Azure kaynakları oluşturma
Kapsayıcınızı yeni App Service Kubernetes ortamınıza dağıtabilmeniz için önce iki kaynak daha oluşturmanız gerekir:
- Depolama hesabı. Bu makale bir depolama hesabı oluştururken, bazı durumlarda depolama hesabı gerekli olmayabilir. Daha fazla bilgi için depolama konusunda dikkat edilmesi gerekenler makalesindeki Azure Arc özellikli kümeler bölümüne bakın.
- Kapsayıcınızı çalıştırma bağlamını sağlayan bir işlev uygulaması. İşlev uygulaması App Service Kubernetes ortamında çalışır ve yerel işlev projenizle eşlenir. İşlev uygulaması, kaynakların daha kolay yönetilmesi, dağıtılması ve paylaşılması için işlevleri bir mantıksal birim olarak gruplandırmanıza olanak tanır.
Not
İşlev uygulamaları, Ayrılmış (App Service) planındaki bir App Service Kubernetes ortamında çalışır. İşlev uygulamanızı mevcut bir plan olmadan oluşturduğunuzda, sizin için bir plan oluşturulur.
Depolama hesabı oluşturma
Kaynak grubunuz ve bölgenizde genel amaçlı bir depolama hesabı oluşturmak için az storage account create komutunu kullanın:
az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS
Not
Bazı durumlarda depolama hesabı gerekli olmayabilir. Daha fazla bilgi için depolama konusunda dikkat edilmesi gerekenler makalesindeki Azure Arc özellikli kümeler bölümüne bakın.
Önceki örnekte değerini size uygun ve Azure Depolama'da benzersiz bir adla değiştirin <STORAGE_NAME>
. Adlar yalnızca üç ile 24 karakter arasında sayı ve küçük harf içermelidir. Standard_LRS
İşlevler tarafından desteklenen genel amaçlı bir hesap belirtir. Değer --location
standart bir Azure bölgesidir.
İşlev uygulaması oluşturma
Ortamda yeni bir işlev uygulaması oluşturmak için az functionapp create komutunu çalıştırın.
az functionapp create --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --resource-group AzureFunctionsContainers-rg --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD>
Bu örnekte değerini App Service Kubernetes ortamı için belirlediğiniz özel konumun kimliğiyle değiştirin <CUSTOM_LOCATION_ID>
. Ayrıca değerini önceki adımda kullandığınız hesabın adıyla, <APP_NAME>
genel olarak benzersiz bir adla ve <LOGIN_SERVER>
<DOCKER_ID>
sırasıyla Docker Hub hesap kimliğinizle veya Container Registry sunucunuzla değiştirin<STORAGE_NAME>
. Özel bir kapsayıcı kayıt defterinden dağıtım yaparken, görüntü adı kayıt defterinin URL'sini gösterir.
İşlev uygulamasını ilk oluşturduğunuzda, ilk görüntüyü Docker Hub'ınızdan çeker.
Gerekli uygulama ayarlarını belirleme
Depolama hesabı bağlantı dizesi için bir uygulama ayarı oluşturmak için aşağıdaki komutları çalıştırın:
storageConnectionString=$(az storage account show-connection-string --resource-group AzureFunctionsContainers-rg --name <STORAGE_NAME> --query connectionString --output tsv)
az functionapp config appsettings set --name <app_name> --resource-group AzureFunctionsContainers-rg --settings AzureWebJobsStorage=$storageConnectionString
Bu kod Cloud Shell'de veya yerel bilgisayarınızda Bash'te çalıştırılmalıdır. değerini depolama hesabının adıyla ve <APP_NAME>
işlev uygulaması adıyla değiştirin<STORAGE_NAME>
.
İşlevi Azure'da çağırma
İşleviniz bir HTTP tetikleyicisi kullandığından, tarayıcıda URL'sine http isteğinde bulunarak veya curl gibi bir araçla çağırabilirsiniz.
Yayımla komutunun çıkışında gösterilen tam Çağırma URL'sini tarayıcı adres çubuğuna kopyalayın ve sorgu parametresini ?name=Functions
ekleyin. Tarayıcı, işlevi yerel olarak çalıştırdığınızda olduğu gibi benzer bir çıkış görüntülemelidir.
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
Bu işlem yalnızca bu makalede oluşturulan kaynakları kaldırır. Temel alınan Azure Arc ortamı yerinde kalır.