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, Kubernetes'in ayrıntılarını ve kapsayıcı düzenlemesini sizin için yönetir. Azure Container Apps'teki kapsayıcılar istediğiniz çalışma zamanını, programlama dilini veya geliştirme yığınını kullanabilir.
Azure Container Apps şu desteği destekler:
- Linux tabanlı x86-64 (
linux/amd64
) kapsayıcı görüntüsü - Herhangi bir genel ya da özel konteyner kayıt defterinden konteynerlar
- İsteğe bağlı sidecar ve init konteynerları
Özellikler şunlardır:
- Uygulamalar, kapsayıcı görüntüsünü ve diğer ayarları tanımlamak için yapılandırma bölümünü kullanır
template
. Yapılandırma bölümünde yapılantemplate
değişiklikler yeni bir kapsayıcı uygulaması düzeltmesini tetikler. - Bir kapsayıcının çökmesi durumunda, otomatik olarak yeniden başlatılır.
İşlerin özellikleri şunlardır:
- İş yürütmeleri, her yürütme başladığında kapsayıcı görüntüsünü ve diğer ayarları tanımlamak için yapılandırma bölümünü kullanır
template
. - Kapsayıcı sıfır olmayan bir çıkış koduyla çıkarsa, işin yürütülmesi başarısız olarak işaretlenir. Başarısız yürütmeleri yeniden denemek için bir iş yapılandırabilirsiniz.
Konfigürasyon
Çoğu kapsayıcı uygulaması tek bir kapsayıcıya sahiptir. Gelişmiş senaryolarda, bir uygulamanın sidecar ve init kapsayıcıları da olabilir. Kapsayıcı uygulama tanımında, ana uygulama ve sidecar kapsayıcıları, containers
bölümündeki properties.template
dizisinde listelenir, init kapsayıcılar ise initContainers
dizisinde listelenir. Aşağıdaki alıntı, bir uygulamanın kapsayıcılarını ayarlarken kullanılabilen yapılandırma seçeneklerini gösterir.
{
"properties": {
"template": {
"containers": [
{
"name": "main",
"image": "[parameters('container_image')]",
"env": [
{
"name": "HTTP_PORT",
"value": "80"
},
{
"name": "SECRET_VAL",
"secretRef": "mysecret"
}
],
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/appsettings",
"volumeName": "appsettings-volume"
}
],
"probes": [
{
"type": "liveness",
"httpGet": {
"path": "/health",
"port": 8080,
"httpHeaders": [
{
"name": "Custom-Header",
"value": "liveness probe"
}
]
},
"initialDelaySeconds": 7,
"periodSeconds": 3
},
{
"type": "readiness",
"tcpSocket": {
"port": 8081
},
"initialDelaySeconds": 10,
"periodSeconds": 3
},
{
"type": "startup",
"httpGet": {
"path": "/startup",
"port": 8080,
"httpHeaders": [
{
"name": "Custom-Header",
"value": "startup probe"
}
]
},
"initialDelaySeconds": 3,
"periodSeconds": 3
}
]
}
]
},
"initContainers": [
{
"name": "init",
"image": "[parameters('init_container_image')]",
"resources": {
"cpu": 0.25,
"memory": "0.5Gi"
},
"volumeMounts": [
{
"mountPath": "/appsettings",
"volumeName": "appsettings-volume"
}
]
}
]
...
}
...
}
Ayarlar | Açıklama | Açıklamalar |
---|---|---|
image |
Kapsayıcı uygulamanız için kapsayıcı imaj adı. | Bu değer biçimindedir repository/<IMAGE_NAME>:<TAG> . Kapsayıcı görüntüleri için gibi latest statik etiketler kullanmaktan kaçının. Statik etiketlerin kullanılması önbelleğe alma sorunlarına yol açabilir ve uygulamanızın sorunlarının giderilmesini zorlaştırabilir. Bunun yerine, güncelleştirmelerin düzgün bir şekilde izlendiğinden ve dağıtıldığından emin olmak için git karması veya tarih ve saat gibi her dağıtım için benzersiz etiketler kullanın. |
name |
Kapsayıcının kolay adı. | Raporlama ve tanımlama için kullanılır. |
command |
Kapsayıcının başlangıç komutu. | Docker'ın giriş noktası alanına eşdeğerdir. |
args |
Komut bağımsız değişkenlerini başlatın. | Dizideki girdiler, başlangıç komutuna geçirmek üzere bir parametre listesi oluşturmak üzere birleştirilir. |
env |
Ortam değişkenlerini tanımlayan ad/değer çiftleri dizisi. | Bir sır başvurulurken secretRef alanı yerine value kullanın. |
resources.cpu |
Kapsayıcıya ayrılan CPU sayısı. | Bkz. vCPU ve bellek ayırma gereksinimleri |
resources.memory |
Kapsayıcıya ayrılan RAM miktarı. | Bkz. vCPU ve bellek ayırma gereksinimleri |
volumeMounts |
Birim bağlama tanımları dizisi. | Kapsayıcınız için geçici veya kalıcı depolama birimleri tanımlayabilirsiniz. Depolama birimleri hakkında daha fazla bilgi için bkz. Azure Container Apps'te depolama bağlamalarını kullanma. |
probes |
Konteynerde etkinleştirilen sağlık denetimleri dizisi. | Yoklama ayarları hakkında daha fazla bilgi için bkz. Azure Container Apps'te sistem durumu yoklamaları. |
vCPU ve bellek ayırma gereksinimleri
Tüketim planını kullandığınızda, bir kapsayıcı uygulamasındaki tüm kapsayıcılara ayrılan toplam CPU ve bellek, aşağıdaki birleşimlerden birini oluşturmalıdır.
vCPU'lar (çekirdekler) | Hafıza |
---|---|
0.25 |
0.5Gi |
0.5 |
1.0Gi |
0.75 |
1.5Gi |
1.0 |
2.0Gi |
1.25 |
2.5Gi |
1.5 |
3.0Gi |
1.75 |
3.5Gi |
2.0 |
4.0Gi |
2.25 |
4.5Gi |
2.5 |
5.0Gi |
2.75 |
5.5Gi |
3.0 |
6.0Gi |
3.25 |
6.5Gi |
3.5 |
7.0Gi |
3.75 |
7.5Gi |
4.0 |
8.0Gi |
Uyarı
Tüketim planını yalnızca Tüketim ortamında kullanan uygulamalar en fazla 2 çekirdek ve 4Gi bellekle sınırlıdır.
Çoklu kapsayıcı
Gelişmiş senaryolarda, tek bir kapsayıcı uygulamasında birden çok kapsayıcı çalıştırabilirsiniz. Bu deseni yalnızca kapsayıcılarınızın sıkı bir şekilde bağlı olduğu belirli örneklerde kullanın.
Çoğu mikro hizmet senaryosunda en iyi yöntem, her hizmeti ayrı bir kapsayıcı uygulaması olarak dağıtmaktır.
Aynı kapsayıcı uygulamasındaki birden çok kapsayıcı sabit disk ve ağ kaynaklarını paylaşır ve aynı uygulama yaşam döngüsünü yaşar.
Kapsayıcı uygulamasında ek kapsayıcıları çalıştırmanın iki yolu vardır: sepet kapsayıcıları ve başlatma kapsayıcıları.
Sepet kapsayıcıları
sepet deseniniuygulamak için tek bir kapsayıcı uygulamasında birden çok kapsayıcı tanımlayabilirsiniz.
Yan araba konteynerleri örnekleri şunlardır:
Paylaşılan bir birimde birincil uygulama kapsayıcısından günlükleri okuyan ve bunları bir günlük hizmetine ileten bir aracı.
Paylaşılan bir birimde birincil uygulama kapsayıcısı tarafından kullanılan bir önbelleği yenileyen bir arka plan işlemi.
Bu senaryolar örnek olup, yan arabayı (sidecar) uygulayabileceğiniz tek yöntemleri temsil etmemektedir.
Kapsayıcı uygulamasında birden çok kapsayıcı çalıştırmak için, kapsayıcı uygulaması şablonunun dizisine containers
birden fazla kapsayıcı ekleyin.
Başlatma kapsayıcıları
Kapsayıcı uygulamasında bir veya daha fazla init kapsayıcısı tanımlayabilirsiniz. Init kapsayıcıları birincil uygulama kapsayıcısı öncesinde çalışır ve verileri indirme veya ortamı hazırlama gibi başlatma görevlerini gerçekleştirmek için kullanılır.
Init kapsayıcıları, kapsayıcı uygulaması şablonunun dizisinde initContainers
tanımlanır. Kapsayıcılar dizide tanımlandığı sırayla çalışır ve birincil uygulama kapsayıcısı başlamadan önce başarıyla tamamlanması gerekir.
Uyarı
Ayrılmış planı kullanan veya Yalnızca tüketim ortamında çalışan uygulamalarda init kapsayıcıları, çalışma zamanında yönetilen kimliğe erişemez.
Konteyner kayıt defterleri
Container Apps yapılandırmasında kimlik bilgileri sağlayarak özel kayıt defterlerinde barındırılan görüntüleri dağıtabilirsiniz.
Kapsayıcı kayıt defteri kullanmak için, kapsayıcı uygulaması kaynak şablonunun registries
bölümündeki dizide properties.configuration
kayıt defterini tanımlarsınız.
passwordSecretRef
alanı, parolayı tanımladığınız secrets
dizisinde yer alan gizli adını belirler.
{
...
"registries": [{
"server": "docker.io",
"username": "my-registry-user-name",
"passwordSecretRef": "my-password-secret-name"
}]
}
Kayıtlı kimlik bilgileri, uygulamanız dağıtılırken özel kayıt defterinden bir kapsayıcı görüntüsü çekmek için kullanılır.
Aşağıdaki örnekte, bir kapsayıcı uygulamasında Azure Container Registry kimlik bilgilerinin nasıl yapılandırılır gösterilmektedir.
{
...
"configuration": {
"secrets": [
{
"name": "docker-hub-password",
"value": "my-docker-hub-password"
}
],
...
"registries": [
{
"server": "docker.io",
"username": "someuser",
"passwordSecretRef": "docker-hub-password"
}
]
}
}
Uyarı
Docker Hub , Docker görüntüsü indirme sayısını sınırlar. Sınıra ulaşıldığında uygulamanızdaki kapsayıcılar başlatılamıyor. Bu sorunu önlemek için Azure Container Registry gibi yeterli sınırlara sahip bir kayıt defteri kullanın.
Azure Container Registry ile yönetilen kimlik
Kullanıcı adı ve parola kullanmak yerine Azure Container Registry ile kimlik doğrulaması yapmak için Azure yönetilen kimliği kullanabilirsiniz. Azure Container Apps'teki Yönetilen Kimlikler hakkında daha fazla bilgi için bkz..
Yönetilen kimliği bir kayıt defteriyle kullanmak için, kimliğin uygulamada etkinleştirilmesi ve kayıt defterinde rol atanması acrPull
gerekir. Kayıt defterini yapılandırmak için, kullanıcı tarafından atanan bir kimlik için yönetilen kimlik kaynak kimliğini veya system
kayıt defterinin özelliğindeki identity
sistem tarafından atanan kimliği kullanın. Yönetilen kimlik kullanırken kullanıcı adı ve parola yapılandırma.
{
"identity": {
"type": "SystemAssigned,UserAssigned",
"userAssignedIdentities": {
"<IDENTITY1_RESOURCE_ID>": {}
}
}
"properties": {
"configuration": {
"registries": [
{
"server": "myacr1.azurecr.io",
"identity": "<IDENTITY1_RESOURCE_ID>"
},
{
"server": "myacr2.azurecr.io",
"identity": "system"
}]
}
...
}
}
Kullanıcı tarafından atanan kimlikleri yapılandırma hakkında daha fazla bilgi için bkz. Kullanıcı tarafından atanan kimlik ekleme.
Sınırlamalar
Azure Container Apps'te aşağıdaki sınırlamalar vardır:
Ayrıcalıklı kapsayıcılar: Azure Container Apps, konak düzeyinde erişime sahip ayrıcalıklı kapsayıcılar moduna izin vermez.
İşletim sistemi: Linux tabanlı (
linux/amd64
) kapsayıcı görüntüleri gereklidir.En büyük görüntü boyutu:
- Tüketim iş yükü profili, her uygulama veya iş çoğaltması için toplam 8 GB'a kadar olan kapsayıcı görüntülerini destekler.
- Özel iş yükü profilleri, daha büyük kapsayıcı görüntülerini destekler. Ayrılmış iş yükü profili birden çok uygulama veya iş çalıştırabildiğinden, birden çok kapsayıcı görüntüsü kullanılabilir disk alanını paylaşır. Desteklenen gerçek görüntü boyutu, diğer uygulamalar ve işler tarafından kullanılan kaynaklara göre değişir.