Tek kiracılı Azure Logic Apps için DevOps dağıtımı

Şunlar için geçerlidir: Azure Logic Apps (Standart)

Dağıtılmış ve yerel bulut uygulamalarına yönelik eğilim nedeniyle kuruluşlar daha fazla ortamda daha fazla dağıtılmış bileşenle uğraşıyor. Denetim ve tutarlılığı korumak için DevOps araçlarını ve işlemlerini kullanarak ortamlarınızı otomatikleştirebilir ve daha fazla bileşeni daha hızlı ve daha güvenli bir şekilde dağıtabilirsiniz.

Bu makalede, tek kiracılı Azure Logic Apps için geçerli sürekli tümleştirme ve sürekli dağıtım (CI/CD) deneyimi hakkında giriş ve genel bakış sunulmaktadır.

Tek kiracılı ve çok kiracılı

Çok kiracılı Azure Logic Apps'te kaynak dağıtımı, hem mantıksal uygulamalar hem de altyapı için kaynak sağlamayı birleştiren ve işleyen Azure Resource Manager şablonlarını (ARM şablonları) temel alır. Tek kiracılı Azure Logic Apps'te, uygulamalar ve altyapı arasında kaynak sağlamayı ayırabildiğiniz için dağıtım daha kolay hale gelir.

Mantıksal Uygulama (Standart) kaynak türünü kullanarak mantıksal uygulamalar oluşturduğunuzda, iş akışlarınız yeniden tasarlanan tek kiracılı Azure Logic Apps çalışma zamanı tarafından desteklenir. Bu çalışma zamanı, Azure İşlevleri genişletilebilirlik modeli genişletilebilirliğini kullanır ve Azure İşlevleri çalışma zamanında bir uzantı olarak barındırılır. Bu tasarım, mantıksal uygulamalarınız için taşınabilirlik, esneklik ve daha fazla performansa ek olarak Azure İşlevleri platformundan ve Azure App Service ekosisteminden devralınan diğer özellikleri ve avantajları sağlar.

Örneğin, yeniden tasarlanan kapsayıcılı çalışma zamanını ve iş akışlarını mantıksal uygulamanızın bir parçası olarak paketleyebilirsiniz. Mantıksal uygulama kaynaklarınızı derleyen, derleyen ve dağıtmaya hazır yapıtlara sıkıştıran genel adımları veya görevleri kullanabilirsiniz. Uygulamalarınızı dağıtmak için yapıtları konak ortamına kopyalayın ve iş akışlarınızı çalıştırmak için uygulamalarınızı başlatın. Veya zaten bildiğiniz ve kullandığınız araçları ve işlemleri kullanarak yapıtlarınızı dağıtım işlem hatlarıyla tümleştirebilirsiniz. Örneğin, senaryonuz kapsayıcı gerektiriyorsa mantıksal uygulamalarınızı kapsayıcıya alabilir ve bunları mevcut işlem hatlarınızla tümleştirebilirsiniz.

Sanal ağlar ve bağlantı gibi altyapı kaynaklarınızı ayarlamak ve dağıtmak için ARM şablonlarını kullanmaya devam edebilir ve bu kaynakları bu amaçlar için kullandığınız diğer işlemler ve işlem hatlarıyla birlikte ayrı olarak sağlayabilirsiniz.

Standart derleme ve dağıtma seçeneklerini kullanarak, altyapı dağıtımından ayrı olarak uygulama geliştirmeye odaklanabilirsiniz. Sonuç olarak, genel bir uygulama için kullandığınız birçok benzer veya aynı dağıtım seçeneğini uygulayabileceğiniz daha genel bir proje modeli elde edersiniz. Ayrıca uygulama projeleriniz etrafında dağıtım işlem hatları oluşturmak ve üretime yayımlamadan önce gerekli testleri ve doğrulamaları çalıştırmak için daha tutarlı bir deneyimden yararlanabilirsiniz. Hangi teknoloji yığınını kullanırsanız kullanın, kendi seçtiğiniz araçları kullanarak mantıksal uygulamaları dağıtabilirsiniz.

DevOps dağıtım özellikleri

Tek kiracılı Azure Logic Apps, Azure İşlevleri platformundan ve Azure App Service ekosisteminden birçok özelliği ve avantajı devralır. Bu güncelleştirmeler, yepyeni bir dağıtım modeli ve mantıksal uygulama iş akışlarınız için DevOps kullanmanın daha fazla yolunu içerir.

Yerel geliştirme ve test

Azure Logic Apps (Standart) uzantısıyla Visual Studio Code kullandığınızda, Azure'a dağıtım yapmak zorunda kalmadan geliştirme ortamınızda tek kiracılı mantıksal uygulama iş akışlarını yerel olarak geliştirebilir, derleyebilir ve çalıştırabilirsiniz. Senaryonuz kapsayıcı gerektiriyorsa Azure Arc özellikli Logic Apps aracılığıyla oluşturabilir ve dağıtabilirsiniz.

Bu özellik önemli bir geliştirmedir ve Azure'da mevcut ve çalışan bir kaynağa karşı geliştirmenizi gerektiren çok kiracılı modele kıyasla önemli bir avantaj sağlar.

Ayrı endişeler

Tek kiracılı model, uygulama ile temel alınan altyapı arasındaki endişeleri ayırma olanağı sunar. Örneğin, uygulamanızı farklı ortamlara sabit bir yapıt olarak ayrı olarak geliştirebilir, derleyebilir, zipleyebilir ve dağıtabilirsiniz. Mantıksal uygulama iş akışlarında genellikle temel alınan altyapıdan daha sık güncelleştirdiğiniz "uygulama kodu" bulunur. Bu katmanları ayırarak mantıksal uygulamanızın iş akışını oluşturmaya daha fazla odaklanabilir ve gerekli kaynakları birden çok ortamda dağıtmak için daha az çaba harcayabilirsiniz.

Uygulamalar ve altyapı için ayrı dağıtım işlem hatlarını gösteren kavramsal diyagram.

Mantıksal uygulama kaynak yapısı

Çok kiracılı Azure Logic Apps modelinde Tüketim mantıksal uygulaması kaynak yapısı yalnızca tek bir iş akışı içerebilir. Bu birebir ilişki nedeniyle hem mantıksal uygulama hem de iş akışı genellikle eş anlamlı olarak değerlendirilir ve bunlara başvurulur. Ancak, tek kiracılı Azure Logic Apps modelinde Standart mantıksal uygulama kaynak yapısı birden çok iş akışı içerebilir. Bu bire çok ilişkisi, aynı mantıksal uygulamada iş akışlarının diğer kaynakları paylaşabileceği ve yeniden kullanabileceği anlamına gelir. Aynı mantıksal uygulama ve kiracıdaki iş akışları, bu paylaşılan kiracı ve birbirine yakınlık nedeniyle gelişmiş performans da sunar. Bu kaynak yapısı, bir işlev uygulamasının birçok işlevi barındırabileceği Azure İşlevleri benzer şekilde çalışır.

Mantıksal uygulamanızda iş akışlarını, performansı ve ölçeklendirmeyi düzenleme hakkında daha fazla bilgi ve en iyi yöntemler için, tek kiracılı Azure Logic Apps'e genel olarak uygulayabileceğiniz benzer Azure İşlevleri kılavuzunu gözden geçirin.

Mantıksal uygulama proje yapısı

Visual Studio Code'da mantıksal uygulama projenizde aşağıdaki türlerden biri vardır:

  • Uzantı paketi tabanlı (Node.js), bu varsayılan türdür
  • NuGet paket tabanlı (.NET), varsayılan türden dönüştürebilirsiniz

Bu türlere bağlı olarak projeniz biraz farklı klasörler ve dosyalar içerir. NuGet tabanlı proje, paketleri ve diğer kitaplık dosyalarını içeren bir .bin klasörü içerir. Paket tabanlı bir proje .bin klasörünü ve diğer dosyaları içermez. Bazı senaryolar, örneğin özel yerleşik işlemler geliştirmek ve çalıştırmak istediğinizde uygulamanızın çalışması için NuGet tabanlı bir proje gerektirir. Projenizi NuGet kullanacak şekilde dönüştürme hakkında daha fazla bilgi için Bkz. Yerleşik bağlayıcı yazmayı etkinleştirme.

Varsayılan paket tabanlı proje için, projenizin aşağıdaki örneğe benzer bir klasör ve dosya yapısı vardır:

MyBundleBasedLogicAppProjectName
| .vscode
| Artifacts
  || Maps 
     ||| MapName1
     ||| ...
  || Schemas
     ||| SchemaName1
     ||| ...
| WorkflowName1
  || workflow.json
  || ...
| WorkflowName2
  || workflow.json
  || ...
| workflow-designtime
| .funcignore
| connections.json
| host.json
| local.settings.json

Projenizin kök düzeyinde, diğer öğelerle birlikte aşağıdaki dosya ve klasörleri bulabilirsiniz:

Name Klasör veya dosya Açıklama
.vscode Klasör extensions.json, launch.json, settings.json ve tasks.json dosyaları gibi Visual Studio Code ilgili ayarlar dosyalarını içerir.
Artifacts Klasör İşletmeler arası (B2B) senaryoları destekleyen iş akışlarında tanımladığınız ve kullandığınız tümleştirme hesabı yapıtlarını içerir. Örneğin, örnek yapı XML dönüştürme ve doğrulama işlemleri için eşlemeleri ve şemaları içerir.
<WorkflowName> Klasör Her iş akışı için WorkflowName> klasörü, < iş akışının temel JSON tanımını içeren bir workflow.json dosyası içerir.
workflow-designtime Klasör Geliştirme ortamıyla ilgili ayarlar dosyalarını içerir.
.funcignore Dosya Yüklü Azure İşlevleri Temel Araçlarınızla ilgili bilgileri içerir.
connections.json Dosya İş akışlarınızın kullandığı yönetilen bağlantılar ve Azure işlevleri için meta verileri, uç noktaları ve anahtarları içerir.

Önemli: Her ortam için farklı bağlantılar ve işlevler kullanmak için bu connections.json dosyasını parametreleştirdiğinizden ve uç noktaları güncelleştirdiğinizden emin olun.
host.json Dosya Tek kiracılı Azure Logic Apps platformu, mantıksal uygulamalar, iş akışları, tetikleyiciler ve eylemler için varsayılan sınırlar gibi çalışma zamanına özgü yapılandırma ayarlarını ve değerlerini içerir. Mantıksal uygulama projenizin kök düzeyinde host.json meta veri dosyası, yerel olarak veya Azure'da aynı mantıksal uygulamadaki tüm iş akışlarının çalışırken kullandığı yapılandırma ayarlarını ve varsayılan değerleri içerir.

Not: Mantıksal uygulamanızı oluşturduğunuzda, Visual Studio Code depolama kapsayıcınızda bir yedek host.snapshot.*.json dosyası oluşturur. Mantıksal uygulamanızı silerseniz bu yedekleme dosyası silinmez. Aynı ada sahip başka bir mantıksal uygulama oluşturursanız, başka bir anlık görüntü dosyası oluşturulur. Aynı mantıksal uygulama için en fazla 10 anlık görüntüye sahip olabilirsiniz. Bu sınırı aşarsanız aşağıdaki hatayı alırsınız:

Microsoft.Azure.WebJobs.Script.WebHost: Repository has more than 10 non-decryptable secrets backups (host))

Bu hatayı çözmek için depolama kapsayıcınızdan ek anlık görüntü dosyalarını silin.
local.settings.json Dosya İş akışlarınızın yerel olarak çalışırken kullandığı uygulama ayarlarını, bağlantı dizelerini ve diğer ayarları içerir. Başka bir deyişle, bu ayarlar ve değerler yalnızca projelerinizi yerel geliştirme ortamınızda çalıştırdığınızda geçerlidir. Azure'a dağıtım sırasında dosya ve ayarlar yoksayılır ve dağıtımınıza dahil değildir.

Bu dosya, ayarları ve değerleri, yerel geliştirme araçlarınız tarafından değerler olarak kullanılan yerel ortam değişkenleri olarak appSettings depolar. Uygulama ayarlarını ve parametrelerini kullanarak bu ortam değişkenlerini hem çalışma zamanında hem de dağıtım zamanında çağırabilir ve bunlara başvurabilirsiniz.

Önemli: local.settings.json dosyası gizli diziler içerebilir, bu nedenle bu dosyayı proje kaynak denetiminizden de dışladığınızdan emin olun.

Kapsayıcı dağıtımı

Tek kiracılı Azure Logic Apps kapsayıcılara dağıtımı destekler; bu da mantıksal uygulama iş akışlarınızı kapsayıcılı hale getirebileceğiniz ve bunları kapsayıcıların çalışabileceği yerlerde çalıştırabileceğiniz anlamına gelir. Uygulamanızı kapsayıcıya aldıktan sonra, dağıtım çoğunlukla dağıtıp yönettiğiniz diğer tüm kapsayıcılar ile aynı şekilde çalışır.

Azure DevOps içeren örnekler için kapsayıcılar için CI/CD'yi gözden geçirin.

Uygulama ayarları ve parametreleri

Çok kiracılı Azure Logic Apps'te ARM şablonları, çeşitli geliştirme, test ve üretim ortamlarında mantıksal uygulamalar için ortam değişkenlerini korumanız gerektiğinde bir zorluk oluşturur. ARM şablonundaki her şey dağıtımda tanımlanır. Yalnızca tek bir değişkeni değiştirmeniz gerekiyorsa, her şeyi yeniden dağıtmanız gerekir.

Tek kiracılı Azure Logic Apps'te, uygulama ayarlarını ve parametrelerini kullanarak çalışma zamanında ortam değişkenlerinizi çağırabilir ve bunlara başvurabilirsiniz, böylece sık sık yeniden dağıtmanız gerekmez.

Yönetilen bağlayıcılar ve yerleşik işlemler

Azure Logic Apps ekosistemi, tek kiracılı Azure Logic Apps'te kullanabileceğiniz, sürekli büyüyen bir koleksiyonun parçası olarak yüzlerce Microsoft tarafından yönetilen bağlayıcı ve yerleşik işlem sağlar. Microsoft'un bu bağlayıcıları ve yerleşik işlemleri tutma şekli, tek kiracılı Azure Logic Apps'te çoğunlukla aynı kalır.

En önemli iyileştirme, tek kiracılı hizmetin daha popüler yönetilen bağlayıcıları yerleşik işlemler olarak da kullanılabilir hale getirdiğidir. Örneğin, Azure Service Bus, Azure Event Hubs, SQL ve diğerleri için yerleşik işlemleri kullanabilirsiniz. Bu arada, yönetilen bağlayıcı sürümleri hala kullanılabilir ve çalışmaya devam ediyor.

Yerleşik işlemleri kullanarak oluşturduğunuz bağlantılar yerleşik bağlantılar veya hizmet sağlayıcısı bağlantıları olarak adlandırılır. Yerleşik işlemler ve bağlantıları, iş akışlarınızı çalıştıran aynı işlemde yerel olarak çalışır. Her ikisi de yeniden tasarlanan Logic Apps çalışma zamanında barındırılır. Buna karşılık, yönetilen bağlantılar veya API bağlantıları, ARM şablonlarını kullanarak dağıttığınız Azure kaynakları olarak ayrı olarak oluşturulur ve çalıştırılır. Sonuç olarak, yerleşik işlemler ve bağlantıları iş akışlarınıza yakınlığı nedeniyle daha iyi performans sağlar. Hizmet sağlayıcısı bağlantıları aynı derleme yapıtında paketlenmiş olduğundan bu tasarım dağıtım işlem hatlarında da iyi çalışır.

Visual Studio Code'da, iş akışlarınızda geliştirme yapmak veya değişiklik yapmak için tasarımcıyı kullandığınızda Logic Apps altyapısı projenizin connections.json dosyasında gerekli tüm bağlantı meta verilerini otomatik olarak oluşturur. Aşağıdaki bölümlerde, iş akışlarınızda oluşturabileceğiniz üç bağlantı türü açıklanmaktadır. Her bağlantı türünün farklı bir JSON yapısı vardır ve ortamlar arasında geçiş yaptığınızda uç noktalar değiştiği için anlaşılması önemlidir.

Hizmet sağlayıcısı bağlantıları

Tek kiracılı Azure Logic Apps'te Azure Service Bus veya Azure Event Hubs gibi bir hizmet için yerleşik bir işlem kullandığınızda, iş akışınızla aynı işlemde çalışan bir hizmet sağlayıcısı bağlantısı oluşturursunuz. Bu bağlantı altyapısı mantıksal uygulama kaynağınızın bir parçası olarak barındırılır ve yönetilir ve uygulama ayarlarınız iş akışlarınızın kullandığı hizmet sağlayıcısı tabanlı yerleşik işlemler için bağlantı dizelerini depolar.

Mantıksal uygulama projenizde her iş akışının iş akışının temel JSON tanımını içeren bir workflow.json dosyası vardır. Bu iş akışı tanımı daha sonra projenizin connections.json dosyasındaki gerekli bağlantı dizelerine başvurur.

Aşağıdaki örnek, yerleşik service Bus işlemi için hizmet sağlayıcısı bağlantısının projenizin connections.json dosyasında nasıl göründüğünü gösterir:

"serviceProviderConnections": {
   "{service-bus-connection-name}": {
      "parameterValues": {
         "connectionString": "@appsetting('servicebus_connectionString')"
      },
      "serviceProvider": {
         "id": "/serviceProviders/serviceBus"
      },
      "displayName": "{service-bus-connection-name}"
   },
   <...>
}

Yönetilen bağlantılar

İş akışınızda yönetilen bağlayıcıyı ilk kez kullandığınızda, hedef hizmet veya sistem için yönetilen bir API bağlantısı oluşturmanız ve kimliğinizin kimliğini doğrulamanız istenir. Bu bağlayıcılar Azure'daki paylaşılan bağlayıcılar ekosistemi tarafından yönetilir. API bağlantıları mevcuttur ve Azure'da ayrı kaynaklar olarak çalıştırılır.

Visual Studio Code'da tasarımcıyı kullanarak iş akışınızı oluşturmaya ve geliştirmeye devam ederken Logic Apps altyapısı, iş akışınızdaki yönetilen bağlayıcılar için Azure'da gerekli kaynakları otomatik olarak oluşturur. Altyapı bu bağlantı kaynaklarını mantıksal uygulamanızı içerecek şekilde tasarladığınız Azure kaynak grubuna otomatik olarak ekler.

Aşağıdaki örnek, yönetilen Service Bus bağlayıcısı için api bağlantısının projenizin connections.json dosyasında nasıl göründüğünü gösterir:

"managedApiConnections": {
   "{service-bus-connection-name}": { 
      "api": {
         "id": "/subscriptions/{subscription-ID}/providers/Microsoft.Web/locations/{region}/managedApis/servicebus"
      },
      "connection": { 
         "id": "/subscriptions/{subscription-ID}/resourcegroups/{resource-group-name}/providers/Microsoft.Web/connections/servicebus"
      }, 
      "connectionRuntimeUrl": "{connection-runtime-URL}",
      "authentication": { 
         "type": "Raw",
         "scheme": "Key",
         "parameter": "@appsetting('servicebus_1-connectionKey')"
      },
   },
   <...>
}

bağlantıları Azure İşlevleri

Azure İşlevleri'de oluşturulan ve barındırılan işlevleri çağırmak için yerleşik Azure İşlevleri işlemini kullanırsınız. Azure İşlevleri çağrıları için bağlantı meta verileri diğer yerleşik bağlantılardan farklıdır. Bu meta veriler mantıksal uygulama projenizin connections.json dosyasında depolanır, ancak farklı görünür:

"functionConnections": {
   "{function-operation-name}": {
      "function": { 
         "id": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{function-app-name}/functions/{function-name}"
      },
      "triggerUrl": "{function-url}",
      "authentication": {
        "type": "QueryString",
         "name": "Code",
         "value": "@appsetting('azureFunctionOperation_functionAppKey')"
      }, 
      "displayName": "{functions-connection-display-name}"
   },
   <...>
}

Kimlik Doğrulaması

Tek kiracılı Azure Logic Apps'te mantıksal uygulama iş akışları için barındırma modeli, iş yüklerinizin çok kiracılı modele göre daha fazla yalıtımdan yararlandığı tek bir kiracıdır. Ayrıca, tek kiracılı Azure Logic Apps çalışma zamanı taşınabilir olduğundan, iş akışlarınızı başka ortamlarda( örneğin, Visual Studio Code yerel olarak) çalıştırabilirsiniz. Yine de bu tasarım, mantıksal uygulamaların Azure'da yönetilen bağlayıcı ekosistemine erişebilmeleri için kimliklerini doğrulamaları için bir yol gerektirir. Uygulamalarınız, yönetilen bağlantılar kullanılırken işlemleri çalıştırmak için de doğru izinlere ihtiyaç duyar.

Varsayılan olarak, her tek kiracılı tabanlı mantıksal uygulama otomatik olarak etkinleştirilmiş bir sistem tarafından atanan yönetilen kimliğe sahiptir. Bu kimlik, bağlantı oluşturmak için kullanılan kimlik doğrulama kimlik bilgilerinden veya bağlantı dizesinden farklıdır. Çalışma zamanında mantıksal uygulamanız, Azure erişim ilkeleri aracılığıyla bağlantılarının kimliğini doğrulamak için bu kimliği kullanır. Bu kimliği devre dışı bırakırsanız, bağlantılar çalışma zamanında çalışmaz.

Aşağıdaki bölümlerde, mantıksal uygulamanızın çalıştığı yere göre yönetilen bağlantıların kimliğini doğrulamak için kullanabileceğiniz kimlik doğrulama türleri hakkında daha fazla bilgi sağlanır. Her yönetilen bağlantı için mantıksal uygulama projenizin connections.json dosyasında mantıksal uygulamanızın yönetilen bağlantının kimliğini doğrulamak için kullanabileceği kimlik doğrulama türünü belirten bir authentication nesnesi vardır.

Yönetilen kimlik

Azure'da barındırılan ve çalıştırılan bir mantıksal uygulama için yönetilen kimlik , Azure'da barındırılan ve çalıştırılan yönetilen bağlantıların kimliğini doğrulamak için kullanılacak varsayılan ve önerilen kimlik doğrulama türüdür. Mantıksal uygulama projenizin connections.json dosyasında, yönetilen bağlantının kimlik doğrulama türü olarak belirten ManagedServiceIdentity bir authentication nesnesi vardır:

"authentication": {
   "type": "ManagedServiceIdentity"
}

Ham

Visual Studio Code kullanarak yerel geliştirme ortamınızda çalışan mantıksal uygulamalar için, Azure'da barındırılan ve çalıştırılacak yönetilen bağlantıların kimliğini doğrulamak için ham kimlik doğrulama anahtarları kullanılır. Bu anahtarlar üretim için değil yalnızca geliştirme kullanımı için tasarlanmıştır ve 7 günlük süre sonu vardır. Mantıksal uygulama projenizin connections.json dosyasında, yönetilen bağlantının aşağıdaki kimlik doğrulama bilgilerini belirten bir authentication nesnesi vardır:

"authentication": {
   "type": "Raw", 
   "scheme": "Key", 
   "parameter": "@appsetting('connectionKey')"
 }

Sonraki adımlar