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 loginaz acr login. helmBir kayıt defterindeki Held grafiklerini göndermek, çekmek ve yönetmek için komutları kullanınhelm 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.
- Held belgelerinde Held 2 ' ye geçiş yapılıyor .
- Kayıt defterinizi, bu makalenin ilerleyen bölümlerindeki HELMOCı yapıtları depolamak Için 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 veya Azure CLIkullanarak bir kayıt defteri oluşturun.
- Hele Client Version 3.7.1 veya üzeri -
helm versiongeç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 repositorykomutlarını kullanın. Bu makaledeki önceki bölümlere bakın. - Ve gibi Helm komutları kullanılarak Helm OCI yapıt depoları
helm searchhelm repo listkeş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
- Helm grafikleri oluşturma ve dağıtma hakkında daha fazla bilgi için bkz. Helm grafikleri geliştirme.
- Azure Kubernetes Service 'de (AKS)Helm ile uygulama yükleme hakkında daha fazla bilgi.
- Helm grafikleri, kapsayıcı derleme işleminin bir parçası olarak kullanılabilir. Daha fazla bilgi için bkz. Azure Container Registry Görevleri.