Mengonfigurasi NAT gateway untuk alamat IP statik untuk lalu lintas keluar dari grup kontainer

Menyiapkan grup kontainer dengan alamat IP eksternal memungkinkan klien eksternal menggunakan alamat IP untuk mengakses kontainer dalam grup. Misalnya, browser dapat mengakses aplikasi web yang dijalankan dalam kontainer. Namun, saat ini grup kontainer menggunakan alamat IP yang berbeda untuk lalu lintas keluar. Alamat IP keluar ini tidak diekspos secara terprogram, yang membuat pemantauan grup kontainer dan konfigurasi aturan firewall klien lebih kompleks.

Artikel ini memberikan langkah-langkah untuk mengonfigurasi grup kontainer di jaringan virtual yang terintegrasi dengan Network Address Translation (NAT) gateway. Dengan mengonfigurasi NAT gateway ke SNAT, rentang alamat subnet yang didelegasikan ke Azure Container Instances (ACI), Anda dapat mengidentifikasi lalu lintas keluar dari grup kontainer Anda. Lalu lintas egress grup kontainer akan menggunakan alamat IP publik dari NAT gateway. NAT gateway tunggal dapat digunakan oleh beberapa grup kontainer yang disebarkan di subnet jaringan virtual yang didelegasikan ke ACI.

Dalam artikel ini, Anda menggunakan Azure CLI untuk membuat sumber daya untuk skenario ini:

  • Grup kontainer yang disebarkan di subnet yang didelegasikan di jaringan virtual
  • NAT gateway yang disebarkan di jaringan dengan alamat IP publik statik

Anda kemudian memvalidasi egress dari grup kontainer contoh melalui NAT gateway.

Catatan

Layanan ACI merekomendasikan pengintegrasian dengan NAT gateway untuk beban kerja tersimpan yang memiliki egress statik tetapi bukan persyaratan ingress statik. Untuk arsitektur ACI yang mendukung ingress dan egress statik, lihat tutorial berikut: Menggunakan Azure Firewall untuk ingress dan egress.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Prasyarat

Meluncurkan Azure Cloud Shell

Azure Cloud Shell adalah shell interaktif gratis yang dapat Anda gunakan untuk menjalankan langkah-langkah dalam artikel ini. Shell ini memiliki alat Azure umum yang telah dipasang sebelumnya dan dikonfigurasi untuk digunakan dengan akun Anda.

Untuk membuka Cloud Shell, cukup pilih Cobalah dari sudut kanan atas blok kode. Anda juga dapat meluncurkan Cloud Shell di tab browser terpisah dengan membuka https://shell.azure.com.

Saat Cloud Shell terbuka, verifikasi bahwa Bash dipilih untuk lingkungan Anda. Sesi berikutnya akan menggunakan Azure CLI dalam lingkungan Bash, Pilih Salin untuk menyalin blok kode, tempelkan ke Cloud Shell, lalu tekan Enter untuk menjalankannya.

Masuk ke Azure

Cloud Shell diautentikasi secara otomatis dengan akun awal yang digunakan untuk masuk. Gunakan skrip berikut untuk masuk menggunakan langganan yang berbeda, menggantikan <Subscription ID> dengan ID Langganan Azure Anda. Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

subscription="<subscriptionId>" # add subscription here

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

Untuk informasi selengkapnya, lihat mengatur langganan aktif atau masuk secara interaktif

Catatan

Untuk mengunduh skrip lengkap, buka skrip lengkap.

Mulai

Tutorial ini menggunakan variabel acak. Jika Anda menggunakan grup sumber daya yang ada, ubah nilai variabel ini dengan tepat.

resourceGroup=resourceGroup$RANDOM

Grup sumber daya Azure: Jika Anda belum memiliki grup sumber daya Azure, buat grup sumber daya dengan perintah az group create. Modifikasi nilai lokasi yang sesuai.

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

Menyebarkan ACI dalam jaringan virtual

Dalam kasus umum, Anda mungkin sudah memiliki jaringan virtual Azure tempat grup kontainer disebarkan. Sebagai demonstrasi, perintah berikut membuat jaringan virtual dan subnet saat grup kontainer dibuat. Subnet didelegasikan ke Azure Container Instances.

Grup kontainer menjalankan aplikasi web kecil dari gambar aci-helloworld. Seperti yang diperlihatkan dalam artikel lain dalam dokumentasi, gambar ini mengemas aplikasi web kecil yang ditulis Node.js yang menyajikan halaman HTML statik.

Buat grup kontainer dengan perintah az container create:

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

Catatan

Sesuaikan nilai --subnet address-prefix untuk ruang alamat IP yang Anda butuhkan di subnet Anda. Subnet terkecil yang didukung adalah /29, yang menyediakan delapan alamat IP. Beberapa >alamat IP dicadangkan untuk digunakan oleh Azure, yang dapat Anda baca selengkapnya di sini.

Membuat alamat IP publik

Di bagian berikut, gunakan Azure CLI untuk menyebarkan Azure NAT gateway di jaringan virtual. Untuk latar belakang, lihat Mulai cepat: Membuat NAT gateway menggunakan Azure CLI.

Pertama, gunakan az network vnet public-ip create untuk membuat alamat IP publik untuk NAT gateway. Alamat IP publik ini akan digunakan untuk mengakses Internet. Anda akan menerima peringatan tentang perubahan gangguan yang akan datang dengan alamat IP SKU Standar akan menjadi zona ketersediaan yang diketahui secara default. Anda dapat mempelajari selengkapnya tentang penggunaan zona ketersediaan dan alamat IP publik di sini.

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

Simpan alamat IP publik dalam variabel untuk digunakan selama langkah validasi nanti dalam skrip ini.

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

Menyebarkan NAT gateway ke jaringan virtual

Gunakan az network nat gateway create berikut untuk membuat NAT gateway yang menggunakan IP publik yang Anda buat di langkah sebelumnya.

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

Mengonfigurasi layanan NAT untuk subnet sumber

Kita akan mengonfigurasi subnet sumber aci-subnet untuk menggunakan sumber daya NAT gateway tertentu myNATgateway dengan az network vnet subnet update. Perintah ini akan mengaktifkan layanan NAT pada subnet yang ditentukan.

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

Menguji akses keluar dari grup kontainer

Uji akses masuk ke yang appcontainer berjalan di jaringan virtual dengan menelusuri ke alamat IP publik firewall. Sebelumnya, Anda menyimpan alamat IP publik di variabel $NG_PUBLIC_IP

Sebarkan contoh kontainer berikut ke dalam jaringan virtual. Saat dijalankan, satu permintaan HTTP ke http://checkip.dyndns.org akan dikirim, yang menampilkan alamat IP pengirim (alamat IP keluar). Jika aturan aplikasi di firewall dikonfigurasi dengan benar, alamat IP publik firewall akan ditampilkan.

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

Lihat log kontainer untuk mengonfirmasi bahwa alamat IP sama dengan alamat IP publik yang kita buat di langkah pertama tutorial.

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

Output kurang lebih seperti:

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

Alamat IP ini harus cocok dengan alamat IP publik yang dibuat pada langkah pertama tutorial.

echo $ngPublicIp

Membersihkan sumber daya

Jika tidak diperlukan lagi, Anda dapat menggunakan hapus grup az untuk menghapus grup sumber daya, dan semua sumber daya terkait sebagaimana berikut ini. Parameter --no-wait mengembalikan kontrol ke permintaan tanpa menunggu operasi selesai. Parameter --yes mengonfirmasi bahwa Anda ingin menghapus sumber daya tanpa permintaan tambahan untuk melakukannya.

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

Langkah berikutnya

Di artikel ini, Anda menyiapkan grup kontainer di jaringan virtual di belakang Azure NAT gateway. Dengan menggunakan konfigurasi ini, Anda menyiapkan satu egress alamat IP statik dari grup kontainer Azure Container Instances.

Untuk bantuan pemecahan masalah, lihat Memecahkan masalah konektivitas NAT Azure Virtual Network.