Share via


Kapsayıcı grubundan giden trafik için statik IP adresi için NAT ağ geçidi yapılandırma

Dış ip adresiyle bir kapsayıcı grubu ayarlamak, dış istemcilerin gruptaki bir kapsayıcıya erişmek için IP adresini kullanmasına olanak tanır. Örneğin, bir tarayıcı kapsayıcıda çalışan bir web uygulamasına erişebilir. Ancak, şu anda bir kapsayıcı grubu giden trafik için farklı bir IP adresi kullanıyor. Bu çıkış IP adresi program aracılığıyla kullanıma sunulmaz ve bu da kapsayıcı grubu izleme ve istemci güvenlik duvarı kurallarının yapılandırılmasını daha karmaşık hale getirir.

Bu makalede, Ağ Adresi Çevirisi (NAT) ağ geçidiyle tümleştirilmiş bir sanal ağda kapsayıcı grubu yapılandırma adımları sağlanır. Azure Container Instances'a (ACI) temsilci olarak atanan bir alt ağ adres aralığı SNAT'ye bir NAT ağ geçidi yapılandırarak, kapsayıcı gruplarınızdan giden trafiği tanımlayabilirsiniz. Kapsayıcı grubu çıkış trafiği NAT ağ geçidinin genel IP adresini kullanır. Tek bir NAT ağ geçidi, ACI'ye temsilci olarak atanan sanal ağın alt ağında dağıtılan birden çok kapsayıcı grubu tarafından kullanılabilir.

Bu makalede, bu senaryoya yönelik kaynakları oluşturmak için Azure CLI'yi kullanacaksınız:

Ardından NAT ağ geçidi aracılığıyla örnek kapsayıcı gruplarından çıkış doğrularsınız.

Dekont

ACI hizmeti, statik çıkış gereksinimleri olan ancak statik giriş gereksinimleri olmayan kapsayıcılı iş yükleri için NAT ağ geçidiyle tümleştirmeyi önerir. Hem statik girişi hem de çıkışı destekleyen ACI mimarisi için lütfen şu öğreticiye bakın: Giriş ve çıkış için Azure Güvenlik Duvarı kullanma.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Ön koşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Azure Cloud Shell'i başlatma

Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabuktur. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır.

Cloud Shell'i açmak için kod bloğunun sağ üst köşesinden Deneyin'i seçmeniz yeterlidir. İsterseniz https://shell.azure.com adresine giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de başlatabilirsiniz.

Cloud Shell açıldığında ortamınız için Bash'in seçili olduğunu doğrulayın. Sonraki oturumlarda Bash ortamında Azure CLI kullanılır, kod bloklarını kopyalamak için Kopyala'yı seçin, Cloud Shell'e yapıştırın ve çalıştırmak için Enter tuşuna basın.

Azure'da oturum açma

Cloud Shell'de oturum açılan ilk hesapta otomatik olarak kimlik doğrulaması yapılır. Farklı bir abonelik kullanarak oturum açmak için aşağıdaki betiği kullanın ve yerine <Subscription ID> Azure Abonelik Kimliğiniz yazın. Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

Daha fazla bilgi için bkz . Etkin aboneliği ayarlama veya etkileşimli olarak oturum açma

Dekont

Betiğin tamamını indirmek için tam betik bölümüne gidin.

Başlarken

Bu öğreticide rastgele değişken kullanılır. Mevcut bir kaynak grubunu kullanıyorsanız, bu değişkenin değerini uygun şekilde değiştirin.

resourceGroup=resourceGroup$RANDOM

Azure kaynak grubu: Henüz bir Azure kaynak grubunuz yoksa az group create komutuyla bir kaynak grubu oluşturun . Konum değerini uygun şekilde değiştirin.

az group create --name $resourceGroup --location eastus

ACI'yi sanal ağda dağıtma

Tipik bir durumda, kapsayıcı grubu dağıtabileceğiniz bir Azure sanal ağınız zaten olabilir. Tanıtım amacıyla, aşağıdaki komutlar kapsayıcı grubu oluşturulduğunda bir sanal ağ ve alt ağ oluşturur. Alt ağ Azure Container Instances'a devredilir.

Kapsayıcı grubu, görüntüden aci-helloworld küçük bir web uygulaması çalıştırır. Belgelerdeki diğer makalelerde gösterildiği gibi, bu görüntü Node.js dosyasında yazılmış ve statik html sayfası sunan küçük bir web uygulamasını paketler.

az container create komutuyla kapsayıcı grubunu oluşturun :

az container create \
  --name appcontainer \
  --resource-group $resourceGroup \
  --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

Dekont

Alt ağınızda ihtiyacınız olan IP adresi alanının değerini --subnet address-prefix ayarlayın. Desteklenen en küçük alt ağ, sekiz IP adresi sağlayan /29 alt ağıdır. Bazı >IP adresleri Azure tarafından kullanılmak üzere ayrılmıştır ve burada daha fazla bilgi edinebilirsiniz.

Genel IP adresi oluşturma

Aşağıdaki bölümlerde Azure CLI kullanarak sanal ağda bir Azure NAT ağ geçidi dağıtın. Arka plan için bkz . Hızlı Başlangıç: Azure CLI kullanarak NAT ağ geçidi oluşturma.

İlk olarak az network vnet public-ip create komutunu kullanarak NAT ağ geçidi için bir genel IP adresi oluşturun. Bu, İnternet'e erişmek için kullanılır. Standart SKU IP adreslerinin varsayılan olarak kullanılabilirlik alanı olarak algılanacağı yaklaşan bir hataya neden olan değişiklik hakkında bir uyarı alırsınız. Kullanılabilirlik alanlarının ve genel IP adreslerinin kullanımı hakkında daha fazla bilgiyi burada bulabilirsiniz.

az network public-ip create \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --sku standard \
  --zone 1 \
  --allocation static

Bu betiğin devamında doğrulama adımı sırasında kullanmak üzere genel IP adresini bir değişkende depolayın.

ngPublicIp="$(az network public-ip show \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --query ipAddress --output tsv)"

Sanal ağa NAT ağ geçidi dağıtma

Önceki adımda oluşturduğunuz genel IP'yi kullanan bir NAT ağ geçidi oluşturmak için aşağıdaki az network nat gateway create komutunu kullanın.

az network nat gateway create \
  --resource-group $resourceGroup \
  --name myNATgateway \
  --public-ip-addresses myPublicIP \
  --idle-timeout 10

Kaynak alt ağ için NAT hizmetini yapılandırma

Kaynak alt ağı aci-alt ağını az network vnet subnet update ile myNATgateway adlı belirli bir NAT ağ geçidi kaynağını kullanacak şekilde yapılandıracağız. Bu komut, belirtilen alt ağda NAT hizmetini etkinleştirir.

az network vnet subnet update \
    --resource-group $resourceGroup  \
    --vnet-name aci-vnet \
    --name aci-subnet \
    --nat-gateway myNATgateway

Kapsayıcı grubundan çıkış testi

Güvenlik duvarının appcontainer genel IP adresine göz atarak sanal ağda çalışana gelen erişimi test edin. Daha önce genel IP adresini $NG_PUBLIC_IP değişkeninde depolamiştiniz

Aşağıdaki örnek kapsayıcıyı sanal ağa dağıtın. Çalıştığında, gönderenin IP adresini (çıkış IP adresi) görüntüleyen öğesine tek bir HTTP isteği http://checkip.dyndns.orggönderir. Güvenlik duvarındaki uygulama kuralı düzgün yapılandırılırsa, güvenlik duvarının genel IP adresi döndürülür.

az container create \
  --resource-group $resourceGroup \
  --name testegress \
  --image mcr.microsoft.com/azuredocs/aci-tutorial-sidecar \
  --command-line "curl -s http://checkip.dyndns.org" \
  --restart-policy OnFailure \
  --vnet aci-vnet \
  --subnet aci-subnet

IP adresinin öğreticinin ilk adımında oluşturduğumuz genel IP adresiyle aynı olduğunu onaylamak için kapsayıcı günlüklerini görüntüleyin.

az container logs \
  --resource-group $resourceGroup \
  --name testegress

Çıkış şuna benzer olacaktır:

<html><head><title>Current IP Check</title></head><body>Current IP Address: 52.142.18.133</body></html>

Bu IP adresi, öğreticinin ilk adımında oluşturulan genel IP adresiyle eşleşmelidir.

echo $ngPublicIp

Kaynakları temizleme

Artık gerekli olmadığında az group delete komutunu kullanarak kaynak grubunu ve tüm ilgili kaynakları aşağıdaki gibi kaldırabilirsiniz. --no-wait parametresi işlemin tamamlanmasını beklemeden denetimi komut istemine döndürür. --yes parametresi kaynakları ek bir komut istemi olmadan silmek istediğinizi onaylar.

az group delete --name $resourceGroup --yes --no-wait

Sonraki adımlar

Bu makalede, Azure NAT ağ geçidinin arkasındaki bir sanal ağda kapsayıcı grupları ayarlarsınız. Bu yapılandırmayı kullanarak Azure Container Instances kapsayıcı gruplarından tek bir statik IP adresi çıkışı ayarlarsınız.

Sorun giderme yardımı için bkz. Azure Sanal Ağ NAT bağlantısı sorunlarını giderme.