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 Azure CLI kullanarak kapsayıcı kayıt defteri oluşturacak, kayıt defteri olaylarına abone olacak ve ardından olayları almak için örnek bir web uygulaması dağıtacaksı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 ücretsiz bir Azure hesabı oluşturun.

Önkoşullar

  • 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 devamlılık 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 myResourceGroup adlı 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 komutları kullanarak 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ı ve 5-50 alfasayısal karakterle sınırlandırılması gerekir.

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 çıktı 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, önceden oluşturulmuş bir örnek web uygulamasını Azure App Service 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önderildiğ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şturduğundan, site adı Azure içinde 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

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

Kaydın tamamlanması biraz zaman alabilir. Durumu denetlemek için şunu ç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, izlemek istediğiniz olayları ve bunların nereye gönderileceği konusunda bir konuya abone olursunuz. Aşağıdaki az eventgrid event-subscription create komutu, 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 duruma geldi 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

Bir 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ü kayıt defterinize otomatik olarak gönderir ve bu da olayı oluşturur ImagePushed .

Not

Aşağıdaki örnekte kullanılan Dockerfile, Docker Hub genel temel kapsayıcı görüntüsüne bağlıdır. Genel içeriği 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 dosyanı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 çıkış 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 "myimage" deposundaki 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 birImageDeleted 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ını 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 kaynaklara artık ihtiyacınız kalmadığı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: