Google Cloud തങ്ങളുടെ GKE സേവനത്തിൽ ഇപ്പോൾ 'generally-available' ആയ രണ്ട് ഘട്ടങ്ങളുള്ള (two-step) control-plane upgrades ലഭ്യമാണെന്ന് പ്രഖ്യാപിച്ചു. ഇത് ഉപഭോക്താക്കൾക്ക് സോഫ്റ്റ്‌വെയർ ബൈനറി അപ്‌ഗ്രേഡും ഡാറ്റാ-ഫോർമാറ്റ് മൈഗ്രേഷനും വേർതിരിക്കാനും, മൈനർ വേർഷൻ മാറ്റങ്ങൾക്കിടയിൽ ഒരു റോൾബാക്ക് വിൻഡോ (rollback window) നിലനിർത്താനും സഹായിക്കുന്നു.

എന്തുകൊണ്ടാണ് GKE-ക്ക് സുരക്ഷിതമായ ഒരു പാത ആവശ്യപ്പെട്ടത്

ഒരു Kubernetes control plane-നെ ഒരു മൈനർ വേർഷനിൽ നിന്ന് അടുത്തതിലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യുന്നത് എപ്പോഴും റിസ്ക് നിറഞ്ഞതായിരുന്നു. 1.33-ൽ നിന്ന് 1.34-ലേക്ക് മാറുന്നത് ബൈനറികൾ മാറ്റുക മാത്രമല്ല, അടിസ്ഥാന ഡാറ്റാ ഘടനകളെയും (data structures) പുനർനിർമ്മിക്കുകയും ചെയ്യുന്നു. പുതിയ വേർഷനിൽ എന്തെങ്കിലും ബഗ്ഗുകൾ ഉണ്ടെങ്കിൽ, ക്ലസ്റ്ററിനെ എളുപ്പത്തിൽ പഴയ അവസ്ഥയിലേക്ക് മാറ്റാൻ കഴിയില്ല; അഡ്മിനിസ്ട്രേറ്റർമാർ പഴയ ഡാറ്റാബേസ് സ്നാപ്പ്ഷോട്ടുകൾ പുനഃസ്ഥാപിക്കുകയോ അല്ലെങ്കിൽ മുഴുവൻ ക്ലസ്റ്ററും വീണ്ടും നിർമ്മിക്കുകയോ ചെയ്യേണ്ടി വരും. ഇത് സമയമെടുക്കുന്നതും തെറ്റുകൾ സംഭവിക്കാൻ സാധ്യതയുള്ളതുമായ ഒരു പ്രക്രിയയാണ്.

രണ്ട് ഘട്ടങ്ങളുള്ള അപ്‌ഗ്രേഡ് എങ്ങനെ പ്രവർത്തിക്കുന്നു

പുതിയ രീതി അപ്‌ഗ്രേഡിനെ രണ്ട് വ്യത്യസ്ത ഘട്ടങ്ങളായി തിരിക്കുന്നു:

  • ഘട്ടം 1 – ബൈനറി അപ്‌ഗ്രേഡ് (emulated mode). പഴയ ഡാറ്റാ ഫോർമാറ്റ് നിലനിർത്തിക്കൊണ്ട് തന്നെ GKE control-plane ബൈനറികളെ ലക്ഷ്യമിട്ട വേർഷനിലേക്ക് മാറ്റുന്നു. പുതിയ ഡാറ്റാ ഘടനകൾ ഒന്നും തന്നെ എഴുതപ്പെടാത്തതിനാൽ, ഈ ഘട്ടത്തിലുടനീളം ക്ലസ്റ്ററിനെ റോൾബാക്ക് ചെയ്യാൻ സാധിക്കും.
  • ഘട്ടം 2 – ഫൈനലൈസേഷൻ (Finalization). നിശ്ചിത കാത്തിരിപ്പ് കാലയളവിന് ശേഷം, GKE സംഭരിച്ച ഡാറ്റ പുതിയ ഫോർമാറ്റിലേക്ക് മാറ്റുന്നു. ഈ മാറ്റം പൂർത്തിയായിക്കഴിഞ്ഞാൽ, റോൾബാക്ക് ചെയ്യാൻ പഴയതുപോലെ തന്നെ സ്നാപ്പ്ഷോട്ട് പുനഃസ്ഥാപിക്കേണ്ടി വരും. ഈ ബുദ്ധിമുട്ട് ഒഴിവാക്കാനാണ് രണ്ട് ഘട്ടങ്ങളുള്ള പ്രക്രിയ രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്.

ഈ വേർതിരിക്കൽ ഒരു “soak window” സൃഷ്ടിക്കുന്നു. ഇതിലൂടെ ഡാറ്റാ മൈഗ്രേഷൻ എന്ന തിരിച്ചെടുക്കാൻ കഴിയാത്ത പ്രക്രിയയിലേക്ക് കടക്കുന്നതിന് മുമ്പ് തന്നെ, അപ്‌ഗ്രേഡ് ചെയ്ത ബൈനറികൾ പ്രൊഡക്ഷനിൽ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് ഓപ്പറേറ്റർമാർക്ക് നിരീക്ഷിക്കാൻ കഴിയും.

പ്രായോഗികമായി soak window എങ്ങനെ ഉപയോഗിക്കാം

Soak കാലയളവിൽ API latency, error rates, pod health തുടങ്ങിയ പ്രധാന ഹെൽത്ത് മെട്രിക്സുകൾ GKE സ്വയമേവ നിരീക്ഷിക്കുന്നു. സേവനത്തിൽ എന്തെങ്കിലും അസ്വാഭാവികതകൾ കണ്ടാൽ, അത് റോളൗട്ട് നിർത്തിവെക്കുകയും ക്ലസ്റ്ററിനെ ബൈനറി-മാത്രം ഉള്ള അവസ്ഥയിൽ നിലനിർത്തുകയും ചെയ്യുന്നു. ഇതിലൂടെ റോൾബാക്ക് ഇപ്പോഴും സാധ്യമാണ്. ഈ രീതി പിന്തുടരുന്ന അപ്‌ഗ്രേഡുകൾക്ക് 99.999% വിജയശതമാനം ഉണ്ടെന്ന് ഗൂഗിൾ അവകാശപ്പെടുന്നു.

GKE-യുടെ auto-upgrade ഫീച്ചർ ഉപയോഗിക്കുന്ന ക്ലസ്റ്ററുകൾക്കായി, മാനുവൽ ഇടപെടലുകൾ ഇല്ലാതെ തന്നെ ഈ രണ്ട് ഘട്ടങ്ങളും പ്ലാറ്റ്‌ഫോം നിയന്ത്രിക്കുന്നു. പൂർണ്ണ നിയന്ത്രണം ആഗ്രഹിക്കുന്ന ഉപയോക്താക്കൾക്ക് Cloud CLI അല്ലെങ്കിൽ Terraform വഴി ഈ പ്രക്രിയ നടത്താവുന്നതാണ്.

മാനുവൽ ആയി രണ്ട് ഘട്ടങ്ങളുള്ള അപ്‌ഗ്രേഡ് നടത്തുന്നത് എങ്ങനെ

48 മണിക്കൂർ സുരക്ഷാ വിൻഡോ ഉൾപ്പെടുത്തിയുള്ള ഒരു സാധാരണ മാനുവൽ അപ്‌ഗ്രേഡ് ഇപ്രകാരമാണ്:

gcloud beta container clusters upgrade my-cluster \
  --location=us-central1 \
  --cluster-version=1.34.1-gke.1829001 \
  --control-plane-soak-duration=48h \
  --master

നിലവിലെ സ്റ്റാറ്റസ് പരിശോധിക്കാൻ:

gcloud container clusters describe my-cluster \
  --location=us-central1 \
  --format="yaml(rollbackSafeUpgradeStatus)"

Soak കാലയളവിൽ എന്തെങ്കിലും തകരാറുകൾ കണ്ടാൽ, അഡ്മിനിസ്ട്രേറ്റർക്ക് ഒരു റോൾബാക്ക് കമാൻഡ് നൽകിക്കൊണ്ട് ഡാറ്റാ നഷ്ടമില്ലാതെ പഴയ വേർഷനിലേക്ക് മടങ്ങാൻ കഴിയും. ക്ലസ്റ്റർ സുരക്ഷിതമാണെന്ന് ഉറപ്പായാൽ, complete-control-plane-upgrade കമാൻഡ് ഉപയോഗിച്ച് അപ്‌ഗ്രേഡ് നേരത്തെ തന്നെ പൂർത്തിയാക്കാം.

പരിമിതികളും ആവശ്യകതകളും

  • ഈ ഫീച്ചർ 1.33 അല്ലെങ്കിൽ അതിനു ശേഷമുള്ള വേർഷനുകൾ പ്രവർത്തിക്കുന്ന GKE ക്ലസ്റ്ററുകൾക്ക് ബാധകമാണ്.
  • ഒരേസമയം ഒരു മൈനർ വേർഷൻ മാത്രമേ അപ്‌ഗ്രേഡ് ചെയ്യാൻ കഴിയൂ; വേർഷനുകൾ സ്കിപ്പ് ചെയ്യുന്നത് അനുവദനീയമല്ല.
  • രണ്ട് ഘട്ടങ്ങളുള്ള പ്രക്രിയയിലുടനീളം Autopilot, regional clusters എന്നിവ ലഭ്യമായിരിക്കും.

ഉണ്ടായേക്കാവുന്ന പോരായ്മകൾ

ബൈനറി അപ്‌ഗ്രേഡും ഡാറ്റാ അപ്‌ഗ്രേഡും വേർതിരിക്കുന്നത് അപ്‌ഗ്രേഡ് സമയക്രമത്തിൽ ഒരു അധിക ഘട്ടം കൂടി കൂട്ടുന്നു. വേഗത്തിലുള്ള വേർഷൻ മാറ്റങ്ങൾ ആവശ്യമുള്ള സ്ഥാപനങ്ങൾക്ക് ഇത് മൊത്തത്തിലുള്ള സമയപരിധി വർദ്ധിപ്പിച്ചേക്കാം. കൂടാതെ, soak period ഓട്ടോമേറ്റഡ് ഹെൽത്ത് ചെക്കുകളെ ആശ്രയിച്ചാണ് പ്രവർത്തിക്കുന്നത്; അതുകൊണ്ട് തന്നെ സങ്കീർണ്ണമായ വർക്ക്ലോഡുകൾ കൈകാര്യം ചെയ്യുന്ന ടീമുകൾക്ക്, അപ്രതീക്ഷിത തകരാറുകൾ കണ്ടെത്താൻ GKE-യുടെ മോണിറ്ററിംഗിനൊപ്പം സ്വന്തം observability ടൂളുകളും ഉപയോഗിക്കേണ്ടി വന്നേക്കാം.

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

മേജർ വേർഷൻ അപ്‌ഗ്രേഡുകളിലേക്ക് ഈ രണ്ട് ഘട്ടങ്ങളുള്ള മോഡൽ വ്യാപിപ്പിക്കുന്നതിനെക്കുറിച്ച് ഗൂഗിൾ ഇതുവരെ ഒന്നും പ്രഖ്യാപിച്ചിട്ടില്ല; പല സാഹചര്യങ്ങളിലും മേജർ വേർഷനുകൾക്ക് ക്ലസ്റ്റർ പൂർണ്ണമായും പുനർനിർമ്മിക്കേണ്ടി വരും. നോഡ്-പൂൾ (node-pool) അപ്‌ഗ്രേഡുകൾക്കും, soak-window ചെക്കുകൾ ഓട്ടോമേറ്റ് ചെയ്യാൻ കഴിയുന്ന തേർഡ് പാർട്ടി CI/CD പൈപ്പ്‌ലൈനുകൾക്കായുള്ള സുരക്ഷാ സംവിധാനങ്ങളെക്കുറിച്ചുള്ള അറിയിപ്പുകൾക്കായി നിരീക്ഷകർ കാത്തിരിക്കുകയാണ്.

ചുരുക്കത്തിൽ: ബൈനറി അപ്‌ഗ്രേഡുകളെ ഡാറ്റാ മൈഗ്രേഷനിൽ നിന്ന് വേർതിരിക്കുന്നതിലൂടെ, മൈനർ വേർഷൻ മാറ്റങ്ങൾക്കായി പ്ലാറ്റ്‌ഫോം എഞ്ചിനീയർമാർക്ക് പ്രായോഗികമായ ഒരു റോൾബാക്ക് വിൻഡോ GKE നൽകുന്നു. ഇത് ക്ലസ്റ്റർ പരിപാലനത്തിനുള്ള പ്രവർത്തനച്ചെലവ് കുറയ്ക്കുകയും ഡൗൺടൈം (downtime) കുറയ്ക്കാൻ സഹായിക്കുകയും ചെയ്യുന്നു.