İçerik
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’ı 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çindedev
veprod
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.