Giriş

Kubernetes dünyasına giriş yaptığınızda, uygulamalarınızın yönetimi ve yapılandırması konusunda yeni bir düşünce biçimi ile tanışırsınız. Kubernetes manifest dosyaları, uygulamalarınızın dağıtımı için kullanılır ve uygulamalarınızın hayat döngüsünü yönetir. Ancak zamanla, manifest dosyalarının yönetimi karmaşık ve hantal hale gelebilir. İşte burada Kustomize devreye girer!

Kustomize, Kubernetes yapılandırmalarını ve manifest dosyalarını özelleştirmek için kullanılan açık kaynaklı bir araçtır. Bu blog yazısında, Kustomize’nin temellerini, kurulumunu, nasıl kullanılacağını ve örnek senaryolarla işlevselliğini anlatan mükemmel bir Türkçe rehber olacaktır.

kustomize

Kustomize’ı Kurma ve Başlatma

Kustomize, kubectl ile entegre olduğundan, kubectl versiyonunuzun en az 1.14 olması gerekmektedir. Kustomize’ı doğrulamak için şu komutu kullanın:

kubectl kustomize --help

Eğer çıktıda “kustomize” ile ilgili bir açıklama görüyorsanız, işleme devam edebilirsiniz. Eğer kubectl versiyonunuz 1.14’ten düşükse, güncellemeniz gerekmektedir.

Kustomize ile Yapılandırma Dosyalarını Yönetme

Kustomize ile çalışmaya başlamadan önce, temel yapılandırma dosyalarınızı oluşturmanız gerekmektedir. Bu dosyalar, uygulamanızın temel yapılandırmasını içerir. Örnek olarak, bir “hello-world” uygulaması için şu yapılandırmaları kullanabiliriz:

  • deployment.yaml
  • service.yaml

Kustomize için Base ve Overlay Yapısı

Kustomize, yapılandırma dosyalarınızı yönetmek için “base” ve “overlay” kavramlarını kullanır. Base, uygulamanızın temel yapılandırmasıdır ve değişmeyen yapılandırma bilgilerini içerir. Overlay ise, belirli ortamlara (ör. test, prod, dev) özgü yapılandırma bilgilerini içerir.

Base ve overlay yapılandırmalarını oluşturmak için şu adımları izleyin:

  • base adında bir klasör oluşturun ve temel yapılandırma dosyalarını içine kopyalayın.
mkdir base
cp deployment.yaml service.yaml base/
  • Base klasöründe “kustomization.yaml” adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - deployment.yaml
  - service.yaml
  • Overlay yapılandırmaları için overlays adında bir klasör oluşturun ve içinde dev ve prod adında iki alt klasör daha oluşturun.
mkdir -p overlays/dev
mkdir -p overlays/prod
  • Her overlay klasörü için kendi “kustomization.yaml” dosyalarını oluşturun ve ortama özgü yapılandırmaları ekleyin. Örneğin, overlays/dev/kustomization.yaml dosyasına aşağıdaki içeriği ekleyin:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
  - ../../base

namePrefix: dev-

commonLabels:
  env: development

patchesStrategicMerge:
  - deployment-patch.yaml
  • Benzer şekilde, overlays/prod/kustomization.yaml dosyasına aşağıdaki içeriği ekleyin:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
  - ../../base

namePrefix: prod-

commonLabels:
  env: production

patchesStrategicMerge:
  - deployment-patch.yaml
  • Şimdi, her ortam için özel yapılandırmaları belirten “deployment-patch.yaml” dosyalarını oluşturun. Örneğin, overlays/dev/deployment-patch.yaml dosyasına aşağıdaki içeriği ekleyin:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  replicas: 1
  • Benzer şekilde, overlays/prod/deployment-patch.yaml dosyasına aşağıdaki içeriği ekleyin:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  replicas: 3

Artık, her ortam için özelleştirilmiş yapılandırmalarınızla Kustomize kullanarak uygulamalarınızı dağıtabilirsiniz. Bu yapılandırmaları kullanarak, Kustomize ile uygulamanızı test ve prod ortamlarına dağıtmak için şu komutları kullanabilirsiniz:

  • Test ortamı için:
kubectl kustomize overlays/dev | kubectl apply -f -
  • Prod ortamı için:
kubectl kustomize overlays/prod | kubectl apply -f -

Bu komutlar, Kustomize’ı kullanarak belirtilen ortamın yapılandırmasını oluşturur ve bu yapılandırmaları kullanarak Kubernetes’te uygulamanızı dağıtır.

Sonuç

Kustomize, Kubernetes manifest dosyalarınızı özelleştirmeniz ve yönetmeniz için mükemmel bir araçtır. Bu rehberde, Kustomize’ı nasıl kuracağınızı, temel yapılandırma dosyalarını nasıl oluşturacağınızı ve base ve overlay yapılandırmalarıyla uygulamanızı farklı ortamlara nasıl dağıtabileceğinizi öğrendiniz. Kustomize ile uygulamalarınızın yapılandırmasını yönetirken, aşağıdaki avantajlardan yararlanabilirsiniz:

  • Yeniden kullanılabilir yapılandırmalar: Base ve overlay yapıları sayesinde, ortamlar arasında ortak yapılandırmaları paylaşarak yeniden kullanabilirsiniz.
  • Esnek ve güçlü özelleştirmeler: Kustomize ile yapılandırma dosyalarına, ortam etiketleri, ad önekleri ve özel yapılandırma değişiklikleri ekleyerek özelleştirebilirsiniz.
  • Daha iyi yapılandırma yönetimi: Kustomize, yapılandırmalarınızı temiz ve düzenli bir şekilde saklamak için katmanlı bir yapı sunar, bu da daha kolay yönetim ve bakım sağlar.

Kustomize ile artık Kubernetes uygulamalarınızı yönetirken daha düzenli, daha özelleştirilebilir ve daha esnek yapılandırmalara sahip olacaksınız. Bu sayede, uygulamanızın farklı ortamlara dağıtımını kolay ve hızlı bir şekilde gerçekleştirebilirsiniz. Kustomize’ın sunduğu bu avantajlarla, Kubernetes uygulamalarınızın yapılandırma yönetimi süreçlerinde daha verimli ve hızlı sonuçlar elde edebilirsiniz. Geliştirme, test ve prod ortamlarında daha tutarlı ve güvenilir yapılandırmalar sağlamak için Kustomize’ı kullanarak uygulamalarınızın sürekli entegrasyon ve sürekli dağıtım (CI/CD) süreçlerini optimize edebilirsiniz.

Kustomize ile daha da ileri gitmek ve daha karmaşık özelleştirmeler yapmak isterseniz, resmi Kustomize belgelerini inceleyerek daha fazla bilgi edinebilirsiniz. Kustomize, Kubernetes uygulamalarınızın yönetimini ve ölçeklendirmesini kolaylaştırarak, daha hızlı ve güvenilir bir şekilde iş yüklerinizi yönetmenize yardımcı olur.

Ayrıca incelemek isterseniz HELM’i anlattığım bu yazıyı okuyabilirsiniz.