Quickstart: Kirim acara dari registri kontainer pribadi ke Event Grid

Azure Event Grid adalah layanan perutean acara terkelola sepenuhnya yang menyediakan konsumsi acara seragam menggunakan model publish-subscribe. Dalam panduan memulai ini, Anda menggunakan Azure CLI untuk membuat registri kontainer, berlangganan peristiwa registri, lalu menyebarkan aplikasi web sampel untuk menerima peristiwa. Terakhir, Anda memicu peristiwa push dan delete citra kontainer dan melihat muatan peristiwa dalam aplikasi sampel.

Setelah Anda menyelesaikan langkah-langkah dalam artikel ini, peristiwa yang dikirim dari registri kontainer Anda ke Event Grid muncul di aplikasi web contoh:

Web browser rendering the sample web application with three received events

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

Prasyarat

  • Perintah Azure CLI dalam artikel ini diformat untuk shell Bash. Jika Anda menggunakan shell yang berbeda seperti PowerShell atau Command Prompt, Anda mungkin perlu menyesuaikan karakter kelanjutan baris atau baris penugasan variabel yang sesuai. Artikel ini menggunakan variabel untuk meminimalkan jumlah pengeditan perintah yang diperlukan.

Buat grup sumber daya

Grup sumber daya Azure adalah kontainer logis tempat Anda menyebarkan dan mengelola sumber daya Azure Anda. Perintah az group create berikut membuat grup sumber daya bernama myResourceGroup di wilayah eastus. Jika Anda ingin menggunakan nama yang berbeda untuk grup sumber daya Anda, setel RESOURCE_GROUP_NAME ke nilai yang berbeda.

RESOURCE_GROUP_NAME=myResourceGroup

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

Membuat registri kontainer

Selanjutnya, gunakan registri kontainer ke grup sumber daya dengan perintah berikut. Sebelum Anda menjalankan perintah az acr create, setel ACR_NAME ke nama untuk registri Anda. Nama harus unik dalam Azure, dan dibatasi hingga 5-50 karakter alfanumerik.

ACR_NAME=<acrName>

az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic

Setelah registri dibuat, Azure CLI mengembalikan output yang serupa dengan berikut ini:

{
  "adminUserEnabled": false,
  "creationDate": "2018-08-16T20:02:46.569509+00:00",
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry",
  "location": "eastus",
  "loginServer": "myregistry.azurecr.io",
  "name": "myregistry",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

Membuat titik akhir peristiwa

Di bagian ini, Anda menggunakan templat Resource Manager yang terletak di repositori GitHub untuk menyebarkan aplikasi web sampel bawaan ke Azure App Service. Kemudian, Anda berlangganan peristiwa Event Grid registri Anda dan menentukan aplikasi ini sebagai titik akhir tempat peristiwa tersebut dikirim.

Untuk menyebarkan aplikasi sampel, atur SITE_NAME ke nama unik untuk aplikasi web Anda, dan jalankan perintah berikut. Nama situs harus unik dalam Azure karena membentuk sebagian dari nama domain yang sepenuhnya memenuhi syarat (FQDN) dari aplikasi web. Di bagian selanjutnya, Anda menavigasi ke FQDN aplikasi di browser web untuk melihat peristiwa registri Anda.

SITE_NAME=<your-site-name>

az deployment group create \
    --resource-group $RESOURCE_GROUP_NAME \
    --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
    --parameters siteName=$SITE_NAME hostingPlanName=$SITE_NAME-plan

Setelah penyebaran berhasil (mungkin perlu beberapa menit), buka browser dan navigasikan ke aplikasi web Anda untuk memastikannya berjalan:

http://<your-site-name>.azurewebsites.net

Anda akan melihat contoh aplikasi yang dirender tanpa pesan peristiwa yang ditampilkan:

Web browser showing sample web app with no events displayed

Aktifkan penyedia sumber daya Event Grid

  1. Jika sebelumnya Anda belum menggunakan Event Grid di langganan Azure, Anda mungkin perlu mendaftarkan penyedia sumber daya Event Grid. Jalankan perintah berikut untuk mendaftarkan penyedia:

    az provider register --namespace Microsoft.EventGrid
    
  2. Mungkin perlu beberapa saat agar pendaftaran selesai. Untuk memeriksa status, jalankan perintah berikut:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Saat registrationState adalah Registered, Anda siap untuk melanjutkan.

Berlangganan acara registri

Di Event Grid, Anda berlangganan topik untuk menentukan peristiwa yang ingin Anda lacak, dan tempat untuk mengirim peristiwa. Perintah berikut az eventgrid event-subscription create berlangganan registri kontainer yang Anda buat, dan menentukan URL aplikasi web Anda sebagai titik akhir tempatnya harus mengirim peristiwa. Variabel lingkungan yang Anda isi di bagian sebelumnya digunakan kembali di sini, jadi tidak diperlukan pengeditan.

ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
APP_ENDPOINT=https://$SITE_NAME.azurewebsites.net/api/updates

az eventgrid event-subscription create \
    --name event-sub-acr \
    --source-resource-id $ACR_REGISTRY_ID \
    --endpoint $APP_ENDPOINT

Ketika proses berlangganan selesai, Anda akan melihat output yang mirip dengan berikut:

{
  "destination": {
    "endpointBaseUrl": "https://eventgridviewer.azurewebsites.net/api/updates",
    "endpointType": "WebHook",
    "endpointUrl": null
  },
  "filter": {
    "includedEventTypes": [
      "All"
    ],
    "isSubjectCaseSensitive": null,
    "subjectBeginsWith": "",
    "subjectEndsWith": ""
  },
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry/providers/Microsoft.EventGrid/eventSubscriptions/event-sub-acr",
  "labels": null,
  "name": "event-sub-acr",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "topic": "/subscriptions/<Subscription ID>/resourceGroups/myresourcegroup/providers/microsoft.containerregistry/registries/myregistry",
  "type": "Microsoft.EventGrid/eventSubscriptions"
}

Picu peristiwa registri

Sekarang setelah aplikasi sampel aktif dan berjalan dan Anda telah berlangganan registri Anda dengan Event Grid, Anda siap untuk membuat beberapa peristiwa. Di bagian ini, Anda menggunakan Tugas ACR untuk membangun dan mendorong citra kontainer ke registri Anda. Tugas ACR adalah fitur Azure Container Registry yang memungkinkan Anda membuat citra kontainer di cloud, tanpa perlu menginstal Docker Engine di mesin lokal Anda.

Bangun dan dorong citra

Jalankan perintah Azure CLI berikut untuk membuat kontainer citra dari konten repositori GitHub. Secara default, Tugas ACR mendorong citra yang berhasil secara otomatis dibuat ke registri Anda, yang menghasilkan peristiwa ImagePushed.

Catatan

Dockerfile yang digunakan dalam contoh berikut bergantung pada gambar kontainer dasar publik dari Docker Hub. Untuk meningkatkan keandalan saat menggunakan konten publik, impor, dan mengelola gambar dalam registri kontainer Azure pribadi, serta memperbarui Dockerfile Anda untuk menggunakan gambar dasar yang dikelola secara pribadi. Pelajari lebih lanjut cara menangani citra publik.

az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main

Anda akan melihat output yang mirip dengan yang berikut ini saat Tugas ACR membangun lalu mendorong gambar Anda. Output sampel berikut telah dipotong untuk singkatnya.

Sending build context to ACR...
Queued a build with build ID: aa2
Waiting for build agent...
2018/08/16 22:19:38 Using acb_vol_27a2afa6-27dc-4ae4-9e52-6d6c8b7455b2 as the home volume
2018/08/16 22:19:38 Setting up Docker configuration...
2018/08/16 22:19:39 Successfully set up Docker configuration
2018/08/16 22:19:39 Logging in to registry: myregistry.azurecr.io
2018/08/16 22:19:55 Successfully logged in
Sending build context to Docker daemon  94.72kB
Step 1/5 : FROM node:9-alpine
...

Untuk memverifikasi bahwa gambar bawaan ada di registri Anda, jalankan perintah berikut untuk melihat tag di myimage repositori:

az acr repository show-tags --name $ACR_NAME --repository myimage

Tag "v1" dari citra yang Anda buat akan muncul di output, mirip dengan berikut ini:

[
  "v1"
]

Hapus citra

Sekarang, buat peristiwa ImageDeleted dengan menghapus citra menggunakan perintah az acr repository delete:

az acr repository delete --name $ACR_NAME --image myimage:v1

Anda akan melihat output yang mirip dengan berikut ini, meminta konfirmasi untuk menghapus manifes dan citra terkait:

This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n): 

Lihat peristiwa registri

Anda sekarang telah memasukkan citra ke registri Anda dan kemudian menghapusnya. Navigasikan ke aplikasi web Event Grid Viewer, dan Anda akan melihat peristiwa ImageDeleted dan ImagePushed. Anda mungkin juga melihat acara validasi langganan yang dibuat dengan menjalankan perintah di bagian Berlangganan peristiwa registri.

Cuplikan layar berikut menunjukkan aplikasi contoh dengan tiga peristiwa, dan peristiwa ImageDeleted diperluas untuk menampilkan detailnya.

Web browser showing the sample app with ImagePushed and ImageDeleted events

Selamat! Jika Anda melihat peristiwa ImagePushed dan ImageDeleted, registri Anda mengirim peristiwa ke Event Grid, dan Event Grid meneruskan peristiwa tersebut ke titik akhir aplikasi web Anda.

Membersihkan sumber daya

Setelah Anda selesai dengan sumber daya yang Anda buat di panduan mulai cepat ini, Anda dapat menghapus semuanya dengan perintah Azure CLI berikut. Saat Anda menghapus grup sumber daya, semua sumber daya yang ada di dalamnya akan dihapus secara permanen.

PERINGATAN: Pengoperasian ini tidak dapat dibatalkan. Pastikan Anda tidak lagi membutuhkan sumber daya apa pun dalam grup sebelum menjalankan perintah.

az group delete --name $RESOURCE_GROUP_NAME

Skema peristiwa Event Grid

Anda dapat menemukan referensi skema pesan peristiwa Azure Container Registry di dokumentasi Event Grid:

Skema peristiwa Azure Event Grid untuk Container Registry

Langkah berikutnya

Dalam panduan memulai ini, Anda menerapkan registri kontainer, membuat citra dengan Tugas ACR, menghapusnya, dan menggunakan peristiwa registri Anda dari Event Grid dengan aplikasi sampel. Selanjutnya, lanjutkan ke tutorial Tugas ACR untuk mempelajari lebih lanjut tentang membuat citra kontainer di cloud, termasuk build otomatis berdasarkan pembaruan citra dasar: