Kubernetes asosidagi tizimda texnik xizmat ko‘rsatish sahifasiga avtomatik o‘tishni amalga oshirish
1. Fon
000 000 tizimini boshqarish jarayonida rejalashtirilgan va rejalashtirilmagan texnik xizmat ishlari muqarrar bo‘lib, ushbu vaqt davomida foydalanuvchilarga xabar beruvchi sahifani ko‘rsatish talabi mavjud edi.
Avvalgi usulda har safar texnik xizmat bo‘lganda operator faqat e’lon joylashtirardi. Bu jarayonda inson omili (Human Error) xavfi mavjud edi.
Ushbu muammoni hal qilish uchun e’lonni ro‘yxatdan o‘tkazish orqali texnik xizmat sahifasiga o‘tishdan tortib, asl holatga qaytishgacha bo‘lgan barcha jarayonlarni avtomatlashtiruvchi funksiyani loyihaladik va amalga oshirdik.
2. Umumiy ishlash jarayoni
Butun jarayon quyidagicha ishlaydi:
① E’lonni ro‘yxatdan o‘tkazish
Administrator tizim e’lonini ro‘yxatdan o‘tkazayotganda, "texnik xizmat mavjudligi" maydonini Y ga o‘rnatadi va texnik xizmatning boshlanish hamda tugash vaqtlarini kiritadi.
Ushbu ma’lumot butun avtomatlashtirish jarayonining boshlanish nuqtasi hisoblanadi.
② Scheduler aniqlashi
Spring’dagi @Scheduled yordamida ishlaydigan batch scheduler e’lonlar jadvalini muntazam tekshiradi va joriy vaqt texnik xizmat boshlanish vaqtiga yetganini aniqlaydi.
③ Maqsadli servis Pod ma’lumotlarini olish
Kubernetes Java Client orqali maqsadli servisning joriy Pod ma’lumotlari olinadi.
Bu ma’lumot keyinchalik trafikni yo‘naltirishni o‘zgartirish uchun asos bo‘ladi.
④ Vaqtinchalik texnik xizmat sahifasini yaratish
E’londa ko‘rsatilgan ma’lumotlarga (texnik xizmat sababi, taxminiy tugash vaqti va boshqalar) asoslanib, statik HTML sahifa dinamik tarzda yaratiladi.
⑤ Docker image yaratish va ECR ga yuklash
Yaratilgan sahifa Nginx asosidagi Dockerfile yordamida paketlanadi.
So‘ng Docker image build qilinadi va AWS ECR (Elastic Container Registry) ga push qilinadi.
⑥ Vaqtinchalik Pod yaratish va trafikni o‘zgartirish
ECR ga yuklangan image asosida vaqtinchalik texnik xizmat Pod’i yaratiladi.
Keyin Kubernetes Service selector’i o‘zgartirilib, mavjud servis Pod’lariga yo‘naltirilgan trafik vaqtinchalik Pod’ga o‘tkaziladi.
Foydalanuvchi ushbu vaqtda tizimga kirsa, texnik xizmat sahifasini ko‘radi.
⑦ Texnik xizmat tugashi va avtomatik qayta tiklash
Scheduler texnik xizmat tugash vaqtiga yetganini aniqlaganda, Service selector’i asl Pod label’lariga qaytariladi.
Shundan so‘ng vaqtinchalik Pod va unga bog‘liq resurslar o‘chiriladi hamda ECR dagi image tozalanadi.
3. Asosiy texnik amalga oshirish nuqtalari
Kubernetes Java Client’dan foydalanish
Java ilovasi orqali Kubernetes resurslarini boshqarish uchun rasmiy Kubernetes Java Client kutubxonasidan foydalanildi.
CoreV1Api orqali quyidagilarni dasturiy boshqarish mumkin bo‘ldi:
• Pod ro‘yxatini olish
• Service selector’ini o‘zgartirish
• Pod yaratish va o‘chirish
Dinamik Docker image build qilish
Texnik xizmat sahifasi har safar o‘zgarib turishi sababli quyidagi tuzilma ishlab chiqildi:
• E’lon ma’lumotlari template bilan bog‘lanib HTML fayl yaratiladi
• Ushbu fayl Nginx asosidagi Dockerfile bilan birga build qilinadi
Java’dagi ProcessBuilder yordamida Docker CLI buyruqlari bajarildi va image build qilishdan tortib, ECR login va push qilishgacha bo‘lgan jarayon to‘liq avtomatlashtirildi.
Trafikni o‘zgartirish strategiyasi
Trafikni o‘zgartirish Kubernetes Service’ning label selector’ini o‘zgartirish orqali amalga oshirildi.
Mavjud Pod va vaqtinchalik Pod label’larini ajratish orqali:
• faqat selector’ni o‘zgartirish bilan trafik uzluksiz o‘tkaziladi
• Ingress yoki proxy sozlamalarini o‘zgartirish talab etilmaydi
Bu usul sodda va barqaror hisoblanadi.
Xavfsizlik mexanizmlarini loyihalash
Bu avtomatlashtirilgan tizim bo‘lgani sababli, istisno holatlarni hisobga olish muhim edi.
Quyidagilar amalga oshirildi:
• har bir bosqichda rollback mexanizmi joriy qilinib, xatolik (masalan, image build xatosi) mavjud servisga ta’sir qilmasligi ta’minlandi
• texnik xizmat tugaganidan keyin qayta tiklash amalga oshmay qolsa, timeout asosida majburiy tiklash mexanizmi qo‘shildi
• barcha jarayon holatlari DB ga yozilib, administrator monitoring qilishi mumkin bo‘ldi
4. Xulosa
Ushbu amalga oshirish orqali Kubernetes faqat konteyner orkestratsiyasi vositasi emas, balki Java ilovalari bilan birgalikda kuchli infratuzilma avtomatlashtirish platformasiga aylanishi mumkinligini angladik.
Ayniqsa, Kubernetes Java Client yordamida alohida skriptlar yoki CI/CD pipeline’siz ham infratuzilmani ilova darajasida boshqarish imkoniyati juda ta’sirli bo‘ldi.
Kelgusida ham operatsion samaradorlikni oshirish uchun avtomatlashtirish sohasini kengaytirishni davom ettiramiz.
Undefined