Takip et

Bütçenize Uygun Kubernetes CI/CD: GitHub Actions ve Helm ile Küçük ve Sık Yayınlama

Bütçenize Uygun Kubernetes CI/CD: GitHub Actions ve Helm ile Küçük ve Sık Yayınlama

Kubernetes’te uygulama dağıtımı, özellikle küçük ve orta ölçekli işletmeler için zorlu ve maliyetli olabilir. Bu makalede, GitHub Actions ve Helm kullanarak bütçenizi zorlamadan sürekli entegrasyon ve sürekli dağıtım (CI/CD) boru hattınızı nasıl kuracağınızı adım adım öğreneceksiniz. “Ship small, ship often” felsefesini benimseyerek, hızlı ve güvenilir bir şekilde uygulamalarınızı Kubernetes’e dağıtabilirsiniz. Bu rehber, yeni başlayanlardan deneyimli geliştiricilere kadar herkes için faydalı bilgiler sunmaktadır.

Kubernetes ve CI/CD Temelleri: Başlangıç Noktanız

Kubernetes, kapsayıcılı uygulamalarınızı yönetmek için kullanılan açık kaynak bir platformdur. CI/CD ise kodunuzdan çalıştırılabilir bir uygulama oluşturma, test etme ve dağıtımını otomatikleştiren bir süreçtir. Bu iki kavramı birleştirerek, kod değişikliklerinizi hızlı ve güvenilir bir şekilde Kubernetes kümenizde çalıştırabilirsiniz. Öncelikle, temel kavramları anlamak önemlidir:

* Docker: Uygulamalarınızı kapsayıcılara paketlemek için kullanılan bir teknoloji. Docker, uygulamalarınızın tutarlı bir şekilde çalışmasını sağlar.
* Kubernetes: Docker kapsayıcılarını yönetmek ve ölçeklendirmek için kullanılan bir orkestrasyon aracı. Kubernetes, uygulamalarınızın yüksek kullanılabilirliğini ve ölçeklenebilirliğini sağlar.
* Helm: Kubernetes uygulamalarını paketlemek ve dağıtmak için kullanılan bir paket yöneticisi. Helm, uygulamalarınızın yönetimini basitleştirir.
* GitHub Actions: GitHub üzerinde kod deponuzda otomatik işler çalıştırmanıza olanak tanıyan bir CI/CD aracı. GitHub Actions, CI/CD boru hattınızı kurmak için kullanışlı ve ücretsiz bir çözüm sunar.

Bu temel kavramları anladıktan sonra, GitHub Actions ve Helm kullanarak CI/CD boru hattınızı kurmaya başlayabilirsiniz. Daha fazla bilgi için, [Fatih Soysal’ın Kubernetes ve CI/CD üzerine yazılarını](https://fatihsoysal.com) inceleyebilirsiniz.

GitHub Actions ile CI/CD Boru Hattı Kurulumu: Adım Adım

Bu bölümde, basit bir Node.js uygulamasını GitHub Actions kullanarak Kubernetes’e dağıtmak için adım adım bir rehber sunacağız.

1. Adım: Proje Hazırlığı:

Öncelikle, bir Node.js uygulaması oluşturun ve bir Dockerfile oluşturarak uygulamanızı Docker kapsayıcısına paketleyin. Dockerfile örneği:

FROM node:16

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

CMD [ "npm", "start" ]

2. Adım: Helm Chart Oluşturma:

Helm chart'ınızı oluşturun.  Bu chart, Kubernetes'e uygulamanızı nasıl dağıtacağınızı tanımlar.  Basit bir Helm chart örneği:

# Chart.yaml
apiVersion: v2
name: my-node-app
description: A Helm chart for a simple Node.js application
version: 0.1.0

# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
spec:
selector:
matchLabels:
app: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}
spec:
containers:
- name: {{ .Release.Name }}
image: {{ .Values.image }}
ports:
- containerPort: 3000

3. Adım: GitHub Actions Yönergeleri:

.github/workflows/deploy.yml dosyasını oluşturun ve aşağıdaki kodu ekleyin:

name: Deploy to Kubernetes

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Build and push Docker image
        uses: docker/build-push-action@v3
        with:
          context: .
          push: true
          tags: my-node-app:latest

      - name: Deploy to Kubernetes
        uses: helm/helm@v3
        with:
          kubeconfig: ${{ secrets.KUBECONFIG }}
          command: upgrade
          args: --install my-node-app .

Bu dosya, kodunuzu her main dalına ittiğinizde Docker imajınızı oluşturup Kubernetes'e dağıtacaktır. secrets.KUBECONFIG değişkeni, Kubernetes kümenize erişim için gerekli olan kubeconfig dosyanızı içermelidir.

Helm'in Güçlü Yönleri: Gelişmiş Kullanım Senaryoları

Helm, sadece basit uygulamalar için değil, karmaşık uygulamaların da dağıtımını kolaylaştırır. Helm'in güçlü yönlerinden bazıları şunlardır:

* Tekrar Kullanılabilirlik: Bir Helm chart'ı birden fazla ortamda (geliştirme, test, üretim) tekrar kullanabilirsiniz.
* Sürüm Kontrolü: Helm chart'larınızı sürüm kontrol sisteminde yönetebilirsiniz.
* Değişkenler: Chart'larınızda değişkenler kullanarak farklı ortamlar için farklı yapılandırmalar oluşturabilirsiniz.
* Dependencies: Bir Helm chart'ı diğer chart'lara bağımlı hale getirebilirsiniz.

Helm ile Ortam Yönetimi: Geliştirme, Test ve Üretim

Farklı ortamlar için farklı Helm değer dosyaları (values.yaml) kullanarak, uygulamanızın yapılandırmasını her ortam için özelleştirebilirsiniz. Örneğin, geliştirme ortamında farklı bir veritabanı bağlantı dizini kullanabilirken, üretim ortamında farklı bir konfigürasyon kullanabilirsiniz.

Güvenlik En İyi Uygulamaları: Riskleri Azaltma

CI/CD boru hattınızın güvenliğini sağlamak için aşağıdaki önlemleri almalısınız:

Dikkat!

Kubernetes gizli bilgilerinizi (örneğin, veritabanı şifreleri) doğrudan kodunuza eklemeyin. GitHub Secrets gibi güvenli bir mekanizma kullanın.

* İmaj Taraması: Docker imajlarınızı güvenlik açıklarına karşı tarayın.
* Sık Güncellemeler: GitHub Actions ve Helm'i güncel tutun.
* Erişim Kontrolü: Kubernetes kümenize erişimi sınırlayın.
* Rol tabanlı erişim kontrolü (RBAC): Kubernetes kümenizde RBAC kullanarak kullanıcıların ve hizmet hesaplarının erişimini kontrol edin.

Performans Optimizasyonu: Hızlı ve Verimli Dağıtım

CI/CD boru hattınızın performansını optimize etmek için aşağıdaki ipuçlarını kullanabilirsiniz:

* Paralelleştirme: Mümkün olduğunca işlemleri paralel çalıştırın.
* Cacheleme: Docker imajlarını önbelleğe alın.
* Docker İmaj Boyutu: Docker imajlarınızın boyutunu küçültün.
* Optimize Edilmiş Helm Chart'lar: Helm chart'larınızı optimize ederek dağıtım sürelerini kısaltın.

İleri Düzey Konular: Kubernetes ve CI/CD'nin Ötesine

Deneyimli kullanıcılar için bazı ileri düzey konular:

* Canary Dağıtımları: Yeni sürümünüzü kademeli olarak dağıtmak için canary dağıtımlarını kullanın.
* Blue/Green Dağıtımları: Eski sürümü yedekte tutarak yeni sürümü dağıtın.
* Rollback Stratejileri: Hatalı bir dağıtım durumunda hızlı bir şekilde eski sürüme geri dönmek için rollback stratejileri oluşturun.
* Otomatik Ölçeklendirme: Uygulamanızın yüküne göre otomatik olarak ölçeklenmesini sağlayın.

Öğrenme Yol Haritası

* Yeni Başlayan: Kubernetes ve Docker temelleri, basit bir Helm chart oluşturma ve GitHub Actions'ı kullanarak temel bir dağıtım boru hattı kurma.
* Orta Seviye: Farklı ortamlar için değer dosyaları kullanma, daha karmaşık Helm chart'ları oluşturma ve güvenlik en iyi uygulamalarını uygulama.
* İleri Seviye: Canary ve Blue/Green dağıtımları, otomatik ölçeklendirme, gelişmiş izleme ve günlüğe kaydetme stratejileri.

Sonuç

Bu makalede, GitHub Actions ve Helm kullanarak bütçenize uygun bir Kubernetes CI/CD boru hattı kurmayı öğrendiniz. "Ship small, ship often" felsefesiyle, uygulamalarınızı hızlı ve güvenilir bir şekilde dağıtabilirsiniz. Bu rehber, yeni başlayanlardan deneyimli geliştiricilere kadar herkes için faydalı bilgiler sunmaktadır. Daha fazla bilgi ve ileri düzey konular için [Fatih Soysal'ın web sitesini](https://fatihsoysal.com) ziyaret edebilirsiniz.

Sıkça Sorulan Sorular

* Kubernetes kümem için kubeconfig dosyasını nasıl alırım? Kubernetes kümenize bağlı olarak kubeconfig dosyasını farklı şekillerde alabilirsiniz. Genellikle kubectl config view komutu ile görüntüleyebilirsiniz.

* GitHub Secrets nasıl kullanılır? GitHub Secrets, GitHub deponuzda güvenli bir şekilde gizli bilgiler saklamanıza olanak tanır. GitHub Actions'ta bu gizli bilgilere erişebilirsiniz.

* Helm chart'larımı nasıl sürüm yönetimi altında tutarım? Helm chart'larınızı Git gibi bir sürüm kontrol sistemi kullanarak yönetebilirsiniz.

* Docker imajımı nasıl küçültebilirim? Docker imaj boyutunu küçültmek için çeşitli teknikler mevcuttur, örneğin gereksiz dosyaları kaldırmak, multi-stage build kullanmak veya daha küçük temel imajlar kullanmak.

* Canary dağıtımları nasıl çalışır? Canary dağıtımları, yeni bir sürümü küçük bir kullanıcı alt kümesine dağıtarak test etmenize olanak tanır. Herhangi bir sorun yoksa, yeni sürüm tüm kullanıcılara dağıtılır.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.