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:
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.
Önkoşullar
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell Hızlı Başlangıç - Bash.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yi yükleyin . Windows veya macOS üzerinde çalıştırıyorsanız Azure CLI'yi bir Docker kapsayıcısında çalıştırmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Azure CLI'yi Docker kapsayıcısında ç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. 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ç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:
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"
registrationState
Registered
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 ImageDeleted
ImagePushed
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.
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: