Konuyu Açan #1
Helm template ile Manifest Kontrolü

Güncel Kubernetes sürümlerinde uygulama dağıtımlarını sorunsuz yönetebilmek için manifest kontrolü büyük bir avantajdır. Helm, chart tabanlı paketleme yaklaşımıyla Kubernetes manifestlerini dinamik olarak üretebilmenizi sağlar. Bu yazıda, Helm template mekanizmasını kullanarak manifest kontrolünü nasıl güçlendireceğinizi adım adım ele alacağım: temel yapılar, değişken kullanımı, koşullu ifadeler ve en iyi uygulama ipuçları.


1) Temel kavramlar ve akış
Helm, Chart adı verilen paketler üzerinden Kubernetes kaynaklarını tanımlar. Chart içindeki templates dizini, Kubernetes manifestlerinin şablonlarını içerir. values.yaml dosyası, şablonlara enjekte edilecek konfigürasyonları barındırır. helm template komutu, bu şablonları değerlerle zenginleştirip YAML çıktısını üretir; bu çıktı, gerçek cluster’a uygulanabilir veya incelemeye açılır.

2) Değişkenlerle dinamik üretim
values.yaml üzerinden env, imageTag, replicaCount gibi parametreleri belirlemek, şablonlarda {{ .Values.image.repository }} veya {{ .Values.replicaCount }} gibi ifadelerle kullanılır. Ayrıca .Chart.Name, .Release.Name gibi yerleşik değişkenlerle isimlendirme ve etiketlendirme yapılabilir. Örneğin:
KOD
1234567891011121314
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "mychart.fullname" . }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
[list]
[*]name: app
[/list]
        image: {{ .Values.image.repository }}:{{ .Values.image.tag }}


3) Koşullu mantık ve döngüler
Karmaşıklık arttığında, Helm’in if/else ve range ifadeleriyle manifestleri ihtiyaçlara göre devreye alabilirsiniz. Örneğin TLS yapılandırmasını sadece tls.enabled olduğunda dahil etmek:
KOD
1234567891011
{{- if .Values.tls.enabled }}
apiVersion: v1
kind: Secret
metadata:
  name: {{ include "mychart.fullname" . }}-tls
type: kubernetes.io/tls
data:
  tls.crt: {{ .Values.tls.certificate | b64enc }}
  tls.key: {{ .Values.tls.key | b64enc }}
{{- end }}


[{]4) Dosya ve isimlendirme prensipleri[/b]
  • Şablonlar ile kaynak tiplerini (Deployment, Service, Ingress…) tek bir chart içinde toplayabilir, values ile hangi kaynakların üretileceğini belirleyebilirsiniz.
  • İsimlendirme fonksiyonları ile tutarlı kaynak adları elde edin. Örneğin fullname veya name şablonları, her ortam için tek ve okunabilir adlar üretirken sürüm çakışmalarını engeller.


5) En iyi uygulamalar ve hata ayıklama
  • helm template çıktısını incelemek için önce çıktı dosyasını bir dosyaya yazdırın ve diffs ile değişkenlerin etkisini kontrol edin.
  • values.yaml ile screenshot gibi görseller değil, konfigürasyon odaklı testler yapın: replicaCount, resource limits, liveness/readiness probe konfigürasyonlarının hedeflenen değerlere uygun olduğundan emin olun.
  • Secret ve TLS gibi hassas verileri values.yaml’da doğrudan saklamayın; Kubernetes Secrets ile yönetimini düşünün, veya Helm Secrets gibi araçları kullanın.
  • Kapalı/koşullu bölümleri açıkça test edin; bozulmuş YAML üretimi hatalarını minimuma indirmek için helm lint ve helm template ile satır-sütun bazlı doğrulamaları yapın.


Kapanış
Helm template ile manifest kontrolü, dinamik konfigürasyonları güvenilir bir şekilde üretmenizi sağlar. Şablon tabanlı yaklaşım, ortamlar arası tutarlılığı artırır ve dağıtım süreçlerini tekrarlanabilir kılar. Bu yönteme ilişkin kendi deneyimleriniz veya karşılaştığınız zorluklar nelerdir?

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi