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'daki az container create komutunun nasıl kullanılacağı gösterilmektedir.
Önemli
- Sanal ağ kullanmadan önce alt ağların temsilci olarak atanması gerekir
- 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ı.
- Sanal ağa kapsayıcı grubu dağıtımı, Azure Container Instances'ın 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 veya daha yeni bir sürümü kullanıyorsanız, ağ profilleriyle ilgili tüm 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.
Önkoşullar
Aşağıdaki örneklerde kullanılan tüm kaynakları yönetmek için bir kaynak grubuna ihtiyacınız vardır. Kaynak grubu oluşturmak için az group create komutunu kullanın:
az group create --name myResourceGroup --location eastus
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 bir aralık yukarı (asla aşağıya) gitmek ö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 ağ kaynaklarını otomatik olarak 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/16
, Sınıfsız Etki Alanları Arası 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ığınızda, sanal ağı ve alt ağ adlarını veya 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'a devreddiğ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 daha fazla kapsayıcı grubu dağıtımı daha hızlı tamamlar.
Mevcut sanal ağa dağıtma
Kapsayıcı grubunu mevcut bir sanal ağa dağıtmak için:
- 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. Kapsayıcı grupları için kullandığınız alt ağ yalnızca kapsayıcı gruplarını içerebilir. Kapsayıcı grubunu bir alt ağa dağıtmadan önce, sağlamadan önce alt ağı açıkça temsilci olarak atamanız gerekir. Temsilci atandıktan sonra alt ağ yalnızca kapsayıcı grupları için kullanılabilir. Kapsayıcı grupları dışındaki kaynakları temsilcili alt ağa dağıtmaya çalışırsanız işlem başarısız olur.
- 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
Ö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ğıtmış olduğunuz 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. Örneğin:
10.0.0.4
Şimdi komutuyla az container show
aldığınız IP'ye 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 wget
çıkışını 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 çıktısı, yerel alt ağ üzerindeki özel IP adresini kullanarak ilk kapsayıcıya bağlanıp dizin dosyasını indirebileni göstermelidir wget
. İki kapsayıcı grubu arasındaki ağ trafiği sanal ağ içinde kaldı.
Örnek - YAML
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 dağıtabilirsiniz.
Örneğin, bir YAML dosyası kullanırken, Azure Container Instances'a temsilci olarak atanan bir alt ağ ile 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 kimlikleriid
: Alt ağın kaynak kimliğiname
: 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
kapsayıcı grubunu az container create komutuyla 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 çıkış:
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
Azure Container Instances
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 adını güncelleştirin aci-vnet
. Betik Bash kabuğu için biçimlendirilir. PowerShell veya Komut İstemi gibi başka bir kabuğu tercih ediyorsanız 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 kaynaklara 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
Resource Manager şablonu kullanarak yeni bir sanal ağ, alt ağ, ağ profili ve kapsayıcı grubu dağıtmak için bkz . Sanal ağ ile Azure kapsayıcı grubu oluşturma.
Azure Container Registry'den özel bir uç nokta aracılığıyla görüntü çekebilen Azure Container Instances'ı dağıtmak için bkz . Yönetilen kimlik kullanarak Azure Container Registry'den Azure Container Instances'a dağıtma.