Helm grafiklerini Azure kapsayıcı kayıt defterine gönderme ve çekme

Kubernetes uygulamalarını hızla yönetmek ve dağıtmak için açık kaynak Helm paket yöneticisini kullanabilirsiniz. Helm ile uygulama paketleri, bir Helm grafik deposunda toplanan ve depolanan grafikler olarak tanımlanır.

Bu makalede, Helm 3 komutlarını kullanarak ve grafikleri OCI yapıtları olarak depolayarak Helm grafik depolarını bir Azure kapsayıcı kayıt defterinde barındırma adımları gösterilmektedir. Birçok senaryoda, geliştirdiğiniz uygulamalar için kendi grafiklerinizi derleyip karşıya yüklersiniz. Kendi Helm grafiklerinizi oluşturma hakkında daha fazla bilgi için bkz . Grafik Şablonu Geliştirici Kılavuzu. Ayrıca başka bir Helm deposundaki mevcut Helm grafiğini de depolayabilirsiniz.

Önemli

Bu makale Helm 3 komutları ile güncelleştirildi. Helm 3.7, Helm CLI komutlarında yapılan değişiklikleri ve Helm 3'ün önceki sürümlerinde sunulan OCI desteğini içerir. Tasarım helm gereği sürümle ileriye doğru ilerler. 3.7.2 veya üzerini kullanmanızı öneririz.

Helm 3 mü, Helm 2 mi?

Helm grafiklerini depolamak, yönetmek ve yüklemek için Helm CLI'daki komutları kullanırsınız. Helm 3 ve Helm 2' nin ana Helm sürümleridir. Sürüm farklılıkları hakkında ayrıntılı bilgi için bkz. sürüm hakkında SSS.

Helm 3, Azure Container Registry'de Helm grafiklerini barındırmak için kullanılmalıdır. Helm 3 ile şunları:

  • Helm grafiklerini azure kapsayıcı kayıt defterindeki depolarda depolayabilir ve yönetebilir
  • Helm grafiklerini kayıt defterinizde OCI yapıtları olarak depolayın. Azure Container Registry, Helm grafikleri de dahil olmak üzere OCI yapıtları için GA desteği sağlar.
  • veya az acr login komutunu kullanarak helm registry login kayıt defterinizle kimlik doğrulamasından geçin.
  • Kayıt defterindeki Helm grafiklerini göndermek, çekmek ve yönetmek için komutları kullanma helm
  • Kayıt defterinden kubernetes kümesine grafik yüklemek için kullanın helm install .

Özellik desteği

Azure Container Registry, Helm 3 (geçerli) veya Helm 2 (kullanım dışı) kullanmanıza bağlı olarak belirli Helm grafik yönetimi özelliklerini destekler.

Özellik Helm 2 Helm 3
Komutları kullanarak az acr helm grafikleri yönetme ✔️
Grafikleri OCI yapıtları olarak depolama ✔️
Azure portalında komutları ve Depolar dikey penceresini kullanarak az acr repository grafikleri yönetme ✔️

Dekont

Helm 3 itibarıyla Helm 2 istemcisiyle kullanılacak az acr helm komutları kullanım dışı bırakılmıştır. Komut kaldırma işlemi öncesinde en az 3 ay önceden bildirim sağlanacaktır.

Grafik sürümü uyumluluğu

Aşağıdaki Helm grafiği sürümleri Azure Container Registry'de depolanabilir ve Helm 2 ve Helm 3 istemcileri tarafından yüklenebilir.

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

Helm 2'den Helm 3'e geçiş

Daha önce Helm 2 ve Azure Container Registry kullanarak grafikleri depolayıp dağıttıysanız Helm 3'e geçmenizi öneririz. Bkz.

Ön koşullar

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

  • Azure aboneliğinizdeki bir Azure kapsayıcı kayıt defteri . Gerekirse Azure portalını veya Azure CLI'yı kullanarak bir kayıt defteri oluşturun.
  • Helm istemcisi sürüm 3.7 veya üzeri - Geçerli sürümünüzü bulmak için komutunu çalıştırın helm version . Helm'i yükleme ve yükseltme hakkında daha fazla bilgi için bkz . Helm'i Yükleme. Helm 3'ün önceki bir sürümünden yükseltme yaparsanız sürüm notlarını gözden geçirin.
  • Helm grafiği yükleyebileceğiniz kubernetes kümesi . Gerekirse Azure CLI kullanarak, Azure PowerShell kullanarak veya Azure portalını kullanarak bir AKS kümesi oluşturun.
  • Azure CLI sürüm 2.0.71 veya üzeri - Sürümü bulmak için komutunu çalıştırın az --version . Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Helm istemciyi ayarlama

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

helm version

Dekont

Önceki sürümlerde OCI desteği deneysel olduğundan belirtilen sürüm en az 3.8.0 olmalıdır.

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, ACR_NAME kayıt defterim 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üne templates değiştirin ve önce buradaki içeriği silin:

cd hello-world/templates
rm -rf *

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

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 . Helm Docs'ta Başlarken .

Grafiği yerel arşive kaydetme

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

Aşağıdaki örnekte, grafik içinde adı ve sürümüyle Chart.yamlkaydedilir.

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ğrulaması

Kayıt defteriyle kimlik doğrulaması yapmak için komutunu çalıştırın helm registry login . Hizmet sorumlusu kimlik bilgileri, kullanıcı kimliği veya depo kapsamlı belirteç gibi senaryonuza uygun kayıt defteri kimlik bilgilerini geçirebilirsiniz.

  • Kayıt defterine çekme ve gönderme izinleriyle (AcrPush rolü) bir Microsoft Entra hizmet sorumlusuyla kimlik doğrulaması.
    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 acrpush \
              --query "password" --output tsv)
    USER_NAME=$(az identity show -n $SERVICE_PRINCIPAL_NAME -g $RESOURCE_GROUP_NAME --subscription $SUBSCRIPTION_ID --query "clientId" -o tsv)
    
  • Ad belirteci kullanarak Helm grafiklerini göndermek ve çekmek için bireysel Microsoft Entra kimliğiniz ile kimlik doğrulaması.
    USER_NAME="00000000-0000-0000-0000-000000000000"
    PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
    
  • Depo kapsamı belirlenmiş bir belirteçle kimlik doğrulaması (Önizleme).
    USER_NAME="helmtoken"
    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)
    
  • Ardından kimlik bilgilerini adresine helm registry loginsağlayın.
    helm registry login $ACR_NAME.azurecr.io \
      --username $USER_NAME \
      --password $PASSWORD
    

Grafiği kayıt defterine OCI yapıtı olarak gönderme

helm push Helm 3 CLI'de komutunu çalıştırarak grafik arşivini tam hedef depoya gönderin. Grafik adlarındaki sözcükleri ayırın ve yalnızca küçük harf ve sayı kullanın. Aşağıdaki örnekte hedef depo ad alanı şeklindedir helm/hello-worldve grafik etiketli 0.1.0:

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

Başarılı bir gönderimden sonra çıkış şuna benzer:

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

Depodaki grafikleri listeleme

Azure kapsayıcı kayıt defterinde depolanan görüntülerde olduğu gibi, az acr repository komutlarını kullanarak grafiklerinizi barındıran depoları, grafik etiketlerini ve bildirimlerini gösterebilirsiniz.

Örneğin, önceki adımda oluşturduğunuz deponun özelliklerini görmek için az acr repository show komutunu ç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 manifest list-metadata komutunu çalıştırın. Örnek:

az acr manifest list-metadata \
  --registry $ACR_NAME \
  --name helm/hello-world

Bu örnekte kısaltılmış çıktı, şunu configMediaTypeapplication/vnd.cncf.helm.config.v1+jsongösterir:

[
  {
    [...]
    "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"
    ]

Helm grafiğini yükleme

Kayıt defterine ilettiğiniz Helm grafiğini yüklemek için komutunu çalıştırın helm install . Grafik etiketi parametresi kullanılarak --version geçirilir. myhelmtest gibi bir yayın adı belirtin veya parametresini --generate-name geçirin. Örnek:

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

Başarılı grafik yükleme sonrasındaki çıkış şuna benzer:

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

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

helm get manifest myhelmtest

komut, şablon dosyanızdaki configmap.yaml YAML verilerini döndürür.

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

helm uninstall myhelmtest

Grafiği yerel arşive çekme

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

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

Kayıt defterinden grafiği silme

Kapsayıcı kayıt defterinden grafik 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 az acr helm komutlarını kullanarak Azure kapsayıcı kayıt defterinizi grafik deposu olarak ayarladıysanız Helm 3 istemcisine yükseltmenizi öneririz. Ardından, grafikleri kayıt defterinizde OCI yapıtları olarak depolamak için bu adımları izleyin.

Önemli

  • Helm 2 stilinde (index.yaml tabanlı) bir grafik deposundan OCI yapıt depolarına geçişi tamamladıktan sonra, helm CLI ve az acr repository komutlarını kullanarak grafikleri yönetin. Bu makaledeki önceki bölümlere bakın.
  • Helm OCI yapıt depoları ve helm repo listgibi helm search Helm komutları kullanılarak bulunamaz. 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 v3.8.0'da varsayılan olarak etkindir)

Helm 3 istemcisini kullandığınızdan emin olun:

helm version

Helm v3.8.0 veya üzerini kullanıyorsanız, bu varsayılan olarak etkindir. Daha düşük bir sürüm kullanıyorsanız ortam değişkenini ayarlamak için OCI desteğini etkinleştirebilirsiniz:

export HELM_EXPERIMENTAL_OCI=1

Geçerli grafikleri listeleme

Kayıt defterinde depolanan ve myregistry adlı grafikleri listeleyin:

helm search repo myregistry

Çıktıda grafikler ve grafik sürümleri gösterilir:

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...
[...]

Çekme grafiği arşivleri yerel olarak

Depodaki her grafik için grafik arşivini yerel olarak çekin ve dosya adını not alın:

helm pull myregisry/ingress-nginx
ls *.tgz

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

Grafikleri OCI yapıtları olarak kayıt defterine gönderme

Kayıt defterinde oturum açın:

az acr login --name $ACR_NAME

Her grafik arşivini kayıt defterine gönderin. Örnek:

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

Bir grafiği gönderdikten sonra kayıt defterinde depolandığını onaylayın:

az acr repository list --name $ACR_NAME

Tüm grafikleri gönderdikten sonra, isteğe bağlı olarak Helm 2 stili grafik deposunu kayıt defterinden kaldırın. Bunu yaptığınızda kayıt defterinizdeki depolama alanı azalır:

helm repo remove $ACR_NAME

Sonraki adımlar

  • Helm grafikleri oluşturma ve dağıtma hakkında daha fazla bilgi için bkz . Helm grafikleri geliştirme.
  • Azure Kubernetes Service'te (AKS) Helm ile uygulama yükleme hakkında daha fazla bilgi edinin.
  • Helm grafikleri kapsayıcı derleme işleminin bir parçası olarak kullanılabilir. Daha fazla bilgi için bkz . Azure Container Registry Görevlerini Kullanma.