Hızlı Başlangıç: Olayları özel kapsayıcı kayıt defterinden Event Grid'e gönderme

Azure Event Grid, yayımlama-abone olma modeli kullanarak tekdüzen olay tüketimi sağlayan tam olarak yönetilen bir olay yönlendirme hizmetidir. Bu hızlı başlangıçta kapsayıcı kayıt defteri oluşturmak, kayıt defteri olaylarına abone olmak ve ardından olayları almak için örnek bir web uygulaması dağıtmak için Azure CLI'yi kullanacaksınız. Son olarak, kapsayıcı görüntüsünü push ve delete olaylarını tetikler ve olay yükünü örnek uygulamada görüntülersiniz.

Bu makaledeki adımları tamamladıktan sonra kapsayıcı kayıt defterinizden Event Grid'e gönderilen olaylar örnek web uygulamasında görünür:

Web browser rendering the sample web application with three received events

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Ön koşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • Bu makaledeki Azure CLI komutları Bash kabuğu için biçimlendirilmiştir. PowerShell veya Komut İstemi gibi farklı bir kabuk kullanıyorsanız, satır devamı karakterlerini veya değişken atama satırlarını buna göre ayarlamanız gerekebilir. Bu makalede, gerekli komut düzenleme miktarını en aza indirmek için değişkenler kullanılır.

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarınızı dağıtıp yönettiğiniz mantıksal bir kapsayıcıdır. Aşağıdaki az group create komutu eastus bölgesinde myResourceGroupadlı bir kaynak grubu oluşturur. Kaynak grubunuz için farklı bir ad kullanmak istiyorsanız, farklı bir değere ayarlayın RESOURCE_GROUP_NAME .

RESOURCE_GROUP_NAME=myResourceGroup

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

Kapsayıcı kayıt defteri oluşturma

Ardından, aşağıdaki komutlarla kaynak grubuna bir kapsayıcı kayıt defteri dağıtın. az acr create komutunu çalıştırmadan önce kayıt defteriniz için bir ad ayarlayınACR_NAME. Adın Azure içinde benzersiz olması gerekir ve 5-50 alfasayısal karakterle sınırlıdır.

ACR_NAME=<acrName>

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

Kayıt defteri oluşturulduktan sonra Azure CLI aşağıdakine benzer bir çıkış döndürür:

{
  "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"
}

Olay uç noktası oluşturma

Bu bölümde, Azure Uygulaması Service'e önceden oluşturulmuş bir örnek web uygulaması dağıtmak için GitHub deposunda bulunan bir Resource Manager şablonu kullanacaksınız. Daha sonra kayıt defterinizin Event Grid olaylarına abone olur ve bu uygulamayı olayların gönderileceği uç nokta olarak belirtirsiniz.

Örnek uygulamayı dağıtmak için web uygulamanız için benzersiz bir ad ayarlayın SITE_NAME ve aşağıdaki komutları yürütür. Web uygulamasının tam etki alanı adının (FQDN) bir parçasını oluşturması nedeniyle site adı Azure'da benzersiz olmalıdır. Sonraki bir bölümde, kayıt defterinizin olaylarını görüntülemek için web tarayıcısında uygulamanın FQDN'sine gidersiniz.

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

Dağıtım başarılı olduktan sonra (birkaç dakika sürebilir), bir tarayıcı açın ve çalıştığından emin olmak için web uygulamanıza gidin:

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

Örnek uygulamanın hiçbir olay iletisi görüntülenmeden işlendiğini görmeniz gerekir:

Web browser showing sample web app with no events displayed

Event Grid kaynak sağlayıcısını etkinleştirme

  1. Daha önce Azure aboneliğinizde Event Grid kullanmadıysanız Event Grid kaynak sağlayıcısını kaydetmeniz gerekebilir. Sağlayıcıyı kaydetmek için şu komutu çalıştırın:

    az provider register --namespace Microsoft.EventGrid
    
  2. Kaydın tamamlanması biraz zaman alabilir. Durumu denetlemek için aşağıdaki komutu çalıştırın:

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

    registrationStateRegistered olduğu zaman devam edebilirsiniz.

Kayıt defteri olaylarına abone olma

Event Grid'de, hangi olayları izlemek istediğinizi ve bunları nereye gönderebileceğinizi bildirmek için bir konuya abone olursunuz. Aşağıdaki az eventgrid event-subscription create komut, oluşturduğunuz kapsayıcı kayıt defterine abone olur ve web uygulamanızın URL'sini olayları göndermesi gereken uç nokta olarak belirtir. Önceki bölümlerde doldurdığınız ortam değişkenleri burada yeniden kullanılır, bu nedenle herhangi bir düzenleme gerekmez.

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

Abonelik tamamlandığında aşağıdakine benzer bir çıkış görmeniz gerekir:

{
  "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"
}

Kayıt defteri olaylarını tetikleme

Örnek uygulama çalışır durumda ve Event Grid ile kayıt defterinize abone olduğunuz için bazı olaylar oluşturmaya hazırsınız. Bu bölümde, bir kapsayıcı görüntüsü oluşturmak ve kayıt defterinize göndermek için ACR Görevlerini kullanacaksınız. ACR Görevleri, Yerel makinenizde Docker Altyapısı'nın yüklü olmasına gerek kalmadan bulutta kapsayıcı görüntüleri oluşturmanıza olanak tanıyan bir Azure Container Registry özelliğidir.

Görüntü oluşturma ve gönderme

GitHub deposunun içeriğinden kapsayıcı görüntüsü oluşturmak için aşağıdaki Azure CLI komutunu yürütebilirsiniz. Varsayılan olarak, ACR Görevleri başarıyla oluşturulmuş bir görüntüyü otomatik olarak kayıt defterinize gönderir ve bu da olayı oluşturur ImagePushed .

Dekont

Aşağıdaki örnekte kullanılan Dockerfile, Docker Hub'daki bir genel temel kapsayıcı görüntüsüne bağlıdır. Genel içerik kullanırken güvenilirliği artırmak için, görüntüyü özel bir Azure kapsayıcı kayıt defterinde içeri aktarın ve yönetin ve Dockerfile'ınızı özel olarak yönetilen temel görüntünüzü kullanacak şekilde güncelleştirin. Genel görüntülerle çalışma hakkında daha fazla bilgi edinin.

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

ACR Görevleri görüntünüzü oluşturur ve gönderirken aşağıdakine benzer bir çıktı görmeniz gerekir. Kısa olması için aşağıdaki örnek çıktı kesildi.

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
...

Yerleşik görüntünün kayıt defterinizde olduğunu doğrulamak için aşağıdaki komutu yürüterek depodaki myimage etiketleri görüntüleyin:

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

Oluşturduğunuz görüntünün "v1" etiketi, aşağıdakine benzer şekilde çıktıda görünmelidir:

[
  "v1"
]

Resmi silme

Şimdi az acr repository delete komutuyla görüntüyü silerek bir ImageDeleted olay oluşturun:

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

Bildirimi ve ilişkili görüntüleri silmek için onay isteyen aşağıdakine benzer bir çıktı görmeniz gerekir:

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

Kayıt defteri olaylarını görüntüleme

Şimdi kayıt defterinize bir görüntü gönderip sildiniz. Event Grid Görüntüleyicisi web uygulamanıza gidin ve hem hem de ImageDeletedImagePushed olayları görmeniz gerekir. Kayıt defteri olaylarına abone ol bölümünde komutunu yürüterek oluşturulan bir abonelik doğrulama olayı da görebilirsiniz.

Aşağıdaki ekran görüntüsünde üç olayın yer aldığı örnek uygulama gösterilir ve ImageDeleted olay ayrıntılarını gösterecek şekilde genişletilir.

Web browser showing the sample app with ImagePushed and ImageDeleted events

Tebrikler! ve ImageDeleted olaylarını ImagePushed görürseniz, kayıt defteriniz Event Grid'e olay gönderir ve Event Grid bu olayları web uygulaması uç noktanıza iletir.

Kaynakları temizleme

Bu hızlı başlangıçta oluşturduğunuz kaynakları tamamladıktan sonra, aşağıdaki Azure CLI komutuyla bunların tümünü silebilirsiniz. Bir kaynak grubunu sildiğinizde, içerdiği tüm kaynaklar kalıcı olarak silinir.

UYARI: Bu işlem geri alınamaz. Komutu çalıştırmadan önce gruptaki kaynaklardan herhangi birine artık ihtiyacınız olmadığından emin olun.

az group delete --name $RESOURCE_GROUP_NAME

Event Grid olay şeması

Azure Container Registry olay iletisi şema başvurularını Event Grid belgelerinde bulabilirsiniz:

Container Registry için Azure Event Grid olay şeması

Sonraki adımlar

Bu hızlı başlangıçta bir kapsayıcı kayıt defteri dağıttınız, ACR Görevleri ile bir görüntü oluşturdunuz, sildiniz ve event Grid'deki kayıt defterinizin olaylarını örnek bir uygulamayla kullandınız. Ardından, temel görüntü güncelleştirmesinde otomatik derlemeler de dahil olmak üzere bulutta kapsayıcı görüntüleri oluşturma hakkında daha fazla bilgi edinmek için ACR Görevleri öğreticisine geçin: