ಈ ಕಥೆಯು ನಾವು ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಧಾರಕಗಳನ್ನು ಹೇಗೆ ಬಳಸುತ್ತೇವೆ ಎಂಬುದರ ಕುರಿತು, ನಿರ್ದಿಷ್ಟವಾಗಿ ಕುಬರ್ನೆಟ್ಸ್. ಲೇಖನವು ಕಂಟೈನರ್ಗಳಿಂದ ಮೆಟ್ರಿಕ್ಗಳು ಮತ್ತು ಲಾಗ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ನಿರ್ಮಿಸಲು ಮೀಸಲಾಗಿರುತ್ತದೆ.
ನಾವು fintech ಕಂಪನಿ Exness ನಿಂದ ಬಂದವರು, ಇದು B2B ಮತ್ತು B2C ಗಾಗಿ ಆನ್ಲೈನ್ ವ್ಯಾಪಾರ ಮತ್ತು ಫಿನ್ಟೆಕ್ ಉತ್ಪನ್ನಗಳಿಗೆ ಸೇವೆಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತದೆ. ನಮ್ಮ R&D ಹಲವು ವಿಭಿನ್ನ ತಂಡಗಳನ್ನು ಹೊಂದಿದೆ, ಅಭಿವೃದ್ಧಿ ಇಲಾಖೆಯು 100+ ಉದ್ಯೋಗಿಗಳನ್ನು ಹೊಂದಿದೆ.
ನಮ್ಮ ಡೆವಲಪರ್ಗಳಿಗೆ ಕೋಡ್ ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ರನ್ ಮಾಡಲು ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗೆ ಜವಾಬ್ದಾರರಾಗಿರುವ ತಂಡವನ್ನು ನಾವು ಪ್ರತಿನಿಧಿಸುತ್ತೇವೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ, ಅಪ್ಲಿಕೇಶನ್ಗಳಿಂದ ಮೆಟ್ರಿಕ್ಗಳು, ಲಾಗ್ಗಳು ಮತ್ತು ಈವೆಂಟ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು, ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ವರದಿ ಮಾಡಲು ನಾವು ಜವಾಬ್ದಾರರಾಗಿರುತ್ತೇವೆ. ನಾವು ಪ್ರಸ್ತುತ ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಸರಿಸುಮಾರು ಮೂರು ಸಾವಿರ ಡಾಕರ್ ಕಂಟೇನರ್ಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ, ನಮ್ಮ 50 TB ದೊಡ್ಡ ಡೇಟಾ ಸಂಗ್ರಹಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ ಮತ್ತು ನಮ್ಮ ಮೂಲಸೌಕರ್ಯಗಳ ಸುತ್ತಲೂ ನಿರ್ಮಿಸಲಾದ ವಾಸ್ತುಶಿಲ್ಪದ ಪರಿಹಾರಗಳನ್ನು ಒದಗಿಸುತ್ತೇವೆ: ಕುಬರ್ನೆಟ್ಸ್, ರಾಂಚರ್ ಮತ್ತು ವಿವಿಧ ಸಾರ್ವಜನಿಕ ಕ್ಲೌಡ್ ಪೂರೈಕೆದಾರರು.
ನಮ್ಮ ಪ್ರೇರಣೆ
ಏನು ಉರಿಯುತ್ತಿದೆ? ಯಾರೂ ಉತ್ತರಿಸಲಾರರು. ಒಲೆ ಎಲ್ಲಿದೆ? ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಕಷ್ಟ. ಯಾವಾಗ ಬೆಂಕಿ ಹತ್ತಿಕೊಂಡಿತು? ನೀವು ಕಂಡುಹಿಡಿಯಬಹುದು, ಆದರೆ ತಕ್ಷಣವೇ ಅಲ್ಲ.
ಕೆಲವು ಕಂಟೈನರ್ಗಳು ನಿಂತಿದ್ದರೆ ಮತ್ತೆ ಕೆಲವು ಬಿದ್ದಿವೆ ಏಕೆ? ಯಾವ ಕಂಟೇನರ್ ಅನ್ನು ದೂರುವುದು? ಎಲ್ಲಾ ನಂತರ, ಧಾರಕಗಳ ಹೊರಭಾಗವು ಒಂದೇ ಆಗಿರುತ್ತದೆ, ಆದರೆ ಪ್ರತಿಯೊಂದೂ ಅದರ ಸ್ವಂತ ನಿಯೋವನ್ನು ಹೊಂದಿದೆ.
ನಮ್ಮ ಡೆವಲಪರ್ಗಳು ಸಮರ್ಥ ವ್ಯಕ್ತಿಗಳು. ಅವರು ಕಂಪನಿಗೆ ಲಾಭ ತರುವ ಉತ್ತಮ ಸೇವೆಗಳನ್ನು ಮಾಡುತ್ತಾರೆ. ಆದರೆ ಅಪ್ಲಿಕೇಶನ್ಗಳೊಂದಿಗೆ ಕಂಟೇನರ್ಗಳು ದಾರಿ ತಪ್ಪಿದಾಗ ವಿಫಲತೆಗಳಿವೆ. ಒಂದು ಕಂಟೇನರ್ ಹೆಚ್ಚು CPU ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇನ್ನೊಂದು ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಮೂರನೆಯದು I/O ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ನಾಲ್ಕನೆಯದು ಅದು ಸಾಕೆಟ್ಗಳೊಂದಿಗೆ ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದು ಸಂಪೂರ್ಣವಾಗಿ ಅಸ್ಪಷ್ಟವಾಗಿದೆ. ಇದೆಲ್ಲವೂ ಬೀಳುತ್ತದೆ ಮತ್ತು ಹಡಗು ಮುಳುಗುತ್ತದೆ.
ಏಜೆಂಟ್ಗಳು
ಒಳಗೆ ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ಏಜೆಂಟ್ಗಳನ್ನು ನೇರವಾಗಿ ಪಾತ್ರೆಗಳಲ್ಲಿ ಇರಿಸಲು ನಾವು ನಿರ್ಧರಿಸಿದ್ದೇವೆ.
ಈ ಏಜೆಂಟ್ಗಳು ಕಂಟೇನರ್ಗಳನ್ನು ಪರಸ್ಪರ ಮುರಿಯದಂತಹ ಸ್ಥಿತಿಯಲ್ಲಿ ಇರಿಸುವ ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತವೆ. ಏಜೆಂಟ್ಗಳನ್ನು ಪ್ರಮಾಣೀಕರಿಸಲಾಗಿದೆ, ಮತ್ತು ಇದು ಧಾರಕಗಳ ಸೇವೆಗೆ ಪ್ರಮಾಣಿತ ವಿಧಾನವನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಏಜೆಂಟ್ಗಳು ಲಾಗ್ಗಳನ್ನು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಟ್ಯಾಗ್ ಮಾಡಲಾದ ಮತ್ತು ಥ್ರೊಟಲ್ನಲ್ಲಿ ಒದಗಿಸಬೇಕು. ವ್ಯಾಪಾರ ಅಪ್ಲಿಕೇಶನ್ ದೃಷ್ಟಿಕೋನದಿಂದ ವಿಸ್ತರಿಸಬಹುದಾದ ಪ್ರಮಾಣಿತ ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಅವರು ನಮಗೆ ಒದಗಿಸಬೇಕು.
ವಿಭಿನ್ನ ಚಿತ್ರಗಳನ್ನು (ಡೆಬಿಯನ್, ಆಲ್ಪೈನ್, ಸೆಂಟೋಸ್, ಇತ್ಯಾದಿ) ಬೆಂಬಲಿಸುವ ವಿಭಿನ್ನ ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡಬಹುದಾದ ಕಾರ್ಯಾಚರಣೆ ಮತ್ತು ನಿರ್ವಹಣೆಗಾಗಿ ಏಜೆಂಟ್ಗಳು ಎಂದರೆ ಉಪಯುಕ್ತತೆಗಳು.
ಅಂತಿಮವಾಗಿ, ಏಜೆಂಟ್ಗಳು ಡಾಕರ್ ಫೈಲ್ಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಸರಳ CI/CD ಅನ್ನು ಬೆಂಬಲಿಸಬೇಕು. ಇಲ್ಲದಿದ್ದರೆ, ಹಡಗು ಬೇರ್ಪಡುತ್ತದೆ, ಏಕೆಂದರೆ ಧಾರಕಗಳನ್ನು "ವಕ್ರ" ಹಳಿಗಳ ಉದ್ದಕ್ಕೂ ವಿತರಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ.
ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಗುರಿ ಚಿತ್ರ ಸಾಧನವನ್ನು ನಿರ್ಮಿಸಿ
ಎಲ್ಲವನ್ನೂ ಪ್ರಮಾಣೀಕರಿಸಲು ಮತ್ತು ನಿರ್ವಹಿಸುವಂತೆ ಮಾಡಲು, ಕೆಲವು ರೀತಿಯ ಪ್ರಮಾಣಿತ ನಿರ್ಮಾಣ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅನುಸರಿಸುವ ಅಗತ್ಯವಿದೆ. ಆದ್ದರಿಂದ, ಧಾರಕಗಳ ಮೂಲಕ ಧಾರಕಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ನಾವು ನಿರ್ಧರಿಸಿದ್ದೇವೆ - ಇದು ಪುನರಾವರ್ತನೆಯಾಗಿದೆ.
ಇಲ್ಲಿ ಧಾರಕಗಳನ್ನು ಘನ ಬಾಹ್ಯರೇಖೆಗಳಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಅವರು ವಿತರಣಾ ಕಿಟ್ಗಳನ್ನು ಹಾಕಲು ನಿರ್ಧರಿಸಿದರು ಇದರಿಂದ "ಜೀವನವು ರಾಸ್್ಬೆರ್ರಿಸ್ನಂತೆ ಕಾಣುವುದಿಲ್ಲ." ಇದನ್ನು ಏಕೆ ಮಾಡಲಾಗಿದೆ, ನಾವು ಕೆಳಗೆ ವಿವರಿಸುತ್ತೇವೆ.
ಫಲಿತಾಂಶವು ನಿರ್ಮಾಣ ಸಾಧನವಾಗಿದೆ - ನಿರ್ದಿಷ್ಟ ವಿತರಣಾ ಆವೃತ್ತಿಗಳು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಸ್ಕ್ರಿಪ್ಟ್ ಆವೃತ್ತಿಗಳನ್ನು ಉಲ್ಲೇಖಿಸುವ ಆವೃತ್ತಿ-ನಿರ್ದಿಷ್ಟ ಕಂಟೇನರ್.
ನಾವು ಅದನ್ನು ಹೇಗೆ ಬಳಸುತ್ತೇವೆ? ನಾವು ಕಂಟೇನರ್ ಅನ್ನು ಒಳಗೊಂಡಿರುವ ಡಾಕರ್ ಹಬ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಬಾಹ್ಯ ಅವಲಂಬನೆಗಳನ್ನು ತೊಡೆದುಹಾಕಲು ನಾವು ಅದನ್ನು ನಮ್ಮ ವ್ಯವಸ್ಥೆಯೊಳಗೆ ಪ್ರತಿಬಿಂಬಿಸುತ್ತೇವೆ. ಫಲಿತಾಂಶವು ಹಳದಿ ಬಣ್ಣದಲ್ಲಿ ಗುರುತಿಸಲಾದ ಧಾರಕವಾಗಿದೆ. ಕಂಟೇನರ್ನಲ್ಲಿ ನಮಗೆ ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ವಿತರಣೆಗಳು ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ನಾವು ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ರಚಿಸುತ್ತೇವೆ. ಅದರ ನಂತರ, ನಾವು ಬಳಸಲು ಸಿದ್ಧವಾದ ಚಿತ್ರವನ್ನು ಜೋಡಿಸುತ್ತೇವೆ: ಡೆವಲಪರ್ಗಳು ಕೋಡ್ ಮತ್ತು ತಮ್ಮದೇ ಆದ ಕೆಲವು ವಿಶೇಷ ಅವಲಂಬನೆಗಳನ್ನು ಅದರಲ್ಲಿ ಹಾಕುತ್ತಾರೆ.
ಈ ವಿಧಾನದ ಬಗ್ಗೆ ಏನು ಒಳ್ಳೆಯದು?
- ಮೊದಲನೆಯದಾಗಿ, ಬಿಲ್ಡ್ ಟೂಲ್ಗಳ ಪೂರ್ಣ ಆವೃತ್ತಿ ನಿಯಂತ್ರಣ - ಕಂಟೇನರ್, ಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತು ವಿತರಣಾ ಆವೃತ್ತಿಗಳನ್ನು ನಿರ್ಮಿಸಿ.
- ಎರಡನೆಯದಾಗಿ, ನಾವು ಪ್ರಮಾಣೀಕರಣವನ್ನು ಸಾಧಿಸಿದ್ದೇವೆ: ನಾವು ಟೆಂಪ್ಲೇಟ್ಗಳು, ಮಧ್ಯಂತರ ಮತ್ತು ಬಳಸಲು ಸಿದ್ಧವಾದ ಚಿತ್ರವನ್ನು ಅದೇ ರೀತಿಯಲ್ಲಿ ರಚಿಸುತ್ತೇವೆ.
- ಮೂರನೆಯದಾಗಿ, ಕಂಟೈನರ್ಗಳು ನಮಗೆ ಪೋರ್ಟಬಿಲಿಟಿ ನೀಡುತ್ತವೆ. ಇಂದು ನಾವು ಗಿಟ್ಲ್ಯಾಬ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ ಮತ್ತು ನಾಳೆ ನಾವು ಟೀಮ್ಸಿಟಿ ಅಥವಾ ಜೆಂಕಿನ್ಸ್ಗೆ ಬದಲಾಯಿಸುತ್ತೇವೆ ಮತ್ತು ನಮ್ಮ ಕಂಟೇನರ್ಗಳನ್ನು ಅದೇ ರೀತಿಯಲ್ಲಿ ಚಲಾಯಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.
- ನಾಲ್ಕನೆಯದಾಗಿ, ಅವಲಂಬನೆಗಳನ್ನು ಕಡಿಮೆಗೊಳಿಸುವುದು. ನಾವು ವಿತರಣಾ ಕಿಟ್ಗಳನ್ನು ಕಂಟೇನರ್ನಲ್ಲಿ ಹಾಕಿರುವುದು ಕಾಕತಾಳೀಯವಲ್ಲ, ಏಕೆಂದರೆ ಇದು ಪ್ರತಿ ಬಾರಿ ಇಂಟರ್ನೆಟ್ನಿಂದ ಡೌನ್ಲೋಡ್ ಮಾಡುವುದನ್ನು ತಪ್ಪಿಸಲು ನಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
- ಐದನೆಯದಾಗಿ, ನಿರ್ಮಾಣ ವೇಗ ಹೆಚ್ಚಾಗಿದೆ - ಚಿತ್ರಗಳ ಸ್ಥಳೀಯ ಪ್ರತಿಗಳ ಉಪಸ್ಥಿತಿಯು ಸ್ಥಳೀಯ ಚಿತ್ರ ಇರುವುದರಿಂದ ಡೌನ್ಲೋಡ್ ಮಾಡುವ ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡುವುದನ್ನು ತಪ್ಪಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ನಾವು ನಿಯಂತ್ರಿತ ಮತ್ತು ಹೊಂದಿಕೊಳ್ಳುವ ಅಸೆಂಬ್ಲಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸಾಧಿಸಿದ್ದೇವೆ. ಯಾವುದೇ ಸಂಪೂರ್ಣ ಆವೃತ್ತಿಯ ಕಂಟೈನರ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ನಾವು ಅದೇ ಸಾಧನಗಳನ್ನು ಬಳಸುತ್ತೇವೆ.
ನಮ್ಮ ನಿರ್ಮಾಣ ಕಾರ್ಯವಿಧಾನವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ
ಅಸೆಂಬ್ಲಿಯನ್ನು ಒಂದು ಆಜ್ಞೆಯೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ, ಪ್ರಕ್ರಿಯೆಯನ್ನು ಚಿತ್ರದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ (ಕೆಂಪು ಬಣ್ಣದಲ್ಲಿ ಹೈಲೈಟ್ ಮಾಡಲಾಗಿದೆ). ಡೆವಲಪರ್ ಡಾಕರ್ ಫೈಲ್ ಅನ್ನು ಹೊಂದಿದ್ದಾರೆ (ಹಳದಿ ಬಣ್ಣದಲ್ಲಿ ಹೈಲೈಟ್ ಮಾಡಲಾಗಿದೆ), ನಾವು ಅದನ್ನು ನಿರೂಪಿಸುತ್ತೇವೆ, ಮೌಲ್ಯಗಳೊಂದಿಗೆ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತೇವೆ. ಮತ್ತು ದಾರಿಯುದ್ದಕ್ಕೂ ನಾವು ಹೆಡರ್ಗಳು ಮತ್ತು ಅಡಿಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸುತ್ತೇವೆ - ಇವು ನಮ್ಮ ಏಜೆಂಟ್ಗಳು.
ಶಿರೋಲೇಖವು ಅನುಗುಣವಾದ ಚಿತ್ರಗಳಿಂದ ವಿತರಣೆಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ. ಮತ್ತು ಅಡಿಟಿಪ್ಪಣಿ ನಮ್ಮ ಸೇವೆಗಳನ್ನು ಒಳಗೆ ಸ್ಥಾಪಿಸುತ್ತದೆ, ಕೆಲಸದ ಹೊರೆ, ಲಾಗಿಂಗ್ ಮತ್ತು ಇತರ ಏಜೆಂಟ್ಗಳ ಪ್ರಾರಂಭವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ, ಪ್ರವೇಶ ಬಿಂದುವನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ, ಇತ್ಯಾದಿ.
ಮೇಲ್ವಿಚಾರಕರನ್ನು ಸ್ಥಾಪಿಸಬೇಕೆ ಎಂದು ನಾವು ದೀರ್ಘಕಾಲ ಯೋಚಿಸಿದ್ದೇವೆ. ಕೊನೆಯಲ್ಲಿ, ನಮಗೆ ಅವನ ಅಗತ್ಯವಿದೆ ಎಂದು ನಿರ್ಧರಿಸಿದೆವು. ನಾವು S6 ಅನ್ನು ಆರಿಸಿದ್ದೇವೆ. ಮೇಲ್ವಿಚಾರಕರು ಕಂಟೇನರ್ ನಿರ್ವಹಣೆಯನ್ನು ಒದಗಿಸುತ್ತಾರೆ: ಮುಖ್ಯ ಪ್ರಕ್ರಿಯೆಯು ಕ್ರ್ಯಾಶ್ ಆಗಿದ್ದರೆ ಅದನ್ನು ಸಂಪರ್ಕಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಕಂಟೇನರ್ ಅನ್ನು ಮರುಸೃಷ್ಟಿಸದೆಯೇ ಹಸ್ತಚಾಲಿತ ನಿರ್ವಹಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಲಾಗ್ಗಳು ಮತ್ತು ಮೆಟ್ರಿಕ್ಗಳು ಕಂಟೇನರ್ನಲ್ಲಿ ನಡೆಯುವ ಪ್ರಕ್ರಿಯೆಗಳಾಗಿವೆ. ಅವರನ್ನೂ ಹೇಗಾದರೂ ನಿಯಂತ್ರಿಸಬೇಕು, ಮತ್ತು ನಾವು ಇದನ್ನು ಮೇಲ್ವಿಚಾರಕರ ಸಹಾಯದಿಂದ ಮಾಡುತ್ತೇವೆ. ಅಂತಿಮವಾಗಿ, S6 ಮನೆಗೆಲಸ, ಸಿಗ್ನಲ್ ಸಂಸ್ಕರಣೆ ಮತ್ತು ಇತರ ಕಾರ್ಯಗಳನ್ನು ನೋಡಿಕೊಳ್ಳುತ್ತದೆ.
ನಾವು ವಿಭಿನ್ನ ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ ಸಿಸ್ಟಮ್ಗಳನ್ನು ಬಳಸುವುದರಿಂದ, ನಿರ್ಮಾಣ ಮತ್ತು ಚಾಲನೆಯ ನಂತರ, ಕಂಟೇನರ್ ಅದು ಯಾವ ಪರಿಸರದಲ್ಲಿದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು ಮತ್ತು ಪರಿಸ್ಥಿತಿಗೆ ಅನುಗುಣವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬೇಕು. ಉದಾಹರಣೆಗೆ:
ಇದು ಒಂದು ಚಿತ್ರವನ್ನು ನಿರ್ಮಿಸಲು ಮತ್ತು ಅದನ್ನು ವಿವಿಧ ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಚಲಾಯಿಸಲು ನಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಈ ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ ಸಿಸ್ಟಮ್ನ ನಿಶ್ಚಿತಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಂಡು ಅದನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ.
ಒಂದೇ ಕಂಟೇನರ್ಗಾಗಿ ನಾವು ಡಾಕರ್ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ನಲ್ಲಿ ವಿಭಿನ್ನ ಪ್ರಕ್ರಿಯೆ ಮರಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ:
ಪೇಲೋಡ್ ಅನ್ನು ಎಸ್ 6 ರ ಮೇಲ್ವಿಚಾರಣೆಯಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸಂಗ್ರಾಹಕ ಮತ್ತು ಈವೆಂಟ್ಗಳಿಗೆ ಗಮನ ಕೊಡಿ - ಇವರು ಲಾಗ್ಗಳು ಮತ್ತು ಮೆಟ್ರಿಕ್ಗಳಿಗೆ ಜವಾಬ್ದಾರರಾಗಿರುವ ನಮ್ಮ ಏಜೆಂಟ್ಗಳು. ಕುಬರ್ನೆಟ್ಸ್ ಅವುಗಳನ್ನು ಹೊಂದಿಲ್ಲ, ಆದರೆ ಡಾಕರ್ ಹೊಂದಿದ್ದಾರೆ. ಏಕೆ?
ನಾವು "ಪಾಡ್" (ಇನ್ನು ಮುಂದೆ - ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್) ನ ನಿರ್ದಿಷ್ಟತೆಯನ್ನು ನೋಡಿದರೆ, ಈವೆಂಟ್ ಕಂಟೇನರ್ ಅನ್ನು ಪಾಡ್ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ ಎಂದು ನಾವು ನೋಡುತ್ತೇವೆ, ಇದು ಮೆಟ್ರಿಕ್ಗಳು ಮತ್ತು ಲಾಗ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸುವ ಪ್ರತ್ಯೇಕ ಸಂಗ್ರಾಹಕ ಕಂಟೇನರ್ ಅನ್ನು ಹೊಂದಿದೆ. ನಾವು ಕುಬರ್ನೆಟ್ಸ್ನ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಬಳಸಬಹುದು: ಒಂದು ಪಾಡ್ನಲ್ಲಿ ಕಂಟೇನರ್ಗಳನ್ನು ಒಂದೇ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಮತ್ತು/ಅಥವಾ ನೆಟ್ವರ್ಕ್ ಜಾಗದಲ್ಲಿ ಚಾಲನೆ ಮಾಡುವುದು. ವಾಸ್ತವವಾಗಿ ನಿಮ್ಮ ಏಜೆಂಟ್ಗಳನ್ನು ಪರಿಚಯಿಸಿ ಮತ್ತು ಕೆಲವು ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಿ. ಮತ್ತು ಅದೇ ಕಂಟೇನರ್ ಅನ್ನು ಡಾಕರ್ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿದರೆ, ಅದು ಔಟ್ಪುಟ್ನಂತೆ ಎಲ್ಲಾ ಅದೇ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ಅಂದರೆ, ಏಜೆಂಟ್ಗಳನ್ನು ಆಂತರಿಕವಾಗಿ ಪ್ರಾರಂಭಿಸುವುದರಿಂದ ಲಾಗ್ಗಳು ಮತ್ತು ಮೆಟ್ರಿಕ್ಗಳನ್ನು ತಲುಪಿಸಲು ಇದು ಸಾಧ್ಯವಾಗುತ್ತದೆ.
ಮೆಟ್ರಿಕ್ಗಳು ಮತ್ತು ದಾಖಲೆಗಳು
ಮೆಟ್ರಿಕ್ಗಳು ಮತ್ತು ಲಾಗ್ಗಳನ್ನು ತಲುಪಿಸುವುದು ಸಂಕೀರ್ಣ ಕಾರ್ಯವಾಗಿದೆ. ಆಕೆಯ ನಿರ್ಧಾರದಲ್ಲಿ ಹಲವಾರು ಅಂಶಗಳಿವೆ.
ಮೂಲಸೌಕರ್ಯವನ್ನು ಪೇಲೋಡ್ನ ಕಾರ್ಯಗತಗೊಳಿಸಲು ರಚಿಸಲಾಗಿದೆ, ಮತ್ತು ಲಾಗ್ಗಳ ಸಾಮೂಹಿಕ ವಿತರಣೆಗಾಗಿ ಅಲ್ಲ. ಅಂದರೆ, ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕನಿಷ್ಟ ಕಂಟೇನರ್ ಸಂಪನ್ಮೂಲ ಅಗತ್ಯತೆಗಳೊಂದಿಗೆ ನಿರ್ವಹಿಸಬೇಕು. ನಮ್ಮ ಡೆವಲಪರ್ಗಳಿಗೆ ಸಹಾಯ ಮಾಡಲು ನಾವು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ: "ಡಾಕರ್ ಹಬ್ ಕಂಟೇನರ್ ಅನ್ನು ಪಡೆಯಿರಿ, ಅದನ್ನು ರನ್ ಮಾಡಿ ಮತ್ತು ನಾವು ಲಾಗ್ಗಳನ್ನು ತಲುಪಿಸಬಹುದು."
ಎರಡನೆಯ ಅಂಶವು ಲಾಗ್ಗಳ ಪರಿಮಾಣವನ್ನು ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ. ಹಲವಾರು ಕಂಟೈನರ್ಗಳಲ್ಲಿ ಲಾಗ್ಗಳ ಪರಿಮಾಣದಲ್ಲಿ ಉಲ್ಬಣವು ಸಂಭವಿಸಿದರೆ (ಅಪ್ಲಿಕೇಶನ್ ಲೂಪ್ನಲ್ಲಿ ಸ್ಟಾಕ್-ಟ್ರೇಸ್ ಅನ್ನು ಔಟ್ಪುಟ್ ಮಾಡುತ್ತದೆ), CPU, ಸಂವಹನ ಚಾನಲ್ಗಳು ಮತ್ತು ಲಾಗ್ ಪ್ರೊಸೆಸಿಂಗ್ ಸಿಸ್ಟಮ್ನಲ್ಲಿನ ಹೊರೆ ಹೆಚ್ಚಾಗುತ್ತದೆ ಮತ್ತು ಇದು ಹೋಸ್ಟ್ನ ಕಾರ್ಯಾಚರಣೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ ಹೋಸ್ಟ್ನಲ್ಲಿ ಸಂಪೂರ್ಣ ಮತ್ತು ಇತರ ಕಂಟೈನರ್ಗಳು, ನಂತರ ಕೆಲವೊಮ್ಮೆ ಇದು ಹೋಸ್ಟ್ನ "ಪತನ" ಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಮೂರನೆಯ ಅಂಶವೆಂದರೆ ಪೆಟ್ಟಿಗೆಯ ಹೊರಗೆ ಸಾಧ್ಯವಾದಷ್ಟು ಮೆಟ್ರಿಕ್ಸ್ ಸಂಗ್ರಹ ವಿಧಾನಗಳನ್ನು ಬೆಂಬಲಿಸುವುದು ಅವಶ್ಯಕ. ಫೈಲ್ಗಳನ್ನು ಓದುವುದರಿಂದ ಮತ್ತು ಪ್ರೋಮಿತಿಯಸ್-ಎಂಡ್ಪಾಯಿಂಟ್ನಿಂದ ಪೋಲಿಂಗ್ನಿಂದ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ದಿಷ್ಟ ಪ್ರೋಟೋಕಾಲ್ಗಳನ್ನು ಬಳಸುವವರೆಗೆ.
ಮತ್ತು ಕೊನೆಯ ಅಂಶವೆಂದರೆ ಸಂಪನ್ಮೂಲ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು.
ನಾವು Telegraf ಎಂಬ ಓಪನ್ ಸೋರ್ಸ್ Go ಪರಿಹಾರವನ್ನು ಆಯ್ಕೆ ಮಾಡಿದ್ದೇವೆ. ಇದು ಸಾರ್ವತ್ರಿಕ ಕನೆಕ್ಟರ್ ಆಗಿದ್ದು ಅದು 140 ಕ್ಕೂ ಹೆಚ್ಚು ರೀತಿಯ ಇನ್ಪುಟ್ ಚಾನಲ್ಗಳನ್ನು (ಇನ್ಪುಟ್ ಪ್ಲಗಿನ್ಗಳು) ಮತ್ತು 30 ರೀತಿಯ ಔಟ್ಪುಟ್ ಚಾನಲ್ಗಳನ್ನು (ಔಟ್ಪುಟ್ ಪ್ಲಗಿನ್ಗಳು) ಬೆಂಬಲಿಸುತ್ತದೆ. ನಾವು ಅದನ್ನು ಅಂತಿಮಗೊಳಿಸಿದ್ದೇವೆ ಮತ್ತು ಈಗ ನಾವು ಅದನ್ನು ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು ಉದಾಹರಣೆಯಾಗಿ ಹೇಗೆ ಬಳಸುತ್ತೇವೆ ಎಂದು ಹೇಳುತ್ತೇವೆ.
ಡೆವಲಪರ್ ಕೆಲಸದ ಹೊರೆಯನ್ನು ನಿಯೋಜಿಸುತ್ತಾರೆ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್ ರಚಿಸಲು ವಿನಂತಿಯನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ ಎಂದು ಹೇಳೋಣ. ಈ ಹಂತದಲ್ಲಿ, ಪ್ರತಿ ಪಾಡ್ಗೆ ಕಲೆಕ್ಟರ್ ಎಂಬ ಕಂಟೇನರ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾಗುತ್ತದೆ (ನಾವು ರೂಪಾಂತರ ವೆಬ್ಹೂಕ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ). ಕಲೆಕ್ಟರ್ ನಮ್ಮ ಏಜೆಂಟ್. ಪ್ರಾರಂಭದಲ್ಲಿ, ಈ ಧಾರಕವು ಪ್ರೊಮೆಥಿಯಸ್ ಮತ್ತು ಲಾಗ್ ಸಂಗ್ರಹಣಾ ವ್ಯವಸ್ಥೆಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸ್ವತಃ ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ.
- ಇದನ್ನು ಮಾಡಲು, ಇದು ಪಾಡ್ ಟಿಪ್ಪಣಿಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಅದರ ವಿಷಯವನ್ನು ಅವಲಂಬಿಸಿ, ಪ್ರಮೀಥಿಯಸ್ ಎಂಡ್-ಪಾಯಿಂಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ;
- ಪಾಡ್ ವಿವರಣೆ ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಕಂಟೇನರ್ ಸೆಟ್ಟಿಂಗ್ಗಳ ಆಧಾರದ ಮೇಲೆ, ಲಾಗ್ಗಳನ್ನು ಹೇಗೆ ತಲುಪಿಸಬೇಕು ಎಂಬುದನ್ನು ಇದು ನಿರ್ಧರಿಸುತ್ತದೆ.
ನಾವು ಡಾಕರ್ API ಮೂಲಕ ಲಾಗ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ: ಡೆವಲಪರ್ಗಳು ಅವುಗಳನ್ನು stdout ಅಥವಾ stderr ನಲ್ಲಿ ಇರಿಸಬೇಕಾಗುತ್ತದೆ ಮತ್ತು ಕಲೆಕ್ಟರ್ ಅದನ್ನು ವಿಂಗಡಿಸುತ್ತಾರೆ. ಸಂಭವನೀಯ ಹೋಸ್ಟ್ ಓವರ್ಲೋಡ್ ಅನ್ನು ತಡೆಯಲು ಸ್ವಲ್ಪ ವಿಳಂಬದೊಂದಿಗೆ ಲಾಗ್ಗಳನ್ನು ತುಂಡುಗಳಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ.
ಕಂಟೈನರ್ಗಳಲ್ಲಿ ಕೆಲಸದ ಹೊರೆ ನಿದರ್ಶನಗಳಲ್ಲಿ (ಪ್ರಕ್ರಿಯೆಗಳು) ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಎಲ್ಲವನ್ನೂ ಟ್ಯಾಗ್ ಮಾಡಲಾಗಿದೆ: ನೇಮ್ಸ್ಪೇಸ್, ಅಡಿಯಲ್ಲಿ, ಮತ್ತು ಹೀಗೆ, ಮತ್ತು ನಂತರ ಪ್ರೊಮೆಥಿಯಸ್ ಸ್ವರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ - ಮತ್ತು ಸಂಗ್ರಹಣೆಗೆ ಲಭ್ಯವಾಗುತ್ತದೆ (ಲಾಗ್ಗಳನ್ನು ಹೊರತುಪಡಿಸಿ). ನಾವು ಲಾಗ್ಗಳು, ಮೆಟ್ರಿಕ್ಗಳು ಮತ್ತು ಈವೆಂಟ್ಗಳನ್ನು ಕಾಫ್ಕಾಗೆ ಕಳುಹಿಸುತ್ತೇವೆ ಮತ್ತು ಇನ್ನಷ್ಟು:
- ಲಾಗ್ಗಳು ಗ್ರೇಲಾಗ್ನಲ್ಲಿ ಲಭ್ಯವಿದೆ (ದೃಶ್ಯ ವಿಶ್ಲೇಷಣೆಗಾಗಿ);
- ಲಾಗ್ಗಳು, ಮೆಟ್ರಿಕ್ಗಳು, ಈವೆಂಟ್ಗಳನ್ನು ದೀರ್ಘಾವಧಿಯ ಸಂಗ್ರಹಣೆಗಾಗಿ ಕ್ಲಿಕ್ಹೌಸ್ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.
AWS ನಲ್ಲಿ ಎಲ್ಲವೂ ಒಂದೇ ರೀತಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ನಾವು ಮಾತ್ರ ಕ್ಲೌಡ್ವಾಚ್ನೊಂದಿಗೆ ಕಾಫ್ಕಾದೊಂದಿಗೆ ಗ್ರೇಲಾಗ್ ಅನ್ನು ಬದಲಾಯಿಸುತ್ತೇವೆ. ನಾವು ಅಲ್ಲಿ ಲಾಗ್ಗಳನ್ನು ಕಳುಹಿಸುತ್ತೇವೆ ಮತ್ತು ಎಲ್ಲವೂ ತುಂಬಾ ಅನುಕೂಲಕರವಾಗಿರುತ್ತದೆ: ಅವು ಯಾವ ಕ್ಲಸ್ಟರ್ ಮತ್ತು ಕಂಟೇನರ್ಗೆ ಸೇರಿವೆ ಎಂಬುದು ತಕ್ಷಣವೇ ಸ್ಪಷ್ಟವಾಗುತ್ತದೆ. Google Stackdriver ಗೆ ಇದು ನಿಜವಾಗಿದೆ. ಅಂದರೆ, ನಮ್ಮ ಸ್ಕೀಮ್ ಕಾಫ್ಕಾ ಮತ್ತು ಕ್ಲೌಡ್ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ನಾವು ಪಾಡ್ಗಳೊಂದಿಗೆ ಕುಬರ್ನೆಟ್ಗಳನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ, ಯೋಜನೆಯು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ, ಆದರೆ ಇದು ಅದೇ ತತ್ವಗಳ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಅದೇ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಕಂಟೇನರ್ ಒಳಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಅವುಗಳನ್ನು S6 ಬಳಸಿ ಆಯೋಜಿಸಲಾಗುತ್ತದೆ. ಒಂದೇ ಧಾರಕದಲ್ಲಿ ಒಂದೇ ರೀತಿಯ ಪ್ರಕ್ರಿಯೆಗಳು ನಡೆಯುತ್ತಿವೆ.
ಪರಿಣಾಮವಾಗಿ,
ಲಾಗ್ಗಳು ಮತ್ತು ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಮತ್ತು ವಿತರಿಸುವ ಆಯ್ಕೆಗಳೊಂದಿಗೆ ಚಿತ್ರಗಳನ್ನು ನಿರ್ಮಿಸಲು ಮತ್ತು ಪ್ರಾರಂಭಿಸಲು ನಾವು ಸಂಪೂರ್ಣ ಪರಿಹಾರವನ್ನು ರಚಿಸಿದ್ದೇವೆ:
- ಚಿತ್ರಗಳನ್ನು ಜೋಡಿಸಲು ನಾವು ಪ್ರಮಾಣಿತ ವಿಧಾನವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದೇವೆ ಮತ್ತು ಅದರ ಆಧಾರದ ಮೇಲೆ ನಾವು CI ಟೆಂಪ್ಲೇಟ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದೇವೆ;
- ಡೇಟಾ ಸಂಗ್ರಹಣೆ ಏಜೆಂಟ್ಗಳು ನಮ್ಮ ಟೆಲಿಗ್ರಾಫ್ ವಿಸ್ತರಣೆಗಳಾಗಿವೆ. ಉತ್ಪಾದನೆಯಲ್ಲಿ ನಾವು ಅವುಗಳನ್ನು ಚೆನ್ನಾಗಿ ಪರೀಕ್ಷಿಸಿದ್ದೇವೆ;
- ಪಾಡ್ಗಳಲ್ಲಿ ಏಜೆಂಟ್ಗಳೊಂದಿಗೆ ಧಾರಕಗಳನ್ನು ಅಳವಡಿಸಲು ನಾವು ರೂಪಾಂತರ ವೆಬ್ಹೂಕ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ;
- ಕುಬರ್ನೆಟ್ಸ್/ರಾಂಚರ್ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಸಂಯೋಜಿಸಲಾಗಿದೆ;
- ನಾವು ಒಂದೇ ಕಂಟೇನರ್ಗಳನ್ನು ವಿಭಿನ್ನ ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು ಮತ್ತು ನಾವು ನಿರೀಕ್ಷಿಸುವ ಫಲಿತಾಂಶವನ್ನು ಪಡೆಯಬಹುದು;
- ಸಂಪೂರ್ಣ ಡೈನಾಮಿಕ್ ಕಂಟೇನರ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ.
ಸಹ ಲೇಖಕ: ಇಲ್ಯಾ ಪ್ರುಡ್ನಿಕೋವ್
ಮೂಲ: www.habr.com