Azure Container Apps'teki kapsayıcılar
Azure Container Apps, sizin için Kubernetes ve kapsayıcı düzenleme ayrıntılarını yönetir. Azure Container Apps'deki kapsayıcılar sizin seçtiğiniz çalışma zamanını, bilgisayar dilini veya geliştirme yığınını kullanabilir.
Azure Container Apps şu desteği destekler:
- Gerekli temel görüntü içermeyen Linux tabanlı x86-64 (
linux/amd64
) kapsayıcı görüntüleri - Herhangi bir genel veya özel kapsayıcı kayıt defterinden kapsayıcılar
- Sepet ve init kapsayıcıları
Özellikler şunlardır:
- Yapılandırma bölümünde yapılan
template
değişiklikler yeni bir kapsayıcı uygulaması düzeltmesini tetikler. - Bir kapsayıcı kilitlenirse 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ş yürütme başarısız olarak işaretlenir. Başarısız yürütmeleri yeniden denemek için bir iş yapılandırabilirsiniz.
Yapılandırma
Aşağıdaki kod, kapsayıcı uygulaması kaynak şablonunun containers
properties.template
bölümündeki dizinin bir örneğidir. Alıntı, bir kapsayıcıyı 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"
}
]
}
]
...
}
...
}
Ayar | Tanım | Açıklamalar |
---|---|---|
image |
Kapsayıcı uygulamanızın kapsayıcı görüntüsü adı. | Bu değer biçimindedir repository/<IMAGE_NAME>:<TAG> . |
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 anahtar/değer çiftleri dizisi. | Bir gizli diziye başvurmak için alan yerine value kullanınsecretRef . |
resources.cpu |
Kapsayıcıya ayrılan CPU sayısı. | Tüketim planında değerler aşağıdaki kurallara uymalıdır: • sıfırdan büyük • 2'den küçük veya buna eşit • herhangi bir ondalık sayı olabilir (en fazla iki ondalık basamakla) Örneğin, 1.25 geçerli, ancak 1.555 geçersiz.Varsayılan değer kapsayıcı başına 0,25 CPU'dur. Ayrılmış planda Tüketim iş yükü profilini kullandığınızda, CPU'ların 4'ten küçük veya buna eşit olması dışında aynı kurallar uygulanır. Ayrılmış planı kullandığınızda, maksimum CPU sayısı kapsayıcı uygulamasının çalıştığı profilde kullanılabilir çekirdek sayısından küçük veya buna eşit olmalıdır. |
resources.memory |
Kapsayıcıya ayrılan RAM miktarı. | Tüketim planında değerler aşağıdaki kurallara uymalıdır: • sıfırdan büyük • küçüktür veya eşittir 4Gi • herhangi bir ondalık sayı olabilir (en fazla iki ondalık basamakla) Örneğin, 1.25Gi geçerli, ancak 1.555Gi geçersiz.Varsayılan değer kapsayıcı başınadır 0.5Gi .Ayrılmış planda Tüketim iş yükünü kullandığınızda, bellek değerinden küçük veya buna eşit 8Gi olması dışında aynı kurallar uygulanır.Ayrılmış planı kullandığınızda maksimum bellek, kapsayıcı uygulamasının çalıştığı profilde kullanılabilir bellek miktarından küçük veya buna eşit olmalıdır. |
volumeMounts |
Birim bağlama tanımları dizisi. | Kapsayıcınız için geçici bir birim veya birden çok kalıcı depolama birimi tanımlayabilirsiniz. Depolama birimleri hakkında daha fazla bilgi için bkz . Azure Container Apps'te depolama bağlamalarını kullanma. |
probes |
Kapsayıcıda etkinleştirilen sistem durumu yoklamaları dizisi. | Bu özellik Kubernetes sistem durumu yoklamalarını temel alır. Yoklama ayarları hakkında daha fazla bilgi için bkz . Azure Container Apps'te sistem durumu yoklamaları. |
Ayrılmış planda Tüketim planını veya Tüketim iş yükünü kullandığınızda, bir kapsayıcı uygulamasındaki tüm kapsayıcılar için istenen toplam CPU ve bellek ayırmalarının aşağıdaki birleşimlerden birine kadar eklenmesi gerekir.
vCPU'lar (çekirdekler) | Bellek | Tüketim planı | Tüketim iş yükü profili |
---|---|---|---|
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 |
✔ |
Tüm kapsayıcılarınızdaki CPU isteklerinin toplamı, vCPU sütunundaki değerlerden biriyle eşleşmelidir.
Tüm kapsayıcılarınızdaki bellek isteklerinin toplamı, CPU sütununun aynı satırındaki bellek sütunundaki bellek değeriyle eşleşmelidir.
Ayrılmış planda Tüketim profilini kullandığınızda, bir kapsayıcı uygulamasındaki tüm kapsayıcılar için istenen toplam CPU ve bellek ayırmaları, profildeki kullanılabilir çekirdeklere ve belleğe eşit veya daha küçük olmalıdır.
Birden çok 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 birden çok kapsayıcı çalıştırmanın iki yolu vardır: sepet kapsayıcıları ve başlatma kapsayıcıları.
Sepet kapsayıcıları
Sepet desenini uygulamak için tek bir kapsayıcı uygulamasında birden çok kapsayıcı tanımlayabilirsiniz.
Sepet kapsayıcısı ö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 örnektir ve sepet uygulayabileceğiniz tek yolları 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.
Init 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.
Dekont
Init kapsayıcıları, yönetilen kimlikleri kullanarak görüntü çekme işlemlerini destekler, ancak init kapsayıcılarında çalışan işlemlerin yönetilen kimliklere erişimi yoktur.
Kapsayıcı 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 properties.configuration
bölümünde dizide registries
gerekli alanları tanımlarsınız. alanı, passwordSecretRef
parolayı tanımladığınız dizi adında gizli secrets
dizinin adını tanımlar.
{
...
"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": "acr-password",
"value": "my-acr-password"
}
],
...
"registries": [
{
"server": "myacr.azurecr.io",
"username": "someuser",
"passwordSecretRef": "acr-password"
}
]
}
}
Dekont
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ılamaz. 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. Daha fazla bilgi için bkz . Azure Container Apps'te yönetilen kimlikler.
Bir kayıt defterine yönetilen kimlik atarken, kullanıcı tarafından atanan kimlik için veya system
sistem tarafından atanan kimlik için yönetilen kimlik kaynak kimliğini kullanın.
{
"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.