Held grafiklerini paketleme ve dağıtma görevi
Azure Pipelines
Helk komutlarını çalıştırarak Azure Container Service bir Kubernetes kümesini dağıtmak, yapılandırmak veya güncelleştirmek için bu görevi kullanın. Helk, Kubernetes uygulamalarını, grafikler adlı bir paketleme biçimi kullanarak dağıtmayı ve yönetmeyi sağlayan bir araçtır.
Held kullanarak en karmaşık Kubernetes uygulamasını bile tanımlayabilir, sürüm, paylaşabilir, yükleyebilir ve yükseltebilirsiniz.
- Helk, hizmet, dağıtımlar, configmaps gibi birden çok Kubernetes bildirimini (YAML), HELI grafikleri adlı tek bir birimde birleştirmenize yardımcı olur. Bir simgeleştirme veya şablon oluşturma aracı oluşturmanız ya da kullanmanız gerekmez.
- Helb grafikleri, uygulama bağımlılıklarını yönetmenize ve birim olarak geri alma işlemi yapmanıza yardımcı olur. Ayrıca, diğer iş ortağı ekipleriyle oluşturma, sürüm, yayımlama ve paylaşma kolaylardır.
Azure Pipelines held grafikleri için yerleşik desteğe sahiptir:
- Hele aracı yükleyicisi görevi , aracıların üzerine doğru Held sürümünü yüklemek için kullanılabilir.
- Helk paketi ve Dağıtım görevi, uygulamayı paketleyip bir Kubernetes kümesine dağıtmak için kullanılabilir. Tiller 'yi bir Kubernetes ad alanına yüklemek veya güncelleştirmek, grafikleri dağıtmak için TLS üzerinden güvenli bir şekilde bağlanmak veya Lintgibi bir Held komutu çalıştırmak için kullanabilirsiniz.
- Hele görevi bir Azure hizmet bağlantısı kullanarak bir Azure Kubernetes hizmetine bağlanmayı destekler. Kubeconfig veya bir hizmet hesabı kullanarak herhangi bir Kubernetes kümesine bağlanabilirsiniz.
- Helk dağıtımları Kubectl görevi kullanılarak takıma eklenebilir; Örneğin, Create/Update, ımagepullsecret ve diğerleri.
Hizmet bağlantısı
Görev, Azure Resource Manager ve Kubernetes hizmet bağlantısıolmak üzere iki hizmet bağlantı türü ile birlikte kullanılabilir.
Not
İşlem hattının aşamasında bir Kubernetes kümesine işaret eden bir ortam kaynağı zaten belirtilmişse, hizmet bağlantısı gerekli değildir.
Azure Resource Manager
| Parametreler | Description |
|---|---|
connectionType(Hizmet bağlantı türü) | (Ortam kaynağı zaten mevcut değilse gereklidir) Azure Kubernetes hizmetini kullanmak Azure Resource Manager . Diğer tüm kümelerde Kubernetes hizmet bağlantısı . Varsayılan değer: Azure Resource Manager |
azureSubscriptionEndpoint(Azure aboneliği) | Istenir Azure hizmet bağlantısının adı. |
azureResourceGroup(Kaynak grubu) | Istenir Abonelik içindeki kaynak grubunun adı. |
kubernetesCluster(Kubernetes kümesi) | Istenir AKS kümesinin adı. |
namespaceUzayına | Seçim Kubectl komutlarının çalıştırıldığı ad alanı. Belirtilmemişse, varsayılan ad alanı kullanılır. |
Bu YAML örnek YAML, Kubernetes kümesine başvurmak için Azure Resource Manager nasıl kullanıldığını gösterir. Bu, Held komutlarıyla ve komut için gereken uygun değerlerden biriyle kullanılır:
variables:
azureSubscriptionEndpoint: Contoso
azureContainerRegistry: contoso.azurecr.io
azureResourceGroup: Contoso
kubernetesCluster: Contoso
- task: HelmDeploy@0
displayName: Helm deploy
inputs:
connectionType: Azure Resource Manager
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureResourceGroup: $(azureResourceGroup)
kubernetesCluster: $(kubernetesCluster)
Kubernetes hizmet bağlantısı
| Parametreler | Description |
|---|---|
kubernetesServiceEndpoint(Kubernetes hizmet bağlantısı) | (Ortam kaynağı zaten mevcut değilse gereklidir) Bir Kubernetes hizmet bağlantısı seçin. |
namespaceUzayına | Seçim Kubectl komutlarının çalıştırıldığı ad alanı. Belirtilmemişse, varsayılan ad alanı kullanılır. |
Bu YAML örnek YAML, Kubernetes kümesine başvurmak için Kubernetes hizmet bağlantısının nasıl kullanıldığını gösterir. Bu, Held komutlarıyla ve komut için gereken uygun değerlerden biriyle kullanılır:
- task: HelmDeploy@0
displayName: Helm deploy
inputs:
connectionType: Kubernetes Service Connection
kubernetesServiceEndpoint: Contoso
Komut değerleri
Komut girişi şu Held komutlarındanbirini kabul eder: Oluştur/Sil/kullanıma al/al/init/Install/Login/Logout/ls/Package/Rollback/Upgrade.
| Parametreler | Description |
|---|---|
commandKomutundaki | Istenir Bir HELI komutu seçin. Varsayılan değer: ls |
argumentsDeğişkenlerinden | Hela komut seçenekleri. |
Bu YAML örneği ls komutunu göstermektedir:
- task: HelmDeploy@0
displayName: Helm list
inputs:
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureResourceGroup: $(azureResourceGroup)
kubernetesCluster: $(kubernetesCluster)
command: ls
arguments: --all
init komutu
| Parametreler | Description |
|---|---|
commandKomutundaki | Istenir Bir HELI komutu seçin. Varsayılan değer: ls |
canaryimage(Kanarya görüntü sürümü kullan) | Tiller 'in en son yayın öncesi sürümü olan kanarya Tiller görüntüsünü kullanın. Varsayılan değer: false |
upgradetiller(Upgrade Tiller) | Tiller zaten yüklüyse, yükseltin. Varsayılan değer: true |
waitForExecutionBekleneceğini | Komut yürütmesi tamamlanana kadar engelle. Varsayılan değer: true |
argumentsDeğişkenlerinden | Hela komut seçenekleri. |
Bu YAML örneği init komutunu göstermektedir:
- task: HelmDeploy@0
displayName: Helm init
inputs:
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureResourceGroup: $(azureResourceGroup)
kubernetesCluster: $(kubernetesCluster)
command: init
upgradetiller: true
waitForExecution: true
arguments: --client-only
komutu install
| Parametreler | Description |
|---|---|
commandKomutundaki | Istenir Bir HELI komutu seçin. Varsayılan değer: ls |
chartType(Grafik türü) | Istenir Grafik bilgilerini nasıl girmek istediğinizi seçin. Grafiğin adını ya da grafiğin klasör/dosya yolunu sağlayabilirsiniz. Kullanılabilir seçenekler: Name, FilePath. Varsayılan değer: ad |
chartName(Grafik adı) | Istenir Grafik başvurusu, bu bir URL veya grafik adı olabilir. Örneğin, grafik adı Stable/MySQLise, görev Held Install Stable/MySQL ' i çalıştırır |
releaseName(Yayın adı) | Seçim Yayın adı. Belirtilmemişse, otomatik olarak oluşturulur. releaseName girişi yalnızca ' Install ' ve ' upgrade ' komutları için geçerlidir |
overrideValues(Değerleri ayarla) | Seçim Komut satırındaki değerleri ayarlayın. Değerleri virgülle ayırarak birden çok değer belirtebilirsiniz. Örneğin, KEY1 = val1, key2 = val2 & lt. Ayrıca, bunları yeni satırla sınırlandırarak birden çok değer de belirtebilirsiniz: key1=val1 key2=val2 Kendisi yeni satırlar içeren bir değere sahipseniz seçeneğini kullanın, yoksa görevin yeni satıra sınırlayıcı valueFile olarak davranması gerekir. Görev, bu ayar değerlerini kullanarak helm komutunu oluşturmak için kullanılır. Örneğin helm install --set key1=val1 ./redis |
valueFile(Değer Dosyası) | (İsteğe bağlı) YAML dosyasındaki veya URL'de değerleri belirtin. Örneğin, myvalues.yaml belirterekhelm install --values=myvalues.yaml |
updatedependency(Bağımlılığı Güncelleştirme) | (İsteğe bağlı) Grafiği yüklemeden önce helm bağımlılık güncelleştirmesini çalıştırın. Requirements.yaml bağımlılıklarını paketlemeden önce charts/ dizinine güncelleştirin. Varsayılan değer: false |
waitForExecution(Bekle) | (İsteğe bağlı) Komut yürütmesi tamamlayana kadar engelle. Varsayılan değer: true |
arguments(Bağımsız Değişkenler) | Helm komutu seçenekleri |
Bu YAML örneği yükleme komutunu gösteriyor:
- task: HelmDeploy@0
displayName: Helm install
inputs:
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureResourceGroup: $(azureResourceGroup)
kubernetesCluster: $(kubernetesCluster)
command: install
chartType: FilePath
chartPath: Application/charts/sampleapp
package komutu
| Parametreler | Description |
|---|---|
command(Komut) | (Gerekli) Helm komutunu seçin. Varsayılan değer: ls |
chartPath(Grafik Yolu) | (Gerekli) Yüklenmek için grafiğin yolu. Bu, paketlenmiş bir grafiğin yolu veya paketsiz grafik dizininin yolu olabilir. Örneğin, ./redis belirtilirse, görev helm install ./redis 'i çalıştıracak. Yapıt olarak yayımlanan bir grafiği kullanırsanız yol $(System.DefaultWorkingDirectory)/ARTIFACT-NAME/Charts/CHART-NAME olacaktır |
version(Sürüm) | (İsteğe bağlı) Tam grafik sürümünü belirtin. Bu belirtilmezse, en son sürüm yüklenir. Grafikte sürümü bu semver sürümü olarak ayarlayın. |
destination(Hedef) | (İsteğe bağlı) YAML dosyasındaki veya URL'de değerleri belirtin. Varsayılan değer: $(Build.ArtifactStagingDirectory) |
updatedependency(Bağımlılığı Güncelleştirme) | (İsteğe bağlı) Grafiği yüklemeden önce helm bağımlılık güncelleştirmesini çalıştırın. Requirements.yaml bağımlılıklarını paketlemeden önce charts/ dizinine güncelleştirin. Varsayılan değer: false |
save(Kaydet) | (İsteğe bağlı) Paketlenmiş grafiği yerel grafik deposuna kaydedin. Varsayılan değer: true |
arguments(Bağımsız Değişkenler) | Helm komutu seçenekleri. |
Bu YAML örneği paket komutunu gösteriyor:
- task: HelmDeploy@0
displayName: Helm package
inputs:
command: package
chartPath: Application/charts/sampleapp
destination: $(Build.ArtifactStagingDirectory)
upgrade komutu
| Parametreler | Description |
|---|---|
command(Komut) | (Gerekli) Helm komutunu seçin. Varsayılan değer: ls |
chartType(Grafik Türü) | (Gerekli) Grafik bilgilerini nasıl girmek istediğinizi seçin. Grafiğin adını veya grafiğin klasör/dosya yolunu sekleyebilirsiniz. Kullanılabilir seçenekler: Ad, Dosya Yolu. Varsayılan değer: Ad |
chartName(Grafik Adı) | (Gerekli) Yüklemek için grafik başvurusu, url veya grafik adı olabilir. Örneğin, grafik adı kararlı/mysqlise, görev helm install stable/mysql çalıştıracak |
releaseName(Yayın Adı) | (İsteğe bağlı) Yayın adı. Belirtilmezse, otomatik olarak yenisi olur. |
overrideValues(Değerleri Ayarla) | (İsteğe bağlı) Komut satırı değerlerini ayarlayın. Değerleri virgülle ayırarak birden çok değer belirtebilirsiniz. Örneğin, key1=val1,key2=val2. Ayrıca, bunları yeni satırla sınırlandırarak birden çok değer de belirtebilirsiniz: key1=val1 key2=val2 Kendisi yeni satırlar içeren bir değere sahipseniz seçeneğini kullanın, yoksa görevin yeni satıra sınırlayıcı valueFile olarak davranması gerekir. Görev, bu ayar değerlerini kullanarak helm komutunu oluşturmak için kullanılır. Örneğin helm install --set key1=val1 ./redis |
valueFile(Değer Dosyası) | (İsteğe bağlı) YAML dosyasındaki veya URL'de değerleri belirtin. Örneğin, myvalues.yaml belirterekhelm install --values=myvalues.yaml |
install(Sürüm yoksa yükle) | (İsteğe bağlı) Bu adla bir sürüm zaten yoksa, bir yükleme başlatın. Varsayılan değer: true |
recreate(Podları yeniden oluştur) | (İsteğe bağlı) Varsa kaynak için podları yeniden başlatma işlemini gerçekleştirir. Varsayılan değer: false |
resetValues(Değerleri Sıfırla) | (İsteğe bağlı) Değerleri grafikte yerleşik olarak yer alan değerlerle sıfırlayın. Varsayılan değer: false |
force(Zorla) | (İsteğe bağlı) Gerekirse kaynak güncelleştirmesini silme/yeniden oluşturun. Varsayılan değer: false |
waitForExecution(Bekle) | (İsteğe bağlı) Komut yürütmesi tamamlayana kadar engelle. Varsayılan değer: true |
arguments(Bağımsız Değişkenler) | Helm komutu seçenekleri |
Bu YAML örneği yükseltme komutunu gösteriyor:
- task: HelmDeploy@0
displayName: Helm upgrade
inputs:
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureResourceGroup: $(azureResourceGroup)
kubernetesCluster: $(kubernetesCluster)
command: upgrade
chartType: filepath
chartPath: $(Build.ArtifactStagingDirectory)/sampleapp-v0.2.0.tgz
releaseName: azuredevopsdemo
install: true
waitForExecution: false
save komutu
| Parametreler | Description |
|---|---|
command(Komut) | (Gerekli) Helm komutunu seçin. Varsayılan değer: ls |
chartNameForACR(Azure Container Registry Için grafik adı) | Istenir Grafiğin Azure Container Registry depolanacağı grafik adı. |
chartPathForACR(Azure Container Registry için grafik yolu) | Istenir Grafik dizininin yolu. |
azureSubscriptionEndpointForACR(Container Registry için Azure aboneliği) | Istenir Azure Container Registry olan bir Azure aboneliği seçin. |
azureResourceGroupForACR(Kaynak grubu) | Istenir Container Registry olan bir Azure Kaynak grubu seçin. |
azureContainerRegistry(Azure Container Registry) | Istenir HELI grafiklerini göndermek için kullanılacak bir Azure Container Registry seçin. |
argumentsDeğişkenlerinden | Hela komut seçenekleri |
Bu YAML örneği Kaydet komutunu göstermektedir:
- task: HelmDeploy@0
displayName: Helm save
inputs:
command: save
chartNameForACR: mycontainerregistry.azurecr.io/helm/hello-world:v1
chartPathForACR: Application/charts/sampleapp
azureSubscriptionEndpointForACR: $(azureSubscriptionEndpointForACR)
azureResourceGroupForACR: $(azureResourceGroupForACR)
azureContainerRegistry: $(azureContainerRegistry)
Held grafiklerini paketleme ve imzalama
Bu bölümde, bir işlem hattındaki Held grafiklerini paketlemeyi ve imzalamayı öğreneceksiniz.
GPG kullanarak Helm grafiğini imzalamak için özel ortak anahtar çifti oluşturma
GPG'yi indirin.
Komut istemi 'ni yönetici modunda başlatın. GPG kullanarak Helm grafiğini imzalamak için özel ortak anahtar çifti oluşturmak üzere aşağıdaki komutu çalıştırın. Anahtarı oluştururken Kullanıcı adı ve e-posta adresi sorulur. "Ad e-posta adresi" daha sonra oluşturulan özel ortak anahtar çiftini adlandırmak için kullanılır.
gpg --full-generate-key
Parolayı girmeniz istenir. Değeri verin ve Tamam ' a tıklayın.

Anahtarı oluşturduktan sonra, aşağıdaki komutu kullanarak hem özel hem de genel içeren anahtarların listesini görebilirsiniz.
Özel anahtarların listesini görmek için
gpg --list-secret-keys
Ortak anahtarların listesini görmek için
gpg --list-keys
Özel ve ortak anahtarları aşağıda gösterildiği gibi, GPG uzantılı 2 farklı dosyada saklayın.
- Özel anahtar için
gpg --export-secret-key 94325E18E53EDD99DD8339C3CFD9DAF0707CB788 contoso@microsoft.com > C:/somepath/privatekeys.gpgYukarıda belirtilen yola, privatekeys. GPG dosyasının verildiğini görürsünüz.
- Ortak anahtar için
gpg --export-key 94325E18E53EDD99DD8339C3CFD9DAF0707CB788 contoso@microsoft.com > C:/somepath/publickey.gpgYukarıdaki belirtilen yola aktarılmış PublicKey. GPG dosyasını görürsünüz.
Azure DevOps ' de, privatekey. gpg dosyasını kitaplık güvenli dosyalar bölümüne kaydedin.
Örnek
pool:
name: Hosted Ubuntu 1604
variables:
# The below variable should be secure
HelmKeyPassphrase: contoso@123
keyName: contoso contoso@microsoft.com
azureSubscriptionEndpoint: contoso
azureResourceGroup: contoso
kubernetesCluster: contoso
steps:
- task: DownloadSecureFile@1
displayName: Download Secure file
inputs:
secureFile: privatekey.gpg
name: privateKeyRing
- task: HelmInstaller@0
displayName: Install Helm 2.12.0
inputs:
helmVersion: 2.12.0
- task: HelmDeploy@0
displayName: helm init
inputs:
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureResourceGroup: $(azureResourceGroup)
kubernetesCluster: $(kubernetesCluster)
command: init
arguments: --client-only
- task: HelmDeploy@0
displayName: helm package
inputs:
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureResourceGroup: $(azureResourceGroup)
kubernetesCluster: $(kubernetesCluster)
command: package
chartPath: Application/charts/sampleapp
arguments: --sign --key "$(keyName)" --keyring $(privateKeyRing.secureFilePath)
env:
HelmKeyPassphrase: $(HelmKeyPassphrase)
Sorun giderme
HelmDeploy görevi ' bilinmeyen bayrak:--wait--helm3.0.2 sürümünde ' Held init--wait--Client ' çalıştırılırken hata veriyor.
Held 2 ve Held 3 arasında bazı önemli değişiklikler vardır. Bunlardan biri, Tiller 'in kaldırılmasını içerir ve bu nedenle helm init komut artık desteklenmez. Helm 3.0+ sürümlerini kullanırken init komutunu kaldırın.
Hele 3 kullanırken, System. Debug true olarak ayarlanmışsa ve Held yükseltmesi kullanılan komuttur, ancak işlem hattı yükseltme başarılı olsa bile başarısız olur.
Bu Helm 3'ün bilinen bir sorunudur ve stderr'e bazı günlükler yazar. Stderr'de günlükler varsa ve çıkış kodu sıfırdan farklıysa Helm Görev Dağıt işlemi başarısız olarak işaretlenir. Stderr'e yazdırılan günlükleri yoksaymak için görev çıkışını failOnStderr: false olarak ayarlayın.
Açık kaynak
Bu görev GitHubaçık kaynağıdır. Geribildirim ve katılımlar hoş geldiniz.