Aracılığıyla paylaş


Azure Container Apps özel kapsayıcı oturumları

Azure Container Apps dinamik oturumlarının sağladığı yerleşik kod yorumlayıcıya ek olarak, kendi oturum korumalı alanlarınızı tanımlamak için özel kapsayıcılar da kullanabilirsiniz.

Özel kapsayıcı oturumları için kullanımlar

Özel kapsayıcılar, ihtiyaçlarınıza uygun çözümler oluşturmanıza olanak sağlar. Hızlı ve kısa ömürlü ortamlarda kod yürütmenize veya uygulamaları çalıştırmanıza ve Hyper-V ile güvenli, korumalı alanlar sunmanıza olanak tanır. Ayrıca, isteğe bağlı ağ yalıtımı ile yapılandırılabilirler. Bazı Örnekler:

  • Kod yorumlayıcıları: Yerleşik yorumlayıcıda desteklenmeyen bir dille güvenli korumalı alanlarda güvenilmeyen kod yürütmeniz gerektiğinde veya kod yorumlayıcı ortamı üzerinde tam denetime ihtiyacınız olduğunda.

  • Yalıtılmış yürütme: Uygulamaları, her kiracının veya kullanıcının kendi korumalı ortamına sahip olduğu saldırgan, çok kiracılı senaryolarda çalıştırmanız gerektiğinde. Bu ortamlar birbirinden ve konak uygulamasından yalıtılır. Bazı örnekler arasında kullanıcı tarafından sağlanan kodu çalıştıran uygulamalar, son kullanıcıya bulut tabanlı bir kabuk, yapay zeka aracıları ve geliştirme ortamlarına erişim sağlayan kod verilebilir.

Özel kapsayıcı oturumlarını kullanma

Özel kapsayıcı oturumlarını kullanmak için önce özel kapsayıcı görüntüsüne sahip bir oturum havuzu oluşturursunuz. Azure Container Apps, sağlanan görüntüyü kullanarak kendi Hyper-V korumalı alanlarındaki kapsayıcıları otomatik olarak başlatır. Kapsayıcı başlatıldıktan sonra oturum havuzunda kullanılabilir.

Uygulamanız oturum istediğinde, havuzdan anında bir örnek ayrılır. Oturum, boşta durumuna girene kadar etkin kalır ve bu durum otomatik olarak durdurulur ve yok edilir.

Özel kapsayıcı oturum havuzu oluşturma

Özel kapsayıcı oturumu havuzu oluşturmak için bir kapsayıcı görüntüsü ve havuz yapılandırma ayarları sağlamanız gerekir.

HTTP isteklerini kullanarak her oturumu çağırır veya bunlarla iletişim kurarsınız. Özel kapsayıcı, bu istekleri yanıtlamak için belirttiğiniz bir bağlantı noktasında bir HTTP sunucusunu kullanıma sunmalıdır.

Azure CLI kullanarak özel bir kapsayıcı oturum havuzu oluşturmak için aşağıdaki komutlarla Azure CLI'nın en son sürümlerine ve Azure Container Apps uzantısına sahip olduğunuzdan emin olun:

az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y

Özel kapsayıcı oturumu havuzları, iş yükü profilinin etkinleştirildiği bir Azure Container Apps ortamı gerektirir. Ortamınız yoksa, oluşturmak için komutunu kullanın az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles .

az containerapp sessionpool create Özel kapsayıcı oturum havuzu oluşturmak için komutunu kullanın.

Aşağıdaki örnek, özel kapsayıcı görüntüsüyle myregistry.azurecr.io/my-container-image:1.0adlı my-session-pool bir oturum havuzu oluşturur.

İsteği göndermeden önce köşeli ayraçlar arasındaki <> yer tutucuları oturum havuzunuz ve oturum tanımlayıcınız için uygun değerlerle değiştirin.

az containerapp sessionpool create \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --environment <ENVIRONMENT> \
    --registry-server myregistry.azurecr.io \
    --registry-username <USER_NAME> \
    --registry-password <PASSWORD> \
    --container-type CustomContainer \
    --image myregistry.azurecr.io/my-container-image:1.0 \
    --cpu 0.25 --memory 0.5Gi \
    --target-port 80 \
    --cooldown-period 300 \
    --network-status EgressDisabled \
    --max-sessions 10 \
    --ready-sessions 5 \
    --env-vars "key1=value1" "key2=value2" \
    --location <LOCATION>

Bu komut aşağıdaki ayarlarla bir oturum havuzu oluşturur:

Parametre Değer Açıklama
--name my-session-pool Oturum havuzunun adı.
--resource-group my-resource-group Oturum havuzunu içeren kaynak grubu.
--environment my-environment Kapsayıcı uygulamasının ortamının adı veya kaynak kimliği.
--container-type CustomContainer Oturum havuzunun kapsayıcı türü. Özel kapsayıcı oturumları için olmalıdır CustomContainer .
--image myregistry.azurecr.io/my-container-image:1.0 Oturum havuzu için kullanılacak kapsayıcı görüntüsü.
--registry-server myregistry.azurecr.io Kapsayıcı kayıt defteri sunucusu ana bilgisayar adı.
--registry-username my-username Kapsayıcı kayıt defterinde oturum açmak için kullanılan kullanıcı adı.
--registry-password my-password Kapsayıcı kayıt defterinde oturum açma parolası.
--cpu 0.25 Çekirdeklerde gerekli CPU.
--memory 0.5Gi Gerekli bellek.
--target-port 80 Giriş trafiği için kullanılan oturum bağlantı noktası.
--cooldown-period 300 Oturumun sonlandırılmadan önce boşta bulunabileceği saniye sayısı. Oturumun API'si her çağrıldığında boşta kalma süresi sıfırlanır. Değer ile 3600arasında 300 olmalıdır.
--network-status EgressDisabled Oturumdan giden ağ trafiğine izin verilip verilmeyeceğini belirler. Geçerli değerler (varsayılan) ve EgressEnableddeğerleridir EgressDisabled .
--max-sessions 10 Aynı anda ayrılabilecek en fazla oturum sayısı.
--ready-sessions 5 Oturum havuzunda her zaman hazır olan hedef oturum sayısı. Oturumlar havuz yenilendiğinden daha hızlı ayrılırsa bu sayıyı artırın.
--env-vars "key1=value1" "key2=value2" Kapsayıcıda ayarlanacağı ortam değişkenleri.
--location "Supported Location" Oturum havuzunun konumu.

Oturum havuzunun durumunu denetlemek için komutunu az containerapp sessionpool show kullanın:

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

Oturum havuzunu güncelleştirmek için komutunu kullanın az containerapp sessionpool update .

Önemli

Oturum güvenilmeyen kodu çalıştırmak için kullanılıyorsa, güvenilmeyen kodun erişmesini istemediğiniz bilgileri veya verileri eklemeyin. Kodun kötü amaçlı olduğunu ve kapsayıcıya ortam değişkenleri, gizli diziler ve dosyalar da dahil olmak üzere tam erişimi olduğunu varsayalım.

Görüntü önbelleğe alma

Bir oturum havuzu oluşturulduğunda veya güncelleştirildiğinde, Azure Container Apps havuzdaki kapsayıcı görüntüsünü önbelleğe alır. Bu önbelleğe alma, yeni oturum oluşturma işlemini hızlandırmaya yardımcı olur.

Görüntüde yapılan değişiklikler oturumlara otomatik olarak yansıtılır. Görüntüyü güncelleştirmek için oturum havuzunu yeni bir görüntü etiketiyle güncelleştirin. Yeni görüntünün çekildiğinden emin olmak için her görüntü güncelleştirmesi için benzersiz bir etiket kullanın.

Oturumlarla çalışma

Uygulamanız, oturum havuzunun yönetim API'sini kullanarak bir oturumla etkileşim kurar.

Özel kapsayıcı oturumları için havuz yönetimi uç noktası şu biçimi izler: https://<SESSION_POOL>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.

Oturum havuzunun yönetim uç noktasını almak için komutunu az containerapp sessionpool show kullanın:

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

Havuz yönetimi uç noktasına yapılan tüm istekler taşıyıcı belirteci olan bir Authorization üst bilgi içermelidir. Havuz yönetimi API'siyle kimlik doğrulaması yapmayı öğrenmek için bkz . Kimlik doğrulaması.

Her API isteğinin oturum kimliğine sahip sorgu dizesi parametresini identifier de içermesi gerekir. Bu benzersiz oturum kimliği, uygulamanızın belirli oturumlarla etkileşim kurmasını sağlar. Oturum tanımlayıcıları hakkında daha fazla bilgi edinmek için bkz . Oturum tanımlayıcıları.

Önemli

Oturum tanımlayıcısı, değerini oluşturup yönetirken güvenli bir işlem gerektiren hassas bilgilerdir. Bu değeri korumak için uygulamanızın her kullanıcının veya kiracının yalnızca kendi oturumlarına erişimi olduğundan emin olması gerekir. Oturumlara erişimin güvenliğinin sağlanamaması, kullanıcılarınızın oturumlarında depolanan verilere yanlış veya yetkisiz erişime neden olabilir. Daha fazla bilgi için bkz. Oturum tanımlayıcıları

İstekleri oturumun kapsayıcısına iletme:

Temel havuz yönetim uç noktasını izleyen yoldaki her şey oturumun kapsayıcısına iletilir.

Örneğin, öğesine <POOL_MANAGEMENT_ENDPOINT>/api/uploadfilebir çağrı yaparsanız istek konumundaki oturumun kapsayıcısına 0.0.0.0:<TARGET_PORT>/api/uploadfileyönlendirilir.

Sürekli oturum etkileşimi:

Aynı oturuma istekte bulunmaya devam edebilirsiniz. Oturuma bekleme süresinden daha uzun bir süre için istek yoksa oturum otomatik olarak silinir.

Örnek isteği

Aşağıdaki örnekte, kullanıcı kimliğine göre özel kapsayıcı oturumuna yapılan istek gösterilmektedir.

İsteği göndermeden önce köşeli ayraçlar arasındaki <> yer tutucuları isteğinize özgü değerlerle değiştirin.

POST https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io/<API_PATH_EXPOSED_BY_CONTAINER>?identifier=<USER_ID>
Authorization: Bearer <TOKEN>
{
  "command": "echo 'Hello, world!'"
}

Bu istek, kullanıcının kimliğinin tanımlayıcısı ile özel kapsayıcı oturumuna iletilir. Oturum henüz çalışmıyorsa Azure Container Apps, isteği iletmeden önce havuzdan bir oturum ayırır.

Örnekte, oturumun kapsayıcısı isteği adresinden http://0.0.0.0:<INGRESS_PORT>/<API_PATH_EXPOSED_BY_CONTAINER>alır.

Yönetilen kimliği kullanma

Microsoft Entra Id'den yönetilen kimlik, özel kapsayıcı oturum havuzlarınızın ve bunların oturumlarının diğer Microsoft Entra korumalı kaynaklara erişmesine olanak tanır. Microsoft Entra Id'deki yönetilen kimlikler hakkında daha fazla bilgi için bkz . Azure kaynakları için yönetilen kimlikler.

Özel kapsayıcı oturum havuzlarınız için yönetilen kimlikleri etkinleştirebilirsiniz. Hem sistem tarafından atanan hem de kullanıcı tarafından atanan yönetilen kimlikler desteklenir.

Yönetilen kimlikleri özel kapsayıcı oturumu havuzlarıyla kullanmanın iki yolu vardır:

  • Görüntü çekme kimlik doğrulaması: Kapsayıcı görüntüsünü çekmek için kapsayıcı kayıt defteriyle kimlik doğrulaması yapmak için yönetilen kimliği kullanın.

  • Kaynak erişimi: Diğer Microsoft Entra korumalı kaynaklara erişmek için oturum havuzunun yönetilen kimliğini bir oturumda kullanın. Güvenlik etkilerinden dolayı, bu özellik varsayılan olarak devre dışı bırakılır.

    Önemli

    Bir oturumda yönetilen kimliğe erişimi etkinleştirirseniz, oturumda çalışan tüm kodlar veya programlar havuzun yönetilen kimliği için Entra belirteçleri oluşturabilir. Oturumlar genellikle güvenilmeyen kod çalıştırdığından bu özelliği dikkatli kullanın.

Özel kapsayıcı oturum havuzu için yönetilen kimliği etkinleştirmek için Azure Resource Manager'ı kullanın.

Günlük Kaydı

Özel kapsayıcı oturumlarından konsol günlükleri, adlı AppEnvSessionConsoleLogs_CLbir tablodaki Azure Container Apps ortamıyla ilişkili Azure Log Analytics çalışma alanında kullanılabilir.

Faturalandırma

Özel kapsayıcı oturumları, oturum havuzu tarafından kullanılan kaynaklara göre faturalandırılır. Daha fazla bilgi için bkz . Azure Container Apps faturalaması.

Sonraki adımlar