കസ്റ്റം സ്റ്റേജുകളിലൂടെയുള്ള GKE റോളൗട്ട് സീക്വൻസിംഗ്

ഗൂഗിൾ ക്ലൗഡിന്റെ GKE ഇപ്പോൾ നിങ്ങൾക്ക് ക്ലസ്റ്ററുകൾ അപ്‌ഗ്രേഡ് ചെയ്യേണ്ട കൃത്യമായ ക്രമം നിശ്ചയിക്കാൻ അനുവദിക്കുന്നു. ഡിഫോൾട്ട് റീജിയണൽ ഷെഡ്യൂളിന് പകരം നിങ്ങളുടെ ബിസിനസ് ലോജിക് പിന്തുടരുന്ന കസ്റ്റം-സ്റ്റേജ് റോളൗട്ട് സീക്വൻസിംഗ് ഇതിനായി ഉപയോഗിക്കാം.

ഡസൻ കണക്കിന് അല്ലെങ്കിൽ നൂറുകണക്കിന് എൻവയോൺമെന്റുകളിലായി Kubernetes ക്ലസ്റ്ററുകൾ അപ്‌ഗ്രേഡ് ചെയ്യുന്നത് വലിയൊരു വെല്ലുവിളിയാണ്. സെക്യൂരിറ്റി പാച്ചുകൾ കൃത്യമായി വരുന്നുണ്ടെങ്കിലും, പ്രൊഡക്ഷൻ സർവീസുകൾ തടസ്സമില്ലാതെ പ്രവർത്തിപ്പിക്കേണ്ടതുമുണ്ട്. പഴയ റീജിയണൽ അപ്‌ഗ്രേഡ് മോഡലിൽ, ഒരു സ്റ്റേജിംഗ് എൻവയോൺമെന്റിലെ പരിശോധനകൾ പൂർത്തിയാകുന്നതിന് മുമ്പ് തന്നെ പുതിയ കൺട്രോൾ-പ്ലെയിൻ വേർഷൻ പ്രൊഡക്ഷൻ ക്ലസ്റ്ററിലേക്ക് എത്താൻ സാധ്യതയുണ്ട്. ഇത് പരിശോധിക്കപ്പെടാത്ത മാറ്റങ്ങൾ കാരണം നിങ്ങളുടെ ഫ്ലീറ്റിനെ (fleet) അപകടത്തിലാക്കാം.

പഴയ മോഡൽ എവിടെയാണ് പരാജയപ്പെട്ടത്

ഒരു റീജിയണൽ റോളൗട്ട് ആ റീജിയണിലെ ഓരോ ക്ലസ്റ്ററിനെയും ഒരൊറ്റ ഗ്രൂപ്പായിട്ടാണ് കാണുന്നത്. അപ്‌ഗ്രേഡ് സമയം വരുമ്പോൾ, റിലീസ് പൈപ്പ്‌ലൈനിൽ ക്ലസ്റ്റർ എവിടെയാണെന്നത് പരിഗണിക്കാതെ തന്നെ കൺട്രോൾ പ്ലെയിനും നോഡുകളും ഒരേസമയം അപ്‌ഗ്രേഡ് ചെയ്യപ്പെടുന്നു. കാനറി (canary) രീതി പിന്തുടരുന്ന ടീമുകൾക്ക് ഇത് "ക്രമരഹിതമായ" (out-of-order) അപ്‌ഗ്രേഡുകൾക്ക് കാരണമാകുന്നു. ഇത് പിന്നീട് തിരിച്ചറിയാൻ പ്രയാസമുള്ള സാങ്കേതിക പിഴവുകൾക്ക് (regressions) വഴിതെളിച്ചേക്കാം. ഇതിന്റെ നഷ്ടം വെറും ഡൗൺടൈം മാത്രമല്ല; നേരത്തെ കണ്ടെത്താൻ കഴിയുമായിരുന്ന ഒരു പ്രശ്നം പരിഹരിക്കാൻ ചിലവാകുന്ന എഞ്ചിനീയറിംഗ് സമയവും ഇതിന്റെ ഭാഗമാണ്.

GKE റോളൗട്ട് സീക്വൻസിംഗ് നൽകുന്ന പുതിയ കാര്യങ്ങൾ

പുതിയ ഫീച്ചർ ഒരു കൂട്ടം സ്റ്റേജുകളെ നിർവചിക്കുന്ന ഒരു RolloutSequence ഒബ്‌ജക്റ്റ് അവതരിപ്പിക്കുന്നു. ലേബൽ സെലക്ടറുകൾ (label selectors) ഉപയോഗിച്ച് തിരിച്ചറിയാവുന്ന നിങ്ങളുടെ ഫ്ലീറ്റിന്റെ ലോജിക്കൽ ഭാഗങ്ങളാണ് ഓരോ സ്റ്റേജും. സിസ്റ്റം ഒരു നിശ്ചിത പാത പിന്തുടരുന്നു:

  • ആദ്യം കൺട്രോൾ-പ്ലെയിൻ അപ്‌ഗ്രേഡ്. നോഡുകളിൽ മാറ്റം വരുത്തുന്നതിന് മുമ്പ് തന്നെ GKE സെൻട്രൽ മാനേജ്‌മെന്റ് കംപോണന്റിനെ ലക്ഷ്യമിട്ട വേർഷനിലേക്ക് മാറ്റുന്നു.
  • സോക്ക് ടൈമർ (Soak timer) ആരംഭിക്കുന്നു. കൺട്രോൾ പ്ലെയിൻ ലക്ഷ്യത്തിലെത്തിയ ശേഷം, ഒരു നിശ്ചിത സമയം (configurable delay) കാത്തിരിക്കുന്നു. ഇത് ഹെൽത്ത് ചെക്കുകൾ നടത്താൻ നിങ്ങൾക്ക് സമയം നൽകുന്നു.
  • നോഡ് അപ്‌ഗ്രേഡുകൾ സമാന്തരമായി നടക്കുന്നു. സോക്ക് ടൈമർ പ്രവർത്തിക്കുമ്പോൾ തന്നെ GKE നോഡുകൾ അപ്‌ഗ്രേഡ് ചെയ്യുന്നു, ഇത് ക്ലസ്റ്ററിനെ വേഗത്തിൽ പുതിയ വേർഷനിലേക്ക് എത്തിക്കുന്നു.
  • പൂർത്തിയായ ശേഷം മാത്രം അടുത്ത സ്റ്റേജ് തുടങ്ങുന്നു. നിലവിലെ സ്റ്റേജിലെ എല്ലാ നോഡുകളും കൺട്രോൾ പ്ലെയിനും അപ്‌ഗ്രേഡ് ആയി സോക്ക് ടൈമർ അവസാനിച്ചാൽ മാത്രമേ GKE അടുത്ത സ്റ്റേജിലേക്ക് കടക്കൂ.

ഫ്ലീറ്റിനെ ചെറിയ ലേബൽ ചെയ്ത ഗ്രൂപ്പുകളായി തിരിക്കുന്നതിലൂടെ, ആദ്യം കുറച്ച് കാനറി ക്ലസ്റ്ററുകൾ അപ്‌ഗ്രേഡ് ചെയ്യാനും, മോണിറ്ററിംഗ്, ട്രാഫിക് റൂട്ടിംഗ് നിയമങ്ങൾ ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പുവരുത്താനും, അതിനുശേഷം ബാക്കിയുള്ള പ്രൊഡക്ഷൻ എൻവയോൺമെന്റുകളിലേക്ക് അതേ വേർഷൻ എത്തിക്കാനും നിങ്ങൾക്ക് സാധിക്കും.

ക്രമം നിലനിർത്തുന്നതിനുള്ള നിയമങ്ങൾ

  • കാച്ച്-ഓൾ സ്റ്റേജ് (Catch-all stage): അവസാന സ്റ്റേജിൽ ലേബൽ സെലക്ടർ ഉണ്ടായിരിക്കില്ല. ഇത് നേരത്തെ മാച്ച് ചെയ്യാത്ത ക്ലസ്റ്ററുകൾ പോലും അപ്‌ഗ്രേഡ് ലഭിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുന്നു.
  • കോൺഫ്ലിക്റ്റ് റെസല്യൂഷൻ (Conflict resolution): ഒരു ക്ലസ്റ്ററിന്റെ ലേബലുകൾ ഒന്നിലധികം സ്റ്റേജുകളുമായി യോജിക്കുന്നുണ്ടെങ്കിൽ, GKE അതിനെ ആദ്യത്തെ മാച്ച് ചെയ്യുന്ന സ്റ്റേജിൽ ഉൾപ്പെടുത്തുന്നു. ഇത് അനാവശ്യമായ ഡബിൾ അപ്‌ഗ്രേഡുകൾ ഒഴിവാക്കുന്നു.

തത്സമയ നിയന്ത്രണങ്ങൾ

റോളൗട്ട് നടന്നുകൊണ്ടിരിക്കുമ്പോൾ നിങ്ങൾക്ക് പൂർണ്ണ നിയന്ത്രണം ഉണ്ടായിരിക്കും:

  • Pause: ഇത് കൂടുതൽ അപ്‌ഗ്രേഡുകൾ തടയുന്നു. കാനറി സ്റ്റേജിൽ എന്തെങ്കിലും പരാജയപ്പെട്ടാൽ പ്രശ്നം പടരാതെ തന്നെ നിങ്ങൾക്ക് അത് പരിശോധിക്കാനാകും.
  • Force-complete: നിങ്ങളുടെ വാലിഡേഷൻ സ്ക്രിപ്റ്റുകൾ നേരത്തെ തന്നെ വിജയം റിപ്പോർട്ട് ചെയ്യുകയാണെങ്കിൽ, ബാക്കിയുള്ള സോക്ക് ടൈമർ ഒഴിവാക്കി റോളൗട്ട് വേഗത്തിലാക്കാൻ ഇത് സഹായിക്കുന്നു.
  • Cancel: പുതിയ വേർഷനിൽ എന്തെങ്കിലും ഗുരുതരമായ പിഴവുകൾ കണ്ടാൽ മുഴുവൻ സീക്വൻസും റദ്ദാക്കാൻ ഇത് സഹായിക്കുന്നു. ഇത് പഴയ അവസ്ഥയിലേക്ക് മാറാനോ (revert) അല്ലെങ്കിൽ ഒരു ഹോട്ട്ഫിക്സിനായി (hotfix) കാത്തിരിക്കാനോ നിങ്ങളെ അനുവദിക്കുന്നു.

ആർക്കൊക്കെ പ്രയോജനം ലഭിക്കും, എന്തൊക്കെയാണ് ഇതിന്റെ പരിമിതികൾ

ഇനി എന്താണ് ശ്രദ്ധിക്കേണ്ടത്

ചുരുക്കത്തിൽ

കസ്റ്റം-സ്റ്റേജ് റോളൗട്ട് സീക്വൻസിംഗ് വഴി, പ്ലാറ്റ്‌ഫോം നിശ്ചയിക്കുന്ന ക്രമത്തിലല്ല, മറിച്ച് ബിസിനസ് ആവശ്യങ്ങൾക്കനുസരിച്ചുള്ള ക്രമത്തിൽ ക്ലസ്റ്ററുകൾ അപ്‌ഗ്രേഡ് ചെയ്യാൻ GKE ഓപ്പറേറ്റർമാർക്ക് സാധിക്കുന്നു. കൺട്രോൾ-പ്ലെയിൻ, നോഡ് അപ്‌ഗ്രേഡുകൾ വേർതിരിക്കുന്നതിലൂടെയും, ഒരു നിശ്ചിത സോക്ക് പിരീഡ് നൽകുന്നതിലൂടെയും, pause/force-complete/cancel ഓപ്ഷനുകൾ ലഭ്യമാക്കുന്നതിലൂടെയും, ക്ലൗഡ്-നേറ്റീവ് ടീമുകൾക്ക് ആവശ്യമായ വേഗത നിലനിർത്തിക്കൊണ്ടുതന്നെ അപ്‌ഗ്രേഡ് റിസ്ക് കുറയ്ക്കാൻ ഈ ഫീച്ചറിന് കഴിയുന്നു. ഫ്ലീറ്റ് വൈഡ് Kubernetes അപ്‌ഗ്രേഡുകളുടെ സങ്കീർണ്ണതകൾ നേരിടുന്നവർക്ക്, കൂടുതൽ സുരക്ഷിതവും ബിസിനസ് ആവശ്യങ്ങൾക്കനുസരിച്ചുള്ളതുമായ ഓട്ടോമേഷനിലേക്കുള്ള ഒരു വലിയ ചുവടുവെപ്പാണ് ഈ പുതിയ സീക്വൻസിംഗ് മോഡൽ.