CKAD Sertifikası Alalım
Merhaba! Bugün CKAD (Certified Kubernetes Application Developer) sınavına hazırlık süreci hakkında blog yazısı yazmak istedim . Bu sınav, Kubernetes üzerinde uygulama geliştirme konusunda derinlemesine bilgi ve deneyim kazanmak isteyen herkes için değerli bir sertifika. Eğer bu sınavı geçmeyi hedefliyorsanız, ben de bu sınav için hazırlık yaparken öğrendiklerimi ve deneyimlerimi sizlerle paylaşmak istiyorum.
CKAD Sınavı Nedir?
CKAD sınavı, Kubernetes üzerinde uygulama geliştirme yeteneklerinizi test eden sertifikalı bir sınavdır. Bu sınav, yalnızca Kubernetes'in temel bileşenleri hakkında değil, aynı zamanda Kubernetes'teki uygulama geliştirme, bakım ve sorun giderme konularında da sizi sınar. Sınav tamamen pratik bir formatta yapılıyor, yani komut satırında gerçek dünya senaryoları çözmemiz bekleniyor.
Sınavın toplam 100 puanı var ve başarı için 66 puan almamız gerekmekte ve konu dağılımı ise şu şekilde:
- Kubernetes Core Concepts (24%): Kubernetes’in temel yapı taşlarını bilmemiz gerekiyor.
- Application Life Cycle Management (23%): Uygulamaları yönetme ve ölçeklendirme.
- Core Concepts (20%): Pod'lar, ReplicaSet'ler, Deployments, ConfigMaps, Secretler vb.
- Observability (14%): Loglar, metrikler, pod’lar üzerinde izleme yapma.
- Networking (13%): Pod'lar arası iletişim, Services, DNS ve ingress yönetimi.
Sınavda her bir alanın ağırlığı farklı olduğu için, hangi konularda eksik olduğunuzu belirleyip buna göre çalışmalarınızı yoğunlaştırmanız önemli.
Hazırlık Süreci
Ben de bu sınav için hazırlığımı, Linux Foundation’dan aldığım CKAD kursu ile başlattım. Kurs, kapsamlı ve sınavın her aşamasına yönelik ciddi anlamda yardımcı oldu. Kursun içeriği hem teorik bilgiler hem de pratik çalışmalara odaklandığı için, gerçek sınavda karşılaşacağımız senaryolar hakkında fikir sahibi oldum. Zaten profesyonel hayatımda Kubernetes'i 3 yıldır kullandığım için, benim için mühim olan, sınav formatına aşina olmaktı.
Sınavda sadece Kubernetes'in resmi dökümantasyonuna başvurabiliyorsunuz. Onun dışında bir internet erişimi söz konusu değil. Dökümantasyonu iyi bir şekilde anlayıp, hızlıca aradığınızı bulabilmeniz gerekiyor.
Öğrendiklerinizi pratikle pekiştirmek çok önemli. Sadece teorik bilgilere hakim olmak yeterli değil. Gerçek bir Kubernetes ortamında uygulama geliştirip, uygulamayı ölçeklendirme, güncelleme gibi senaryolarla karşılaşmak sınavda işinizi kolaylaştırır. KillerShell CKAD platformunu kullanarak pratik yapabilirsiniz. Bu platform, sınavda karşılaşabileceğiniz komut satırı senaryoları sunuyor. Site üzerinde soruları yanıtlamak için kendi terminalini sunması ve önemli senaryolara odaklanması nedeniyle tavsiye ederim. Bununla beraber kendi MOCK sınavlarınızı AI kullanarak oluşturup/oluşturtup üzerinde çalışabilirsiniz.
Ben de bir tane ChatGPT ile oluşturulmuş bir MOCK sınav soruları bırakarak yazımı bitirmek istiyorum.

1. Core Concepts (13%)
- Create a Namespace:
- Create a namespace named
ckad-mock.
- Create a namespace named
- Create a Pod:
- Create a Pod named
mock-podin theckad-mocknamespace using thenginx:alpineimage. Ensure the Pod has a labelapp=mockand an environment variableENV=testing.
- Create a Pod named
2. Multi-Container Pods (10%)
- Create a Multi-Container Pod:
- Create a Pod named
logging-podin theckad-mocknamespace with two containers: the first container namedweb-containerusing thenginx:alpineimage, and the second container namedlog-containerusing thebusyboximage. Both containers should mount a shared volume at/var/log/nginx, and thelog-containershould run a command to continuously tail the logs of theweb-container.
- Create a Pod named
3. Pod Design (20%)
- Create a Deployment with Readiness Probe:
- Create a Deployment named
probe-deploymentin theckad-mocknamespace with 2 replicas using thehttpd:alpineimage. The Deployment should include a readiness probe that checks the/endpoint on port 80.
- Create a Deployment named
- Create a Job:
- Create a Job named
mock-jobin theckad-mocknamespace using theperlimage. The Job should execute a script that prints "Job completed" and should be configured to run successfully at least once but no more than 3 times.
- Create a Job named
4. Configuration (18%)
- Create a ConfigMap:
- Create a ConfigMap named
mock-configin theckad-mocknamespace with the key-value pairconfig1=value1. Create a Pod namedconfig-podthat mounts this ConfigMap as a volume at/etc/config.
- Create a ConfigMap named
- Create a Secret:
- Create a Secret named
mock-secretin theckad-mocknamespace with the keypasswordand the valuesecret123. Create a Pod namedsecret-podthat uses this Secret as an environment variable.
- Create a Secret named
5. Observability (18%)
- Create a Pod with Prometheus Metrics:
- Create a Pod named
metrics-podin theckad-mocknamespace using thenginx:alpineimage with Prometheus metrics enabled. Ensure the Pod exposes metrics on port 9113.
- Create a Pod named
- Create a ServiceMonitor:
- Create a ServiceMonitor for the
metrics-podin theckad-mocknamespace that Prometheus can use to scrape metrics from the/metricsendpoint.
- Create a ServiceMonitor for the
- Create a HorizontalPodAutoscaler:
- Create a HorizontalPodAutoscaler named
mock-hpain theckad-mocknamespace that scales theprobe-deploymentbased on CPU usage. The HPA should scale up to a maximum of 5 replicas when CPU usage exceeds 70%.
- Create a HorizontalPodAutoscaler named
6. Services and Networking (13%)
- Create a Service:
- Create a Service named
mock-servicein theckad-mocknamespace that exposes theprobe-deploymenton port 80. The Service should use a ClusterIP type.
- Create a Service named
- Create an Ingress Resource:
- Create an Ingress resource named
mock-ingressin theckad-mocknamespace that routes traffic to themock-serviceon the path/mock.
- Create an Ingress resource named
7. State Persistence (8%)
- Create a PersistentVolume:
- Create a PersistentVolume named
mock-pvwith a capacity of 2Gi and access modeReadWriteOnce.
- Create a PersistentVolume named
- Create a PersistentVolumeClaim:
- Create a PersistentVolumeClaim named
mock-pvcin theckad-mocknamespace requesting 2Gi of storage with access modeReadWriteOnce.
- Create a PersistentVolumeClaim named
- Create a Pod with Persistent Storage:
- Create a Pod named
storage-podin theckad-mocknamespace using thenginx:alpineimage that mounts themock-pvcPersistentVolumeClaim at/usr/share/nginx/html.
- Create a Pod named