Mengonfigurasi satu alamat IP publik untuk lalu lintas keluar dan masuk ke 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 menjelaskan langkah-langkah untuk mengonfigurasi grup kontainer dalam jaringan virtual yang terintegrasi dengan Azure Firewall. Dengan menyiapkan rute yang ditentukan pengguna ke grup kontainer dan aturan firewall, Anda dapat merutekan dan mengidentifikasi lalu lintas ke dan dari grup kontainer. Masuk dan keluarnya grup kontainer menggunakan alamat IP publik firewall. Satu alamat IP keluar dapat digunakan oleh beberapa grup kontainer yang disebarkan di subnet jaringan virtual yang didelegasikan ke Azure Container Instances.
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
- Firewall Azure yang disebarkan di jaringan dengan alamat IP publik statik
- Rute yang ditentukan pengguna di subnet grup kontainer
- Aturan NAT untuk masuknya firewall dan aturan aplikasi untuk keluarnya firewall
Anda kemudian memvalidasi masuk dan keluar dari grup kontainer contoh melalui firewall.
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.
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
Tip
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 disediakan untuk digunakan oleh Azure.
Untuk penggunaan pada langkah selanjutnya, dapatkan alamat IP privat grup kontainer dengan menjalankan perintah [az container show][az-container-show]:
aciPrivateIp="$(az container show --name appcontainer \
--resource-group $resourceGroup \
--query ipAddress.ip --output tsv)"
Menyebarkan Azure Firewall dalam jaringan
Di bagian berikut, gunakan Azure CLI untuk menyebarkan firewall Azure di jaringan virtual. Untuk latar belakang, lihat Tutorial: Menyebarkan dan mengonfigurasi Azure Firewall menggunakan portal Microsoft Azure.
Pertama, gunakan az network vnet subnet create untuk menambahkan subnet bernama AzureFirewallSubnet untuk firewall. AzureFirewallSubnet adalah nama yang diperlukan dari subnet ini.
az network vnet subnet create \
--name AzureFirewallSubnet \
--resource-group $resourceGroup \
--vnet-name aci-vnet \
--address-prefix 10.0.1.0/26
Gunakan perintah Azure CLI berikut untuk membuat firewall di subnet.
Jika belum diinstal, tambahkan ekstensi firewall ke Azure CLI menggunakan perintah az extension add:
az extension add --name azure-firewall
Buat sumber daya firewall menggunakan perintah az network firewall create:
az network firewall create \
--name myFirewall \
--resource-group $resourceGroup \
--location eastus
az network public-ip create \
--name fw-pip \
--resource-group $resourceGroup \
--location eastus \
--allocation-method static \
--sku standard
az network firewall ip-config create \
--firewall-name myFirewall \
--name FW-config \
--public-ip-address fw-pip \
--resource-group $resourceGroup \
--vnet-name aci-vnet
Perbarui konfigurasi firewall menggunakan perintah az network firewall update:
az network firewall update \
--name myFirewall \
--resource-group $resourceGroup
Dapatkan alamat IP privat firewall menggunakan perintah az network firewall ip-config list. Alamat IP privat ini digunakan dalam perintah berikutnya.
fwPrivateIp="$(az network firewall ip-config list \
--resource-group $resourceGroup \
--firewall-name myFirewall \
--query "[].privateIpAddress" --output tsv)"
Dapatkan alamat IP publik firewall menggunakan perintah az network public-ip show. Alamat IP publik ini digunakan dalam perintah berikutnya.
fwPublicIp="$(az network public-ip show \
--name fw-pip \
--resource-group $resourceGroup \
--query ipAddress --output tsv)"
Menentukan rute yang ditentukan pengguna di subnet ACI
Tentukan rute yang ditentukan pengguna di subnet ACI untuk mengalihkan lalu lintas ke firewall Azure. Untuk informasi selengkapnya, lihat Merutekan lalu lintas jaringan.
Buat tabel rute
Pertama, jalankan perintah az network route-table create berikut untuk membuat tabel rute. Buat tabel rute di wilayah yang sama dengan jaringan virtual.
az network route-table create \
--name Firewall-rt-table \
--resource-group $resourceGroup \
--location eastus \
--disable-bgp-route-propagation true
Membuat rute
Jalankan perintah az network-route-table route create untuk membuat rute dalam tabel rute. Untuk merutekan lalu lintas ke firewall, atur jenis hop berikutnya ke VirtualAppliance
, dan lewati alamat IP privat firewall sebagai alamat hop berikutnya.
az network route-table route create \
--resource-group $resourceGroup \
--name DG-Route \
--route-table-name Firewall-rt-table \
--address-prefix 0.0.0.0/0 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address $fwPrivateIp
Mengaitkan tabel rute ke subnet ACI
Jalankan perintah az network vnet subnet update untuk mengaitkan tabel rute dengan subnet yang didelegasikan ke Azure Container Instances.
az network vnet subnet update \
--name aci-subnet \
--resource-group $resourceGroup \
--vnet-name aci-vnet \
--address-prefixes 10.0.0.0/24 \
--route-table Firewall-rt-table
Mengonfigurasi aturan pada firewall
Secara default, Azure Firewall menolak (memblokir) lalu lintas masuk dan keluar.
Mengonfigurasi aturan NAT pada firewall ke subnet ACI
Buat aturan NAT di firewall untuk menerjemahkan dan memfilter lalu lintas internet masuk ke kontainer aplikasi yang Anda mulai sebelumnya di jaringan. Untuk detailnya, lihat Memfilter lalu lintas Internet masuk dengan DNAT Azure Firewall
Buat aturan koleksi dan aturan NAT menggunakan perintah az network firewall nat-rule create:
az network firewall nat-rule create \
--firewall-name myFirewall \
--collection-name myNATCollection \
--action dnat \
--name myRule \
--protocols TCP \
--source-addresses '*' \
--destination-addresses $fwPublicIp \
--destination-ports 80 \
--resource-group $resourceGroup \
--translated-address $aciPrivateIp \
--translated-port 80 \
--priority 200
Tambahkan aturan NAT sesuai kebutuhan untuk memfilter lalu lintas ke alamat IP lain di subnet. Misalnya, grup kontainer lain di subnet dapat mengekspos alamat IP untuk lalu lintas masuk, atau alamat IP internal lainnya dapat ditetapkan ke grup kontainer setelah dimulai ulang.
Membuat aturan aplikasi keluar di firewall
Jalankan perintah az network firewall application-rule create berikut untuk membuat aturan keluar di firewall. Contoh aturan ini memungkinkan akses dari subnet yang didelegasikan ke Azure Container Instances ke FQDN checkip.dyndns.org
. Akses HTTP ke situs digunakan dalam langkah selanjutnya untuk mengonfirmasi alamat IP keluar dari Azure Container Instances.
az network firewall application-rule create \
--collection-name myAppCollection \
--firewall-name myFirewall \
--name Allow-CheckIP \
--protocols Http=80 Https=443 \
--resource-group $resourceGroup \
--target-fqdns checkip.dyndns.org \
--source-addresses 10.0.0.0/24 \
--priority 200 \
--action Allow
Menguji akses grup kontainer melalui firewall
Bagian berikut memverifikasi bahwa subnet yang didelegasikan ke Azure Container Instances dikonfigurasi dengan benar di belakang firewall Azure. Langkah-langkah sebelumnya merutekan lalu lintas masuk ke subnet dan lalu lintas keluar dari subnet melalui firewall.
Menguji akses masuk ke grup kontainer
Uji akses masuk ke yang appcontainer
berjalan di jaringan virtual dengan menelusuri ke alamat IP publik firewall. Sebelumnya, Anda telah menyimpan alamat IP publik dalam variabel $FW_PUBLIC_IP:
echo $fwPublicIp
Output kurang lebih seperti:
52.142.18.133
Jika aturan NAT di firewall dikonfigurasi dengan benar, Anda akan melihat berikut saat memasukkan alamat IP publik firewall di browser Anda:
Menguji akses keluar dari grup kontainer
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 firewall.
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>
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
Dalam artikel ini, Anda menyiapkan grup kontainer di jaringan virtual di belakang firewall Azure. Anda telah mengonfigurasi rute yang ditentukan pengguna dan NAT serta aturan aplikasi di firewall. Dengan menggunakan konfigurasi ini, Anda menyiapkan satu alamat IP statik untuk akses masuk dan keluar dari Azure Container Instances.
Untuk informasi selengkapnya tentang mengelola lalu lintas dan melindungi sumber daya Azure, lihat dokumentasi Azure Firewall.