Aracılığıyla paylaş


Azure Container Registry İşlemleri ile genel içeriği tüketme ve yönetme

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:

  1. Bağımlı genel görüntülerin yerel kopyalarını içeri aktarın.
  2. Güvenlik taraması ve işlevsel test aracılığıyla genel görüntüleri doğrulayın.
  3. İç kullanım için görüntüleri özel kayıt defterlerine yükseltin.
  4. Genel içeriğe bağımlı uygulamalar için temel görüntü güncelleştirmelerini tetikleyin.
  5. Bu iş akışını otomatikleştirmek için Azure Container Registry Görevlerini kullanın.

İş akışı aşağıdaki görüntüde özetlenmiş:

Kamusal içerik kullanma iş akışı

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ış

iş akışı bileşenlerini içeri aktarma

Bu kılavuz şunların ayarını yapar:

  1. 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)
  2. Her kayıt defterindeki bir ACR görevi . Görevler:
    1. Sanal genel node görüntü oluşturun
    2. Şirket/ekip paylaşılan kayıt defterine görüntüyü içe aktarıp doğrulayın node
    3. Görüntüyü oluştur ve dağıt hello-world
  3. 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.yamlbulunabilir 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
  4. Tüm gizli bilgileri güvence altına almak için bir Azure anahtar kasası
  5. Derleme uygulamasını barındıran hello-worldbir 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.

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ş pullbir 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.

  1. Dockerfile dosyasını çatallanmış base-image-node deposunda açın.
  2. BACKGROUND_COLOR öğesini Orange 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_CODE1 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:

  1. 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
    
  2. Tamamlandığında, kapsayıcıyı çalıştırarak görüntüyü doğrulayın ./test.sh
  3. 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

  1. base-image-node deposundaki Dockerfile dosyasını açın.
  2. BACKGROUND_COLOR öğesini Green öğ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.

  1. Dockerfile depoda base-image-node dosyasını açın
  2. BACKGROUND_COLOR'yi Red 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.