Actions ile Kubernetes'e Dağıtım
Kubernetes kümelerine Sürekli Dağıtım kurarak dağıtımları ve hizmetleri doğrudan GitHub Actions üzerinden yönetin.
Actions ile Kubernetes'e Dağıtım, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
Actions ile K8s'te Sürekli Dağıtıma Giriş
Hoş geldiniz! Bu derste GitHub Actions kullanarak Kubernetes kümelerine Sürekli Dağıtım (CD) kurmayı öğreneceksiniz.
Dağıtımları otomatikleştirmek, uygulama değişikliklerinizin elle gerçekleştirilen adımlar olmadan hızlı ve güvenilir bir şekilde kullanıma sunulmasını sağlar.
Kimlik doğrulamayı, Kubernetes bildirimlerini uygulamayı ve güncellemeleri yönetmeyi ele alacağız.
K8s Dağıtımlarının Temel Unsurları
Dağıtım yapmadan önce iki temel Kubernetes kaynağını hızlıca hatırlayalım:
- Dağıtımlar: Bunlar uygulamanızın Pod'larını yöneterek her zaman istenen sayıda çoğaltmanın çalışmasını sağlar. Güncellemeleri ve geri almaları yönetirler.
- Hizmetler: Bunlar uygulamanıza nasıl erişileceğini tanımlar; örneğin küme içinde dahili olarak veya bir LoadBalancer aracılığıyla dışarıdan erişim sağlanabilir.
Amacımız, bunları tanımlayan YAML dosyalarını GitHub Actions üzerinden kümemize uygulamaktır.
Actions'ın K8s'e Kimlik Doğrulaması
Dağıtım yapmak için GitHub Actions iş akışınızın Kubernetes kümenizin API sunucusuyla iletişim kurması gerekir.
Bunun için kimlik doğrulaması gerekir. Kubernetes ile kimlik doğrulamanın standart yolu bir kubeconfig dosyası kullanmaktır.
Bu dosyanın içeriğini iş akışını çalıştıran ortama güvenli bir şekilde sağlamamız gerekir.
Kubeconfig'i Güvenli Hâle Getirme
kubeconfig dosyası, küme uç noktaları ve kullanıcı kimlik bilgileri gibi hassas bilgiler içerir. Gizli tutulmalıdır!
GitHub Actions bu amaçla Secrets özelliğini sunar. kubeconfig dosyanızın içeriğini depo gizli bilgisi olarak saklayacaksınız.
kubeconfig dosyanızı nasıl alacağınız K8s sağlayıcınıza bağlıdır; örneğin aws eks update-kubeconfig veya gcloud container clusters get-credentials kullanabilirsiniz.
K8s Bağlamını Ayarlama
kubeconfig dosyanız bir gizli bilgi olarak saklandıktan sonra, diyelim ki adı KUBE_CONFIG_DATA olsun, iş akışınız bunu kullanabilir.
Yaygın uygulama, gizli bilginin içeriğini çalıştırma ortamında geçici bir dosyaya yazmak ve ardından KUBECONFIG ortam değişkenini bu dosyayı gösterecek şekilde ayarlamaktır.
Bu işlem, kubectl komutuna küme bağlantı ayrıntılarını nerede bulacağını bildirir.
İş Akışlarında `kubectl` Kullanımı
kubectl, Kubernetes kümeleriyle etkileşim kurmak için kullanılan resmî komut satırı aracıdır. GitHub Actions çalıştırıcılarında kubectl önceden kuruludur.
kubeconfig dosyasını ayarladıktan sonra iş akışınızdaki adımlarda istediğiniz kubectl komutunu çalıştırabilirsiniz.
Basit bir örneğe bakalım:
name: K8s Setup Test
on: [workflow_dispatch]
jobs:
test-kubeconfig:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Verify kubectl access
run: kubectl version --clientBasit K8s Dağıtım Bildirimi
Burada, "hello-world" uygulaması için temel bir Kubernetes Deployment ve Service bildirimi yer alıyor. Kubernetes'ten çalıştırmasını isteyeceğimiz yapı budur.
Bu örnekte, 80 numaralı bağlantı noktasını dışarı açan basit bir Nginx imajı kullanılıyor.
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
spec:
selector:
app: hello-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerEksiksiz Dağıtım İş Akışı
Şimdi dağıtım adımını bir iş akışına entegre edelim. Önceki derslerde yaptığınız gibi kapsayıcı imajınızı oluşturup gönderdikten sonra onu dağıtabilirsiniz.
Bu iş akışı, kubeconfig gizli bilginizin ayarlanmış ve bildirim dosyasının (örneğin k8s/deployment.yaml) deponuzda mevcut olduğunu varsayar.
name: Deploy to Kubernetes
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Deploy application to K8s
run: kubectl apply -f k8s/deployment.yamlUygulamanızı Güncelleme
kubectl apply komutunun harika özelliklerinden biri, aynı işlemin tekrar uygulanması durumunda aynı sonucu verme özelliğidir. YAML dosyanızda tanımlanan kaynaklar zaten varsa kubectl apply, yenilerini oluşturmak yerine mevcut kaynakları günceller.
Uygulamanızın yeni bir sürümünü dağıtmak için deployment.yaml dosyanızdaki imaj etiketini güncelleyip değişikliği göndermeniz yeterlidir. Ardından GitHub Actions tetiklenir ve Kubernetes, eski Pod'ları yenileriyle kademeli olarak değiştirerek bir kademeli güncelleme gerçekleştirir; böylece hizmet kesintisi en aza indirilir.
Hızlı Kontrol
GitHub Actions kullanarak bir uygulamayı Kubernetes'e dağıtmanın temel adımlarını öğrendiniz.
Aşağıdakilerden hangisi, bir Kubernetes bildirimini dağıtmak üzere kullanılan GitHub Actions iş akışındaki doğru adım sırasıdır?
Özet ve Sonraki Adımlar
Harika iş çıkardınız! GitHub Actions kullanarak Kubernetes'e Sürekli Dağıtım kurmayı öğrendiniz.
- Hassas
kubeconfigverilerini GitHub Secrets içinde saklarız. - İş akışları,
kubectl'i yapılandırmak için bu gizli bilgiyi kullanır. kubectl apply -f, K8s bildirimlerini dağıtmak veya güncellemek için kullanılır.- Değişiklikler uygulandığında Kubernetes, kademeli güncellemeleri yönetir.
Bu güçlü birleşim, dağıtımlarınızı otomatikleştirerek geliştirme sürecinizi daha akıcı ve hızlı hâle getirir. Daha gelişmiş K8s özelliklerini keşfetmeye devam edin!
Sıkça Sorulan Sorular
“Actions ile Kubernetes'e Dağıtım” dersi ücretsiz mi?
Evet — “Actions ile Kubernetes'e Dağıtım” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
“Actions ile Kubernetes'e Dağıtım” dersinde ne öğreneceğim?
Kubernetes kümelerine Sürekli Dağıtım kurarak dağıtımları ve hizmetleri doğrudan GitHub Actions üzerinden yönetin. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Actions ile Kubernetes'e Dağıtım” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Actions ile Docker Görüntüleri Oluşturma
- Görüntüleri Kayıt Depolarına Gönderme
- Actions ile Kubernetes'e Dağıtım
- CI/CD'de Helm Grafikleri ve Kubernetes Manifestoları