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 keluar grup kontainer menggunakan alamat IP publik gateway NAT. Beberapa grup kontainer yang disebarkan di subnet jaringan virtual dapat menggunakan gateway NAT tunggal.
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
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
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.
Memulai
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. Gateway menggunakan IP publik ini untuk mengakses Internet. Anda menerima peringatan tentang perubahan melanggar yang akan datang di mana alamat IP SKU Standar sadar zona ketersediaan 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
Kami mengonfigurasi subnet sumber aci-subnet untuk menggunakan sumber daya gateway NAT tertentu myNATgateway dengan pembaruan subnet vnet jaringan az. Perintah ini 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 lain 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.