05.03.2026

kubectl-rexec: Kubernetes’da kubectl exec audit’i — o‘rnatish, misollar va kubectl buyruqlari

Kirish

kubectl exec o‘zi bilan “konteyner ichida aynan nima qilingan?” degan savolga deyarli javob bermaydi. Kubernetes audit’ida siz pods/exec subresource’iga murojaat bo‘lganini ko‘rasiz, lekin interaktiv sessiya mazmunini ko‘rmaysiz. kubectl-rexec (Adyen’ning plagin’i) shu muammoni yopadi: u exec’ni o‘z endpoint’i orqali proksi qiladi va auditi mumkin bo‘lgan hodisalarni (events) chiqaradi — shunda sizda “ichkarida” bajarilgan amallar izi paydo bo‘ladi.

GitHub repozitoriy: https://github.com/Adyen/kubectl-rexec

kubectl-rexec ayniqsa qachon foydali

kubectl-rexec qanday ishlaydi

Arxitektura ikki qismdan iborat:

Talablar va cheklovlar

O‘rnatish

O‘rnatish ikki qismga bo‘linadi: klasterga proxy-komponent + lokal kubectl-plagin.

1) Klasterga proxy’ni o‘rnatish

Repo’dagi quick start’da manifestlarni kustomize orqali qo‘llash (odatda kube-system’da) taklif qilinadi. Buyruq, shuningdek, odatiy kubectl exec’ni o‘chirib qo‘yadigan webhook’ni ham qo‘shadi.

kustomize build manifests/ | kubectl -n kube-system apply -f -

2) kubectl-plagin’ni o‘rnatish

Getting started’dagi tezkor variant — plagin’ni go install orqali o‘rnatish va binarilar joylashgan katalog PATH’da ekanini tekshirish.

go install github.com/adyen/kubectl-rexec@latest

3) Hodisalar yozilayotganini tekshirish

Tekshiruv uchun proxy-komponent loglarini ko‘rish mumkin (keyin odatda ularni markaziy log saqlash tizimiga yuborishadi).

kubectl -n kube-system logs -l app=rexec -f

Foydalanish

Plagin oddiy kubectl exec parametrlarini takrorlaydi, faqat chaqirish ko‘rinishi kubectl rexec exec ... bo‘ladi.

Misol 1: interaktiv bash sessiya

kubectl rexec exec -ti some-pod -- bash

Misol 2: TTY’siz bitta buyruqni bajarish

kubectl rexec exec some-pod -- sh -c "id && uname -a"

Misol 3: namespace va container’ni tanlash

kubectl -n production rexec exec -ti pod-name -c app -- sh

Real jarayonlarda qo‘llash misollari

Qayerda qulay joylashtirish va audit’ni yo‘qotmaslik

kubectl-rexec self-managed Kubernetes’da ayniqsa foydali: klasterni VM’larda ko‘tarasiz va xavfsizlik hamda audit uchun o‘zingiz javob berasiz. Serverspace.uz’da control plane/worker node’lar uchun bulut serverlarini tezda ishga tushirib, rexec proxy audit-loglarini o‘zingizning log tizimingizga (masalan, Loki/ELK) proksi qilishingiz mumkin — shunda node’lar qayta yaratilsa ham exec-sessiyalar izi yo‘qolmaydi.

Cloud Servers: https://serverspace.uz/services/cloud-servers/

FAQ

kubectl-rexec Kubernetes Audit Logs’ni to‘liq almashtiradimi?

Yo‘q. Kubernetes audit baribir kerak: API’ga murojaat faktlari (kim/qachon/nimaga) uchun. kubectl-rexec esa exec oqimi atrofida yetishmayotgan qismni proksilash va o‘z darajasida auditi mumkin bo‘lgan hodisalar orqali to‘ldiradi.

Nega shunchaki pods/exec audit loglarini ko‘rish yetarli emas?

Oddiy audit exec so‘rovi bo‘lganini qayd etadi, lekin interaktiv sessiya ichida “nima qilinganini” to‘liq va shaffof ko‘rsatmaydi. Loyihaning yopmoqchi bo‘lgan muammosi ham shu.

Kubernetes’ning minimal versiyasi qaysi?

README’da: exec websocket orqali ishlaydigan klasterlar qo‘llanadi — Kubernetes 1.30 (default) yoki 1.29 va TranslateStreamCloseWebsocketRequests=true yoqilgan bo‘lishi shart; 1.29’dan past — qo‘llanmaydi.

rexec’ning “audit-hodisalari”ni qayerdan ko‘raman?

Quick start’da proxy loglaridan boshlash tavsiya qilinadi (kubectl -n kube-system logs -l app=rexec -f), keyin esa loglarni markaziy tizimga yetkazib berishni sozlaysiz.

Shpargalka: kubectl’ning asosiy buyruqlari

Vazifa Buyruq Izoh
Joriy kontekstni tekshirish kubectl config current-context Hozir qaysi klaster bilan ishlayotganingizni ko‘rsatadi
Barcha kontekstlarni ko‘rish kubectl config get-contexts Bir nechta klaster/muhit bo‘lsa qulay
Kontekstni almashtirish kubectl config use-context <context> Ehtiyot bo‘ling: “noto‘g‘ri joyga” tushib qolish oson
Namespace ro‘yxati kubectl get ns Muhitlar bo‘yicha tezkor ko‘rinish
Namespace’dagi podlar kubectl -n <ns> get pods Node va IP’larni ko‘rish uchun -o wide qo‘shing
Namespace’dagi asosiy resurslar kubectl -n <ns> get pods,svc,deploy Muhit bo‘yicha eng tez “health-check”
Pod’ni tavsiflash (hodisalar/tafsilotlar) kubectl -n <ns> describe pod <pod> CrashLoopBackOff va image/secret muammolarida foydali
Konteyner loglari kubectl -n <ns> logs <pod> -c <container> Qulaylik uchun -f va --tail=200 qo‘shing
Oldingi konteyner loglari kubectl -n <ns> logs <pod> -c <container> --previous Konteyner tez yiqilganda juda foydali
Exec (oddiy) kubectl -n <ns> exec -ti <pod> -- sh rexec webhook’i tomonidan bloklanishi mumkin
Exec (rexec orqali audit qilinadigan) kubectl -n <ns> rexec exec -ti <pod> -- sh kubectl-rexec yoqilganida tavsiya etiladigan variant
Servisga port-forward kubectl -n <ns> port-forward svc/<svc> 8080:80 Ingress’siz lokal kirishni tez ochish
Pod’ga port-forward kubectl -n <ns> port-forward pod/<pod> 8080:8080 Muayyan instans’ni debug qilish uchun foydali
Manifestni qo‘llash kubectl apply -f file.yaml Resurslarni yaratish/yangilash
Apply’dan oldin diff kubectl diff -f file.yaml Nima o‘zgarishini tushunish
Deploy rollout holati kubectl -n <ns> rollout status deploy/<name> Vykatni nazorat qilish
Deploy’ni qaytarish (rollback) kubectl -n <ns> rollout undo deploy/<name> Oldingi reviziyani qaytarish
Namespace’dagi hodisalar kubectl -n <ns> get events --sort-by=.lastTimestamp Pending/Failed sabablarini tez topish
Huquqlarni tekshirish (RBAC) kubectl auth can-i create pods/exec -n <ns> Kim exec qila olishini tushunish

Xulosa

kubectl-rexec — Kubernetes audit’ining o‘zi yetarli bo‘lmagan joylarda kubectl exec atrofida audit qo‘shishning amaliy usuli. U validating webhook orqali “oddiy” exec’ni bloklash va exec’ni APIService orqali proksi qilishga tayanadi — shu yerda audit-hodisalarni shakllantirish mumkin bo‘ladi. Tez start uchun klasterga proxy’ni o‘rnating (kustomize → kube-system), kubectl-plagin’ni o‘rnating va proxy loglarini markaziy saqlash tizimiga yig‘ishni sozlang.