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-pod
in theckad-mock
namespace using thenginx:alpine
image. Ensure the Pod has a labelapp=mock
and an environment variableENV=testing
.
- Create a Pod named
2. Multi-Container Pods (10%)
- Create a Multi-Container Pod:
- Create a Pod named
logging-pod
in theckad-mock
namespace with two containers: the first container namedweb-container
using thenginx:alpine
image, and the second container namedlog-container
using thebusybox
image. Both containers should mount a shared volume at/var/log/nginx
, and thelog-container
should 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-deployment
in theckad-mock
namespace with 2 replicas using thehttpd:alpine
image. 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-job
in theckad-mock
namespace using theperl
image. 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-config
in theckad-mock
namespace with the key-value pairconfig1=value1
. Create a Pod namedconfig-pod
that mounts this ConfigMap as a volume at/etc/config
.
- Create a ConfigMap named
- Create a Secret:
- Create a Secret named
mock-secret
in theckad-mock
namespace with the keypassword
and the valuesecret123
. Create a Pod namedsecret-pod
that 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-pod
in theckad-mock
namespace using thenginx:alpine
image 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-pod
in theckad-mock
namespace that Prometheus can use to scrape metrics from the/metrics
endpoint.
- Create a ServiceMonitor for the
- Create a HorizontalPodAutoscaler:
- Create a HorizontalPodAutoscaler named
mock-hpa
in theckad-mock
namespace that scales theprobe-deployment
based 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-service
in theckad-mock
namespace that exposes theprobe-deployment
on port 80. The Service should use a ClusterIP type.
- Create a Service named
- Create an Ingress Resource:
- Create an Ingress resource named
mock-ingress
in theckad-mock
namespace that routes traffic to themock-service
on the path/mock
.
- Create an Ingress resource named
7. State Persistence (8%)
- Create a PersistentVolume:
- Create a PersistentVolume named
mock-pv
with a capacity of 2Gi and access modeReadWriteOnce
.
- Create a PersistentVolume named
- Create a PersistentVolumeClaim:
- Create a PersistentVolumeClaim named
mock-pvc
in theckad-mock
namespace requesting 2Gi of storage with access modeReadWriteOnce
.
- Create a PersistentVolumeClaim named
- Create a Pod with Persistent Storage:
- Create a Pod named
storage-pod
in theckad-mock
namespace using thenginx:alpine
image that mounts themock-pvc
PersistentVolumeClaim at/usr/share/nginx/html
.
- Create a Pod named