- Helm'de depo türleri: klasik HTTP deposu ve OCI kayıt defteri
- Klasik chart deposu adım adım nasıl kurulur?
- Depoyu istemcilere tanıtmak ve güncel tutmak
- OCI kayıt defterine chart yayınlamak
- Yayın sürecini otomatikleştirmek
- Depo kurarken sık yapılan hatalar
- Mindset programında bu beceri nerede çalışılır?
- Sık sorulan sorular
Kendi Helm chart deponuzu kurmak ve chart yayınlamak
Kendi Helm chart deponuzu index.yaml ile ya da OCI kayıt defteriyle kurmayı, chart'ı paketleyip yayınlamayı ve ekibe tanıtmayı komutlarla öğrenin.
Helm'de depo türleri: klasik HTTP deposu ve OCI kayıt defteri
Chart'ları ekip içinde paylaşmanın farklı yolları vardır. Birincisi klasik chart deposudur: paketlenmiş chart dosyalarını ve bunları listeleyen bir index.yaml dosyasını sunan sıradan bir web sunucusu. İkincisi, container görüntülerinin tutulduğu OCI uyumlu kayıt defterlerinde chart saklamaktır. Bir görüntü kayıt defteri zaten işleten ekipler için ikinci yol ek bir sistem kurma ihtiyacını ortadan kaldırır.
Hangisini seçeceğiniz, mevcut altyapınıza bağlıdır. Elinizde yetkilendirmesi hazır bir kayıt defteri varsa OCI yolu en az işle sonuç verir. Yalnızca statik dosya sunabilen bir ortamınız varsa klasik depo yeterlidir. Her iki yaklaşımın komutları aşağıdaki bölümlerde sırayla ele alınır.
Klasik chart deposu adım adım nasıl kurulur?
Resmî belgedeki akış şöyledir. Önce chart'ı paketleyin:
helm package uygulamam
Bu komut chart dizininden sürümü adında taşıyan bir .tgz dosyası üretir. Paketleri bir dizinde toplayın:
mkdir chart-deposu mv uygulamam-0.1.0.tgz chart-deposu/
Ardından dizin için indeks dosyasını üretin. --url değeri, paketlerin sunulacağı adrestir:
helm repo index chart-deposu --url https://charts.example-company.com
Komut dizinde index.yaml oluşturur. Daha sonra yeni bir paket eklediğinizde indeksi baştan kurmak yerine --merge bayrağıyla mevcut indekse ekleyebilirsiniz. Son olarak index.yaml, paketler ve varsa imza (.prov) dosyalarını bir web sunucusuna ya da nesne depolamaya yükleyin.
Belgede sunucuya ilişkin koşullar vurgulanır: index.yaml kimlik doğrulaması olmadan erişilebilir olmalı ve YAML dosyaları uygun bir içerik türüyle sunulmalıdır. Barındırma için bulut depolama, GitHub Pages, GitLab paket kayıt defteri ve benzeri çözümler sayılır.
Depoyu istemcilere tanıtmak ve güncel tutmak
Kullanıcılar depoyu şu komutlarla ekler ve listeler:
helm repo add company-charts https://charts.example-company.com helm repo list
Yeni sürümler yayımlandığında istemci tarafında helm repo update çalıştırılır. Depo kimlik doğrulaması istiyorsa helm repo add komutuna --username ve --password bayrakları eklenir; kendinden imzalı sertifika kullanan ortamlarda ise --insecure-skip-tls-verify bayrağı geçerli olur. İkinci bayrağı yalnızca gerçekten gerekli deneme ortamlarında kullanın, üretimde güvenilir sertifika tercih edin.
ChartMuseum, resmî belgede anılan, Go ile yazılmış ve çeşitli bulut depolama arka uçlarını destekleyen açık kaynaklı bir chart depo sunucusudur. Statik dosya sunmak yerine chart yükleme işini bir API üzerinden yapmak isteyen ekipler bu tür bir sunucuya yönelir; kurulum adımları için kendi belgesine bakılmalıdır.
OCI kayıt defterine chart yayınlamak
OCI yolunda indeks dosyası yoktur; kayıt defteri her chart'ı bir kayıt olarak saklar. Akış şöyledir. Önce kayıt defterine giriş yapın; adres olarak yalnızca ana makine adını (gerekirse bağlantı noktasıyla) yazın, adresin başına şema ya da sonuna yol eklemeyin:
helm registry login -u kullanici kayit-defteri.example-company.com
Sonra chart'ı paketleyip gönderin. Resmî belgeye göre push yalnızca helm package ile üretilmiş .tgz dosyasını kabul eder ve hedef adres oci:// ile başlar. Chart adı ve etiket adrese yazılmaz; Helm bunları chart'ın adı ve sürümünden çıkarır:
helm package uygulamam helm push uygulamam-0.1.0.tgz oci://kayit-defteri.example-company.com/helm-charts
Bu komut chart'ı helm-charts altında uygulamam adıyla, chart sürümünü etiket yaparak saklar. İmza dosyası (.prov) paketin yanındaysa otomatik olarak yüklenir.
Kullanıcı tarafında ise chart adı adrese dahildir:
helm pull oci://kayit-defteri.example-company.com/helm-charts/uygulamam --version 0.1.0 helm install web oci://kayit-defteri.example-company.com/helm-charts/uygulamam --version 0.1.0
Değişmezlik gereken ortamlarda --version yerine chart referansının sonuna özet (digest) eklenebilir; bu, etiket sonradan başka bir içeriğe işaret etse bile aynı paketin kurulmasını sağlar. İşiniz bittiğinde helm registry logout ile oturumu kapatın.
Yayın sürecini otomatikleştirmek
Elle push etmek küçük bir ekipte işe yarar ama hata kaynağıdır. CI hattında şu sırayı kurmak yaygındır: • helm lint ile chart'ı denetleyin. • Chart sürümünün daha önce yayımlanmış olmadığını kontrol edin; aynı sürümü ikinci kez göndermek farklı içeriğin aynı numarayla dolaşmasına yol açar. • helm package ile paketleyin. • Kayıt defterine kimlik bilgisini hattın sır deposundan alarak giriş yapın ve helm push çalıştırın. • Klasik depoda indeksi --merge ile güncelleyip dosyaları yükleyin.
Hattın sonunda küçük bir doğrulama adımı eklemek de değerlidir: yayımlanan chart'ı temiz bir ortamda helm pull ile çekip helm template ile render etmek, paketin gerçekten kullanılabilir olduğunu ve değer varsayılanlarının eksiksiz geldiğini gösterir.
Yayın izinlerini ayırmak da önemlidir: herkes chart'ı çekebilmeli, ama yalnızca CI hesabı veya sorumlu ekip yazabilmelidir. Kimlik bilgilerini repo içine yazmayın.
Depo kurarken sık yapılan hatalar
- Aynı chart sürümünü değiştirilmiş içerikle yeniden yayımlamak. Sürüm numarası değişmezliğin sözüdür; içerik değişince numara artmalıdır.
- index.yaml içindeki url değerini yanlış vermek. İstemci paketi indiremez, hata genellikle dosya bulunamadı biçiminde görünür.
- OCI adresine şema ya da yol ekleyerek giriş yapmaya çalışmak. Giriş adresi yalnızca ana makine adıdır.
- İndeksi güncel tutmamak. Paketi yüklediğiniz halde indeksi yenilememek, kullanıcıların yeni sürümü görmemesine yol açar.
- Depo yetkilendirmesini düşünmeden herkese açmak. Şirket içi chart'lar genellikle iç ağ veya kimlik doğrulamalı erişim gerektirir.
Mindset programında bu beceri nerede çalışılır?
Helm ve K8s Paket Yönetimi eğitiminde Helm Repository ve Dağıtım modülü bu konuya doğrudan karşılık gelir. Ekibin chart'larını ortak bir yerden sunması gereken platform ve DevOps mühendisleri için uygundur; GitOps ile Helm Entegrasyonu modülü ise yayımlanan chart'ların bir kod deposundan otomatik dağıtıma nasıl bağlanacağına odaklanır.
İlgili Mindset programı
Helm ve K8s Paket Yönetimi
Sık sorulan sorular
OCI mi klasik chart deposu mu tercih edilmeli?
Zaten bir container kayıt defteri ve yetkilendirme yapınız varsa OCI yolu ek sunucu gerektirmediği için daha az işle sonuç verir. Yalnızca statik dosya barındırabiliyorsanız ya da mevcut araçlarınız index.yaml bekliyorsa klasik depo uygundur. Bu yöntemler birbirini dışlamaz; ekipler geçiş döneminde ikisini birlikte de işletebilir.
index.yaml dosyası ne işe yarar?
Klasik chart deposunda hangi chart'ların hangi sürümlerinin bulunduğunu ve paketlerin hangi adresten indirileceğini listeler. helm repo add ve helm repo update komutları bu dosyayı okur. Yeni bir paket yayımladığınızda indeksin de güncellenmesi gerekir; aksi halde paket depoda durur ama istemciler onu göremez.
Helm push hangi dosyayı kabul eder?
Resmî belgeye göre helm push yalnızca helm package ile üretilmiş sıkıştırılmış chart dosyasını kabul eder. Hedef adres oci:// ile başlar ve chart adı ile sürümü adrese yazılmaz, paketin kendi meta bilgisinden alınır. Dizini doğrudan göndermeye çalışmak hata verir; önce paketleme adımını çalıştırmak gerekir.
Yayımlanmış chart'ı doğrulamanın bir yolu var mı?
Helm paketleri imzalayıp .prov dosyası üretebilir ve istemci kurulumdan önce bu imzayı doğrulayabilir. OCI akışında imza dosyası paketin yanındaysa push sırasında birlikte yüklenir. Üretim ortamında kurulacak chart'lar için imza ve özet kullanımı, kaynağı bilinmeyen paket riskini azaltır.
Ekip içi bir chart deposuna kimler erişebilmeli?
Genel ilke, okuma erişiminin kurulumu yapacak herkese, yazma erişiminin ise yalnızca yayın hattına ve sorumlu ekibe verilmesidir. Kimlik bilgileri CI'ın sır deposunda tutulmalı, repoya yazılmamalıdır. Depo dışa açıksa chart içine gömülmüş iç adresleri ve yapılandırma bilgilerini de gözden geçirmek gerekir.