Azure Container Registry Görevleri ile genel içeriği kullanma ve koruma
Bu makalede, genel içeriği tüketmeyi ve korumayı 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 yoluyla 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 tetikleme.
- Bu iş akışını otomatikleştirmek için Azure Container Registry Görevleri'ni 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önetmenize 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 kullanma hakkında arka plan bilgisi için OCI Genel İçerik Kullanma Blog gönderisine ve Genel içeriği Azure Container Registry ile yönetme bölümüne bakın.
Bu kılavuzu tamamlamak için Azure Cloud Shell veya Azure CLI'nın yerel yüklemesini kullanabilirsiniz. Azure CLI sürüm 2.10 veya üzeri önerilir. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
Senaryoya genel bakış
Bu izlenecek yol şunu ayarlar:
- Aşağıdakileri temsil eden üç kapsayıcı kayıt defteri:
- Temel görüntünün değiştirilmesini destekleyen 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/ekip paylaşılan kayıt defteri (
baseartifacts
)
- Temel görüntünün değiştirilmesini destekleyen sanal Docker Hub (
- Her kayıt defterindeki bir ACR görevi . Görevler:
- Sanal genel
node
görüntü oluşturma - Resmi şirket/ekip paylaşılan kayıt defterine içeri aktarma ve doğrulama
node
- Görüntüyü derleme ve dağıtma
hello-world
- Sanal genel
- Aşağıdaki yapılandırmalar dahil olmak üzere ACR görev tanımları:
- Bir anahtar kasasının işaretçileri olan kayıt defteri kimlik bilgileri koleksiyonu
- içinde bulunan
acr-task.yaml
ve bir anahtar kasasının işaretçileri olan gizli dizi koleksiyonu - bir içinde kullanılan yapılandırılmış değerler koleksiyonu
acr-task.yaml
- Tüm gizli dizilerin güvenliğini sağlamak 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, izlenecek yolda 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 bunları 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ın benzetimini yapmak için aşağıdaki Git depolarının her birini yönetebileceğiniz depolara çatallayı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, çatallanmış depolarınız için aşağıdaki değişkenleri güncelleştirin.
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ı kopyalayıp oluşturması için bir GitHub erişim belirtecine (PAT) ihtiyacınız vardır. Ö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>
kimlik bilgilerini Docker Hub
Docker Hub'dan görüntü çekerken azaltma 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 olmak üzere üç 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şturma:
az group create --name $AKV_RG --location $RESOURCE_GROUP_LOCATION
az keyvault create --resource-group $AKV_RG --name $AKV
Anahtar kasasında kullanıcı adı ve belirteci Docker Hub 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, görüntüyü dağıtırken hello-world
sonraki bir görevde kullanılır.
az group create --name $ACI_RG --location $RESOURCE_GROUP_LOCATION
Ortak node
temel görüntü oluşturma
Docker Hub'da görüntünün benzetimini node
yapmak için, genel görüntüyü derlemek ve korumak için bir ACR görevi oluşturun. Bu kurulum, görüntü bakımcıları tarafından değişikliklerin benzetimini node
yapmasına 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 azaltmasını önlemek için göreve Docker Hub kimlik bilgileri ekleyin. acr görev kimlik bilgileri komutu, docker kimlik bilgilerini Docker Hub de 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]
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 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üyü oluşturmak node
için görevi el ile ç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
Benzetimi yapılan genel node
görüntüye göre bir hello-world
görüntü oluşturun.
Sanal genel kayıt defterine çekme erişimi için belirteç oluşturma
Sanal genel kayıt defteri için kapsamı olarak belirlenmiş pull
bir erişim belirteci oluşturun. Ardından anahtar kasasında ayarlayı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 çekme erişimi için belirteç oluşturma
Görüntüyü barındıran hello-world
kayıt defterine çekme kapsamına sahip bir erişim belirteci oluşturun. Ardından anahtar kasasında ayarlayın:
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şturmak ve korumak hello-world
için görev oluşturma
Aşağıdaki komut, deposundaki tanımından acr-tasks.yaml
hello-world
bir görev oluşturur. Görev adımları görüntüyü oluşturur hello-world
ve ardından Azure Container Instances'a dağıtır. Azure Container Instances kaynak grubu önceki bir bölümde oluşturulmuştur. görevi içinde yalnızca bir farkla image:tag
çağırarakaz container create
, görev bu izlenecek yol boyunca aynı örneğe dağıtılı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, görüntüyü derlemek ve dağıtmak hello-world
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ümde, ortamda sorunlara neden olabilecek temel görüntüde yapılan bir değişikliğin benzetimi yapılır.
- Çatallanmış
base-image-node
depoda açınDockerfile
. - değişikliğin
BACKGROUND_COLOR
Orange
benzetimini yapmak için öğesini olarak değiştirin.
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 TRIGGER Commit
değerini temel alan 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
node
Görüntü tamamlandıktan sonra, watch
ACR Görevlerinin görüntüyü otomatik olarak oluşturmaya hello-world
başlaması için:
watch -n1 az acr task list-runs -r $REGISTRY -o table
Sonunda BIR TRIGGER Image Update
değerini temel alan 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
İşlem 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.
İade ediyor
Bu noktada, Git işlemeleri ve temel node
görüntüde yapılan değişiklikler üzerinde otomatik olarak oluşturulan bir hello-world
görüntü oluşturdunuz. Bu örnekte, görev Azure Container Registry'daki bir temel görüntüye göre oluşturulur, ancak desteklenen herhangi bir kayıt defteri kullanılabilir.
Temel görüntü güncelleştirmesi, görüntü güncelleştirildiğinde görev çalıştırmasını node
otomatik olarak yeniden denentir. Burada görüldüğü gibi tüm güncelleştirmeler istenmiyor.
Genel içeriğin geçitli 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ünde işlevsel bir test betiği
./test.sh
çalıştırma - 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ğinin geçitlerini almak için otomatikleştirilmiş test uygulanır. Bu örnekte, öğesini denetleyen $BACKGROUND_COLOR
bir test.sh
sağlanır. 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, günlüğe kaydetme sonuçları da 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, çalıştırılan kapsayıcıyı çalıştırarak görüntüyü doğrulayın
./test.sh
- Yalnızca başarıyla tamamlandığında, ile geçitli içeri aktarma adımlarını çalıştırın
when: ['validate-base-image']
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 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 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
Not
Görev nedeniyle ./test.sh: Permission denied
başarısız olursa, betiğin yürütme izinlerine sahip olduğundan emin olun ve Git deposuna geri işleyin:
chmod +x ./test.sh
Geçitli node
görüntüden derlemek için görüntüyü güncelleştirme hello-world
Depodan node
kapsamı olarak belirlenmiş base-artifacts kayıt defterine erişmek için read
bir erişim belirteci oluşturun. Ardından anahtar kasasında ayarlayı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]
kayıt defterini kullanacak şekilde değiştirmek REGISTRY_FROM_URL
için görevi güncelleştirin BASE_ARTIFACTS
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
Hello-world görevini çalıştırarak temel görüntü bağımlılığını değiştirin:
az acr task run -r $REGISTRY -n hello-world
Temel görüntüyü "geçerli" bir değişiklikle güncelleştirme
- Depoyu
Dockerfile
base-image-node
açın. - geçerli bir değişikliğin
BACKGROUND_COLOR
benzetimini yapmak için öğesini olarakGreen
değiştirin.
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 base-image-import 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
İşlem 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
Önceki bölümdeki adımları, arka plan rengi kırmızı olacak şekilde yeniden gerçekleştirin.
Dockerfile
depoda dosyasınıbase-image-node
açın- geçersiz bir değişikliğin
BACKGROUND_COLOR
benzetimini yapmak içinRed
öğesini olarak değiştirin.
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 base-image-import 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
Güncelleştirme yayımlama hello-world
Görüntüde hello-world
yapılan değişiklikler doğrulanan node
son görüntüyü kullanmaya devam eder.
Geçitli doğrulamaları geçen temel node
görüntüde yapılan ek değişiklikler, görüntüde hello-world
temel görüntü güncelleştirmelerini 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'da görüntüleri yönetmek için ilgili bilgilere bakın.