Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, genel içeriği kullanma ve bakımını yönetmenize yardımcı olmak için Azure Container Registry'de örnek bir iş akışı sağlanır:
- Bağımlı genel görüntülerin yerel kopyalarını içeri aktarın.
- Güvenlik taraması ve işlevsel test aracılığıyla genel görüntüleri doğrulayın.
- İç kullanım için görüntüleri özel kayıt defterlerine yükseltin.
- Genel içeriğe bağımlı uygulamalar için temel görüntü güncelleştirmelerini tetikleyin.
- Bu iş akışını otomatikleştirmek için Azure Container Registry Görevlerini kullanın.
İş akışı aşağıdaki görüntüde özetlenmiş:
Geçitli içeri aktarma iş akışı, kuruluşunuzun dışarıdan yönetilen yapıtlara bağımlılıklarını yönetmeye yardımcı olur. Örneğin, Docker Hub, GCR, Quay, GitHub Container Registry, Microsoft Container Registry ve hatta diğer Azure kapsayıcı kayıt defterleri gibi genel kayıt defterlerinden alınan görüntüler.
Genel içeriğe bağımlılıkların neden olduğu riskler ve bunları azaltmak için Azure Container Registry'nin nasıl kullanılacağı hakkında arka plan bilgileri için OCI Genel İçerik Kullanma Blog gönderisine ve Azure Container Registry ile genel içeriği yönetme bölümüne bakın.
Bu kılavuzu tamamlamak için Azure Cloud Shell'i veya Azure CLI'nın yerel yüklemesini kullanabilirsiniz. Azure CLI sürüm 2.10 veya üzeri önerilir. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.
Senaryoya genel bakış
Bu kılavuz şunların ayarını yapar:
- Aşağıdakileri temsil eden üç konteyner kayıt defteri:
- Temel görüntünün değiştirilmesini desteklemek için sanal docker hub'ı (
publicregistry
) - Özel görüntüleri paylaşmak için ekip kayıt defteri (
contoso
) - İçeri aktarılan genel içerik için şirket ve ekibin ortak kayıt defteri (
baseartifacts
)
- Temel görüntünün değiştirilmesini desteklemek için sanal docker hub'ı (
- Her kayıt defterindeki bir ACR görevi . Görevler:
- Sanal genel
node
görüntü oluşturun - Şirket/ekip paylaşılan kayıt defterine görüntüyü içe aktarıp doğrulayın
node
- Görüntüyü oluştur ve dağıt
hello-world
- Sanal genel
-
Aşağıdaki yapılandırmalar dahil olmak üzere ACR görev tanımları:
- Bir anahtar kasasına işaret eden kayıt defteri kimlik bilgileri koleksiyonu
-
Gizli koleksiyonu, içinde
acr-task.yaml
bulunabilir ve anahtar kasasına yönelik işaretçilerle ilişkilidir. - bir
acr-task.yaml
içinde kullanılan yapılandırılmış değerler koleksiyonu
- Tüm gizli bilgileri güvence altına almak için bir Azure anahtar kasası
- Derleme uygulamasını barındıran
hello-world
bir Azure kapsayıcı örneği
Önkoşullar
Aşağıdaki adımlarda, kılavuzda oluşturulan ve kullanılan kaynaklar için değerler yapılandırılır.
Ortam değişkenlerini belirleme
Ortamınıza özgü değişkenleri yapılandırın. Yanlışlıkla silmeyi en aza indirmek için dayanıklı içeriğe sahip kaynakları kendi kaynak grubuna yerleştirmeye yönelik en iyi yöntemleri takip ediyoruz. Ancak, isterseniz bu değişkenleri tek bir kaynak grubuna yerleştirebilirsiniz.
Bu makaledeki örnekler bash kabuğu için biçimlendirilmiştir.
# Set the three registry names, must be globally unique:
REGISTRY_PUBLIC=publicregistry
REGISTRY_BASE_ARTIFACTS=contosobaseartifacts
REGISTRY=contoso
# set the location all resources will be created in:
RESOURCE_GROUP_LOCATION=eastus
# default resource groups
REGISTRY_PUBLIC_RG=${REGISTRY_PUBLIC}-rg
REGISTRY_BASE_ARTIFACTS_RG=${REGISTRY_BASE_ARTIFACTS}-rg
REGISTRY_RG=${REGISTRY}-rg
# fully qualified registry urls
REGISTRY_DOCKERHUB_URL=docker.io
REGISTRY_PUBLIC_URL=${REGISTRY_PUBLIC}.azurecr.io
REGISTRY_BASE_ARTIFACTS_URL=${REGISTRY_BASE_ARTIFACTS}.azurecr.io
REGISTRY_URL=${REGISTRY}.azurecr.io
# Azure key vault for storing secrets, name must be globally unique
AKV=acr-task-credentials
AKV_RG=${AKV}-rg
# ACI for hosting the deployed application
ACI=hello-world-aci
ACI_RG=${ACI}-rg
Git depoları ve belirteçleri
Ortamınızı simüle etmek için aşağıdaki Git depolarının her birini yönetebileceğiniz depolara forklayın.
- https://github.com/importing-public-content/base-image-node.git
- https://github.com/importing-public-content/import-baseimage-node.git
- https://github.com/importing-public-content/hello-world.git
Ardından, fork edilmiş depolarınız için aşağıdaki değişkenleri güncelleyin.
Git URL'lerinin :main
sonuna eklenen, varsayılan depo dalını temsil eder.
GIT_BASE_IMAGE_NODE=https://github.com/<your-fork>/base-image-node.git#main
GIT_NODE_IMPORT=https://github.com/<your-fork>/import-baseimage-node.git#main
GIT_HELLO_WORLD=https://github.com/<your-fork>/hello-world.git#main
ACR Görevlerinin Git web kancalarını kopyalaması ve oluşturması için bir GitHub erişim belirteci (PAT) gerekir. Özel depo için gerekli izinlere sahip bir belirteç oluşturma adımları için bkz. GitHub erişim belirteci oluşturma.
GIT_TOKEN=<set-git-token-here>
Docker Hub kimlik bilgileri
Docker Hub'dan görüntü indirirken kısıtlama ve kimlik isteklerini önlemek için bir Docker Hub belirteci oluşturun. Ardından aşağıdaki ortam değişkenlerini ayarlayın:
REGISTRY_DOCKERHUB_USER=<yourusername>
REGISTRY_DOCKERHUB_PASSWORD=<yourtoken>
Kayıt defterleri oluşturma
Azure CLI komutlarını kullanarak her biri kendi kaynak grubunda yer alan üç Premium katmanı kapsayıcı kayıt defteri oluşturun:
az group create --name $REGISTRY_PUBLIC_RG --location $RESOURCE_GROUP_LOCATION
az acr create --resource-group $REGISTRY_PUBLIC_RG --name $REGISTRY_PUBLIC --sku Premium
az group create --name $REGISTRY_BASE_ARTIFACTS_RG --location $RESOURCE_GROUP_LOCATION
az acr create --resource-group $REGISTRY_BASE_ARTIFACTS_RG --name $REGISTRY_BASE_ARTIFACTS --sku Premium
az group create --name $REGISTRY_RG --location $RESOURCE_GROUP_LOCATION
az acr create --resource-group $REGISTRY_RG --name $REGISTRY --sku Premium
Anahtar kasası oluşturma ve gizli dizileri ayarlama
Anahtar kasası oluştur.
az group create --name $AKV_RG --location $RESOURCE_GROUP_LOCATION
az keyvault create --resource-group $AKV_RG --name $AKV
Anahtar kasasında Docker Hub kullanıcı adı ve token ayarlayın.
az keyvault secret set \
--vault-name $AKV \
--name registry-dockerhub-user \
--value $REGISTRY_DOCKERHUB_USER
az keyvault secret set \
--vault-name $AKV \
--name registry-dockerhub-password \
--value $REGISTRY_DOCKERHUB_PASSWORD
Anahtar kasasında Git PAT ayarlayın ve doğrulayın:
az keyvault secret set --vault-name $AKV --name github-token --value $GIT_TOKEN
az keyvault secret show --vault-name $AKV --name github-token --query value -o tsv
Azure kapsayıcı örneği için kaynak grubu oluşturma
Bu kaynak grubu, hello-world
görüntüsünü dağıtırken sonraki bir görevde kullanılır.
az group create --name $ACI_RG --location $RESOURCE_GROUP_LOCATION
Genel node
temel görüntü oluşturma
Docker Hub'daki node
görüntüsünü taklit etmek için, genel görüntüyü oluşturmak ve korumak amacıyla bir ACR görevi oluşturun. Bu kurulum, görüntü bakımcılarının değişiklikleri node
simüle etmesine olanak tanır.
az acr task create \
--name node-public \
-r $REGISTRY_PUBLIC \
-f acr-task.yaml \
--context $GIT_BASE_IMAGE_NODE \
--git-access-token $(az keyvault secret show \
--vault-name $AKV \
--name github-token \
--query value -o tsv) \
--set REGISTRY_FROM_URL=${REGISTRY_DOCKERHUB_URL}/ \
--assign-identity
Docker yanıt vermeyi kısıtlamasını önlemek için göreve Docker Hub kimlik bilgilerini ekleyin. acr görev kimlik bilgileri komutu Docker kimlik bilgilerini Docker Hub dahil olmak üzere herhangi bir kayıt defterine geçirmek için kullanılabilir.
az acr task credential add \
-n node-public \
-r $REGISTRY_PUBLIC \
--login-server $REGISTRY_DOCKERHUB_URL \
-u https://${AKV}.vault.azure.net/secrets/registry-dockerhub-user \
-p https://${AKV}.vault.azure.net/secrets/registry-dockerhub-password \
--use-identity [system]
Göreve, anahtar kasasından değerleri okuma izni verin.
az keyvault set-policy \
--name $AKV \
--resource-group $AKV_RG \
--object-id $(az acr task show \
--name node-public \
--registry $REGISTRY_PUBLIC \
--query identity.principalId --output tsv) \
--secret-permissions get
Görevler Git işlemeleri, temel görüntü güncelleştirmeleri, zamanlayıcılar veya el ile çalıştırmalar tarafından tetiklenebilir.
Görüntü node
oluşturmak için görevi manuel olarak çalıştırın.
az acr task run -r $REGISTRY_PUBLIC -n node-public
Görüntüyü sanal genel kayıt defterinde listeleyin:
az acr repository show-tags -n $REGISTRY_PUBLIC --repository node
hello-world
Görüntüyü oluşturma
Sanal genel node
görüntüye göre bir hello-world
görüntü oluşturun.
Simüle edilmiş kamuya açık kayıtta çekme erişimi için belirteç oluştur
Sanal genel kayıt defteri için kapsamı olarak belirlenmiş pull
bir erişim belirteci oluşturun. Ardından anahtar kasasında depolayın.
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY_PUBLIC}-user" \
--value "registry-${REGISTRY_PUBLIC}-user"
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY_PUBLIC}-password" \
--value $(az acr token create \
--name "registry-${REGISTRY_PUBLIC}-user" \
--registry $REGISTRY_PUBLIC \
--scope-map _repositories_pull \
-o tsv \
--query credentials.passwords[0].value)
Azure Container Instances ile çekme erişimi için bir belirteç oluşturun.
Görüntüyü barındıran hello-world
kayıt defterine çekme kapsamına sahip bir erişim belirteci oluşturun. Ardından bunu anahtar kasasına yerleştirin.
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY}-user" \
--value "registry-${REGISTRY}-user"
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY}-password" \
--value $(az acr token create \
--name "registry-${REGISTRY}-user" \
--registry $REGISTRY \
--repository hello-world content/read \
-o tsv \
--query credentials.passwords[0].value)
Görüntü oluşturma ve koruma için görev oluştur
Aşağıdaki komut acr-tasks.yaml
tanımından hello-world
deposunda bir görev oluşturur. Görev adımları hello-world
görüntüsünü oluşturur ve ardından Azure Container Instances'a dağıtır. Azure Container Instances kaynak grubu önceki bir bölümde oluşturulmuştur.
az container create
görevini, yalnızca image:tag
içinde fark olan bir örnekte çağırarak, bu adım adım kılavuz boyunca görevi aynı örneğe dağıtır.
az acr task create \
-n hello-world \
-r $REGISTRY \
-f acr-task.yaml \
--context $GIT_HELLO_WORLD \
--git-access-token $(az keyvault secret show \
--vault-name $AKV \
--name github-token \
--query value -o tsv) \
--set REGISTRY_FROM_URL=${REGISTRY_PUBLIC_URL}/ \
--set KEYVAULT=$AKV \
--set ACI=$ACI \
--set ACI_RG=$ACI_RG \
--assign-identity
Sanal genel kayıt defteri için göreve kimlik bilgileri ekleyin:
az acr task credential add \
-n hello-world \
-r $REGISTRY \
--login-server $REGISTRY_PUBLIC_URL \
-u https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_PUBLIC}-user \
-p https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_PUBLIC}-password \
--use-identity [system]
Anahtar kasasından okuma değerlerine görev erişimi verin:
az keyvault set-policy \
--name $AKV \
--resource-group $AKV_RG \
--object-id $(az acr task show \
--name hello-world \
--registry $REGISTRY \
--query identity.principalId --output tsv) \
--secret-permissions get
Kaynak grubuna erişim vererek Azure Container Instances oluşturmak ve yönetmek için görev erişimi verin:
az role assignment create \
--assignee $(az acr task show \
--name hello-world \
--registry $REGISTRY \
--query identity.principalId --output tsv) \
--scope $(az group show -n $ACI_RG --query id -o tsv) \
--role owner
Görev oluşturulup yapılandırıldığında, hello-world
görüntüsünü derlemek ve dağıtmak için görevi çalıştırın.
az acr task run -r $REGISTRY -n hello-world
Oluşturulduktan sonra görüntüyü barındıran hello-world
kapsayıcının IP adresini alın.
az container show \
--resource-group $ACI_RG \
--name ${ACI} \
--query ipAddress.ip \
--out tsv
Tarayıcınızda, çalışan uygulamayı görmek için IP adresine gidin.
Temel görüntüyü "sorgulanabilir" bir değişiklikle güncelleştirme
Bu bölüm, ortamda sorunlara neden olabilecek temel görüntüde bir değişikliğin benzetimini yapar.
-
Dockerfile
dosyasını çatallanmışbase-image-node
deposunda açın. -
BACKGROUND_COLOR
öğesiniOrange
olarak değiştirerek değişikliği simüle edin.
ARG REGISTRY_NAME=
FROM ${REGISTRY_NAME}node:15-alpine
ENV NODE_VERSION 15-alpine
ENV BACKGROUND_COLOR Orange
Değişikliği işleyin ve ACR Görevlerinin otomatik olarak oluşturmaya başlamasını izleyin.
Görevin yürütülmeye başlamasını izleyin:
watch -n1 az acr task list-runs -r $REGISTRY_PUBLIC -o table
Sonunda, bir tetikleyiciye Commit
bağlı olarak STATUS Succeeded
değerini görmeniz gerekir.
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------- ---------- --------- --------- -------------------- ----------
ca4 hub-node linux Succeeded Commit 2020-10-24T05:02:29Z 00:00:22
İzleme komutundan çıkmak için Ctrl+C tuşlarına basın ve ardından en son çalıştırmanın günlüklerini görüntüleyin:
az acr task logs -r $REGISTRY_PUBLIC
Görüntü node
tamamlandıktan sonra, watch
ACR Görevleri'nin hello-world
görüntüyü otomatik olarak oluşturmaya başlaması için:
watch -n1 az acr task list-runs -r $REGISTRY -o table
Sonunda, tetikleyicisi Image Update
temelinde STATUS Succeeded
değerini görmeniz gerekir.
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- ----------- ---------- --------- ------------ -------------------- ----------
dau hello-world linux Succeeded Image Update 2020-10-24T05:08:45Z 00:00:31
İzleme komutundan çıkmak için Ctrl+C tuşlarına basın ve ardından en son çalıştırmanın günlüklerini görüntüleyin:
az acr task logs -r $REGISTRY
Tamamlandıktan sonra, güncelleştirilmiş hello-world
görüntüyü barındıran sitenin IP adresini alın:
az container show \
--resource-group $ACI_RG \
--name ${ACI} \
--query ipAddress.ip \
--out tsv
Tarayıcınızda turuncu (sorgulanabilir) bir arka plana sahip olması gereken siteye gidin.
Giriş yapıyor
Bu noktada, Git işlemeleri ve temel node
görüntüde yapılan değişiklikler üzerine otomatik olarak oluşturulmuş bir hello-world
görüntü oluşturdunuz. Bu örnekte, görev Azure Container Registry'de temel bir görüntü üzerinde oluşturulur, ancak desteklenen herhangi bir kayıt defteri kullanılabilir.
Temel görüntü güncellendiğinde, temel görüntünün güncellenmesi node
görev çalıştırmasını otomatik olarak yeniden tetikler. Burada görüldüğü gibi, tüm güncelleştirmeler istenmiyor.
Kamusal içeriğin kontrollü içeri aktarmaları
Yukarı akış değişikliklerinin kritik iş yüklerini bozmasını önlemek için güvenlik taraması ve işlevsel testler eklenebilir.
Bu bölümde, şunları yapmak için bir ACR görevi oluşturacaksınız:
- Test görüntüsü oluşturma
- Test görüntüsü üzerinde işlevsel bir test betiği
./test.sh
çalıştırın - Görüntü başarıyla sınanırsa, genel görüntüyü baseimages kayıt defterine aktarın
Otomasyon testi ekleme
Yukarı akış içeriğini kontrol etmek için otomatik testler uygulanır. Bu örnekte, test.sh
sağlanır ve $BACKGROUND_COLOR
denetler. Test başarısız olursa, ACR görev adımının başarısız olmasına ve görev çalıştırmasını sonlandırmasına neden olan bir EXIT_CODE
1
değeri döndürülür. Testler, sonuçların kaydedilmesi dahil olmak üzere herhangi bir araç biçiminde genişletilebilir. Geçit, betikteki bir geçiş/başarısız yanıt tarafından yönetilir ve burada yeniden oluşturulur:
if [ ""$(echo $BACKGROUND_COLOR | tr '[:lower:]' '[:upper:]') = 'RED' ]; then
echo -e "\e[31mERROR: Invalid Color:\e[0m" ${BACKGROUND_COLOR}
EXIT_CODE=1
else
echo -e "\e[32mValidation Complete - No Known Errors\e[0m"
fi
exit ${EXIT_CODE}
Görev YAML
acr-task.yaml
Aşağıdaki adımları gerçekleştiren depodaki import-baseimage-node
öğesini gözden geçirin:
- Aşağıdaki Dockerfile dosyasını kullanarak test temel görüntüsünü oluşturun:
ARG REGISTRY_FROM_URL= FROM ${REGISTRY_FROM_URL}node:15-alpine WORKDIR /test COPY ./test.sh . CMD ./test.sh
- Tamamlandığında, kapsayıcıyı çalıştırarak görüntüyü doğrulayın
./test.sh
- Başarıyla tamamlandığı takdirde,
when: ['validate-base-image']
ile kontrol edilen içeri aktarma adımlarını çalıştırın.
version: v1.1.0
steps:
- id: build-test-base-image
# Build off the base image we'll track
# Add a test script to do unit test validations
# Note: the test validation image isn't saved to the registry
# but the task logs captures log validation results
build: >
--build-arg REGISTRY_FROM_URL={{.Values.REGISTRY_FROM_URL}}
-f ./Dockerfile
-t {{.Run.Registry}}/node-import:test
.
- id: validate-base-image
# only continues if node-import:test returns a non-zero code
when: ['build-test-base-image']
cmd: "{{.Run.Registry}}/node-import:test"
- id: pull-base-image
# import the public image to base-artifacts
# Override the stable tag,
# and create a unique tag to enable rollback
# to a previously working image
when: ['validate-base-image']
cmd: >
docker pull {{.Values.REGISTRY_FROM_URL}}node:15-alpine
- id: retag-base-image
when: ['pull-base-image']
cmd: docker tag {{.Values.REGISTRY_FROM_URL}}node:15-alpine {{.Run.Registry}}/node:15-alpine
- id: retag-base-image-unique-tag
when: ['pull-base-image']
cmd: docker tag {{.Values.REGISTRY_FROM_URL}}node:15-alpine {{.Run.Registry}}/node:15-alpine-{{.Run.ID}}
- id: push-base-image
when: ['retag-base-image', 'retag-base-image-unique-tag']
push:
- "{{.Run.Registry}}/node:15-alpine"
- "{{.Run.Registry}}/node:15-alpine-{{.Run.ID}}"
Temel görüntüyü içeri aktarmak ve test etmek için görev oluşturma
az acr task create \
--name base-import-node \
-f acr-task.yaml \
-r $REGISTRY_BASE_ARTIFACTS \
--context $GIT_NODE_IMPORT \
--git-access-token $(az keyvault secret show \
--vault-name $AKV \
--name github-token \
--query value -o tsv) \
--set REGISTRY_FROM_URL=${REGISTRY_PUBLIC_URL}/ \
--assign-identity
Sanal genel kayıt defteri için göreve kimlik bilgileri ekleyin:
az acr task credential add \
-n base-import-node \
-r $REGISTRY_BASE_ARTIFACTS \
--login-server $REGISTRY_PUBLIC_URL \
-u https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_PUBLIC}-user \
-p https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_PUBLIC}-password \
--use-identity [system]
Anahtar kasasından değerleri okumak için göreve erişim izni verin.
az keyvault set-policy \
--name $AKV \
--resource-group $AKV_RG \
--object-id $(az acr task show \
--name base-import-node \
--registry $REGISTRY_BASE_ARTIFACTS \
--query identity.principalId --output tsv) \
--secret-permissions get
İçeri aktarma görevini çalıştırın:
az acr task run -n base-import-node -r $REGISTRY_BASE_ARTIFACTS
Uyarı
./test.sh: Permission denied
nedeniyle görev başarısız olursa, betiğin yürütme izinlerine sahip olduğundan emin olun ve Git depoya geri aktarın.
chmod +x ./test.sh
Geçitli node
görüntüden derleme yapmak için hello-world
görüntüsünü güncelleştir
Temel yapıtlar kayıt defterine erişmek için node
deposundan read
kapsamına sahip bir erişim belirteci oluşturun. Ardından anahtar kasasında ayar yapın:
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY_BASE_ARTIFACTS}-user" \
--value "registry-${REGISTRY_BASE_ARTIFACTS}-user"
az keyvault secret set \
--vault-name $AKV \
--name "registry-${REGISTRY_BASE_ARTIFACTS}-password" \
--value $(az acr token create \
--name "registry-${REGISTRY_BASE_ARTIFACTS}-user" \
--registry $REGISTRY_BASE_ARTIFACTS \
--repository node content/read \
-o tsv \
--query credentials.passwords[0].value)
Temel yapıtlar kayıt defteri için hello-world görevine kimlik bilgileri ekleyin:
az acr task credential add \
-n hello-world \
-r $REGISTRY \
--login-server $REGISTRY_BASE_ARTIFACTS_URL \
-u https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_BASE_ARTIFACTS}-user \
-p https://${AKV}.vault.azure.net/secrets/registry-${REGISTRY_BASE_ARTIFACTS}-password \
--use-identity [system]
Görevi, REGISTRY_FROM_URL
yerine BASE_ARTIFACTS
kayıt defterini kullanacak şekilde güncelleştirin.
az acr task update \
-n hello-world \
-r $REGISTRY \
--set KEYVAULT=$AKV \
--set REGISTRY_FROM_URL=${REGISTRY_BASE_ARTIFACTS_URL}/ \
--set ACI=$ACI \
--set ACI_RG=$ACI_RG
Temel görüntü bağımlılığını değiştirmek için hello-world görevini çalıştırın:
az acr task run -r $REGISTRY -n hello-world
Temel görüntüyü "geçerli" bir değişiklikle güncelleştirme
-
base-image-node
deposundakiDockerfile
dosyasını açın. -
BACKGROUND_COLOR
öğesiniGreen
öğesi ile değiştirerek geçerli bir değişikliği simüle edin.
ARG REGISTRY_NAME=
FROM ${REGISTRY_NAME}node:15-alpine
ENV NODE_VERSION 15-alpine
ENV BACKGROUND_COLOR Green
Değişikliği işleyin ve güncelleştirme sırasını izleyin:
watch -n1 az acr task list-runs -r $REGISTRY_PUBLIC -o table
Çalıştırdıktan sonra Ctrl+C tuşlarına basın ve günlükleri izleyin:
az acr task logs -r $REGISTRY_PUBLIC
İşlem tamamlandıktan sonra temel görüntü içeri aktarma görevini izleyin:
watch -n1 az acr task list-runs -r $REGISTRY_BASE_ARTIFACTS -o table
Çalıştırdıktan sonra Ctrl+C tuşlarına basın ve günlükleri izleyin:
az acr task logs -r $REGISTRY_BASE_ARTIFACTS
İşlem tamamlandıktan sonra hello-world görevini izleyin:
watch -n1 az acr task list-runs -r $REGISTRY -o table
Çalıştırdıktan sonra Ctrl+C tuşlarına basın ve günlükleri izleyin:
az acr task logs -r $REGISTRY
Tamamlandıktan sonra, güncelleştirilmiş hello-world
görüntüyü barındıran sitenin IP adresini alın:
az container show \
--resource-group $ACI_RG \
--name ${ACI} \
--query ipAddress.ip \
--out tsv
Tarayıcınızda, yeşil (geçerli) bir arka plana sahip olması gereken siteye gidin.
Geçitli iş akışını görüntüleme
Yukarıdaki bölümdeki adımları, arka plan rengi kırmızı olacak şekilde yeniden gerçekleştirin.
-
Dockerfile
depodabase-image-node
dosyasını açın -
BACKGROUND_COLOR
'yiRed
ile değiştirerek geçersiz bir değişiklik benzetimi yapın.
ARG REGISTRY_NAME=
FROM ${REGISTRY_NAME}node:15-alpine
ENV NODE_VERSION 15-alpine
ENV BACKGROUND_COLOR Red
Değişikliği işleyin ve güncelleştirme sırasını izleyin:
watch -n1 az acr task list-runs -r $REGISTRY_PUBLIC -o table
Çalıştırdıktan sonra Ctrl+C tuşlarına basın ve günlükleri izleyin:
az acr task logs -r $REGISTRY_PUBLIC
İşlem tamamlandıktan sonra temel görüntü içeri aktarma görevini izleyin:
watch -n1 az acr task list-runs -r $REGISTRY_BASE_ARTIFACTS -o table
Çalıştırdıktan sonra Ctrl+C tuşlarına basın ve günlükleri izleyin:
az acr task logs -r $REGISTRY_BASE_ARTIFACTS
Bu noktada , base-import-node görevinin başarısız olduğunu görmeniz ve güncelleştirmeyi yayımlama hello-world
sırasını durdurmanız gerekir. Çıkış şuna benzer olacaktır:
[...]
2020/10/30 03:57:39 Launching container with name: validate-base-image
Validating Image
NODE_VERSION: 15-alpine
BACKGROUND_COLOR: Red
ERROR: Invalid Color: Red
2020/10/30 03:57:40 Container failed during run: validate-base-image. No retries remaining.
failed to run step ID: validate-base-image: exit status 1
hello-world
için güncelleme yayımla
Görüntüde hello-world
yapılan değişiklikler, doğrulanan node
son görüntüyü kullanmaya devam eder.
Temel node
görüntüde yapılan ve sınırlı doğrulamaları geçen ek değişiklikler, hello-world
görüntüye temel görüntü güncellemelerini tetikler.
Temizleme
Artık gerekli olmadığında, bu makalede kullanılan kaynakları silin.
az group delete -n $REGISTRY_RG --no-wait -y
az group delete -n $REGISTRY_PUBLIC_RG --no-wait -y
az group delete -n $REGISTRY_BASE_ARTIFACTS_RG --no-wait -y
az group delete -n $AKV_RG --no-wait -y
az group delete -n $ACI_RG --no-wait -y
Sonraki Adımlar
Bu makalede, ortamınıza güncelleştirilmiş temel görüntüler eklemek üzere otomatik bir gating iş akışı oluşturmak için ACR görevlerini kullandınız. Azure Container Registry'de görüntüleri yönetmek için ilgili bilgilere bakın.