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

Azure Event Grid, yayımla-abone ol modeli kullanarak tekdüz olay tüketimi sağlayan, tam olarak yönetilen bir olay yönlendirme hizmetidir. Bu hızlı başlangıçta Azure CLI kullanarak bir kapsayıcı kayıt defteri oluşturacak, kayıt defteri olaylarını 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ü ve push delete olaylarını tetikler ve örnek uygulamada olay yükünü görüntülersiniz.

Bu makaledeki adımları tamamlandıktan sonra kapsayıcı kayıt defterinize gönderilen olaylar Event Grid web uygulamasında görünür:

Alınan üç olayla örnek web uygulamasını işleme web tarayıcısı

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

Önkoşullar

  • Azure Cloud Shell'Da Bash ortamını kullanın.

    Cloud Shell’i yeni bir pencerede başlatma

  • Dilerseniz CLI başvuru komutlarını çalıştırmak için Azure CLI’yi yükleyebilirsiniz.

    • 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. Ek oturum açma seçenekleri için bkz. Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantıları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çimlendirildi. PowerShell veya Komut İstemi gibi farklı bir kabuk kullanıyorsanız, satır devamlılığı karakterlerini veya değişken atama çizgilerini uygun şekilde ayarlamanız gerekir. 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ğıtarak yönetebilirsiniz. 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 için farklı bir RESOURCE_GROUP_NAME değere ayarlayın.

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 ACR_NAME defteriniz için bir ad olarak ayarlayın. Ad Azure içinde benzersiz olmalıdır 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, önceden Resource Manager bir web uygulaması dağıtmak için GitHub depoda bulunan bir Azure App Service. Daha sonra, kayıt defterinizin Event Grid abone olur ve bu uygulamayı olayların gönderildiği uç nokta olarak belirtirsiniz.

Örnek uygulamayı dağıtmak için web SITE_NAME uygulamanızın benzersiz bir adına ayarlayın ve aşağıdaki komutları yürütün. Site adının Azure içinde benzersiz olması gerekir çünkü web uygulamasının tam etki alanı adının (FQDN) bir bölümünü oluşturur. 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 gidin.

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 web uygulamanıza gidin ve çalışır olduğundan emin olun:

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

Örnek uygulamanın olay iletileri görüntülenmeden işlendiğinden görüyorsanız:

Olay görüntülenmeden örnek web uygulamasını gösteren web tarayıcısı

Event Grid Kaynak sağlayıcısını etkinleştirin

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"

registrationState``Registered olduğu zaman devam edebilirsiniz.

Kayıt defteri olaylarını abone olma

Bu Event Grid, izlemek istediğiniz olayları ve bunları nereye göndermek istediğinizi söylemek için bir konuya abone oluruz. Aşağıdaki az eventgrid event-subscription create komutu, oluşturduğunuz kapsayıcı kayıt defterine abone olur ve web uygulamanın URL'sini olayları göndermesi gereken uç nokta olarak belirtir. Önceki bölümlerde dolduran 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 çıktı görüyor 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

Artık örnek uygulama çalışıyor ve kayıt defterinize Event Grid abone olduğunuza göre, bazı olaylar üretmeye hazır olursanız. Bu bölümde, kapsayıcı görüntüsünü ACR Görevleri ve kayıt defterinize itmek için ACR Görevleri'i kullanırsiniz. ACR Görevleri, yerel Azure Container Registry Docker Altyapısı'nın yüklü olması gerekmeden bulutta kapsayıcı görüntüleri oluşturmanızı sağlayan bir Azure Container Registry özelliğidir.

Görüntü oluşturma ve itme

Aşağıdaki Azure CLI komutunu yürütarak bir kapsayıcı deposunun içeriklerinden bir kapsayıcı GitHub yürütün. Varsayılan olarak ACR Görevleri başarıyla oluşturulmuş bir görüntüyü kayıt defterinize otomatik olarak iletir ve bu da olayı ImagePushed üretir.

Not

Aşağıdaki örnekte kullanılan Dockerfile, aşağıdaki örnekteki genel bir temel kapsayıcı görüntüsüne Docker Hub. 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 dosyanızı özel olarak yönetilen temel görüntünizi kullanmak üzere güncelleştirin. Genel görüntülerle çalışma hakkında daha fazla bilgi.

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

Görüntü oluşturma ve ardından görüntülerinizi ACR Görevleri aşağıdakine benzer bir çıktı görüyorsanız. Kısalma için aşağıdaki örnek çıktı kısaltılmış.

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 defterinize ait olduğunu doğrulamak için aşağıdaki komutu yürütarak "myimage" deposundaki etiketleri görüntüebilirsiniz:

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

Aşağıdakine benzer şekilde, çıktıda, yerleşik görüntünün "v1" etiketi görünün:

[
  "v1"
]

Görüntüyü silme

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

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

Bildirimin ve ilişkili görüntülerin silinecek şekilde onay istemesi için aşağıdakine benzer bir çıktı görüyor 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ü ittiniz ve sildikten sonra silebilirsiniz. Event Grid Viewer web uygulamanıza gidin; hem hem de ImageDeleted olaylarını ImagePushed görüyor olun. Ayrıca, Kayıt defteri olaylarını abone ol bölümünde komutunu yürüterek oluşturulan bir abonelik doğrulama olayı da bulabilirsiniz.

Aşağıdaki ekran görüntüsünde, üç olayı olan örnek uygulama ve ImageDeleted olay ayrıntılarını gösterecek şekilde genişletilmiştir.

ImagePushed ve ImageDeleted olaylarıyla örnek uygulamayı gösteren web tarayıcısı

Tebrikler! ve olaylarını görüyorsanız kayıt defteriniz olayları Event Grid Event Grid web uygulaması uç noktanıza ImagePushed ImageDeleted iletir.

Kaynakları temizleme

Bu hızlı başlangıçta oluşturduğunuz kaynaklarla bitirin, aşağıdaki Azure CLI komutuyla bunların hepsini silebilirsiniz. Bir kaynak grubunu sildikten sonra, 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 kalmay olduğundan emin olun.

az group delete --name $RESOURCE_GROUP_NAME

Event Grid olay şeması

Olay iletisi Azure Container Registry başvurularını aşağıdaki belgelerde Event Grid bulabilirsiniz:

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

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şturdunız, sildiniz ve örnek bir uygulamayla Event Grid kayıt defterinizin olaylarını kullandınız. Ardından, temel görüntü ACR Görevleri 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 öğreticisi'ne geçebilirsiniz: