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.
Not
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üm güncelleştirmeleri ile ilerler. 3.7.2 veya üzerini kullanmanızı öneririz.
Önemli
- Kasım 2020'de Helm 2 ömrünün sonuna ulaştı. 30 Mart 2025'den itibaren Azure Container Registry artık Helm 2'yi desteklemeyecektir. Bu nedenle, eski "Helm depoları" işlevi de kullanımdan kaldırılacaktır. Helm 3'e hemen geçiş yapmanızı öneririz.
- 21 Ocak 2025'den itibaren yeni Helm grafiklerinin eski Helm depolarına gönderimini önlemek için az acr helm push CLI komutu kullanımdan kaldırılacaktır.
- 30 Mart 2025'den itibaren az acr helm CLI komut grubu kullanımdan kaldırılacak ve Azure Container Registry'deki tüm eski Helm deposu özellikleri sona erecektir.
- OCI yapıtı olarak depolanmayan tüm Helm grafikleri 30 Mart 2025'te Azure Container Registry'den silinecek.
- Helm deposunda depolanan tüm Helm grafiklerini nasıl bulacağınızı buradan öğrenebilirsiniz: az acr helm list. Kullandığınız Helm grafiği listeleniyorsa eski bir Helm deposunda depolanır ve silinme riski altındadır.
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 kullanarakhelm 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 |
✔️ |
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.
- Helm belgelerinde Helm 2'yi 3'e geçirme.
- Bu makalenin devamında Helm OCI yapıtlarını depolamak için kayıt defterinizi geçirin
Ö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ı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
Not
Ö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.yaml
bir 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.yaml
kaydedilir.
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 login
sağ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-world
ve 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. Örneğin:
az acr manifest list-metadata \
--registry $ACR_NAME \
--name helm/hello-world
Bu örnekte kısaltılmış çıktı, şunu configMediaType
application/vnd.cncf.helm.config.v1+json
gö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. Örneğin:
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 pull
bir 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 list
gibihelm 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.