ಜೆಂಕಿನ್ಸ್-ಎಕ್ಸ್ ಇಸ್ಟಿಯೊ ಫ್ಲ್ಯಾಗರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ಯಾನರಿ ನಿಯೋಜನೆ
ಕ್ಯಾನರಿ ನಿಯೋಜನೆ
ನೀವು ಓದುತ್ತೀರಿ ಎಂದು ನಾವು ಭಾವಿಸುತ್ತೇವೆ ಮೊದಲ ಭಾಗ, ಅಲ್ಲಿ ನಾವು ಕ್ಯಾನರಿ ನಿಯೋಜನೆಗಳು ಏನೆಂದು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ವಿವರಿಸಿದ್ದೇವೆ. ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಕುಬರ್ನೆಟ್ಸ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಅದನ್ನು ಹೇಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು ಎಂಬುದನ್ನು ಸಹ ನಾವು ತೋರಿಸಿದ್ದೇವೆ.
ಅರ್ಗೋ ರೋಲ್ಔಟ್ಗಳು
ಅರ್ಗೋ ರೋಲ್ಔಟ್ಸ್ ಕುಬರ್ನೆಟ್ಸ್ ಸ್ಥಳೀಯ ನಿಯೋಜನೆ ನಿಯಂತ್ರಕವಾಗಿದೆ. ಇದು ಕುಬರ್ನೆಟ್ಗಳಿಗೆ CRD (ಕಸ್ಟಮ್ ರಿಸೋರ್ಸ್ ಡೆಫಿನಿಷನ್) ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇದಕ್ಕೆ ಧನ್ಯವಾದಗಳು, ನಾವು ಹೊಸ ಘಟಕವನ್ನು ಬಳಸಬಹುದು: Rollout, ಇದು ವಿವಿಧ ಕಾನ್ಫಿಗರೇಶನ್ ಆಯ್ಕೆಗಳೊಂದಿಗೆ ನೀಲಿ-ಹಸಿರು ಮತ್ತು ಕ್ಯಾನರಿ ನಿಯೋಜನೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲದಿಂದ ಬಳಸಲಾಗುವ ಅರ್ಗೋ ರೋಲ್ಔಟ್ಗಳ ನಿಯಂತ್ರಕ Rollout, ಕುಬರ್ನೆಟ್ಗಳಿಗೆ ನೀಲಿ-ಹಸಿರು ಮತ್ತು ಕ್ಯಾನರಿಯಂತಹ ಹೆಚ್ಚುವರಿ ನಿಯೋಜನೆ ತಂತ್ರಗಳಿಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಸಂಪನ್ಮೂಲ Rollout ಸಮಾನವಾದ ಕಾರ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ Deployment, ಹೆಚ್ಚುವರಿ ನಿಯೋಜನೆ ತಂತ್ರಗಳೊಂದಿಗೆ ಮಾತ್ರ.
ಸಂಪನ್ಮೂಲ Deployments ನಿಯೋಜನೆಗಾಗಿ ಎರಡು ತಂತ್ರಗಳನ್ನು ಹೊಂದಿದೆ: RollingUpdate и Recreate. ಈ ತಂತ್ರಗಳು ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ಸೂಕ್ತವಾಗಿದ್ದರೂ, ಅತಿ ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ ಸರ್ವರ್ಗಳಿಗೆ ನಿಯೋಜನೆಗಾಗಿ, ನಿಯೋಜನೆ ನಿಯಂತ್ರಕದಲ್ಲಿ ಲಭ್ಯವಿಲ್ಲದ ನೀಲಿ-ಹಸಿರು ಅಥವಾ ಕ್ಯಾನರಿಯಂತಹ ಹೆಚ್ಚುವರಿ ತಂತ್ರಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಕುಬರ್ನೆಟ್ಸ್ನಲ್ಲಿ ಈ ತಂತ್ರಗಳನ್ನು ಬಳಸಲು, ಬಳಕೆದಾರರು ತಮ್ಮ ನಿಯೋಜನೆಗಳ ಮೇಲೆ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಬರೆಯಬೇಕಾಗಿತ್ತು. Argo Rollouts ನಿಯಂತ್ರಕವು ಈ ತಂತ್ರಗಳನ್ನು ಸರಳ, ಘೋಷಣಾತ್ಮಕ, ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದಾದ ನಿಯತಾಂಕಗಳಾಗಿ ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ. https://argoproj.github.io/argo-rollouts
ಆರ್ಗೋ ಸಿಐ ಸಹ ಇದೆ, ಇದು ರೋಲ್ಔಟ್ಗಳೊಂದಿಗೆ ಬಳಸಲು ಅನುಕೂಲಕರ ವೆಬ್ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ, ನಾವು ಅದನ್ನು ಮುಂದಿನ ಲೇಖನದಲ್ಲಿ ನೋಡೋಣ.
ನಮ್ಮ ಮೂಲಸೌಕರ್ಯ ಟರ್ನಿಪ್ನಲ್ಲಿ (ಕೆಳಗೆ ನೋಡಿ) ನಾವು ಈಗಾಗಲೇ install.yaml ಅನ್ನು i/k8s/argo-rollouts/install.yaml ಎಂದು ಸೇರಿಸಿದ್ದೇವೆ. ಈ ರೀತಿಯಲ್ಲಿ GitlabCI ಅದನ್ನು ಕ್ಲಸ್ಟರ್ಗೆ ಸ್ಥಾಪಿಸುತ್ತದೆ.
ಇದು ತುಂಬಾ ಸರಳವಾದ ಪೈಥಾನ್+ಫ್ಲಾಸ್ಕ್ API ಆಗಿದ್ದು ಅದು JSON ನಂತೆ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೀಡುತ್ತದೆ. ನಾವು GitlabCI ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ಯಾಕೇಜ್ ಅನ್ನು ನಿರ್ಮಿಸುತ್ತೇವೆ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು Gitlab ರಿಜಿಸ್ಟ್ರಿಗೆ ತಳ್ಳುತ್ತೇವೆ. ನೋಂದಾವಣೆಯಲ್ಲಿ ನಾವು ಎರಡು ವಿಭಿನ್ನ ಬಿಡುಗಡೆ ಆವೃತ್ತಿಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
ಅವುಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವೆಂದರೆ JSON ಫೈಲ್ ಹಿಂತಿರುಗಿಸಲಾಗಿದೆ. ನಾವು ಯಾವ ಆವೃತ್ತಿಯೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತಿದ್ದೇವೆ ಎಂಬುದನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಸುಲಭವಾಗಿ ದೃಶ್ಯೀಕರಿಸಲು ನಾವು ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ.
ಮೂಲಸೌಕರ್ಯ ಭಂಡಾರ
ಈ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ನಾವು ಕುಬರ್ನೆಟ್ಸ್ಗೆ ನಿಯೋಜನೆಗಾಗಿ GitlabCI ಅನ್ನು ಬಳಸುತ್ತೇವೆ, .gitlab-ci.yml ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:
Rollout ನಿಯೋಜನೆಯಂತೆಯೇ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ನಾವು ಅಪ್ಡೇಟ್ ತಂತ್ರವನ್ನು ಹೊಂದಿಸದಿದ್ದರೆ (ಇಲ್ಲಿ ಕ್ಯಾನರಿಯಂತೆ) ಅದು ಡೀಫಾಲ್ಟ್ ರೋಲಿಂಗ್-ಅಪ್ಡೇಟ್ ನಿಯೋಜನೆಯಂತೆ ವರ್ತಿಸುತ್ತದೆ.
ಕ್ಯಾನರಿ ನಿಯೋಜನೆಗಾಗಿ ನಾವು yaml ನಲ್ಲಿ ಎರಡು ಹಂತಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತೇವೆ:
ನಾನು ಈ ವೀಡಿಯೊವನ್ನು ನಿಜವಾಗಿಯೂ ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ, ಇದು ಅರ್ಗೋ ರೋಲ್ಔಟ್ಗಳು ಮತ್ತು ಅರ್ಗೋ ಸಿಐ ಹೇಗೆ ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ:
ಫಲಿತಾಂಶ
ಹೆಚ್ಚುವರಿ ರೀತಿಯ ನಿಯೋಜನೆಗಳು ಅಥವಾ ಪ್ರತಿಕೃತಿಗಳು, ಮರುನಿರ್ದೇಶನ ಸಂಚಾರ ಇತ್ಯಾದಿಗಳ ರಚನೆಯನ್ನು ನಿರ್ವಹಿಸುವ CRD ಗಳನ್ನು ಬಳಸುವ ಕಲ್ಪನೆಯನ್ನು ನಾನು ನಿಜವಾಗಿಯೂ ಇಷ್ಟಪಡುತ್ತೇನೆ. ಅವರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ಸರಾಗವಾಗಿ ನಡೆಯುತ್ತದೆ. ಮುಂದೆ ನಾನು Argo CI ನೊಂದಿಗೆ ಏಕೀಕರಣವನ್ನು ಪರೀಕ್ಷಿಸಲು ಬಯಸುತ್ತೇನೆ.
ಆದಾಗ್ಯೂ, Argo CI ಮತ್ತು Flux CI ಗಳ ದೊಡ್ಡ ವಿಲೀನವು ಬರುತ್ತಿರುವಂತೆ ತೋರುತ್ತಿದೆ, ಆದ್ದರಿಂದ ಹೊಸ ಬಿಡುಗಡೆಯು ಹೊರಬರುವವರೆಗೆ ನಾನು ಕಾಯಬಹುದು: ಅರ್ಗೋ ಫ್ಲಕ್ಸ್.
ನೀವು Argo Rollouts ಅಥವಾ Argo CI ಯೊಂದಿಗೆ ಯಾವುದೇ ಅನುಭವವನ್ನು ಹೊಂದಿದ್ದೀರಾ?