Menyebarkan instans kontainer ke dalam jaringan virtual Azure

Azure Virtual Network menyediakan jaringan pribadi yang aman untuk sumber daya Azure dan lokal Anda. Dengan menyebarkan grup kontainer ke jaringan virtual Azure, kontainer Anda dapat berkomunikasi dengan aman dengan sumber daya lain di jaringan virtual.

Artikel ini memperlihatkan cara menggunakan perintah az container create di Azure CLI untuk menyebarkan grup kontainer ke jaringan virtual baru atau jaringan virtual yang sudah ada.

Penting

Sebelum menyebarkan grup kontainer di jaringan virtual, sebaiknya periksa batasannya terlebih dahulu. Untuk skenario dan batasan jaringan, lihat Skenario dan sumber daya jaringan virtual untuk Azure Container Instances.

Penting

Penyebaran grup kontainer ke jaringan virtual umumnya tersedia untuk kontainer Linux dan Windows, di sebagian besar wilayah tempat Azure Container Instances tersedia. Untuk detailnya, lihat wilayah yang tersedia.

Penting

Profil jaringan telah dihentikan pada versi API 2021-07-01. Jika Anda menggunakan versi ini atau yang lebih baru, abaikan langkah dan tindakan apa pun yang terkait dengan profil jaringan.

Contoh dalam artikel ini diformat untuk shell Bash. Jika Anda lebih suka shell lain seperti PowerShell atau Perintah, sesuaikan karakter kelanjutan baris yang sesuai.

Menyebarkan ke jaringan virtual baru

Catatan

Jika Anda menggunakan rentang IP subnet /29 untuk hanya memiliki 3 alamat IP. kami sarankan selalu untuk pergi satu rentang di atas (tidak pernah di bawah). Misalnya, gunakan rentang IP subnet /28 sehingga Anda dapat memiliki setidaknya 1 atau lebih buffer IP per grup kontainer. Dengan melakukan ini, Anda dapat menghindari kontainer macet, tidak dapat memulai, memulai ulang, atau bahkan tidak dapat menghentikan status.

Untuk menyebarkan ke jaringan virtual baru dan meminta Azure membuat sumber daya jaringan untuk Anda secara otomatis, tentukan hal berikut saat Anda menjalankan perintah az container create:

  • Nama jaringan virtual
  • Awalan alamat jaringan virtual dalam format CIDR
  • Nama subnet
  • Awalan alamat subnet dalam format CIDR

Awalan jaringan virtual dan alamat subnet menentukan ruang alamat untuk jaringan virtual dan subnet. Nilai-nilai ini diwakili dalam notasi Classless Inter-Domain Routing (CIDR), misalnya 10.0.0.0/16. Untuk informasi selengkapnya tentang bekerja dengan subnet, lihat Menambahkan, mengubah, atau menghapus subnet jaringan virtual.

Setelah menyebarkan grup kontainer pertama dengan metode ini, Anda dapat menyebarkan ke subnet yang sama dengan menentukan nama jaringan virtual dan nama subnet, atau profil jaringan yang dibuat Azure secara otomatis untuk Anda. Karena Azure mendelegasikan subnet ke Azure Container Instances, Anda hanya dapat menyebarkan grup kontainer ke subnet.

Contoh

Perintah az container create berikut menentukan pengaturan untuk jaringan virtual dan subnet baru. Berikan nama grup sumber daya yang dibuat di wilayah tempat penyebaran grup kontainer dalam jaringan virtual tersedia. Perintah ini menyebarkan kontainer aci-helloworld Microsoft publik yang menjalankan server web Node.js kecil yang melayani halaman web statis. Di bagian berikutnya, Anda akan menyebarkan grup kontainer kedua ke subnet yang sama, dan menguji komunikasi antara dua instans kontainer.

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

Ketika Anda menyebarkan ke jaringan virtual baru dengan menggunakan metode ini, penyebaran dapat memakan waktu beberapa menit saat sumber daya jaringan dibuat. Setelah penyebaran awal, penyebaran grup kontainer tambahan ke subnet yang sama selesai lebih cepat.

Menyebarkan ke jaringan virtual yang sudah ada

Untuk menyebarkan grup kontainer ke jaringan virtual yang sudah ada:

  1. Buat subnet di dalam jaringan virtual Anda yang sudah ada, gunakan subnet yang sudah ada tempat grup kontainer sudah disebarkan, atau gunakan subnet yang sudah ada yang dikosongkan dari semua sumber daya dan konfigurasi lainnya.
  2. Sebarkan grup kontainer dengan perintah az container create dan tentukan salah satu hal berikut ini:
    • Nama jaringan virtual dan nama subnet
    • ID sumber daya jaringan virtual dan ID sumber daya subnet, yang memungkinkan penggunaan jaringan virtual dari grup sumber daya yang berbeda
    • Nama atau ID profil jaringan, yang bisa Anda peroleh menggunakan perintah az network profile list

Contoh

Contoh berikut menyebarkan grup kontainer kedua ke subnet yang sama yang dibuat sebelumnya, dan memverifikasi komunikasi antara dua instans kontainer.

Pertama, dapatkan alamat IP dari grup kontainer pertama yang Anda sebarkan, appcontainer:

az container show --resource-group myResourceGroup \
  --name appcontainer \
  --query ipAddress.ip --output tsv

Output menampilkan alamat IP grup kontainer di subnet privat. Contohnya:

10.0.0.4

Sekarang, atur CONTAINER_GROUP_IP ke IP yang Anda ambil dengan perintah az container show, dan jalankan perintah az container create berikut. Kontainer kedua ini, commchecker, menjalankan gambar berbasis Linux Alpine dan menjalankan wget terhadap alamat IP subnet privat grup kontainer pertama.

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

Setelah penyebaran kontainer kedua ini selesai, tarik lognya sehingga Anda dapat melihat output dari perintah wget yang dijalankannya:

az container logs --resource-group myResourceGroup --name commchecker

Jika kontainer kedua berhasil berkomunikasi dengan yang pertama, outputnya mirip dengan:

Connecting to 10.0.0.4 (10.0.0.4:80)
index.html           100% |*******************************|  1663   0:00:00 ETA

Output log harus menunjukkan bahwa wget dapat menghubungkan dan mengunduh file indeks dari kontainer pertama menggunakan alamat IP pribadinya pada subnet lokal. Lalu lintas jaringan antara dua grup kontainer tetap berada dalam jaringan virtual.

Contoh - YAML

Anda juga dapat menyebarkan grup kontainer ke jaringan virtual yang sudah ada dengan menggunakan file YAML, templat Resource Manager, atau metode terprogram lain seperti dengan Python SDK.

Misalnya, saat menggunakan file YAML, Anda dapat menyebarkan ke jaringan virtual dengan subnet yang didelegasikan ke Azure Container Instances. Tentukan properti berikut ini:

  • ipAddress: Pengaturan alamat IP pribadi untuk grup kontainer.
    • ports: Port yang akan dibuka, jika ada.
    • protocol: Protokol (TCP atau UDP) untuk port yang dibuka.
  • subnetIds: ID sumber daya subnet yang akan disebarkan
    • id: ID sumber daya dari subnet
    • name: Nama subnet

YAML ini membuat grup kontainer bernama appcontaineryaml di jaringan virtual Anda.

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

Sebarkan grup kontainer dengan perintah az container create, tentukan nama file YAML untuk parameter --file:

az container create --resource-group myResourceGroup \
  --file vnet-deploy-aci.yaml

Setelah penyebaran selesai, jalankan perintah az container show untuk menampilkan statusnya. Contoh output:

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

Pembersihan sumber daya

Menghapus instans kontainer

Setelah selesai bekerja dengan instans kontainer yang Anda buat, hapus dengan perintah berikut:

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

Menghapus sumber daya jaringan

Fitur ini saat ini memerlukan beberapa perintah tambahan untuk menghapus sumber daya jaringan yang Anda buat sebelumnya. Jika Anda menggunakan contoh perintah di bagian sebelumnya dari artikel ini untuk membuat jaringan virtual dan subnet, maka Anda dapat menggunakan skrip berikut untuk menghapus sumber daya jaringan tersebut. Skrip mengasumsikan bahwa grup sumber daya Anda berisi satu jaringan virtual dengan satu profil jaringan.

Sebelum menjalankan skrip, atur variabel RES_GROUP ke nama grup sumber daya yang berisi jaringan virtual dan subnet yang harus dihapus. Perbarui nama jaringan virtual jika Anda tidak menggunakan nama aci-vnet yang disarankan sebelumnya. Skrip diformat untuk shell Bash. Jika Anda lebih suka shell lain seperti PowerShell atau Command Prompt, Anda harus menyesuaikan penetapan variabel dan pengaksesnya.

Peringatan

Skrip ini menghapus sumber daya! Ini menghapus jaringan virtual dan semua subnet yang ada di dalamnya. Pastikan bahwa Anda tidak lagi memerlukan sumber daya apa pun di jaringan virtual, termasuk subnet apa pun yang ada di dalamnya, sebelum menjalankan skrip ini. Setelah dihapus, sumber daya ini tidak dapat dipulihkan.

# 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

Langkah berikutnya