Azure Container Registry 'de Held grafikleri gönderme ve çekme

Kubernetes uygulamalarını hızlıca yönetmek ve dağıtmak için, Açık kaynaklı HELI paket yöneticisinikullanabilirsiniz. Held ile uygulama paketleri, bir Held grafik deposundatoplanan ve depolanan grafiklerolarak tanımlanır.

Bu makalede, Heln 3 komutlarını kullanarak ve grafikleri OCI yapıtlarıolarak depolayarak bir Azure Container Registry 'de hele grafik depoları barındırmanın nasıl yapılacağı gösterilir. Birçok senaryoda, geliştirdiğiniz uygulamalar için kendi grafiklerinizi derleyip karşıya yüklersiniz. Kendi HELI grafiklerinizi oluşturma hakkında daha fazla bilgi için bkz. grafik şablonu Geliştirici Kılavuzu. Ayrıca, başka bir Held deposundan var olan bir Helu grafiğini de saklayabilirsiniz.

Önemli

Bu makale, 3.7.1 sürümü Itibariyle Held 3 komutlarıyla güncelleştirilmiştir. Hele 3.7.1, Held CLı komutlarında ve Held 3 ' ün önceki sürümlerinde sunulan OCı desteğiyle yapılan değişiklikleri içerir.

Helb 3 veya Held 2?

Held grafiklerini depolamak, yönetmek ve yüklemek için HELI CLı içindeki komutları kullanırsınız. Ana Helmler, Held 3 ve Held 2 ' dir. Sürüm farklılıkları hakkındaki ayrıntılar için bkz. Sürüm SSS.

Hele grafiklerini Azure Container Registry barındırmak için helm3 kullanılmalıdır. Helb 3 ile şunları yapabilirsiniz:

  • Azure Container Registry 'deki depolarda Held grafiklerini saklayabilir ve yönetebilir
  • Held grafiklerini kayıt defterinizde OCI yapıtlarıolarak depolayın. Azure Container Registry, Held grafikleri dahil OCı yapıtları için GA desteği sağlar.
  • Veya komutunu kullanarak kayıt defterinizde kimlik doğrulaması yapın helm registry login az acr login .
  • helmBir kayıt defterindeki Held grafiklerini göndermek, çekmek ve yönetmek için komutları kullanın
  • helm installKayıt defterinden bir Kubernetes kümesine grafik yüklemek için kullanın.

Özellik desteği

Azure Container Registry, Held 3 (geçerli) veya Held 2 (kullanım dışı) kullanıp kullanmayacağınızı bağlı olarak belirli Hell grafik yönetimi özelliklerini destekler.

Özellik Helb 2 Helb 3
Komutları kullanarak grafikleri yönetme az acr helm ✔️
Grafikleri OCı yapıtları olarak depola ✔️
az acr repositoryAzure Portal komutları ve depolar dikey penceresini kullanarak grafikleri yönetme ✔️

Not

Helm 3 itibariyle, Helm 2 istemcisiyle kullanım için az ACR Helm komutları kullanım dışı bırakılıyor. Komut kaldırma işleminin ardından en az 3 ay ' bildirim sunulacaktır.

Grafik sürümü uyumluluğu

Aşağıdaki Held grafik sürümleri Azure Container Registry depolanabilir ve Held 2 ve Heln 3 istemcileri tarafından yüklenebilir.

Sürüm Helb 2 Helb 3
apiVersion v1 ✔️ ✔️
apiVersion v2 ✔️

Held 2 ' den hele 3 ' e geçiş

Daha önce helk 2 ve Azure Container Registry kullanarak grafikler depoladıysanız ve dağıttıysanız, Held 3 ' e geçiş yapmanızı öneririz. Bkz.

Önkoşullar

Bu makaledeki senaryo için aşağıdaki kaynaklar gereklidir:

  • Azure aboneliğinizdeki bir Azure Kapsayıcı kayıt defteri . Gerekirse, Azure Portal veya Azure CLIkullanarak bir kayıt defteri oluşturun.
  • Hele Client Version 3.7.1 veya üzeri - helm version geçerli sürümünüzü bulmak için çalıştırın. Held 'yi yükleme ve yükseltme hakkında daha fazla bilgi için bkz. Held yükleme. Held 3 ' ün önceki bir sürümünden yükseltirseniz sürüm notlarınıgözden geçirin.
  • Helk grafiğini yükleyeceğiniz bir Kubernetes kümesi . Gerekirse, bir Azure Kubernetes hizmet kümesioluşturun.
  • Sürümü bulmak için Azure CLI sürüm 2.0.71 veya üzeri -çalıştırın az --version . Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

OCı desteğini etkinleştir

helm versionHeld 3 ' ü yüklediğinizi doğrulamak için komutunu kullanın:

helm version

Hele 3 istemcisinde OCı desteğini etkinleştirmek için aşağıdaki ortam değişkenini ayarlayın. Şu anda bu destek deneysel bir konudur ve değişebilir.

export HELM_EXPERIMENTAL_OCI=1

Hedef kayıt defteri için aşağıdaki ortam değişkenlerini ayarlayın. ACR_NAME kayıt defteri kaynak adıdır. ACR kayıt defteri URL 'si myregistry.azurecr.io ise, ACR_NAME myregistry olarak ayarlayın

ACR_NAME=<container-registry-name>

Örnek grafik oluşturma

Aşağıdaki komutları kullanarak bir test grafiği oluşturun:

mkdir helmtest

cd helmtest
helm create hello-world

Temel bir örnek olarak, dizini klasörü olarak değiştirin templates ve ilk olarak içeriğini silin:

cd hello-world/templates
rm -rf *

Klasöründe, templates aşağıdaki komutu çalıştırarak adlı bir dosya oluşturun configmap.yaml :

cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: hello-world-configmap
data:
  myvalue: "Hello World"
EOF

Bu örneği oluşturma ve çalıştırma hakkında daha fazla bilgi için, bkz. HELI docs 'ta çalışmaya başlama.

Grafiği yerel arşive Kaydet

Dizini hello-world alt dizine değiştirin. Ardından, helm package grafiği yerel bir arşive kaydetmek için öğesini çalıştırın.

Aşağıdaki örnekte, grafik içindeki ad ve sürümle birlikte kaydedilir Chart.yaml .

cd ..
helm package .

Çıkış şuna benzer olacaktır:

Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz

Kayıt defteriyle kimlik doğrulama

helm registry loginKayıt defteriyle kimlik doğrulaması yapmak için ' i çalıştırın. Senaryolarınız için hizmet sorumlusu kimlik bilgileri, Kullanıcı kimliği veya depo kapsamlı belirteç gibi kayıt defteri kimlik bilgilerini geçirebilirsiniz.

  • kayıt defterine çekme ve anında iletme izinleri (acrpush rolü) ile Azure Active Directory hizmet sorumlusu ile kimlik doğrulaması yapın.
    SERVICE_PRINCIPAL_NAME=<acr-helm-sp>
    ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
    PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME \
              --scopes $(az acr show --name $ACR_NAME --query id --output tsv) \
               --role acrpull \
              --query "password" --output tsv)
    USER_NAME=$(az ad sp list --display-name $SERVICE_PRINCIPAL_NAME --query "[].appId" --output tsv)
    
  • Bir AD belirteci kullanarak Held grafiklerini göndermek ve çekmek için tek tek Azure AD kimliğiniz ile kimlik doğrulaması yapın.
    USER_NAME="00000000-0000-0000-0000-000000000000"
    PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
    
  • Depo kapsamlı bir belirteçle (Önizleme) kimlik doğrulaması yapın.
    USER_NAME="helm-token"
    PASSWORD=$(az acr token create -n $USER_NAME \
                      -r $ACR_NAME \
                      --scope-map _repositories_admin \
                      --only-show-errors \
                      --query "credentials.passwords[0].value" -o tsv)
    
  • Sonra kimlik bilgilerini sağlayın helm registry login .
    helm registry login $ACR_NAME.azurecr.io \
      --username $USER_NAME \
      --password $PASSWORD
    

Grafiği OCı yapıtı olarak kayıt defterine gönder

helm pushGrafik arşivini tam hedef depoya göndermek Için helm3 CLI içinde komutunu çalıştırın. Aşağıdaki örnekte, hedef depo ad alanı olur helm/hello-world ve grafik etiketlenebilir 0.1.0 :

helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm

Başarılı bir gönderim sonrasında, çıkış şuna benzerdir:

Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02

Depodaki grafikleri listeleme

Azure Container Registry 'de depolanan görüntülerde olduğu gibi, grafiklerinizi barındıran depoları, grafik etiketlerini ve bildirimleri göstermek için az ACR Repository komutlarını kullanabilirsiniz.

Örneğin, önceki adımda oluşturduğunuz deponun özelliklerini görmek için az ACR Repository Show ' ı çalıştırın:

az acr repository show \
  --name $ACR_NAME \
  --repository helm/hello-world

Çıkış şuna benzer olacaktır:

{
  "changeableAttributes": {
    "deleteEnabled": true,
    "listEnabled": true,
    "readEnabled": true,
    "writeEnabled": true
  },
  "createdTime": "2021-10-05T12:11:37.6701689Z",
  "imageName": "helm/hello-world",
  "lastUpdateTime": "2021-10-05T12:11:37.7637082Z",
  "manifestCount": 1,
  "registry": "mycontainerregistry.azurecr.io",
  "tagCount": 1
}

Depoda depolanan grafiğin ayrıntılarını görmek için az ACR Repository Show-bildirimleri komutunu çalıştırın. Örneğin:

az acr repository show-manifests \
  --name $ACR_NAME \
  --repository helm/hello-world --detail

Bu örnekte kısaltılmış çıkış, ' a şunu gösterir configMediaType application/vnd.cncf.helm.config.v1+json :

[
  {
    [...]
    "configMediaType": "application/vnd.cncf.helm.config.v1+json",
    "createdTime": "2021-10-05T12:11:37.7167893Z",
    "digest": "sha256:0c03b71c225c3ddff53660258ea16ca7412b53b1f6811bf769d8c85a1f0663ee",
    "imageSize": 3301,
    "lastUpdateTime": "2021-10-05T12:11:37.7167893Z",
    "mediaType": "application/vnd.oci.image.manifest.v1+json",
    "tags": [
      "0.1.0"
    ]

Held grafiğini yükler

helm installKayıt defterine gönderdiğiniz Held grafiğini yüklemek için ' i çalıştırın. Grafik etiketi parametresi kullanılarak geçirilir --version . myhelmtest gibi bir yayın adı belirtin veya parametresini --generate-name girin. Örneğin:

helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0

Başarılı grafik yüklemesi sonrasında eldeki çıkış aşağıdakine benzer:

NAME: myhelmtest
LAST DEPLOYED: Tue Oct  4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

Yükleme işlemini doğrulamak için komutunu helm get manifest çalıştırın.

helm get manifest myhelmtest

Komutu, şablon dosyanıza YAML configmap.yaml verilerini döndürür.

Kümenizin helm uninstall grafik sürümünü kaldırmak için çalıştırın:

helm uninstall myhelmtest

Grafiği yerel arşive çekme

İsteğe bağlı olarak kullanarak kapsayıcı kayıt defterinden yerel arşive bir grafik helm pull çekebilirsiniz. Grafik etiketi parametresi kullanılarak --version geçirildi. Geçerli yolda yerel bir arşiv varsa, bu komut bunun üzerine yazması gerekir.

helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0

Grafiği kayıt defterinden silme

Kapsayıcı kayıt defterinden bir grafiği silmek için az acr repository delete komutunu kullanın. Aşağıdaki komutu çalıştırın ve istendiğinde işlemi onaylayın:

az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0

Helm OCI yapıtlarını depolamak için kayıt defterinizi geçirme

Daha önce Helm 2 ve komutlarını kullanarak Azure kapsayıcı kayıt defterinizi grafik deposu olarak ayarladıysanız Helm 3 istemcisine az acr helm yükseltmenizi öneririz. Ardından, grafikleri kayıt defterinize OCI yapıtları olarak depolamak için bu adımları izleyin.

Önemli

  • Helm 2 stili (index.yaml tabanlı) grafik deposundan OCI yapıt depolarına geçişi tamamlandıktan sonra, grafikleri yönetmek için Helm CLI ve az acr repository komutlarını kullanın. Bu makaledeki önceki bölümlere bakın.
  • Ve gibi Helm komutları kullanılarak Helm OCI yapıt depoları helm search helm repo list keşfedilemez. Grafikleri OCI yapıtları olarak depolamak için kullanılan Helm komutları hakkında daha fazla bilgi için Helm belgelerine bakın.

OCI desteğini etkinleştirme

Helm 3 istemcisini kullanmaya devam etmek için:

helm version

Helm 3 istemcisinde OCI desteğini etkinleştirin. Şu anda bu destek deneyseldir ve değişebilir.

export HELM_EXPERIMENTAL_OCI=1

Geçerli grafikleri listele

Kayıt defterinde şu anda depolanan grafikleri listele, burada myregistry olarak adlandırılmıştır:

helm search repo myregistry

Çıkış, grafikleri ve grafik sürümlerini gösterir:

NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
myregistry/ingress-nginx        3.20.1          0.43.0          Ingress controller for Kubernetes...
myregistry/wordpress            9.0.3           5.3.2           Web publishing platform for building...
[...]

Grafik arşivlerini yerel olarak çekme

Hesapta yer alan her grafik için grafik arşivini yerel olarak çekin ve dosya adını not alır:

helm pull myregisry/ingress-nginx
ls *.tgz

Gibi bir yerel grafik ingress-nginx-3.20.1.tgz arşivi oluşturulur.

Kayıt defterine OCI yapıtları olarak grafikleri itme

Kayıt defterinde oturum açma:

az acr login --name $ACR_NAME

Her grafik arşivini kayıt defterine itin. Örnek:

helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm

Grafiği itdikten sonra kayıt defterinde depolanmış olduğunu onaylayın:

az acr repository list --name $ACR_NAME

Tüm grafikleri itdikten sonra, isteğe bağlı olarak Helm 2 stili grafik deposunu kayıt defterinden kaldırın. Bunu yapmak kayıt defterinizin depolama alanını azaltır:

helm repo remove $ACR_NAME

Sonraki adımlar