Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Container Apps, bir dizi bildirim temelli ölçeklendirme kuralı aracılığıyla otomatik yatay ölçeklendirmeyi yönetir. Kapsayıcı uygulaması düzeltmesi ölçeği genişletildikçe, düzeltmenin yeni örnekleri isteğe bağlı olarak oluşturulur. Bu örnekler çoğaltma olarak bilinir.
Azure Container Apps, bu ölçeklendirme davranışını desteklemek için KEDA (Kubernetes Event-driven Autoscaling) tarafından desteklenir. KEDA; HTTP istekleri, kuyruk iletileri, CPU ve bellek yükü gibi çeşitli ölçümlere ve Azure Service Bus, Azure Event Hubs, Apache Kafka ve Redis gibi olay kaynaklarına göre ölçeklendirmeyi destekler. Daha fazla bilgi için KEDA belgelerindeki Ölçekleyiciler'e bakın.
Ölçeklendirme kurallarını eklemek veya düzenlemek, kapsayıcı uygulamanızın yeni bir düzeltmesini oluşturur. Düzeltme, kapsayıcı uygulamanızın sabit bir anlık görüntüsüdür. Yeni bir düzeltmeyi tetikleyen değişiklik türlerini öğrenmek için bkz. düzeltme değişiklik türleri.
Olay temelli Container Apps işleri , olaylara göre yürütmeleri tetikleme amacıyla ölçeklendirme kurallarını kullanır.
Ölçek tanımı
Ölçeklendirme, sınırların, kuralların ve davranışın birleşimidir.
Sınırlar , kapsayıcı uygulamanız ölçeklendikçe düzeltme başına mümkün olan en düşük ve en fazla çoğaltma sayısını tanımlar.
Ölçeklendirme sınırı Varsayılan değer En düşük değer En yüksek değer Düzeltme başına en az çoğaltma sayısı 0 0 Yapılandırılabilir en fazla çoğaltma sayısı 1.000'tir. Düzeltme başına en fazla çoğaltma sayısı 10 1 Yapılandırılabilir en fazla çoğaltma sayısı 1.000'tir. Kurallar , Container Apps tarafından çoğaltmaların ne zaman ekleneceğine veya kaldırılacağına karar vermek için kullanılan ölçütlerdir.
Ölçek kuralları HTTP, TCP (İletim Denetimi Protokolü) veya özel olarak uygulanır.
Davranış , zaman içindeki ölçek kararlarını belirlemek için kurallar ve sınırların birleşimidir.
Ölçek davranışı , ölçek kararlarının nasıl alınıyor olduğunu açıklar.
Ölçeklendirme kurallarınızı tanımlarken aşağıdaki öğeleri göz önünde bulundurmanız önemlidir:
- Kapsayıcı uygulamanız sıfıra ölçeklendirilirse kullanım ücretleri size faturalandırılmaz.
- İşlemez ancak bellekte kalan çoğaltmalar daha düşük bir "boşta" hızda faturalandırılabilir. Daha fazla bilgi için bkz . Faturalama.
- Düzeltmenizin bir örneğinin her zaman çalıştığından emin olmak istiyorsanız, en az çoğaltma sayısını 1 veya daha yüksek olarak ayarlayın.
Ölçek kuralları
Üç tetikleyici kategorisi ölçeklendirmenin nasıl gerçekleştiğini belirler:
- HTTP: Düzeltmenize yönelik eşzamanlı HTTP isteklerinin sayısına göre.
- TCP: Düzeltmenize yönelik eşzamanlı TCP bağlantılarının sayısına göre.
-
Özel: Şu gibi özel ölçümleri temel alır:
- İşlemci (CPU)
- Hafıza
- Desteklenen olay temelli veri kaynakları:
- Azure Hizmet Otobüsü
- Azure Event Hubs
- Apache Kafka
- Redis
Birden fazla ölçek kuralı tanımlarsanız, herhangi bir kuralın ilk koşulu karşılandığında kapsayıcı uygulaması ölçeklendirmeye başlar.
Not
Container Apps üzerinde İşlevler kullanıyorsanız, ölçek kuralları işlev tetikleyicilerine ve bağlamalarına göre otomatik olarak yapılandırılır. Sonuç olarak, Azure portalındaki "Ölçek kuralları ekle" düğmesi bu uygulamalar için devre dışı bırakılır. El ile ölçek kuralı yapılandırması gerekli değildir veya bu senaryoda desteklenmez.
HTTP
HTTP ölçeklendirme kuralıyla, kapsayıcı uygulamanızın düzeltmesinin nasıl ölçeklendirileceğini belirleyen eşzamanlı HTTP isteklerinin eşiği üzerinde denetime sahipsiniz. Her 15 saniyede bir eşzamanlı istek sayısı, son 15 saniye içindeki isteklerin sayısı 15'e bölünerek hesaplanır. Container Apps işleri HTTP ölçeklendirme kurallarını desteklemez.
Aşağıdaki örnekte, düzeltme beş çoğaltmaya kadar ölçeklendirilir ve ölçeği sıfıra ölçeklendirebilir. Ölçeklendirme özelliği saniyede 100 eşzamanlı istek olarak ayarlanır.
Örnek
http bölümü bir HTTP ölçek kuralı tanımlar.
| Ölçek özelliği | Açıklama | Varsayılan değer | En düşük değer | En yüksek değer |
|---|---|---|---|---|
concurrentRequests |
HTTP isteklerinin sayısı bu değeri aştığında başka bir çoğaltma eklenir. Çoğaltmalar, miktara kadar havuza eklemeye maxReplicas devam eder. |
10 | 1 | yok |
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
...
properties: {
...
template: {
...
scale: {
maxReplicas: 0
minReplicas: 5
rules: [
{
name: 'http-rule'
http: {
metadata: {
concurrentRequests: '100'
}
}
}
]
}
}
}
}
Not
properties.configuration.activeRevisionsMode HTTP olmayan olay ölçeği kurallarını kullanırken kapsayıcı uygulamasının properties.configuration.activeRevisionsMode özelliğini olarak ayarlayın.
http bölümü bir HTTP ölçek kuralı tanımlar.
| Ölçek özelliği | Açıklama | Varsayılan değer | En düşük değer | En yüksek değer |
|---|---|---|---|---|
concurrentRequests |
HTTP isteklerinin sayısı bu değeri aştığında başka bir çoğaltma eklenir. Çoğaltmalar, miktara kadar havuza eklemeye maxReplicas devam eder. |
10 | 1 | yok |
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [{
"name": "http-rule",
"http": {
"metadata": {
"concurrentRequests": "100"
}
}
}]
}
}
}
}
}
Not
properties.configuration.activeRevisionsMode HTTP olmayan olay ölçeği kurallarını kullanırken kapsayıcı uygulamasının properties.configuration.activeRevisionsMode özelliğini olarak ayarlayın.
veya --scale-rule-http-concurrency komutlarındaki create parametresini update kullanarak bir HTTP ölçek kuralı tanımlayın.
| CLI parametresi | Açıklama | Varsayılan değer | En düşük değer | En yüksek değer |
|---|---|---|---|---|
--scale-rule-http-concurrency |
Eşzamanlı HTTP isteklerinin sayısı bu değeri aştığında başka bir çoğaltma eklenir. Çoğaltmalar, miktara kadar havuza eklemeye max-replicas devam eder. |
10 | 1 | yok |
az containerapp create \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT_NAME> \
--image <CONTAINER_IMAGE_LOCATION>
--min-replicas 0 \
--max-replicas 5 \
--scale-rule-name azure-http-rule \
--scale-rule-type http \
--scale-rule-http-concurrency 100
Azure portalında kapsayıcı uygulamanıza gidin
Ölçek'i seçin.
Düzenle ve dağıt'ı seçin.
Ölçek sekmesini seçin.
En düşük ve en yüksek replika aralığını seçin.
Ekle'yi seçin.
Kural adı kutusuna bir kural adı girin.
Tür açılan listesinde HTTP Ölçeklendirme'yi seçin.
Eşzamanlı istekler kutusuna kapsayıcı uygulamanız için istediğiniz eşzamanlı istek sayısını girin.
TCP
TCP ölçeklendirme kuralıyla, uygulamanızın nasıl ölçeklendirileceğini belirleyen eş zamanlı TCP bağlantılarının eşiği üzerinde denetiminiz vardır. Her 15 saniyede bir eşzamanlı bağlantı sayısı, son 15 saniyedeki bağlantıların sayısı 15'e bölünerek hesaplanır. Container Apps işleri TCP ölçeklendirme kurallarını desteklemez.
Aşağıdaki örnekte, kapsayıcı uygulama revizyonu beş kopyaya kadar çoğaltılabilir ve sıfıra kadar küçülebilir. Ölçeklendirme eşiği saniyede 100 eşzamanlı bağlantı olarak ayarlanır.
Örnek
tcp bölümü bir TCP ölçek kuralı tanımlar.
| Ölçek özelliği | Açıklama | Varsayılan değer | En düşük değer | En yüksek değer |
|---|---|---|---|---|
concurrentConnections |
Eş zamanlı TCP bağlantılarının sayısı bu değeri aştığında başka bir çoğaltma eklenir. Eş zamanlı bağlantı sayısı arttıkça, kopyalar maxReplicas miktarına kadar artırılmaya devam eder. |
10 | 1 | yok |
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
...
properties: {
...
template: {
...
scale: {
maxReplicas: 0
minReplicas: 5
rules: [
{
name: 'tcp-rule'
http: {
metadata: {
concurrentConnections: '100'
}
}
}
]
}
}
}
}
tcp bölümü bir TCP ölçek kuralı tanımlar.
| Ölçek özelliği | Açıklama | Varsayılan değer | En düşük değer | En yüksek değer |
|---|---|---|---|---|
concurrentConnections |
Eş zamanlı TCP bağlantılarının sayısı bu değeri aştığında başka bir çoğaltma eklenir. Eş zamanlı bağlantı sayısı arttıkça, kopyalar maxReplicas miktarına kadar artırılmaya devam eder. |
10 | 1 | yok |
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [{
"name": "tcp-rule",
"tcp": {
"metadata": {
"concurrentConnections": "100"
}
}
}]
}
}
}
}
}
--scale-rule-tcp-concurrency veya create komutlarında update parametresini kullanarak bir TCP ölçek kuralı tanımlayın.
| CLI parametresi | Açıklama | Varsayılan değer | En düşük değer | En yüksek değer |
|---|---|---|---|---|
--scale-rule-tcp-concurrency |
Eş zamanlı TCP bağlantılarının sayısı bu değeri aştığında başka bir çoğaltma eklenir. Eş zamanlı bağlantı sayısı arttıkça, belirtilen miktara kadar max-replicas kopyalar eklenmeye devam eder. |
10 | 1 | yok |
az containerapp create \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT_NAME> \
--image <CONTAINER_IMAGE_LOCATION>
--min-replicas 0 \
--max-replicas 5 \
--transport tcp \
--ingress <external/internal> \
--target-port <CONTAINER_TARGET_PORT> \
--scale-rule-name azure-tcp-rule \
--scale-rule-type tcp \
--scale-rule-tcp-concurrency 100
Azure portalında desteklenmez. TCP ölçek kuralını yapılandırmak için Azure CLI, Azure Resource Manager veya Bicep'i kullanın.
Özel
Aşağıdaki varsayılan değerlerle Herhangi bir ScaledObject tabanlı KEDA ölçeklendiricisini temel alan özel bir Container Apps ölçeklendirme kuralı oluşturabilirsiniz:
| Varsayılanlar | Saniye |
|---|---|
| Yoklama aralığı | 30 |
| Bekleme süresi | 300 |
Not
Soğuma süresi yalnızca son örnekten 0'a ölçeklenirken etkin olur. Diğer çoğaltmalar kaldırıldığından, bekleme süresi ölçeklendirmeyi etkilemez.
Olay temelli Container Apps işleri için Herhangi bir ScaledJob tabanlı KEDA ölçeklendiricisini temel alan özel bir ölçeklendirme kuralı oluşturabilirsiniz.
Aşağıdaki örnekte özel ölçek kuralının nasıl oluşturulacağı gösterilmektedir.
Örnek
Bu örnekte, Azure Service Bus ölçekleyicisini Container Apps ölçek kuralına nasıl dönüştürdüğünüz gösterilir, ancak diğer ScaledObject tabanlı KEDA ölçekleyici belirtimleri için aynı işlemi kullanırsınız.
Kimlik doğrulaması için KEDA ölçeklendiricisi kimlik doğrulama parametreleri Container Apps gizli dizilerini veya yönetilen kimliği alır.
Aşağıdaki yordamda KEDA ölçekleyicisini Kapsayıcı Uygulaması ölçek kuralına dönüştürme işlemi gösterilmektedir. Bu kod parçacığı, her bölümün genel şablon bağlamında nereye uyduğunu gösteren bicep şablonunun bir alıntısıdır.
resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = {
...
properties: {
...
configuration: {
...
secrets: [
{
name: '<NAME>'
value: '<VALUE>'
}
]
}
template: {
...
scale: {
maxReplicas: 0
minReplicas: 5
rules: [
{
name: '<RULE_NAME>'
custom: {
metadata: {
...
}
auth: [
{
secretRef: '<NAME>'
triggerParameter: '<PARAMETER>'
}
]
}
}
]
}
}
}
}
Aşağıdaki örneklerin Bicep şablonuna nasıl sığacaklarına ilişkin bağlam için bu alıntıya bakın.
İlk olarak, ölçek kuralının türünü ve meta verilerini tanımlarsınız.
KEDA ölçeklendirici belirtiminden
typedeğerini bulun.triggers: - type: azure-servicebus ⬅️ metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"Bicep şablonunda ölçekleyici
typedeğerini ölçek kuralınıncustom.typeözelliğine girin.... rules: [ { name: 'azure-servicebus-queue-rule' custom: { type: 'azure-servicebus' ⬅️ metadata: { queueName: 'my-queue' namespace: 'service-bus-namespace' messageCount: '5' } } } ] ...KEDA ölçekleyici belirtiminden
metadatadeğerleri bulun.triggers: - type: azure-servicebus metadata: queueName: my-queue ⬅️ namespace: service-bus-namespace ⬅️ messageCount: "5" ⬅️Bicep şablonunda, ölçek kuralının
custom.metadatabölümüne tüm meta veri değerlerini ekleyin.... rules: [ { name: 'azure-servicebus-queue-rule' custom: { type: 'azure-servicebus' metadata: { queueName: 'my-queue' ⬅️ namespace: 'service-bus-namespace' ⬅️ messageCount: '5' ⬅️ } } } ] ...
Kimlik Doğrulaması
Container Apps ölçek kuralları gizli dizi tabanlı kimlik doğrulamayı destekler. Azure Kuyruk Depolama, Azure Service Bus ve Azure Event Hubs gibi Azure kaynakları için ölçeklendirme kuralları yönetilen kimliği de destekler. Mümkün olduğunda, uygulama içinde gizli dizileri depolamaktan kaçınmak için yönetilen kimlik kimlik doğrulamasını kullanın.
Gizli dizileri kullanma
Kimlik doğrulaması için gizli dizileri kullanmak için kapsayıcı uygulamasının secrets dizisinde bir gizli dizi oluşturmanız gerekir. Ölçek kuralının auth dizisinde gizli değer kullanılır.
KEDA ölçeklendiricileri, özelliği tarafından başvurulan bir authenticationRef içinde gizli dizileri kullanabilir. TriggerAuthentication nesnesini Container Apps ölçek kuralına eşleyebilirsiniz.
KEDA belirtimi tarafından referans verilen
TriggerAuthenticationnesneyi bulun.Nesnesinde
TriggerAuthentication, hersecretTargetRefve ilişkili sırrını bulun.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️ --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection ⬅️ name: my-secrets ⬅️ key: connection-string-secret ⬅️ --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-authBicep şablonunda her bir gizli bilgi için:
Gizli adını ve değerini içeren bir gizli öğeyi kapsayıcı uygulamasının
secretsdizisine ekleyin.Ölçek kuralının
authdizisine bir girdi ekleyin.triggerParameterözelliğinin değerini,secretTargetRefözelliğindekiparameterdeğerine ayarlayın.secretRefözelliğinin değerini,secretTargetReföğesininkeyadı olarak ayarlayın.resource symbolicname 'Microsoft.App/containerApps@2025-02-02-preview' = { ... properties: { ... configuration: { ... secrets: [ { ⬅️ name: 'connection-string-secret' ⬅️ value: '<SERVICE_BUS_CONNECTION_STRING>' ⬅️ } ⬅️ ] } template: { ... scale: { maxReplicas: 0 minReplicas: 5 rules: [ { name: 'azure-servicebus-queue-rule' custom: { type: 'azure-servicebus' metadata: { queueName: 'my-queue' namespace: 'service-bus-namespace' messageCount: '5' } auth: [ { secretRef: 'connection-string-secret' triggerParameter: 'connection' } ] } } ] } } } }
Bazı ölçekleyiciler, ortam değişkenindeki
FromEnvbir değere başvurmak için sonek içeren meta verileri destekler. Container Apps, ortam değişkeni için ARM şablonunda listelenen ilk kapsayıcıya bakar.Güvenlikle ilgili daha fazla bilgi için dikkat edilmesi gerekenler bölümüne bakın.
Yönetilen kimliği kullanma
Container Apps ölçek kuralları, Azure hizmetleriyle kimlik doğrulaması yapmak için yönetilen kimliği kullanabilir. Aşağıdaki Bicep şablonu, Bir Azure Kuyruk ölçeklendiricisi için kimlik doğrulaması yapmak için sistem tabanlı yönetilen kimliği geçirir.
Aşağıdaki kodu kullanmadan önce, <> ile çevrelenmiş yer tutucuları kendi değerlerinizle değiştirin.
scale: {
minReplicas: 0
maxReplicas: 4
rules: [
{
name: 'azure-queue'
custom: {
type: 'azure-queue'
metadata: {
accountName: '<ACCOUNT_NAME>'
queueName: '<QUEUE_NAME>'
queueLength: '1'
},
identity: 'system'
}
}
]
}
Yönetilen kimliği ölçek kurallarıyla kullanma hakkında daha fazla bilgi edinmek için bkz . Yönetilen kimlik.
Aşağıdaki yordamda KEDA ölçekleyicisini Kapsayıcı Uygulaması ölçek kuralına dönüştürme işlemi gösterilmektedir. Bu kod parçacığı, bir ARM şablonunun, her bölümün genel şablon bağlamında nereye uyduğunu gösteren bir alıntıdır.
{
...
"resources": {
...
"properties": {
...
"configuration": {
...
"secrets": [
{
"name": "<NAME>",
"value": "<VALUE>"
}
]
},
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [
{
"name": "<RULE_NAME>",
"custom": {
"metadata": {
...
},
"auth": [
{
"secretRef": "<NAME>",
"triggerParameter": "<PARAMETER>"
}
]
}
}
]
}
}
}
}
}
Aşağıdaki örneklerin ARM şablonuna nasıl uyduklarına ilişkin bağlam için bu alıntıya bakın.
İlk olarak, ölçek kuralının türünü ve meta verilerini tanımlarsınız.
KEDA ölçeklendirici belirtiminden
typedeğerini bulun.triggers: - type: azure-servicebus ⬅️ metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"ARM şablonunda ölçekleyici
typedeğerini ölçek kuralınıncustom.typeözelliğine girin.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", ⬅️ "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" } } } ] ...KEDA ölçekleyici belirtiminden
metadatadeğerleri bulun.triggers: - type: azure-servicebus metadata: queueName: my-queue ⬅️ namespace: service-bus-namespace ⬅️ messageCount: "5" ⬅️ARM şablonunda, ölçek kuralının
custom.metadatabölümüne tüm meta veri değerlerini ekleyin.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", ⬅️ "namespace": "service-bus-namespace", ⬅️ "messageCount": "5" ⬅️ } } } ] ...
Kimlik Doğrulaması
Container Apps ölçek kuralları gizli dizi tabanlı kimlik doğrulamayı destekler. Azure Kuyruk Depolama, Azure Service Bus ve Azure Event Hubs gibi Azure kaynakları için ölçeklendirme kuralları yönetilen kimliği de destekler. Mümkün olduğunda, uygulama içinde gizli dizileri depolamaktan kaçınmak için yönetilen kimlik kimlik doğrulamasını kullanın.
Gizli dizileri kullanma
Kimlik doğrulaması için gizli dizileri kullanmak için kapsayıcı uygulamasının secrets dizisinde bir gizli dizi oluşturmanız gerekir. Ölçek kuralının auth dizisinde gizli değer kullanılır.
KEDA ölçeklendiricileri, özelliği tarafından başvurulan bir authenticationRef içinde gizli dizileri kullanabilir. TriggerAuthentication nesnesini Container Apps ölçek kuralına eşleyebilirsiniz.
KEDA belirtimi tarafından referans verilen
TriggerAuthenticationnesneyi bulun.Nesnesinde
TriggerAuthentication, hersecretTargetRefve ilişkili sırrını bulun.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️ --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection ⬅️ name: my-secrets ⬅️ key: connection-string-secret ⬅️ --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-authARM şablonunda, her gizli için:
Gizli adını ve değerini içeren bir gizli öğeyi kapsayıcı uygulamasının
secretsdizisine ekleyin.Ölçek kuralının
authdizisine bir girdi ekleyin.triggerParameterözelliğinin değerini,secretTargetRefözelliğindekiparameterdeğerine ayarlayın.secretRefözelliğinin değerini,secretTargetReföğesininkeyadı olarak ayarlayın.
{ ... "resources": { ... "properties": { ... "configuration": { ... "secrets": [ { ⬅️ "name": "connection-string-secret", ⬅️ "value": "<SERVICE_BUS_CONNECTION_STRING>" ⬅️ } ⬅️ ] }, "template": { ... "scale": { "minReplicas": 0, "maxReplicas": 5, "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" }, "auth": [ { ⬅️ "secretRef": "connection-string-secret", ⬅️ "triggerParameter": "connection" ⬅️ } ⬅️ ] } } ] } } } } }Bazı ölçekleyiciler, ortam değişkenindeki
FromEnvbir değere başvurmak için sonek içeren meta verileri destekler. Container Apps, ortam değişkeni için ARM şablonunda listelenen ilk kapsayıcıya bakar.Güvenlikle ilgili daha fazla bilgi için dikkat edilmesi gerekenler bölümüne bakın.
Yönetilen kimliği kullanma
Container Apps ölçek kuralları, Azure hizmetleriyle kimlik doğrulaması yapmak için yönetilen kimliği kullanabilir. Aşağıdaki ARM şablonu, Azure Kuyruk ölçeklendiricisi için kimlik doğrulaması yapmak için sistem tabanlı yönetilen kimliği geçirir.
Aşağıdaki kodu kullanmadan önce, <> ile çevrelenmiş yer tutucuları kendi değerlerinizle değiştirin.
"scale": {
"minReplicas": 0,
"maxReplicas": 4,
"rules": [
{
"name": "azure-queue",
"custom": {
"type": "azure-queue",
"metadata": {
"accountName": "<ACCOUNT_NAME>",
"queueName": "<QUEUE_NAME>",
"queueLength": "1"
},
"identity": "system"
}
}
]
}
Yönetilen kimliği ölçek kurallarıyla kullanma hakkında daha fazla bilgi edinmek için bkz . Yönetilen kimlik.
KEDA ölçeklendirici belirtiminden
typedeğerini bulun.triggers: - type: azure-servicebus ⬅️ metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"CLI komutunda parametresini
--scale-rule-typebelirtimtypedeğerine ayarlayın.az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ ⬅️ --scale-rule-metadata "queueName=my-queue" \ "namespace=service-bus-namespace" \ "messageCount=5" \ --scale-rule-auth "connection=connection-string-secret"KEDA ölçekleyici belirtiminden
metadatadeğerleri bulun.triggers: - type: azure-servicebus metadata: queueName: my-queue ⬅️ namespace: service-bus-namespace ⬅️ messageCount: "5" ⬅️CLI komutunda parametresini
--scale-rule-metadatameta veri değerlerine ayarlayın.Değerleri yaml biçiminden komut satırında kullanmak üzere anahtar/değer çiftine dönüştürmeniz gerekir. Her anahtar/değer çiftlerini bir boşlukla ayırın.
az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ --scale-rule-metadata "queueName=my-queue" \ ⬅️ "namespace=service-bus-namespace" \ ⬅️ "messageCount=5" \ ⬅️ --scale-rule-auth "connection=connection-string-secret"
Kimlik Doğrulaması
Container Apps ölçek kuralları gizli dizi tabanlı kimlik doğrulamayı destekler. Azure Kuyruk Depolama, Azure Service Bus ve Azure Event Hubs gibi Azure kaynakları için ölçeklendirme kuralları yönetilen kimliği de destekler. Mümkün olduğunda, uygulama içinde gizli dizileri depolamaktan kaçınmak için yönetilen kimlik kimlik doğrulamasını kullanın.
Gizli dizileri kullanma
Container Apps ölçek kuralı için gizli anahtar tabanlı kimlik doğrulamayı yapılandırmak için, kapsayıcı uygulamada gizli anahtarları yapılandırır ve ölçek kuralında onlara başvurursunuz.
KEDA ölçeklendiricisi, özelliğin başvuru için kullandığı TriggerAuthentication içindeki gizli dizileri authenticationRef destekler. Container Apps ölçek kuralına nesneyi TriggerAuthentication eşleyebilirsiniz.
KEDA belirtimi tarafından referans verilen
TriggerAuthenticationnesneyi bulun. NesneninsecretTargetRefherTriggerAuthenticationbirini tanımlayın.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> ⬅️ --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection ⬅️ name: my-secrets ⬅️ key: connection-string-secret ⬅️ --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-authKapsayıcı uygulamanızda özelliklerle uyumlu
secretTargetRefoluşturun.CLI komutunda, her
secretTargetRefgirdi için parametreleri ayarlayın.--secretsparametresiyle bir gizli giriş oluşturun. Birden fazla sır varsa, bunları bir boşlukla ayırın.parametresiyle bir kimlik doğrulama girdisi
--scale-rule-autholuşturun. Birden çok girdi varsa, bunları bir boşlukla ayırın.
az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ ⬅️ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ --scale-rule-metadata "queueName=my-queue" \ "namespace=service-bus-namespace" \ "messageCount=5" \ --scale-rule-auth "connection=connection-string-secret" ⬅️
Yönetilen kimliği kullanma
Container Apps ölçek kuralları, Azure hizmetleriyle kimlik doğrulaması yapmak için yönetilen kimliği kullanabilir. Aşağıdaki komut, kullanıcı tarafından atanan yönetilen kimliğe sahip bir kapsayıcı uygulaması oluşturur ve azure kuyruk ölçeklendiricisi için kimlik doğrulaması yapmak için bu uygulamayı kullanır.
Aşağıdaki kodu kullanmadan önce, <> ile çevrelenmiş yer tutucuları kendi değerlerinizle değiştirin.
az containerapp create \
--resource-group <RESOURCE_GROUP> \
--name <APP_NAME> \
--environment <ENVIRONMENT_ID> \
--user-assigned <USER_ASSIGNED_IDENTITY_ID> \
--scale-rule-name azure-queue \
--scale-rule-type azure-queue \
--scale-rule-metadata "accountName=<AZURE_STORAGE_ACCOUNT_NAME>" "queueName=queue1" "queueLength=1" \
--scale-rule-identity <USER_ASSIGNED_IDENTITY_ID>
Azure portalında kapsayıcı uygulamanıza gidin.
Ölçek'i seçin.
Düzenle ve dağıt'ı seçin.
Ölçek ve çoğaltmalar sekmesini seçin.
En düşük ve en yüksek replika aralığını seçin.
Ekle'yi seçin.
Kural adı kutusuna bir kural adı girin.
Tür açılan listesinde Özel'i seçin.
KEDA ölçeklendirici belirtiminden
typedeğerini bulun.triggers: - type: azure-servicebus ⬅️ metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"Özel kural türü kutusuna ölçekleyici
typedeğerini girin.KEDA ölçekleyici belirtiminden
metadatadeğerleri bulun.triggers: - type: azure-servicebus metadata: queueName: my-queue ⬅️ namespace: service-bus-namespace ⬅️ messageCount: "5" ⬅️Portalda Meta Veriler bölümünü bulun ve Ekle'yi seçin. KEDA
ScaledObjectbelirtimi meta verileri bölümünde her öğenin adını ve değerini girin.
Kimlik Doğrulaması
Container Apps ölçek kuralları gizli dizi tabanlı kimlik doğrulamayı destekler. Azure Kuyruk Depolama, Azure Service Bus ve Azure Event Hubs gibi Azure kaynakları için ölçeklendirme kuralları yönetilen kimliği de destekler. Mümkün olduğunda, uygulama içinde gizli dizileri depolamaktan kaçınmak için yönetilen kimlik kimlik doğrulamasını kullanın.
Gizli dizileri kullanma
Kapsayıcı uygulamanızda, başvurmak istediğiniz gizli bilgileri oluşturun.
KEDA belirtimi tarafından referans verilen
TriggerAuthenticationnesneyi bulun. NesneninsecretTargetRefherTriggerAuthenticationbirini tanımlayın.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection ⬅️ name: my-secrets ⬅️ key: connection-string-secret ⬅️ --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-authKimlik Doğrulaması bölümünde Ekle'yi seçerek her KEDA
secretTargetRefparametresi için bir girdi oluşturun.
Yönetilen kimliği kullanma
Yönetilen kimlik doğrulama, Azure portalında desteklenmez. Yönetilen kimlik kullanarak kimlik doğrulaması yapmak için Azure CLI veya Azure Resource Manager'ı kullanın.
Varsayılan ölçek kuralı
Ölçek kuralı oluşturmazsanız, varsayılan ölçek kuralı kapsayıcı uygulamanıza uygulanır.
| Tetikle | En az çoğaltma | En fazla kopya |
|---|---|---|
| HTTP | 0 | 10 |
Önemli
Girişi etkinleştirmediyseniz, bir ölçek kuralı oluşturduğunuzdan veya minReplicas öğesini 1 ya da daha yüksek bir değere ayarladığınızdan emin olun. Giriş devre dışı bırakılırsa ve bir minReplicas veya özel ölçek kuralı tanımlamazsanız kapsayıcı uygulamanız sıfıra ölçeklendirilir ve yedeklemeyi başlatmanın bir yolu yoktur.
Ölçeklendirme davranışı
Ölçeklendirme aşağıdaki davranışlara sahiptir:
| Davranış | Değer |
|---|---|
| Yoklama aralığı | 30 saniye |
| Bekleme süresi | 300 saniye |
| Dengeleme penceresinin ölçeğini artırma | 0 saniye |
| Dengeleme penceresinin ölçeğini azaltma | 300 saniye |
| Adım adım ölçek büyütme | 1, 4, 8, 16, 32, ... yapılandırılan en fazla kopya sayısına kadar |
| Azaltma adımı (ölçeği) | Kapatılması gereken 100% replika |
| Ölçeklendirme algoritması | desiredReplicas = ceil(currentMetricValue / targetMetricValue) |
- Anket aralığı, olay kaynaklarının KEDA tarafından ne sıklıkta sorgulandığıdır. Bu değer HTTP ve TCP ölçek kuralları için geçerli değildir.
- Soğuma süresi, uygulama en düşük çoğaltma sayısına ölçeklendirilmeden önce son olayın gözlemlenmesinden itibaren geçen süredir.
- Ölçeği artırma dengeleme penceresi , ölçeği artırma koşulları karşılandıktan sonra ölçeği artırma kararı vermeden önce ne kadar beklenmesi gerektiğini gösterir.
- Ölçeği azaltma dengeleme penceresi , ölçeği azaltma koşulları karşılandıktan sonra ölçeği azaltma kararı vermeden önce ne kadar beklenmesi gerektiğini gösterir.
- Ölçeği artırma adımı, kapsayıcı uygulamanızın ölçeği genişletildikçe kaç çoğaltmanın eklendiğini belirtir. Başlangıçta 1 ile başlar, ardından belirtilen maksimum çoğaltma sayısına kadar sırasıyla 4, 8, 16, 32 vb. katlanarak artar.
- Ölçek küçültme adımı, kapsayıcı uygulamanız ölçeklendirilirken kaç çoğaltmanın kaldırıldığını belirtir. Kapatılması gereken% çoğaltma kaldırılır.
- Ölçeklendirme algoritması , istenen geçerli çoğaltma sayısını hesaplamak için kullanılan formüldür.
Örnek
Aşağıdaki ölçek kuralı için:
"minReplicas": 0,
"maxReplicas": 20,
"rules": [
{
"name": "azure-servicebus-queue-rule",
"custom": {
"type": "azure-servicebus",
"metadata": {
"queueName": "my-queue",
"namespace": "service-bus-namespace",
"messageCount": "5"
}
}
}
]
Uygulamanızın ölçeği genişlettikten sonra KEDA boş bir kuyrukla başlar ve aşağıdaki adımları gerçekleştirir:
- 30 saniyede bir kontrol edin
my-queue. - Kuyruk uzunluğu 0'a eşitse (1) bölümüne geri dönün.
- Kuyruk uzunluğu 0 ise > , uygulamayı 1'e ölçeklendirin.
- Kuyruk uzunluğu 50 ise değerini hesaplayın
desiredReplicas = ceil(50/5) = 10. - Uygulamayı şu şekilde ölçeklendirin:
min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount)) - (1) sayfasına geri dönün.
Uygulama en fazla 20 çoğaltma sayısına ölçeklendirildiyse ölçeklendirme aynı önceki adımlardan geçer. Küçültme yalnızca koşul 300 saniye boyunca karşılandığında gerçekleşir (küçültme dengelenme süresi). Kuyruk uzunluğu 0 olduğunda, KEDA uygulamayı 0'a ölçeklendirmeden önce 300 saniye (bekleme süresi) bekler.
Dikkat edilmesi gereken noktalar
"Birden çok düzeltme" modunda, yeni bir ölçek tetikleyicisi eklemek uygulamanızın yeni bir düzeltmesini oluşturur, ancak eski düzeltmeniz eski ölçek kurallarıyla kullanılabilir durumda kalır. Trafik ayırmalarını yönetmek için Düzeltme yönetimi sayfasını kullanın.
Bir uygulama sıfıra ölçeklendiğinde kullanım ücreti uygulanmaz. Daha fazla fiyatlandırma bilgisi için bkz . Azure Container Apps'te faturalama.
Azure Container Apps'te tüm .NET uygulamaları için veri korumayı etkinleştirmeniz gerekir. Ayrıntılar için bkz . Azure Container Apps'te ASP.NET Core uygulamasını dağıtma ve ölçeklendirme.
Bilinen sınırlamalar
Dikey ölçeklendirme desteklenmez.
Çoğaltma miktarları, hedeflenen bir tutardır, garanti değildir.
Durumları yönetmek için Dapr aktörleri kullanıyorsanız, sıfıra ölçeklendirmenin desteklenmediğini unutmayın. Dapr, zaman uyumsuz çağrıları yönetmek için sanal aktörleri kullanır; bu da bellek içi gösterimlerinin kimliklerine veya yaşam sürelerine bağlı olmadığı anlamına gelir.
KEDA proxy'leri proxy ayarları aracılığıyla değiştirilemez. Trafiği bir ağ gerecine göndermek için NAT Ağ Geçidi veya Kullanıcı Tanımlı Yol (UDR) ile İş Yükü Profillerini kullanmayı göz önünde bulundurun; burada trafik denetlenebilir veya oradan proksid edilebilir.