Kapsayıcı örneklerini Azure sanal ağına dağıtma

Azure Sanal Ağ, Azure ve şirket içi kaynaklarınız için güvenli ve özel ağ sağlar. Kapsayıcı gruplarını bir Azure sanal ağına dağıtarak kapsayıcılarınız sanal ağdaki diğer kaynaklarla güvenli bir şekilde iletişim kurabilir.

Bu makalede, kapsayıcı gruplarını yeni bir sanal ağa veya mevcut bir sanal ağa dağıtmak için Azure CLI'de az container create komutunun nasıl kullanılacağı gösterilmektedir.

Önemli

Kapsayıcı gruplarını sanal ağlara dağıtmadan önce sınırlamayı denetlemenizi öneririz. Ağ senaryoları ve sınırlamaları için bkz. Azure Container Instances için sanal ağ senaryoları ve kaynakları.

Önemli

Sanal ağa kapsayıcı grubu dağıtımı, Azure Container Instances kullanılabildiği çoğu bölgede Linux ve Windows kapsayıcıları için genel olarak kullanılabilir. Ayrıntılar için bkz. kullanılabilir bölgeler.

Önemli

Ağ profilleri API sürümü itibariyle kullanımdan 2021-07-01 kaldırılmıştır. Bu sürümü veya daha yeni bir sürümü kullanıyorsanız, ağ profilleriyle ilgili adımları ve eylemleri yoksayın.

Bu makaledeki örnekler Bash kabuğu için biçimlendirilmiştir. PowerShell veya Komut İstemi gibi başka bir kabuk tercih ediyorsanız, satır devamı karakterlerini buna göre ayarlayın.

Yeni sanal ağa dağıtma

Not

Yalnızca 3 IP adresine sahip olmak için alt ağ IP aralığı /29 kullanıyorsanız. her zaman yukarıda bir aralık (asla aşağıya) gitmenizi öneririz. Örneğin, kapsayıcı grubu başına en az 1 veya daha fazla IP arabelleğine sahip olabilmeniz için alt ağ IP aralığını /28 kullanın. Bunu yaparak kapsayıcıların takılmasını, başlatılamamasını, yeniden başlatılmasını ve hatta durumların durdurulmasını önleyebilirsiniz.

Yeni bir sanal ağa dağıtmak ve Azure'ın sizin için otomatik olarak ağ kaynaklarını oluşturmasını sağlamak için az container create komutunu yürütürken aşağıdakileri belirtin:

  • Sanal ağın adı
  • CIDR biçiminde sanal ağ adresi ön eki
  • Alt ağ adı
  • CIDR biçiminde alt ağ adresi ön eki

Sanal ağ ve alt ağ adres ön ekleri, sırasıyla sanal ağ ve alt ağ için adres alanlarını belirtir. Bu değerler, örneğin 10.0.0.0/16Sınıfsız Inter-Domain Yönlendirme (CIDR) gösteriminde temsil edilir. Alt ağlarla çalışma hakkında daha fazla bilgi için bkz. Sanal ağ alt ağı ekleme, değiştirme veya silme.

İlk kapsayıcı grubunuzu bu yöntemle dağıttıktan sonra, sanal ağı ve alt ağ adlarını ya da Azure'ın sizin için otomatik olarak oluşturduğu ağ profilini belirterek aynı alt ağa dağıtabilirsiniz. Azure alt ağı Azure Container Instances için devretdiğinden, alt ağa yalnızca kapsayıcı grupları dağıtabilirsiniz.

Örnek

Aşağıdaki az container create komutu, yeni bir sanal ağ ve alt ağ için ayarları belirtir. Sanal ağdaki kapsayıcı grubu dağıtımlarının kullanılabildiği bir bölgede oluşturulan kaynak grubunun adını belirtin. Bu komut, statik bir web sayfası sunan küçük bir Node.js web sunucusu çalıştıran genel Microsoft aci-helloworld kapsayıcısını dağıtır. Sonraki bölümde, aynı alt ağa ikinci bir kapsayıcı grubu dağıtacak ve iki kapsayıcı örneği arasındaki iletişimi test edin.

az container create \
  --name appcontainer \
  --resource-group myResourceGroup \
  --image mcr.microsoft.com/azuredocs/aci-helloworld \
  --vnet aci-vnet \
  --vnet-address-prefix 10.0.0.0/16 \
  --subnet aci-subnet \
  --subnet-address-prefix 10.0.0.0/24

Bu yöntemi kullanarak yeni bir sanal ağa dağıtım yaptığınızda, ağ kaynakları oluşturulurken dağıtım birkaç dakika sürebilir. İlk dağıtımdan sonra, aynı alt ağa ek kapsayıcı grubu dağıtımları daha hızlı tamamlar.

Mevcut sanal ağa dağıtma

Kapsayıcı grubunu mevcut bir sanal ağa dağıtmak için:

  1. Mevcut sanal ağınızda bir alt ağ oluşturun, kapsayıcı grubunun zaten dağıtıldığı mevcut bir alt ağı kullanın veya diğer tüm kaynak ve yapılandırmalardan boşaltılmış mevcut bir alt ağı kullanın.
  2. az container create ile bir kapsayıcı grubu dağıtın ve aşağıdakilerden birini belirtin:
    • Sanal ağ adı ve alt ağ adı
    • Farklı bir kaynak grubundan sanal ağ kullanılmasına izin veren sanal ağ kaynak kimliği ve alt ağ kaynak kimliği
    • Az network profile list kullanarak edinebileceğiniz ağ profili adı veya kimliği

Örnek

Aşağıdaki örnek, daha önce oluşturulan aynı alt ağa ikinci bir kapsayıcı grubu dağıtır ve iki kapsayıcı örneği arasındaki iletişimi doğrular.

İlk olarak, dağıtılan ilk kapsayıcı grubunun IP adresini ( appcontainer) alın:

az container show --resource-group myResourceGroup \
  --name appcontainer \
  --query ipAddress.ip --output tsv

Çıkış, özel alt ağdaki kapsayıcı grubunun IP adresini görüntüler. Örnek:

10.0.0.4

Şimdi komutuyla aldığınız IP'ye az container show ayarlayın CONTAINER_GROUP_IP ve aşağıdaki az container create komutu yürütebilirsiniz. Bu ikinci kapsayıcı olan commchecker, Alpine Linux tabanlı bir görüntü çalıştırır ve ilk kapsayıcı grubunun özel alt ağ IP adresinde yürütülür wget .

CONTAINER_GROUP_IP=<container-group-IP-address>

az container create \
  --resource-group myResourceGroup \
  --name commchecker \
  --image alpine:3.5 \
  --command-line "wget $CONTAINER_GROUP_IP" \
  --restart-policy never \
  --vnet aci-vnet \
  --subnet aci-subnet

Bu ikinci kapsayıcı dağıtımı tamamlandıktan sonra, yürüttüğü komutun çıkışını wget görebilmek için günlüklerini çekin:

az container logs --resource-group myResourceGroup --name commchecker

İkinci kapsayıcı ilk kapsayıcıyla başarıyla iletişim kurarsa, çıkış şuna benzer:

Connecting to 10.0.0.4 (10.0.0.4:80)
index.html           100% |*******************************|  1663   0:00:00 ETA

Günlük çıkışı, yerel alt ağdaki özel IP adresini kullanarak ilk kapsayıcıya bağlanıp dizin dosyasını indirebildiğini göstermelidir wget . İki kapsayıcı grubu arasındaki ağ trafiği sanal ağ içinde kaldı.

Örnek - YAML

Ayrıca yaml dosyası, Resource Manager şablonu veya Python SDK'sı gibi başka bir programlı yöntem kullanarak kapsayıcı grubunu mevcut bir sanal ağa dağıtabilirsiniz.

Örneğin, bir YAML dosyası kullanırken, Azure Container Instances için temsilci atanmış bir alt ağı olan bir sanal ağa dağıtabilirsiniz. Aşağıdaki özellikleri belirtin:

  • ipAddress: Kapsayıcı grubu için özel IP adresi ayarları.
    • ports: Varsa, açılacak bağlantı noktaları.
    • protocol: Açılan bağlantı noktası için protokol (TCP veya UDP).
  • subnetIds: Dağıtılacak alt ağların kaynak kimlikleri
    • id: Alt ağın kaynak kimliği
    • name: Alt ağın adı

Bu YAML, sanal ağınızda appcontaineryaml adlı bir kapsayıcı grubu oluşturur.

apiVersion: '2021-07-01'
location: westus
name: appcontaineryaml
properties:
  containers:
  - name: appcontaineryaml
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld
      ports:
      - port: 80
        protocol: TCP
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  ipAddress:
    type: Private
    ports:
    - protocol: tcp
      port: '80'
  osType: Linux
  restartPolicy: Always
  subnetIds:
    - id: <subnet-id>
      name: default
tags: null
type: Microsoft.ContainerInstance/containerGroups

az container create komutuyla kapsayıcı grubunu dağıtın ve parametresi için --file YAML dosya adını belirtin:

az container create --resource-group myResourceGroup \
  --file vnet-deploy-aci.yaml

Dağıtım tamamlandıktan sonra durumunu görüntülemek için az container show komutunu çalıştırın. Örnek çıktı:

Name              ResourceGroup    Status    Image                                       IP:ports     Network    CPU/Memory       OsType    Location
----------------  ---------------  --------  ------------------------------------------  -----------  ---------  ---------------  --------  ----------
appcontaineryaml  myResourceGroup  Running   mcr.microsoft.com/azuredocs/aci-helloworld  10.0.0.5:80  Private    1.0 core/1.5 gb  Linux     westus

Kaynakları temizleme

Kapsayıcı örneklerini silme

Oluşturduğunuz kapsayıcı örnekleriyle çalışmayı bitirdiğinizde, bunları aşağıdaki komutlarla silin:

az container delete --resource-group myResourceGroup --name appcontainer -y
az container delete --resource-group myResourceGroup --name commchecker -y
az container delete --resource-group myResourceGroup --name appcontaineryaml -y

Ağ kaynaklarını silme

Bu özellik şu anda daha önce oluşturduğunuz ağ kaynaklarını silmek için birkaç ek komut gerektirir. Sanal ağınızı ve alt ağınızı oluşturmak için bu makalenin önceki bölümlerindeki örnek komutları kullandıysanız, bu ağ kaynaklarını silmek için aşağıdaki betiği kullanabilirsiniz. Betik, kaynak grubunuzun tek bir ağ profiline sahip tek bir sanal ağ içerdiğini varsayar.

Betiği yürütmeden önce değişkeni silinecek sanal ağı ve alt ağı içeren kaynak grubunun adına ayarlayın RES_GROUP . Daha önce önerilen adı kullanmadıysanız sanal ağın aci-vnet adını güncelleştirin. Betik Bash kabuğu için biçimlendirilir. PowerShell veya Komut İstemi gibi başka bir kabuk tercih ederseniz değişken atamasını ve erişimcileri buna göre ayarlamanız gerekir.

Uyarı

Bu betik kaynakları siler! Sanal ağı ve içerdiği tüm alt ağları siler. Bu betiği çalıştırmadan önce, içerdiği alt ağlar da dahil olmak üzere sanal ağdaki kaynaklardan hiçbirine artık ihtiyacınız olmadığından emin olun. Bu kaynaklar silindikten sonra kurtarılamaz.

# Replace <my-resource-group> with the name of your resource group
# Assumes one virtual network in resource group
RES_GROUP=<my-resource-group>

# Get network profile ID
# Assumes one profile in virtual network
NETWORK_PROFILE_ID=$(az network profile list --resource-group $RES_GROUP --query [0].id --output tsv)

# Delete the network profile
az network profile delete --id $NETWORK_PROFILE_ID -y

# Delete virtual network
az network vnet delete --resource-group $RES_GROUP --name aci-vnet

Sonraki adımlar