ਕਸਟਮ ਸਟੇਜਾਂ (Custom Stages) ਨਾਲ GKE ਰੋਲਆਊਟ ਸੀਕਵੈਂਸਿੰਗ (Rollout Sequencing)

Google Cloud ਦਾ GKE ਹੁਣ ਤੁਹਾਨੂੰ ਉਹ ਸਹੀ ਕ੍ਰਮ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਕਲੱਸਟਰਾਂ ਨੂੰ ਅੱਪਗ੍ਰੇਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜੋ ਕਿ ਡਿਫੌਲਟ ਖੇਤਰੀ (regional) ਸ਼ਡਿਊਲ ਦੀ ਬਜਾਏ ਤੁਹਾਡੇ ਆਪਣੇ ਬਿਜ਼ਨਸ ਲੌਜਿਕ ਦੀ ਪਾਲਣਾ ਕਰਨ ਵਾਲੀ ਕਸਟਮ-ਸਟੇਜ ਰੋਲਆਊਟ ਸੀਕਵੈਂਸਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।

ਦਰਜਨਾਂ ਜਾਂ ਸੈਂਕੜੇ ਵਾਤਾਵਰਣਾਂ (environments) ਵਿੱਚ Kubernetes ਕਲੱਸਟਰਾਂ ਨੂੰ ਅੱਪਗ੍ਰੇਡ ਕਰਨਾ ਇੱਕ ਚੁਣੌਤੀਪੂਰਨ ਕੰਮ ਹੈ। ਸੁਰੱਖਿਆ ਪੈਚ (security patches) ਨਿਯਮਤ ਰੂਪ ਵਿੱਚ ਆਉਂਦੇ ਹਨ, ਪਰ ਤੁਹਾਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਸੇਵਾਵਾਂ ਨੂੰ ਵੀ ਚੱਲਦਾ ਰੱਖਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਪੁਰਾਣਾ ਖੇਤਰੀ ਅੱਪਗ੍ਰੇਡ ਮਾਡਲ ਕਿਸੇ ਸਟੇਜਿੰਗ ਵਾਤਾਵਰਣ ਦੇ ਵੈਲੀਡੇਸ਼ਨ (validation) ਨੂੰ ਖਤਮ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਪ੍ਰੋਡਕਸ਼ਨ ਕਲੱਸਟਰ ਨੂੰ ਨਵਾਂ ਕੰਟਰੋਲ-ਪਲੇਨ (control-plane) ਵਰਜ਼ਨ ਭੇਜ ਸਕਦਾ ਸੀ, ਜਿਸ ਨਾਲ ਪੂਰਾ ਫਲੀਟ (fleet) ਅਣਪਰੀਖਿਅਤ ਤਬਦੀਲੀਆਂ ਦੇ ਖਤਰੇ ਵਿੱਚ ਪੈ ਜਾਂਦਾ ਸੀ।

ਪੁਰਾਣਾ ਮਾਡਲ ਕਿਉਂ ਅਸਫਲ ਰਿਹਾ

ਇੱਕ ਖੇਤਰੀ ਰੋਲਆਊਟ (regional rollout) ਖੇਤਰ ਦੇ ਹਰ ਕਲੱਸਟਰ ਨੂੰ ਇੱਕੋ ਜਿਹਾ ਮੰਨਦਾ ਹੈ। ਜਦੋਂ ਅੱਪਗ੍ਰੇਡ ਵਿੰਡੋ ਖੁੱਲ੍ਹਦੀ ਹੈ, ਤਾਂ ਕੰਟਰੋਲ ਪਲੇਨ ਅਤੇ ਨੋਡਜ਼ (nodes) ਸਮਾਨਾਂਤਰ (parallel) ਰੂਪ ਵਿੱਚ ਅੱਪਗ੍ਰੇਡ ਹੁੰਦੇ ਹਨ, ਚਾਹੇ ਕਲੱਸਟਰ ਰਿਲੀਜ਼ ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਕਿਤੇ ਵੀ ਹੋਵੇ। ਉਹ ਟੀਮਾਂ ਜੋ ਸਖ਼ਤ 'ਕੈਨਰੀ-ਫਿਰ-ਪ੍ਰੋਡਕਸ਼ਨ' (canary-then-production) ਫਲੋਅ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀਆਂ ਹਨ, ਉਹਨਾਂ ਦੇ ਅੱਪਗ੍ਰੇਡ "ਗਲਤ ਕ੍ਰਮ" (out-of-order) ਵਿੱਚ ਹੋ ਜਾਂਦੇ ਹਨ, ਜੋ ਅਜਿਹੀਆਂ ਰੈਗਰੈਸ਼ਨਾਂ (regressions) ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ਪਤਾ ਲਗਾਉਣਾ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ। ਇਸਦੀ ਕੀਮਤ ਸਿਰਫ਼ ਡਾਊਨਟਾਈਮ (downtime) ਨਹੀਂ ਹੈ; ਇਹ ਉਸ ਸਮੱਸਿਆ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਵਿੱਚ ਬਰਬਾਦ ਹੋਣ ਵਾਲਾ ਇੰਜੀਨੀਅਰਿੰਗ ਸਮਾਂ ਹੈ ਜਿਸ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਫੜਿਆ ਜਾ ਸਕਦਾ ਸੀ।

GKE ਰੋਲਆਊਟ ਸੀਕਵੈਂਸਿੰਗ ਕੀ ਜੋੜਦੀ ਹੈ

ਨਵਾਂ ਫੀਚਰ ਇੱਕ RolloutSequence ਆਬਜੈਕਟ ਪੇਸ਼ ਕਰਦਾ ਹੈ ਜੋ ਕਈ ਸਟੇਜਾਂ ਦੀ ਇੱਕ ਲੜੀ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। ਹਰੇਕ ਸਟੇਜ ਤੁਹਾਡੇ ਫਲੀਟ ਦਾ ਇੱਕ ਤਰਕਪੂਰਨ ਹਿੱਸਾ ਹੁੰਦੀ ਹੈ, ਜਿਸਦੀ ਪਛਾਣ ਲੇਬਲ ਸਿਲੇਕਟਰਾਂ (label selectors) ਦੁਆਰਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਸਿਸਟਮ ਇੱਕ ਨਿਰਧਾਰਤ (deterministic) ਮਾਰਗ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ:

  • ਪਹਿਲਾਂ ਕੰਟਰੋਲ-ਪਲੇਨ ਅੱਪਗ੍ਰੇਡ। GKE ਕਿਸੇ ਵੀ ਨੋਡ ਨੂੰ ਛੇੜਨ ਤੋਂ ਪਹਿਲਾਂ ਕੇਂਦਰੀ ਪ੍ਰਬੰਧਨ ਕੰਪੋਨੈਂਟ ਨੂੰ ਟਾਰਗੇਟ ਵਰਜ਼ਨ 'ਤੇ ਲੈ ਜਾਂਦਾ ਹੈ।
  • ਸੋਕ ਟਾਈਮਰ (Soak timer) ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਕੰਟਰੋਲ ਪਲੇਨ ਦੇ ਟਾਰਗੇਟ 'ਤੇ ਪਹੁੰਚਣ ਤੋਂ ਬਾਅਦ, ਇੱਕ ਕੌਂਫਿਗਰੇਬਲ ਦੇਰੀ (delay) ਚਲਦੀ ਹੈ, ਜੋ ਤੁਹਾਨੂੰ ਹੈਲਥ ਚੈੱਕ ਕਰਨ ਲਈ ਸਮਾਂ ਦਿੰਦੀ ਹੈ।
  • ਨੋਡ ਅੱਪਗ੍ਰੇਡ ਸਮਾਨਾਂਤਰ ਚਲਦੇ ਹਨ। ਜਦੋਂ ਸੋਕ ਟਾਈਮਰ ਚੱਲ ਰਿਹਾ ਹੁੰਦਾ ਹੈ, GKE ਨੋਡਾਂ ਨੂੰ ਅੱਪਗ੍ਰੇਡ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਕਲੱਸਟਰ ਜਲਦੀ ਨਵੇਂ ਵਰਜ਼ਨ 'ਤੇ ਆ ਜਾਂਦਾ ਹੈ।
  • ਅਗਲੀ ਸਟੇਜ ਸਿਰਫ਼ ਮੁਕੰਮਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਹੀ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। ਜਦੋਂ ਮੌਜੂਦਾ ਸਟੇਜ ਵਿੱਚ ਹਰ ਨੋਡ ਅਤੇ ਕੰਟਰੋਲ ਪਲੇਨ ਖਤਮ ਹੋ ਜਾਂਦੇ ਹਨ ਅਤੇ ਸੋਕ ਟਾਈਮਰ ਦੀ ਮਿਆਦ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ GKE ਅਗਲੀ ਸਟੇਜ ਵੱਲ ਵਧਦਾ ਹੈ।

ਇੱਕ ਫਲੀਟ ਨੂੰ ਛੋਟੇ, ਲੇਬਲ ਕੀਤੇ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡ ਕੇ, ਤੁਸੀਂ ਪਹਿਲਾਂ ਕੁਝ ਕੈਨਰੀ ਕਲੱਸਟਰਾਂ ਨੂੰ ਅੱਪਗ੍ਰੇਡ ਕਰ ਸਕਦੇ ਹੋ, ਇਹ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਮਾਨੀਟਰਿੰਗ ਅਤੇ ਟ੍ਰੈਫਿਕ-ਰੂਟਿੰਗ ਨਿਯਮ ਉਮੀਦ ਅਨੁਸਾਰ ਕੰਮ ਕਰ ਰਹੇ ਹਨ, ਅਤੇ ਫਿਰ ਉਹੀ ਵਰਜ਼ਨ ਬਾਕੀ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ।

ਨਿਯਮ ਜੋ ਸੀਕਵੈਂਸ ਨੂੰ ਸਹੀ ਰੱਖਦੇ ਹਨ

  • ਕੈਚ-ਆਲ ਸਟੇਜ (Catch-all stage): ਆਖਰੀ ਸਟੇਜ ਵਿੱਚ ਲੇਬਲ ਸਿਲੇਕਟਰ ਨਹੀਂ ਹੁੰਦਾ, ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਕੋਈ ਵੀ ਕਲੱਸਟਰ ਜੋ ਪਹਿਲਾਂ ਮੈਚ ਨਹੀਂ ਹੋਇਆ ਸੀ, ਉਸਨੂੰ ਵੀ ਅੱਪਗ੍ਰੇਡ ਮਿਲਦਾ ਰਹੇ।
  • ਟਕਰਾਅ ਦਾ ਨਿਪਟਾਰਾ (Conflict resolution): ਜੇਕਰ ਕਿਸੇ ਕਲੱਸਟਰ ਦੇ ਲੇਬਲ ਇੱਕ ਤੋਂ ਵੱਧ ਸਟੇਜਾਂ ਦੀਆਂ ਸ਼ਰਤਾਂ ਪੂਰੀਆਂ ਕਰਦੇ ਹਨ, ਤਾਂ GKE ਇਸਨੂੰ ਪਹਿਲੀ ਮੈਚ ਹੋਣ ਵਾਲੀ ਸਟੇਜ ਵਿੱਚ ਰੱਖਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਗਲਤੀ ਨਾਲ ਦੋਹਰੇ ਅੱਪਗ੍ਰੇਡ ਤੋਂ ਬਚਿਆ ਜਾ ਸਕਦਾ ਹੈ।

ਰੀਅਲ-ਟਾਈਮ ਕੰਟਰੋਲ ਨੌਬਸ (Real-time control knobs)

ਇੱਕ ਸਰਗਰਮ ਰੋਲਆਊਟ ਦੌਰਾਨ ਤੁਸੀਂ ਕੰਟਰੋਲ ਵਿੱਚ ਰਹਿੰਦੇ ਹੋ:

  • Pause ਕਿਸੇ ਵੀ ਹੋਰ ਅੱਪਗ੍ਰੇਡ ਨੂੰ ਰੋਕ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਸਮੱਸਿਆ ਨੂੰ ਵਧਣ ਤੋਂ ਬਿਨਾਂ ਕੈਨਰੀ ਸਟੇਜ ਵਿੱਚ ਅਸਫਲਤਾ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ।
  • Force-complete ਬਾਕੀ ਰਹਿੰਦੇ ਸੋਕ ਸਮੇਂ ਨੂੰ ਖਤਮ ਕਰ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਡੇ ਵੈਲੀਡੇਸ਼ਨ ਸਕ੍ਰਿਪਟ ਜਲਦੀ ਸਫਲਤਾ ਦੀ ਰਿਪੋਰਟ ਕਰਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਰੋਲਆਊਟ ਤੇਜ਼ ਹੋ ਜਾਂਦਾ ਹੈ।
  • Cancel ਪੂਰੀ ਸੀਕਵੈਂਸ ਨੂੰ ਰੋਕ ਦਿੰਦਾ ਹੈ ਜੇਕਰ ਨਵਾਂ ਰਿਲੀਜ਼ ਕੀਤਾ ਗਿਆ ਵਰਜ਼ਨ ਕੋਈ ਗੰਭੀਰ ਬੱਗ (bug) ਦਿਖਾਉਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਪੁਰਾਣੇ ਵਰਜ਼ਨ 'ਤੇ ਵਾਪਸ ਜਾ ਸਕਦੇ ਹੋ ਜਾਂ ਹੌਟਫਿਕਸ (hotfix) ਦੀ ਉਡੀਕ ਕਰ ਸਕਦੇ ਹੋ।

ਕਿਸਨੂੰ ਫਾਇਦਾ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਕੀ ਸਮਝੌਤੇ (trade-offs) ਹਨ

ਅੱਗੇ ਕੀ ਦੇਖਣਾ ਹੈ

ਸਿੱਟਾ (Takeaway)

ਕਸਟਮ-ਸਟੇਜ ਰੋਲਆਊਟ ਸੀਕਵੈਂਸਿੰਗ GKE ਆਪਰੇਟਰਾਂ ਨੂੰ ਕਲੱਸਟਰਾਂ ਨੂੰ ਉਸ ਕ੍ਰਮ ਵਿੱਚ ਅੱਪਗ੍ਰੇਡ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਦਿੰਦੀ ਹੈ ਜਿਸਦੀ ਉਹਨਾਂ ਦੇ ਬਿਜ਼ਨਸ ਨੂੰ ਲੋੜ ਹੈ, ਨਾ ਕਿ ਉਸ ਕ੍ਰਮ ਵਿੱਚ ਜੋ ਪਲੇਟਫਾਰਮ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ। ਕੰਟਰੋਲ-ਪਲੇਨ ਅਤੇ ਨੋਡ ਅੱਪਗ੍ਰੇਡਾਂ ਨੂੰ ਵੱਖ ਕਰਕੇ, ਇੱਕ ਕੌਂਫਿਗਰੇਬਲ ਸੋਕ ਪੀਰੀਅਡ ਜੋੜ ਕੇ, ਅਤੇ pause/force-complete/cancel ਐਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਕੇ, ਇਹ ਫੀਚਰ ਅੱਪਗ੍ਰੇਡ ਦੇ ਜੋਖਮ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ ਅਤੇ ਨਾਲ ਹੀ ਉਹ ਰਫਤਾਰ ਬਣਾਈ ਰੱਖਦਾ ਹੈ ਜਿਸਦੀ ਕਲਾਉਡ-ਨੇਟਿਵ ਟੀਮਾਂ ਨੂੰ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਫਲੀਟ-ਵਾਈਡ Kubernetes ਅੱਪਗ੍ਰੇਡਾਂ ਦੀ ਉਲਝਣ ਨਾਲ ਨਜਿੱਠਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਵਿਅਕਤੀ ਲਈ, ਨਵਾਂ ਸੀਕਵੈਂਸਿੰਗ ਮਾਡਲ ਸੁਰੱਖਿਅਤ ਅਤੇ ਬਿਜ਼ਨਸ-ਅਲਾਈਨਡ ਆਟੋਮੇਸ਼ਨ ਵੱਲ ਇੱਕ ਠੋਸ ਕਦਮ ਹੈ।