CodeBlanks Logo Icon CodeBlanks

kube-apiserver

kube-apiserver'ın cluster API'nı sunduğunu öğrenirsin.

kube-apiserver

kube-apiserver, cluster'ın tek giriş kapısıdır. Her istek sırayla şu aşamalardan geçer:

  1. Kimlik doğrulama (authentication): sertifika, belirteç, OIDC.
  2. Yetkilendirme (authorization): RBAC.
  3. Kabul denetleyicileri (admission): değiştiren (mutating, ör. varsayılan ekleme) ve doğrulayan (validating, ör. kota, politika) denetimler.
  4. Doğrulama ve kayıt: tür tanımına uygunluk ve etcd'ye yazma.
$ kubectl get --raw /api/v1/namespaces/default/pods | head -c 120
{"kind":"PodList","apiVersion":"v1","metadata":{"resourceVersion":"812345"},"items":[...

Ham API'yi kullanmak

kubectl aslında bir REST istemcisidir. -v=8 gönderdiği HTTP isteklerini gösterir; kubectl proxy yerel bir vekil açar ve API'ye curl ile kimlik bilgisi yazmadan erişilir:

$ kubectl get pods -v=8 2>&1 | grep "GET https"
GET https://192.168.49.2:8443/api/v1/namespaces/default/pods?limit=500
$ kubectl proxy --port=8001 &
$ curl -s localhost:8001/apis/apps/v1/namespaces/default/deployments | jq '.items[].metadata.name'

Uygulama API'yi doğrudan kullan

Üç komut yaz: kubectl get --raw /api/v1/namespaces/default/pods çalıştır; arka planda kubectl proxy --port=8001 & başlat; curl -s localhost:8001/apis/apps/v1/namespaces/default/deployments ile deployment'ları al.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl get --raw /api/v1/namespaces/default/pods
kubectl proxy --port=8001 &
curl -s localhost:8001/apis/apps/v1/namespaces/default/deployments

Beklenen çıktı

{"kind":"PodList","apiVersion":"v1","metadata":{"resourceVersion":"812345"},"items":[...]}
Starting to serve on 127.0.0.1:8001
{"kind":"DeploymentList","apiVersion":"apps/v1","items":[{"metadata":{"name":"web",...}}]}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir isteğe varsayılan değerler ekleyen aşama hangisidir?

  • etcd
  • Değiştiren kabul denetleyicisi (mutating admission) Doğru cevap
  • Kimlik doğrulama
  • RBAC

Açıklama: Ör. ServiceAccount ve varsayılan StorageClass ekleme admission ile yapılır.

2 API'ye ham bir GET isteği gönder.

Soru
kubectl get ____ /api/v1/namespaces/default/pods
Cevap
kubectl get --raw /api/v1/namespaces/default/pods

Açıklama: --raw yolu doğrudan API'ye gönderir.

3 Aşamaları eşleştir.

Kavram Anlamı
authentication Kim?
authorization İzni var mı?
admission Değiştir ve denetle
etcd Kaydet

Uzman bölümündeki tüm dersler