|
| 1 | + |
| 2 | +# Kubernetes Deployment Yönetimi |
| 3 | + |
| 4 | +Kubernetes'in Deployment objesi, istenilen duruma uygun olarak bir veya birden fazla pod oluşturur ve bu istenilen durumu sürekli olarak mevcut durumla karşılaştırır. Bu işlem, uygulamanın istenilen durumda kalmasını sağlar ve gerektiğinde düzeltmeler yapar. |
| 5 | + |
| 6 | +## Deployment Nedir? |
| 7 | + |
| 8 | +Deployment, Kubernetes'teki bir uygulamanın birden fazla kopyasını yönetir. Bu obje, oluşturulacak pod'ların özelliklerini ve sayılarını belirtir ve bu sayede uygulamanın yüksek erişilebilirlik ve güvenilirlikle çalışmasını sağlar. |
| 9 | + |
| 10 | +## Temel Komutlar |
| 11 | + |
| 12 | +### Deployment Oluşturma |
| 13 | + |
| 14 | +``` |
| 15 | +kubectl create deployment <isim> --image=<görüntü_ismi> --replicas=<kopya sayısı> |
| 16 | +``` |
| 17 | + |
| 18 | +Örnek: |
| 19 | +``` |
| 20 | +kubectl create deployment my_deployment --image=openjdk:21-ea-19-jdk-slim-buster --replicas=2 |
| 21 | +``` |
| 22 | + |
| 23 | +### Deployment Listeleme |
| 24 | + |
| 25 | +Deployment'ları listelemek için: |
| 26 | +``` |
| 27 | +kubectl get deployments |
| 28 | +``` |
| 29 | + |
| 30 | +Canlı olarak izlemek için `-w` parametresi ekleyebilirsiniz: |
| 31 | +``` |
| 32 | +kubectl get deployments -w |
| 33 | +``` |
| 34 | + |
| 35 | +### Pod Yönetimi |
| 36 | + |
| 37 | +Deployment içindeki pod'lardan birini silmek isterseniz: |
| 38 | +``` |
| 39 | +kubectl delete pods deployment-pod-1 |
| 40 | +``` |
| 41 | + |
| 42 | +Bu durumda, eksik pod otomatik olarak yeniden oluşturulur. |
| 43 | + |
| 44 | +### Deployment Güncelleme |
| 45 | + |
| 46 | +Deployment'daki bir imajı değiştirmek için: |
| 47 | +``` |
| 48 | +kubectl set image deployment/<deployment_name> <container_name>=<new_image> |
| 49 | +``` |
| 50 | + |
| 51 | +Örnek: |
| 52 | +``` |
| 53 | +kubectl set image deployment/my_deployment openjdk=21-ea-19-jdk-slim-buster=nginx |
| 54 | +``` |
| 55 | + |
| 56 | +### Replika Sayısını Ayarlama |
| 57 | + |
| 58 | +Replika sayısını artırmak veya azaltmak için: |
| 59 | +``` |
| 60 | +kubectl scale deployment <isim> --replicas=<yeni sayı> |
| 61 | +``` |
| 62 | + |
| 63 | +### Deployment Silme |
| 64 | + |
| 65 | +Bir deployment'ı silmek için: |
| 66 | +``` |
| 67 | +kubectl delete deployment <isim> |
| 68 | +``` |
| 69 | + |
| 70 | +## Yaml ile Deployment Tanımlama |
| 71 | + |
| 72 | +Yaml dosyası kullanarak deployment tanımlayabilirsiniz. Örnek bir Yaml dosyası: |
| 73 | + |
| 74 | +```yaml |
| 75 | +apiVersion: apps/v1 |
| 76 | +kind: Deployment |
| 77 | +metadata: |
| 78 | + name: simple-java-application |
| 79 | + labels: |
| 80 | + app: simple-java-application |
| 81 | +spec: |
| 82 | + replicas: 2 |
| 83 | + selector: |
| 84 | + matchLabels: |
| 85 | + app: simple-java-application |
| 86 | + template: |
| 87 | + metadata: |
| 88 | + labels: |
| 89 | + app: simple-java-application |
| 90 | + spec: |
| 91 | + containers: |
| 92 | + - name: simple-java-application |
| 93 | + image: nuricanozturk/java-spring-api:latest |
| 94 | + ports: |
| 95 | + - containerPort: 8080 |
| 96 | +``` |
| 97 | +
|
| 98 | +### Yaml Dosyasının Bileşenleri |
| 99 | +
|
| 100 | +- **apiVersion**: Kullanılacak Kubernetes API sürümü. |
| 101 | +- **kind**: Obje türü. |
| 102 | +- **metadata**: İsim ve etiketler gibi meta veriler. |
| 103 | +- **spec**: Pod oluşturma ve yönetim ayarları. |
| 104 | +- **labels**: Objeleri tanımlamak ve gruplamak için kullandığımız key-value ikilileridir. Nesnelerin alt kümelerini düzenlememize ve seçmemize olanak tanır. Etiketler, nesnelerin oluşturulması sırasında eklenebilir ve daha sonra düzenlenebilir. Karmaşıklığı önler ve anlaşılabilirliği artırır. Örneğin, aynı takımda farklı alanlarda çalışan kişiler pod'lara belirli bir convention'a uyarak key-value ikilileri atadığında, her takımın çalıştığı pod'lar kolayca ayırt edilebilir. Kısacası, etiketler nesneleri tanımlama ve gruplama imkanı sunar. Ayrıca, objeler arasında bağ kurmaya da yarar. Örneğin, servisler ve deployment objeleri hangi pod'lar ile ilişki kuracağını etiketler sayesinde belirler. |
| 105 | +- **selector**: Etiketlerin belirli kombinasyonlarını seçmeye yarayan bir mekanizmadır. Selector'lar, belirli etiketlere sahip nesneleri seçip bu nesneler üzerinde toplu işlemler yapmamıza imkan tanır. Bu sayede, belirli kriterlere göre gruplandırılmış nesneleri kolayca bulup yönetebiliriz. |
| 106 | +
|
| 107 | +### YAML dosyası ile deployment yönetimi |
| 108 | +
|
| 109 | +**Deployment Yaratma-Güncelleme** |
| 110 | +```sh |
| 111 | +kubectl apply -f deployment.yaml |
| 112 | +``` |
| 113 | + |
| 114 | +**Deployment Silme** |
| 115 | +```sh |
| 116 | +kubectl delete -f deployment.yaml |
| 117 | +``` |
0 commit comments