ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1

ಸೂಚನೆ. ಅನುವಾದ.: ಮೈಕ್ರೊ ಸರ್ವೀಸ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಅನುಸರಿಸುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಆಧುನಿಕ ಮೂಲಸೌಕರ್ಯದಲ್ಲಿ ಸೇವಾ ಮೆಶ್‌ಗಳು ಖಂಡಿತವಾಗಿಯೂ ಸೂಕ್ತ ಪರಿಹಾರವಾಗಿದೆ. Istio ಅನೇಕ DevOps ಇಂಜಿನಿಯರ್‌ಗಳ ತುಟಿಯಲ್ಲಿದ್ದರೂ, ಇದು ಸಾಕಷ್ಟು ಹೊಸ ಉತ್ಪನ್ನವಾಗಿದೆ, ಅದು ಒದಗಿಸುವ ಸಾಮರ್ಥ್ಯಗಳ ವಿಷಯದಲ್ಲಿ ಸಮಗ್ರವಾಗಿದ್ದರೂ, ಪರಿಚಿತವಾಗಲು ಗಮನಾರ್ಹ ಸಮಯ ಬೇಕಾಗಬಹುದು. ದೂರಸಂಪರ್ಕ ಕಂಪನಿ ಆರೆಂಜ್ ನೆಟ್‌ವರ್ಕ್ಸ್‌ನಲ್ಲಿ ದೊಡ್ಡ ಕ್ಲೈಂಟ್‌ಗಳಿಗೆ ಕ್ಲೌಡ್ ಕಂಪ್ಯೂಟಿಂಗ್‌ಗೆ ಜವಾಬ್ದಾರರಾಗಿರುವ ಜರ್ಮನ್ ಇಂಜಿನಿಯರ್ ರಿನಾರ್ ಮಲೋಕು, ಇಸ್ಟಿಯೊಗೆ ತ್ವರಿತವಾಗಿ ಮತ್ತು ಆಳವಾಗಿ ಧುಮುಕಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಅದ್ಭುತವಾದ ವಸ್ತುಗಳ ಸರಣಿಯನ್ನು ಬರೆದಿದ್ದಾರೆ. ಇಸ್ಟಿಯೊ ಸಾಮಾನ್ಯವಾಗಿ ಏನು ಮಾಡಬಹುದು ಮತ್ತು ನಿಮ್ಮ ಸ್ವಂತ ಕಣ್ಣುಗಳಿಂದ ನೀವು ಅದನ್ನು ಹೇಗೆ ತ್ವರಿತವಾಗಿ ನೋಡಬಹುದು ಎಂಬುದರ ಕುರಿತು ಅವನು ತನ್ನ ಕಥೆಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತಾನೆ.

ಇಸ್ಟಿಯೊ — Google, IBM ಮತ್ತು Lyft ನ ತಂಡಗಳ ಸಹಯೋಗದಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾದ ಓಪನ್ ಸೋರ್ಸ್ ಯೋಜನೆ. ಇದು ಮೈಕ್ರೊ ಸರ್ವೀಸ್-ಆಧಾರಿತ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಉದ್ಭವಿಸುವ ಸಂಕೀರ್ಣತೆಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ:

  • ಸಂಚಾರ ನಿರ್ವಹಣೆ: ಕಾಲಾವಧಿಗಳು, ಮರುಪ್ರಯತ್ನಗಳು, ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸಿಂಗ್;
  • ಭದ್ರತೆ: ಅಂತಿಮ ಬಳಕೆದಾರ ದೃಢೀಕರಣ ಮತ್ತು ಅಧಿಕಾರ;
  • ಗಮನಿಸುವಿಕೆ: ಪತ್ತೆಹಚ್ಚುವಿಕೆ, ಮೇಲ್ವಿಚಾರಣೆ, ಲಾಗಿಂಗ್.

ಇವೆಲ್ಲವನ್ನೂ ಅಪ್ಲಿಕೇಶನ್ ಮಟ್ಟದಲ್ಲಿ ಪರಿಹರಿಸಬಹುದು, ಆದರೆ ಅದರ ನಂತರ ನಿಮ್ಮ ಸೇವೆಗಳು ಇನ್ನು ಮುಂದೆ "ಮೈಕ್ರೋ" ಆಗಿರುವುದಿಲ್ಲ. ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಎಲ್ಲಾ ಹೆಚ್ಚುವರಿ ಪ್ರಯತ್ನಗಳು ಕಂಪನಿಯ ಸಂಪನ್ಮೂಲಗಳ ವ್ಯರ್ಥವಾಗಿದ್ದು ಅದನ್ನು ನೇರವಾಗಿ ವ್ಯಾಪಾರ ಮೌಲ್ಯಕ್ಕಾಗಿ ಬಳಸಬಹುದಾಗಿದೆ. ಒಂದು ಉದಾಹರಣೆಯನ್ನು ನೋಡೋಣ:

ಪ್ರಾಜೆಕ್ಟ್ ಮ್ಯಾನೇಜರ್: ಪ್ರತಿಕ್ರಿಯೆ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸೇರಿಸಲು ಎಷ್ಟು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ?
ಡೆವಲಪರ್: ಎರಡು ಸ್ಪ್ರಿಂಟ್‌ಗಳು.

ಸಂಸದ: ಏನು?.. ಇದು ಕೇವಲ CRUD!
ಆರ್: CRUD ಮಾಡುವುದು ಸುಲಭವಾದ ಭಾಗವಾಗಿದೆ, ಆದರೆ ನಾವು ಇನ್ನೂ ಬಳಕೆದಾರರು ಮತ್ತು ಸೇವೆಗಳನ್ನು ದೃಢೀಕರಿಸುವ ಮತ್ತು ದೃಢೀಕರಿಸುವ ಅಗತ್ಯವಿದೆ. ನೆಟ್ವರ್ಕ್ ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಕಾರಣ, ನೀವು ಪುನರಾವರ್ತಿತ ವಿನಂತಿಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾಗುತ್ತದೆ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಮಾದರಿ ಗ್ರಾಹಕರಲ್ಲಿ. ಅಲ್ಲದೆ, ಸಂಪೂರ್ಣ ಸಿಸ್ಟಮ್ ಕ್ರ್ಯಾಶ್ ಆಗುವುದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ನಿಮಗೆ ಸಮಯ ಮೀರುತ್ತದೆ ಮತ್ತು ಬಲ್ಕ್‌ಹೆಡ್‌ಗಳು (ಎರಡೂ ಉಲ್ಲೇಖಿಸಲಾದ ಮಾದರಿಗಳ ಕುರಿತು ಹೆಚ್ಚಿನ ವಿವರಗಳಿಗಾಗಿ, ಲೇಖನದಲ್ಲಿ ನಂತರ ನೋಡಿ - ಅಂದಾಜು. ಅನುವಾದ.), ಮತ್ತು ಸಮಸ್ಯೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು, ಮೇಲ್ವಿಚಾರಣೆ, ಪತ್ತೆಹಚ್ಚುವಿಕೆ, […]

ಸಂಸದ: ಓಹ್, ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಉತ್ಪನ್ನ ಸೇವೆಗೆ ಸೇರಿಸೋಣ.

ಕಲ್ಪನೆಯು ಸ್ಪಷ್ಟವಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ: ಒಂದು ಸೇವೆಯನ್ನು ಸೇರಿಸಲು ಅಗತ್ಯವಿರುವ ಹಂತಗಳು ಮತ್ತು ಪ್ರಯತ್ನಗಳ ಪ್ರಮಾಣವು ಅಗಾಧವಾಗಿದೆ. ಈ ಲೇಖನದಲ್ಲಿ, ಸೇವೆಗಳಿಂದ ಮೇಲೆ ತಿಳಿಸಲಾದ ಎಲ್ಲಾ ಸಂಕೀರ್ಣತೆಯನ್ನು (ಅದು ವ್ಯಾಪಾರದ ತರ್ಕಕ್ಕೆ ಉದ್ದೇಶಿಸಿಲ್ಲ) Istio ಹೇಗೆ ತೆಗೆದುಹಾಕುತ್ತದೆ ಎಂಬುದನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1

ಹೇಳಿಕೆಯನ್ನು: ಈ ಲೇಖನವು ನೀವು ಕುಬರ್ನೆಟ್ಸ್ ಬಗ್ಗೆ ಕೆಲಸ ಮಾಡುವ ಜ್ಞಾನವನ್ನು ಹೊಂದಿದ್ದೀರಿ ಎಂದು ಊಹಿಸುತ್ತದೆ. ಇಲ್ಲದಿದ್ದರೆ, ನಾನು ಓದುವುದನ್ನು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ ಕುಬರ್ನೆಟ್ಸ್ಗೆ ನನ್ನ ಪರಿಚಯ ಮತ್ತು ಅದರ ನಂತರ ಮಾತ್ರ ಈ ವಿಷಯವನ್ನು ಓದುವುದನ್ನು ಮುಂದುವರಿಸಿ.

ಇಷ್ಟಿಯೋ ಕಲ್ಪನೆ

ಇಸ್ಟಿಯೊ ಇಲ್ಲದ ಜಗತ್ತಿನಲ್ಲಿ, ಒಂದು ಸೇವೆಯು ಇನ್ನೊಂದಕ್ಕೆ ನೇರ ವಿನಂತಿಗಳನ್ನು ಮಾಡುತ್ತದೆ ಮತ್ತು ವೈಫಲ್ಯದ ಸಂದರ್ಭದಲ್ಲಿ, ಸೇವೆಯು ಅದನ್ನು ಸ್ವತಃ ನಿರ್ವಹಿಸಬೇಕು: ಹೊಸ ಪ್ರಯತ್ನವನ್ನು ಮಾಡಿ, ಸಮಯ ಮೀರುವಿಕೆಯನ್ನು ಒದಗಿಸಿ, ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ತೆರೆಯಿರಿ, ಇತ್ಯಾದಿ.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ಕುಬರ್ನೆಟ್ಸ್ನಲ್ಲಿ ನೆಟ್ವರ್ಕ್ ಟ್ರಾಫಿಕ್

ಇಸ್ಟಿಯೊ ವಿಶೇಷ ಪರಿಹಾರವನ್ನು ನೀಡುತ್ತದೆ, ಸೇವೆಗಳಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಬೇರ್ಪಟ್ಟಿದೆ ಮತ್ತು ನೆಟ್‌ವರ್ಕ್ ಸಂವಹನದಲ್ಲಿ ಹಸ್ತಕ್ಷೇಪ ಮಾಡುವ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಮತ್ತು ಆದ್ದರಿಂದ ಇದು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ:

  • ದೋಷಸಹಿಷ್ಣುತೆ: ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿನ ಸ್ಥಿತಿ ಕೋಡ್ ಅನ್ನು ಆಧರಿಸಿ, ವಿನಂತಿಯು ವಿಫಲವಾಗಿದೆಯೇ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಮರು-ಎಕ್ಸಿಕ್ಯೂಟ್ ಮಾಡುತ್ತದೆ.
  • ಕ್ಯಾನರಿ ರೋಲ್‌ಔಟ್‌ಗಳು: ಸೇವೆಯ ಹೊಸ ಆವೃತ್ತಿಗೆ ವಿನಂತಿಗಳ ನಿಗದಿತ ಶೇಕಡಾವಾರು ಮಾತ್ರ ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ.
  • ಮಾನಿಟರಿಂಗ್ ಮತ್ತು ಮೆಟ್ರಿಕ್ಸ್: ಸೇವೆಯು ಪ್ರತಿಕ್ರಿಯಿಸಲು ಎಷ್ಟು ಸಮಯ ತೆಗೆದುಕೊಂಡಿತು?
  • ಪತ್ತೆಹಚ್ಚುವಿಕೆ ಮತ್ತು ವೀಕ್ಷಣೆ: ಪ್ರತಿ ವಿನಂತಿಗೆ ವಿಶೇಷ ಹೆಡರ್‌ಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ ಮತ್ತು ಕ್ಲಸ್ಟರ್‌ನಾದ್ಯಂತ ಅವುಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ.
  • ಭದ್ರತೆ: JWT ಟೋಕನ್ ಅನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ, ಬಳಕೆದಾರರನ್ನು ದೃಢೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಅಧಿಕೃತಗೊಳಿಸುತ್ತದೆ.

ಇವುಗಳು ನಿಮ್ಮನ್ನು ಒಳಸಂಚು ಮಾಡಲು ಕೆಲವು ಸಾಧ್ಯತೆಗಳು (ನಿಜವಾಗಿಯೂ ಕೆಲವೇ!) ಈಗ ತಾಂತ್ರಿಕ ವಿವರಗಳಿಗೆ ಧುಮುಕೋಣ!

ಇಸ್ಟಿಯೊ ವಾಸ್ತುಶಿಲ್ಪ

Istio ಎಲ್ಲಾ ನೆಟ್‌ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಪ್ರತಿಬಂಧಿಸುತ್ತದೆ ಮತ್ತು ಅದಕ್ಕೆ ನಿಯಮಗಳ ಒಂದು ಸೆಟ್ ಅನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ, ಪ್ರತಿ ಪಾಡ್‌ಗೆ ಸೈಡ್‌ಕಾರ್ ಕಂಟೇನರ್ ರೂಪದಲ್ಲಿ ಸ್ಮಾರ್ಟ್ ಪ್ರಾಕ್ಸಿಯನ್ನು ಸೇರಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಪ್ರಾಕ್ಸಿಗಳು ರೂಪ a ಡೇಟಾ ಪ್ಲೇನ್, ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್.

ಡೇಟಾ ಪ್ಲೇನ್

ಪಾಡ್‌ಗಳಲ್ಲಿ ಸೇರಿಸಲಾದ ಪ್ರಾಕ್ಸಿಗಳು ನಮಗೆ ಅಗತ್ಯವಿರುವ ಅವಶ್ಯಕತೆಗಳನ್ನು ಸುಲಭವಾಗಿ ಪೂರೈಸಲು ಇಸ್ಟಿಯೊಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಮರುಪ್ರಯತ್ನ ಮತ್ತು ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಕಾರ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸೋಣ.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ರಾಯಭಾರಿಯಲ್ಲಿ ಮರುಪ್ರಯತ್ನಗಳು ಮತ್ತು ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕಿಂಗ್ ಅನ್ನು ಹೇಗೆ ಅಳವಡಿಸಲಾಗಿದೆ

ಸಂಕ್ಷಿಪ್ತವಾಗಿ:

  1. ಪ್ರತಿನಿಧಿ (ನಾವು ಸೈಡ್‌ಕಾರ್ ಕಂಟೇನರ್‌ನಲ್ಲಿರುವ ಪ್ರಾಕ್ಸಿ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತಿದ್ದೇವೆ, ಅದನ್ನು ವಿತರಿಸಲಾಗುತ್ತದೆ ಪ್ರತ್ಯೇಕ ಉತ್ಪನ್ನ - ಅಂದಾಜು ಅನುವಾದ.) ಸೇವೆ B ಯ ಮೊದಲ ನಿದರ್ಶನಕ್ಕೆ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ ಮತ್ತು ವಿಫಲಗೊಳ್ಳುತ್ತದೆ.
  2. ರಾಯಭಾರಿ ಸೈಡ್‌ಕಾರ್ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುತ್ತಾನೆ (ಮರುಪ್ರಯತ್ನಿಸಿ). (1)
  3. ವಿನಂತಿಯು ವಿಫಲಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಕರೆದ ಪ್ರಾಕ್ಸಿಗೆ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ.
  4. ಇದು ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ ಮತ್ತು ನಂತರದ ವಿನಂತಿಗಳಿಗಾಗಿ ಮುಂದಿನ ಸೇವೆಯನ್ನು ಕರೆಯುತ್ತದೆ. (2)

ಇದರರ್ಥ ನೀವು ಇನ್ನೊಂದು ಮರುಪ್ರಯತ್ನ ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಬೇಕಾಗಿಲ್ಲ, ನೀವು ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕಿಂಗ್ ಮತ್ತು ಸರ್ವಿಸ್ ಡಿಸ್ಕವರಿಯನ್ನು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಲ್ಲಿ X, Y ಅಥವಾ Z ನಲ್ಲಿ ನಿಮ್ಮ ಸ್ವಂತ ಅನುಷ್ಠಾನವನ್ನು ಮಾಡಬೇಕಾಗಿಲ್ಲ. ಇದೆಲ್ಲವೂ ಮತ್ತು ಹೆಚ್ಚಿನವುಗಳು ಬಾಕ್ಸ್‌ನ ಹೊರಗೆ ಲಭ್ಯವಿದೆ ಇಸ್ಟಿಯೊದಲ್ಲಿ ಮತ್ತು ಅಗತ್ಯವಿಲ್ಲ ಇಲ್ಲ ಕೋಡ್ನಲ್ಲಿ ಬದಲಾವಣೆಗಳು.

ಗ್ರೇಟ್! ಈಗ ನೀವು ಇಸ್ಟಿಯೊ ಜೊತೆ ಸಮುದ್ರಯಾನ ಮಾಡಲು ಬಯಸಬಹುದು, ಆದರೆ ನಿಮಗೆ ಇನ್ನೂ ಕೆಲವು ಅನುಮಾನಗಳಿವೆ, ಮುಕ್ತ ಪ್ರಶ್ನೆಗಳಿವೆ. ಇದು ಜೀವನದ ಎಲ್ಲಾ ಸಂದರ್ಭಗಳಿಗೆ ಸಾರ್ವತ್ರಿಕ ಪರಿಹಾರವಾಗಿದ್ದರೆ, ನಿಮಗೆ ಸ್ವಾಭಾವಿಕ ಅನುಮಾನವಿದೆ: ಎಲ್ಲಾ ನಂತರ, ವಾಸ್ತವದಲ್ಲಿ ಅಂತಹ ಎಲ್ಲಾ ಪರಿಹಾರಗಳು ಯಾವುದೇ ಪ್ರಕರಣಕ್ಕೆ ಸೂಕ್ತವಲ್ಲ.

ಮತ್ತು ಅಂತಿಮವಾಗಿ ನೀವು ಕೇಳುತ್ತೀರಿ: "ಇದು ಗ್ರಾಹಕೀಯಗೊಳಿಸಬಹುದೇ?"

ಈಗ ನೀವು ಸಮುದ್ರಯಾನಕ್ಕೆ ಸಿದ್ಧರಾಗಿರುವಿರಿ, ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್‌ನ ಪರಿಚಯ ಮಾಡಿಕೊಳ್ಳೋಣ.

ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್

ಇದು ಮೂರು ಘಟಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ಪೈಲಟ್, ಮಿಕ್ಸರ್ и ಸಿಟಾಡೆಲ್, ಇದು ಟ್ರಾಫಿಕ್ ಮಾರ್ಗ, ನೀತಿಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲು ಮತ್ತು ಟೆಲಿಮೆಟ್ರಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ರಾಯಭಾರಿಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಕ್ರಮಬದ್ಧವಾಗಿ, ಎಲ್ಲವೂ ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ಡೇಟಾ ಪ್ಲೇನ್‌ನೊಂದಿಗೆ ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್‌ನ ಪರಸ್ಪರ ಕ್ರಿಯೆ

ದೂತರನ್ನು (ಅಂದರೆ ಡೇಟಾ ಪ್ಲೇನ್) ಬಳಸಿಕೊಂಡು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ ಕುಬರ್ನೆಟ್ಸ್ CRD (ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲ ವ್ಯಾಖ್ಯಾನಗಳು) ಇಸ್ಟಿಯೊದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ ಮತ್ತು ನಿರ್ದಿಷ್ಟವಾಗಿ ಈ ಉದ್ದೇಶಕ್ಕಾಗಿ ಉದ್ದೇಶಿಸಲಾಗಿದೆ. ಇದರ ಅರ್ಥವೇನೆಂದರೆ, ಅವು ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಪರಿಚಿತ ಸಿಂಟ್ಯಾಕ್ಸ್‌ನೊಂದಿಗೆ ಮತ್ತೊಂದು ಸಂಪನ್ಮೂಲವಾಗಿ ಗೋಚರಿಸುತ್ತವೆ. ಒಮ್ಮೆ ರಚಿಸಿದ ನಂತರ, ಈ ಸಂಪನ್ಮೂಲವನ್ನು ನಿಯಂತ್ರಣ ಸಮತಲದಿಂದ ಎತ್ತಿಕೊಂಡು ರಾಯಭಾರಿಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ.

ಇಸ್ಟಿಯೊಗೆ ಸೇವೆಗಳ ಸಂಬಂಧ

ನಾವು ಸೇವೆಗಳಿಗೆ ಇಸ್ಟಿಯೊ ಸಂಬಂಧವನ್ನು ವಿವರಿಸಿದ್ದೇವೆ, ಆದರೆ ರಿವರ್ಸ್ ಅಲ್ಲ: ಸೇವೆಗಳು ಇಸ್ಟಿಯೊಗೆ ಹೇಗೆ ಸಂಬಂಧಿಸಿವೆ?

ಪ್ರಾಮಾಣಿಕವಾಗಿ ಹೇಳಬೇಕೆಂದರೆ, "ನೀರು ಎಂದರೆ ಏನು?" ಎಂದು ತಮ್ಮನ್ನು ತಾವು ಕೇಳಿಕೊಂಡಾಗ, ಮೀನುಗಳು ನೀರಿನಂತೆ ಇಸ್ಟಿಯೋನ ಉಪಸ್ಥಿತಿಯ ಬಗ್ಗೆ ಸೇವೆಗಳು ತಿಳಿದಿರುತ್ತವೆ.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ವಿವರಣೆ ವಿಕ್ಟೋರಿಯಾ ಡಿಮಿತ್ರಕೋಪೌಲೋಸ್:- ನೀವು ನೀರನ್ನು ಹೇಗೆ ಇಷ್ಟಪಡುತ್ತೀರಿ? - ಹೇಗಾದರೂ ನೀರು ಎಂದರೇನು?

ಹೀಗಾಗಿ, ನೀವು ಕೆಲಸ ಮಾಡುವ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು ಮತ್ತು ಇಸ್ಟಿಯೊ ಘಟಕಗಳನ್ನು ನಿಯೋಜಿಸಿದ ನಂತರ, ಅದರಲ್ಲಿರುವ ಸೇವೆಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತವೆ ಮತ್ತು ಈ ಘಟಕಗಳನ್ನು ತೆಗೆದುಹಾಕಿದ ನಂತರ, ಎಲ್ಲವೂ ಮತ್ತೆ ಚೆನ್ನಾಗಿರುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ ನೀವು ಇಸ್ಟಿಯೊ ಒದಗಿಸಿದ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತೀರಿ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿದೆ.

ಸಾಕಷ್ಟು ಸಿದ್ಧಾಂತ - ಈ ಜ್ಞಾನವನ್ನು ಆಚರಣೆಗೆ ತರೋಣ!

ಆಚರಣೆಯಲ್ಲಿ ಇಸ್ಟಿಯೊ

Istio ಗೆ ಕನಿಷ್ಠ 4 vCPU ಗಳು ಮತ್ತು 8 GB RAM ಲಭ್ಯವಿರುವ ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್ ಅಗತ್ಯವಿದೆ. ಕ್ಲಸ್ಟರ್ ಅನ್ನು ತ್ವರಿತವಾಗಿ ಹೊಂದಿಸಲು ಮತ್ತು ಲೇಖನದ ಸೂಚನೆಗಳನ್ನು ಅನುಸರಿಸಲು, ಹೊಸ ಬಳಕೆದಾರರನ್ನು ನೀಡುವ Google ಕ್ಲೌಡ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಬಳಸಲು ನಾನು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ ಉಚಿತ $300.

ಕ್ಲಸ್ಟರ್ ಅನ್ನು ರಚಿಸಿದ ನಂತರ ಮತ್ತು ಕನ್ಸೋಲ್ ಉಪಯುಕ್ತತೆಯ ಮೂಲಕ ಕುಬರ್ನೆಟ್ಸ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ನಂತರ, ನೀವು ಹೆಲ್ಮ್ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಮೂಲಕ ಇಸ್ಟಿಯೊವನ್ನು ಸ್ಥಾಪಿಸಬಹುದು.

ಹೆಲ್ಮ್ ಸ್ಥಾಪನೆ

ವಿವರಿಸಿದಂತೆ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಹೆಲ್ಮ್ ಕ್ಲೈಂಟ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ ಅಧಿಕೃತ ದಸ್ತಾವೇಜನ್ನು. ಮುಂದಿನ ವಿಭಾಗದಲ್ಲಿ Istio ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಟೆಂಪ್ಲೇಟ್‌ಗಳನ್ನು ರಚಿಸಲು ನಾವು ಇದನ್ನು ಬಳಸುತ್ತೇವೆ.

ಇಸ್ಟಿಯೊವನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ

ಇಸ್ಟಿಯೊ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ ಇತ್ತೀಚಿನ ಬಿಡುಗಡೆ (1.0.5 ಆವೃತ್ತಿಗೆ ಮೂಲ ಲೇಖಕರ ಲಿಂಕ್ ಅನ್ನು ಪ್ರಸ್ತುತ ಒಂದಕ್ಕೆ ಬದಲಾಯಿಸಲಾಗಿದೆ, ಅಂದರೆ 1.0.6 - ಅಂದಾಜು. ಅನುವಾದ.), ಒಂದು ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ವಿಷಯಗಳನ್ನು ಹೊರತೆಗೆಯಿರಿ, ಅದನ್ನು ನಾನು ಇನ್ನು ಮುಂದೆ ಕರೆಯುತ್ತೇನೆ [istio-resources].

Istio ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸುಲಭವಾಗಿ ಗುರುತಿಸಲು, K8s ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ನೇಮ್‌ಸ್ಪೇಸ್ ಅನ್ನು ರಚಿಸಿ istio-system:

$ kubectl create namespace istio-system

ಡೈರೆಕ್ಟರಿಗೆ ಹೋಗುವ ಮೂಲಕ ಅನುಸ್ಥಾಪನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ [istio-resources] ಮತ್ತು ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿ:

$ helm template install/kubernetes/helm/istio 
  --set global.mtls.enabled=false 
  --set tracing.enabled=true 
  --set kiali.enabled=true 
  --set grafana.enabled=true 
  --namespace istio-system > istio.yaml

ಈ ಆಜ್ಞೆಯು ಇಸ್ಟಿಯೊದ ಪ್ರಮುಖ ಘಟಕಗಳನ್ನು ಫೈಲ್‌ಗೆ ಔಟ್‌ಪುಟ್ ಮಾಡುತ್ತದೆ istio.yaml. ಕೆಳಗಿನ ನಿಯತಾಂಕಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೂಲಕ ನಾವು ಪ್ರಮಾಣಿತ ಟೆಂಪ್ಲೇಟ್ ಅನ್ನು ನಮಗೆ ಸರಿಹೊಂದುವಂತೆ ಮಾರ್ಪಡಿಸಿದ್ದೇವೆ:

  • global.mtls.enabled ಸ್ಥಾಪಿಸಲಾಗಿದೆ false (ಅಂದರೆ mTLS ದೃಢೀಕರಣವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ - ಅಂದಾಜು.)ನಮ್ಮ ಡೇಟಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸರಳಗೊಳಿಸಲು;
  • tracing.enabled ಜೇಗರ್ ಬಳಸಿಕೊಂಡು ವಿನಂತಿಯನ್ನು ಪತ್ತೆಹಚ್ಚುವಿಕೆಯನ್ನು ಒಳಗೊಂಡಿದೆ;
  • kiali.enabled ಸೇವೆಗಳು ಮತ್ತು ಸಂಚಾರವನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಕಿಯಾಲಿಯನ್ನು ಕ್ಲಸ್ಟರ್‌ಗೆ ಸ್ಥಾಪಿಸುತ್ತದೆ;
  • grafana.enabled ಸಂಗ್ರಹಿಸಿದ ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಗ್ರಾಫನಾವನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ.

ಆಜ್ಞೆಯೊಂದಿಗೆ ರಚಿಸಲಾದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸೋಣ:

$ kubectl apply -f istio.yaml

ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಇಸ್ಟಿಯೊ ಸ್ಥಾಪನೆ ಪೂರ್ಣಗೊಂಡಿದೆ! ಎಲ್ಲಾ ಪಾಡ್‌ಗಳು ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿರುವವರೆಗೆ ಕಾಯಿರಿ istio-system ಸಾಧ್ಯವಾಗುತ್ತದೆ Running ಅಥವಾ Completedಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸುವ ಮೂಲಕ:

$ kubectl get pods -n istio-system

ಈಗ ನಾವು ಮುಂದಿನ ವಿಭಾಗದಲ್ಲಿ ಮುಂದುವರಿಯಲು ಸಿದ್ಧರಿದ್ದೇವೆ, ಅಲ್ಲಿ ನಾವು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ ಮತ್ತು ಚಾಲನೆಯಲ್ಲಿರುತ್ತೇವೆ.

ಸೆಂಟಿಮೆಂಟ್ ಅನಾಲಿಸಿಸ್ ಅಪ್ಲಿಕೇಶನ್‌ನ ಆರ್ಕಿಟೆಕ್ಚರ್

ಈಗಾಗಲೇ ಉಲ್ಲೇಖಿಸಲಾದ ಸೆಂಟಿಮೆಂಟ್ ಅನಾಲಿಸಿಸ್ ಮೈಕ್ರೋಸರ್ವಿಸ್ ಅಪ್ಲಿಕೇಶನ್‌ನ ಉದಾಹರಣೆಯನ್ನು ಬಳಸೋಣ ಕುಬರ್ನೆಟ್ಸ್ ಪರಿಚಯ ಲೇಖನ. ಪ್ರಾಯೋಗಿಕವಾಗಿ ಇಸ್ಟಿಯೊ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ತೋರಿಸುವಷ್ಟು ಸಂಕೀರ್ಣವಾಗಿದೆ.

ಅಪ್ಲಿಕೇಶನ್ ನಾಲ್ಕು ಸೂಕ್ಷ್ಮ ಸೇವೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:

  1. ಸೇವೆ SA-ಮುಂಭಾಗ, ಇದು Reactjs ಅಪ್ಲಿಕೇಶನ್‌ನ ಮುಂಭಾಗವನ್ನು ಪೂರೈಸುತ್ತದೆ;
  2. ಸೇವೆ SA-WebApp, ಇದು ಸೆಂಟಿಮೆಂಟ್ ಅನಾಲಿಸಿಸ್ ಪ್ರಶ್ನೆಗಳನ್ನು ಪೂರೈಸುತ್ತದೆ;
  3. ಸೇವೆ SA-ಲಾಜಿಕ್, ಇದು ಸ್ವತಃ ನಿರ್ವಹಿಸುತ್ತದೆ ಭಾವನೆ ವಿಶ್ಲೇಷಣೆ;
  4. ಸೇವೆ SA-ಪ್ರತಿಕ್ರಿಯೆ, ಇದು ವಿಶ್ಲೇಷಣೆಯ ನಿಖರತೆಯ ಬಗ್ಗೆ ಬಳಕೆದಾರರಿಂದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಪಡೆಯುತ್ತದೆ.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1

ಈ ರೇಖಾಚಿತ್ರದಲ್ಲಿ, ಸೇವೆಗಳ ಜೊತೆಗೆ, ನಾವು ಒಳಬರುವ ನಿಯಂತ್ರಕವನ್ನು ಸಹ ನೋಡುತ್ತೇವೆ, ಇದು ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ ಸೂಕ್ತ ಸೇವೆಗಳಿಗೆ ಒಳಬರುವ ವಿನಂತಿಗಳನ್ನು ಮಾರ್ಗಗೊಳಿಸುತ್ತದೆ. ಇಸ್ಟಿಯೊ ತನ್ನ ಪ್ರವೇಶ ದ್ವಾರದಲ್ಲಿ ಇದೇ ರೀತಿಯ ಪರಿಕಲ್ಪನೆಯನ್ನು ಬಳಸುತ್ತದೆ, ಅದರ ಹೆಚ್ಚಿನ ವಿವರಗಳು ಅನುಸರಿಸುತ್ತವೆ.

ಇಸ್ಟಿಯೊದಿಂದ ಪ್ರಾಕ್ಸಿಯೊಂದಿಗೆ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ರನ್ ಮಾಡಲಾಗುತ್ತಿದೆ

ಲೇಖನದಲ್ಲಿ ಉಲ್ಲೇಖಿಸಲಾದ ಹೆಚ್ಚಿನ ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿ, ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯನ್ನು ಕ್ಲೋನ್ ಮಾಡಿ istio-ಮಾಸ್ಟರಿ. ಇದು ಕುಬರ್ನೆಟ್ಸ್ ಮತ್ತು ಇಸ್ಟಿಯೊಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ ಮತ್ತು ಮ್ಯಾನಿಫೆಸ್ಟ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

ಸೈಡ್‌ಕಾರ್‌ಗಳನ್ನು ಸೇರಿಸುವುದು

ಒಳಸೇರಿಸುವಿಕೆಯನ್ನು ಮಾಡಬಹುದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಥವಾ ಕೈಯಿಂದ. ಸೈಡ್‌ಕಾರ್ ಕಂಟೇನರ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೇರಿಸಲು, ನೀವು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗೆ ಲೇಬಲ್ ಅನ್ನು ಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ istio-injection=enabled, ಇದನ್ನು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯೊಂದಿಗೆ ಮಾಡಲಾಗುತ್ತದೆ:

$ kubectl label namespace default istio-injection=enabled
namespace/default labeled

ಈಗ ಡೀಫಾಲ್ಟ್ ನೇಮ್‌ಸ್ಪೇಸ್‌ನಲ್ಲಿ ನಿಯೋಜಿಸಲಾದ ಪ್ರತಿಯೊಂದು ಪಾಡ್ (default) ಅದರ ಸೈಡ್‌ಕಾರ್ ಕಂಟೇನರ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. ಇದನ್ನು ಪರಿಶೀಲಿಸಲು, ರೆಪೊಸಿಟರಿಯ ಮೂಲ ಡೈರೆಕ್ಟರಿಗೆ ಹೋಗುವ ಮೂಲಕ ಪರೀಕ್ಷಾ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಯೋಜಿಸೋಣ [istio-mastery] ಮತ್ತು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿ:

$ kubectl apply -f resource-manifests/kube
persistentvolumeclaim/sqlite-pvc created
deployment.extensions/sa-feedback created
service/sa-feedback created
deployment.extensions/sa-frontend created
service/sa-frontend created
deployment.extensions/sa-logic created
service/sa-logic created
deployment.extensions/sa-web-app created
service/sa-web-app created

ಸೇವೆಗಳನ್ನು ನಿಯೋಜಿಸಿದ ನಂತರ, ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸುವ ಮೂಲಕ ಪಾಡ್‌ಗಳು ಎರಡು ಕಂಟೇನರ್‌ಗಳನ್ನು (ಸೇವೆ ಸ್ವತಃ ಮತ್ತು ಅದರ ಸೈಡ್‌ಕಾರ್‌ನೊಂದಿಗೆ) ಹೊಂದಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸೋಣ kubectl get pods ಮತ್ತು ಕಾಲಮ್ ಅಡಿಯಲ್ಲಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ READY ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ 2/2, ಎರಡೂ ಕಂಟೇನರ್‌ಗಳು ಚಾಲನೆಯಲ್ಲಿವೆ ಎಂಬುದನ್ನು ಸಂಕೇತಿಸುತ್ತದೆ:

$ kubectl get pods
NAME                           READY     STATUS    RESTARTS   AGE
sa-feedback-55f5dc4d9c-c9wfv   2/2       Running   0          12m
sa-frontend-558f8986-hhkj9     2/2       Running   0          12m
sa-logic-568498cb4d-2sjwj      2/2       Running   0          12m
sa-logic-568498cb4d-p4f8c      2/2       Running   0          12m
sa-web-app-599cf47c7c-s7cvd    2/2       Running   0          12m

ದೃಷ್ಟಿಗೋಚರವಾಗಿ ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ಪಾಡ್‌ಗಳಲ್ಲಿ ಒಂದರಲ್ಲಿ ಪ್ರತಿನಿಧಿ ಪ್ರಾಕ್ಸಿ

ಈಗ ಅಪ್ಲಿಕೇಶನ್ ಚಾಲನೆಯಲ್ಲಿದೆ, ನಾವು ಒಳಬರುವ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಬರಲು ಅನುಮತಿಸಬೇಕಾಗುತ್ತದೆ.

ಪ್ರವೇಶ ದ್ವಾರ

ಇದನ್ನು ಸಾಧಿಸಲು ಉತ್ತಮ ಅಭ್ಯಾಸ (ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ದಟ್ಟಣೆಯನ್ನು ಅನುಮತಿಸಿ) ಮೂಲಕ ಪ್ರವೇಶ ದ್ವಾರ ಇಸ್ಟಿಯೊದಲ್ಲಿ, ಇದು ಕ್ಲಸ್ಟರ್‌ನ "ಅಂಚಿನಲ್ಲಿ" ಇದೆ ಮತ್ತು ರೂಟಿಂಗ್, ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸಿಂಗ್, ಭದ್ರತೆ ಮತ್ತು ಒಳಬರುವ ಟ್ರಾಫಿಕ್‌ಗಾಗಿ ಮೇಲ್ವಿಚಾರಣೆಯಂತಹ ಇಸ್ಟಿಯೊ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಇನ್‌ಗ್ರೆಸ್ ಗೇಟ್‌ವೇ ಘಟಕ ಮತ್ತು ಅದನ್ನು ಬಾಹ್ಯವಾಗಿ ಫಾರ್ವರ್ಡ್ ಮಾಡುವ ಸೇವೆಯನ್ನು ಇಸ್ಟಿಯೊ ಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ಸೇವೆಯ ಬಾಹ್ಯ IP ವಿಳಾಸವನ್ನು ಕಂಡುಹಿಡಿಯಲು, ರನ್ ಮಾಡಿ:

$ kubectl get svc -n istio-system -l istio=ingressgateway
NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP
istio-ingressgateway   LoadBalancer   10.0.132.127   13.93.30.120

ಈ IP ಅನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪ್ರವೇಶಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತೇವೆ (ನಾನು ಅದನ್ನು ಬಾಹ್ಯ-IP ಎಂದು ಉಲ್ಲೇಖಿಸುತ್ತೇನೆ), ಆದ್ದರಿಂದ ಅನುಕೂಲಕ್ಕಾಗಿ ನಾವು ಮೌಲ್ಯವನ್ನು ವೇರಿಯೇಬಲ್ ಆಗಿ ಬರೆಯುತ್ತೇವೆ:

$ EXTERNAL_IP=$(kubectl get svc -n istio-system 
  -l app=istio-ingressgateway 
  -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')

ನೀವು ಈಗ ಬ್ರೌಸರ್ ಮೂಲಕ ಈ IP ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಿದರೆ, ನೀವು ಸೇವೆ ಲಭ್ಯವಿಲ್ಲದ ದೋಷವನ್ನು ಸ್ವೀಕರಿಸುತ್ತೀರಿ, ಏಕೆಂದರೆ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ Istio ಎಲ್ಲಾ ಒಳಬರುವ ಸಂಚಾರವನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ, ಗೇಟ್‌ವೇ ಅನ್ನು ಇನ್ನೂ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿಲ್ಲ.

ಗೇಟ್ವೇ ಸಂಪನ್ಮೂಲ

ಗೇಟ್‌ವೇ ಎಂಬುದು ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿನ CRD (ಕಸ್ಟಮ್ ರಿಸೋರ್ಸ್ ಡೆಫಿನಿಷನ್) ಆಗಿದೆ, ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಇಸ್ಟಿಯೊವನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ ಮತ್ತು ನಾವು ಒಳಬರುವ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಅನುಮತಿಸಲು ಬಯಸುವ ಪೋರ್ಟ್‌ಗಳು, ಪ್ರೋಟೋಕಾಲ್ ಮತ್ತು ಹೋಸ್ಟ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ ನಂತರ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ.

ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಎಲ್ಲಾ ಹೋಸ್ಟ್‌ಗಳಿಗೆ ಪೋರ್ಟ್ 80 ನಲ್ಲಿ HTTP ಟ್ರಾಫಿಕ್ ಅನ್ನು ಅನುಮತಿಸಲು ನಾವು ಬಯಸುತ್ತೇವೆ. ಕೆಳಗಿನ ವ್ಯಾಖ್ಯಾನದಿಂದ ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ (http-gateway.yaml):

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: http-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
- "*"

ಈ ಸಂರಚನೆಗೆ ಸೆಲೆಕ್ಟರ್ ಹೊರತುಪಡಿಸಿ ಯಾವುದೇ ವಿವರಣೆಯ ಅಗತ್ಯವಿಲ್ಲ istio: ingressgateway. ಈ ಸೆಲೆಕ್ಟರ್‌ನೊಂದಿಗೆ ನಾವು ಯಾವ ಪ್ರವೇಶ ಗೇಟ್‌ವೇಗೆ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಅನ್ವಯಿಸಬೇಕೆಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಇದು ಪ್ರವೇಶ ಗೇಟ್‌ವೇ ನಿಯಂತ್ರಕವಾಗಿದೆ, ಇದನ್ನು ಇಸ್ಟಿಯೊದಲ್ಲಿ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ.

ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಕರೆಯುವ ಮೂಲಕ ಸಂರಚನೆಯನ್ನು ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ:

$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created

ಗೇಟ್‌ವೇ ಈಗ ಪೋರ್ಟ್ 80 ಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ವಿನಂತಿಗಳನ್ನು ಎಲ್ಲಿಗೆ ಹೋಗಬೇಕೆಂದು ತಿಳಿದಿಲ್ಲ. ಇದಕ್ಕಾಗಿ ನಿಮಗೆ ಅಗತ್ಯವಿರುತ್ತದೆ ವರ್ಚುವಲ್ ಸೇವೆಗಳು.

ವರ್ಚುವಲ್ ಸೇವಾ ಸಂಪನ್ಮೂಲ

ಕ್ಲಸ್ಟರ್‌ನೊಳಗೆ ಅನುಮತಿಸಲಾದ ವಿನಂತಿಗಳನ್ನು ಹೇಗೆ ರೂಟ್ ಮಾಡಬೇಕೆಂದು ವರ್ಚುವಲ್ ಸೇವೆಯು ಪ್ರವೇಶ ಗೇಟ್‌ವೇಗೆ ಹೇಳುತ್ತದೆ.

http-ಗೇಟ್‌ವೇ ಮೂಲಕ ಬರುವ ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ವಿನಂತಿಗಳನ್ನು sa-frontend, sa-web-app ಮತ್ತು sa-feedback ಸೇವೆಗಳಿಗೆ ಕಳುಹಿಸಬೇಕು:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ವರ್ಚುವಲ್ ಸೇವೆಗಳೊಂದಿಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾದ ಮಾರ್ಗಗಳು

SA-Frontend ಗೆ ಕಳುಹಿಸಬೇಕಾದ ವಿನಂತಿಗಳನ್ನು ನೋಡೋಣ:

  • ದಾರಿಯುದ್ದಕ್ಕೂ ನಿಖರ ಹೊಂದಾಣಿಕೆ / index.html ಪಡೆಯಲು SA-Frontend ಗೆ ಕಳುಹಿಸಬೇಕು;
  • ಪೂರ್ವಪ್ರತ್ಯಯ ಮಾರ್ಗಗಳು /static/* CSS ಮತ್ತು JavaScript ನಂತಹ ಮುಂಭಾಗದಲ್ಲಿ ಬಳಸಲಾದ ಸ್ಥಿರ ಫೈಲ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸಲು SA-Frontend ಗೆ ಕಳುಹಿಸಬೇಕು;
  • ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಮಾರ್ಗಗಳು '^.*.(ico|png|jpg)$', SA-Frontend ಗೆ ಕಳುಹಿಸಬೇಕು, ಏಕೆಂದರೆ ಇವುಗಳು ಪುಟದಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲಾದ ಚಿತ್ರಗಳಾಗಿವೆ.

ಕೆಳಗಿನ ಸಂರಚನೆಯಿಂದ ಅನುಷ್ಠಾನವನ್ನು ಸಾಧಿಸಲಾಗುತ್ತದೆ (sa-virtualservice-external.yaml):

kind: VirtualService
metadata:
  name: sa-external-services
spec:
  hosts:
  - "*"
  gateways:
  - http-gateway                      # 1
  http:
  - match:
    - uri:
        exact: /
    - uri:
        exact: /callback
    - uri:
        prefix: /static
    - uri:
        regex: '^.*.(ico|png|jpg)

Важные моменты:

  1. Этот VirtualService относится к запросам, приходящим через http-gateway;
  2. В destination определяется сервис, куда отправляются запросы.
Примечание: Конфигурация выше хранится в файле sa-virtualservice-external.yaml, который также содержит настройки для маршрутизации в SA-WebApp и SA-Feedback, но был сокращён здесь в статье для лаконичности. Применим VirtualService вызовом:
$ kubectl apply -f resource-manifests/istio/sa-virtualservice-external.yaml
virtualservice.networking.istio.io/sa-external-services created

Примечание: Когда мы применяем ресурсы Istio, Kubernetes API Server создаёт событие, которое получает Istio Control Plane, и уже после этого новая конфигурация применяется к прокси-серверам Envoy каждого pod'а. А контроллер Ingress Gateway представляется очередным Envoy, сконфигурированным в Control Plane. Всё это на схеме выглядит так:

Назад к микросервисам вместе с Istio. Часть 1
Конфигурация Istio-IngressGateway для маршрутизации запросов

Приложение Sentiment Analysis стало доступным по http://{EXTERNAL-IP}/. Не переживайте, если вы получаете статус Not Found: иногда требуется чуть больше времени для того, чтобы конфигурация вступила в силу и кэши Envoy обновились.

Перед тем, как продолжить, поработайте немного с приложением, чтобы сгенерировать трафик (его наличие необходимо для наглядности в последующих действиях — прим. перев.).

Kiali : наблюдаемость

Чтобы попасть в административный интерфейс Kiali, выполните следующую команду:

$ kubectl port-forward 
    $(kubectl get pod -n istio-system -l app=kiali 
    -o jsonpath='{.items[0].metadata.name}') 
    -n istio-system 20001

… и откройте http://localhost:20001/, залогинившись под admin/admin. Здесь вы найдете множество полезных возможностей, например, для проверки конфигурации компонентов Istio, визуализации сервисов по информации, собранной при перехвате сетевых запросов, получения ответов на вопросы «Кто к кому обращается?», «У какой версии сервиса возникают сбои?» и т.п. В общем, изучите возможности Kiali перед тем, как двигаться дальше — к визуализации метрик с Grafana.

Назад к микросервисам вместе с Istio. Часть 1

Grafana: визуализация метрик

Собранные в Istio метрики попадают в Prometheus и визуализируются с Grafana. Чтобы попасть в административный интерфейс Grafana, выполните команду ниже, после чего откройте http://localhost:3000/:

$ kubectl -n istio-system port-forward 
    $(kubectl -n istio-system get pod -l app=grafana 
    -o jsonpath={.items[0].metadata.name}) 3000

Кликнув на меню Home слева сверху и выбрав Istio Service Dashboard в левом верхнем углу, начните с сервиса sa-web-app, чтобы посмотреть на собранные метрики:

Назад к микросервисам вместе с Istio. Часть 1

Здесь нас ждёт пустое и совершенно скучное представление — руководство никогда такое не одобрит. Давайте же создадим небольшую нагрузку следующей командой:

$ while true; do 
    curl -i http://$EXTERNAL_IP/sentiment 
    -H "Content-type: application/json" 
    -d '{"sentence": "I love yogobella"}'; 
    sleep .8; done

Вот теперь у нас гораздо более симпатичные графики, а в дополнение к ним — замечательные инструменты Prometheus для мониторинга и Grafana для визуализации метрик, что позволят нам узнать о производительности, состоянии здоровья, улучшениях/деградации в работе сервисов на протяжении времени.

Наконец, посмотрим на трассировку запросов в сервисах.

Jaeger : трассировка

Трассировка нам потребуется, потому что чем больше у нас сервисов, тем сложнее добраться до причины сбоя. Посмотрим на простой случай из картинки ниже:

Назад к микросервисам вместе с Istio. Часть 1
Типовой пример случайного неудачного запроса

Запрос приходит, падает — в чём же причина? Первый сервис? Или второй? Исключения есть в обоих — давайте посмотрим на логи каждого. Как часто вы ловили себя за таким занятием? Наша работа больше похожа на детективов программного обеспечения, а не разработчиков…

Это широко распространённая проблема в микросервисах и решается она распределёнными системами трассировки, в которых сервисы передают друг другу уникальный заголовок, после чего эта информация перенаправляется в систему трассировки, где она сопоставляется с данными запроса. Вот иллюстрация:

Назад к микросервисам вместе с Istio. Часть 1
Для идентификации запроса используется TraceId

В Istio используется Jaeger Tracer, который реализует независимый от вендоров фреймворк OpenTracing API. Получить доступ к пользовательского интерфейсу Jaeger можно следующей командой:

$ kubectl port-forward -n istio-system 
    $(kubectl get pod -n istio-system -l app=jaeger 
    -o jsonpath='{.items[0].metadata.name}') 16686

Теперь зайдите на http://localhost:16686/ и выберите сервис sa-web-app. Если сервис не показан в выпадающем меню — проявите/сгенерируйте активность на странице и обновите интерфейс. После этого нажмите на кнопку Find Traces, которая покажет самые последние трейсы — выберите любой — покажется детализированная информация по всем трейсам:

Назад к микросервисам вместе с Istio. Часть 1

Этот трейс показывает:

  1. Запрос приходит в istio-ingressgateway (это первое взаимодействие с одним из сервисов, и для запроса генерируется Trace ID), после чего шлюз направляет запрос в сервис sa-web-app.
  2. В сервисе sa-web-app запрос подхватывается Envoy sidecar'ом, создаётся «ребёнок» в span'е (поэтому мы видим его в трейсах) и перенаправляется в контейнер sa-web-app. (Span — логическая единица работы в Jaeger, имеющая название, время начало операции и её продолжительность. Span'ы могут быть вложенными и упорядоченными. Ориентированный ациклический граф из span'ов образует trace. — прим. перев.)
  3. Здесь запрос обрабатывается методом sentimentAnalysis. Эти трейсы уже сгенерированы приложением, т.е. для них потребовались изменения в коде.
  4. С этого момента инициируется POST-запрос в sa-logic. Trace ID должен быть проброшен из sa-web-app.

Примечание: На 4 шаге приложение должно увидеть заголовки, сгенерированные Istio, и передать их в последующие запросы, как показано на изображении ниже:

Назад к микросервисам вместе с Istio. Часть 1
(A) За проброс заголовков отвечает Istio; (B) За заголовки отвечают сервисы

Istio делает основную работу, т.к. генерирует заголовки для входящих запросов, создаёт новые span'ы в каждом sidecare'е и пробрасывает их. Однако без работы с заголовками внутри сервисов полный путь трассировки запроса будет утерян.

Необходимо учитывать (пробрасывать) следующие заголовки:

x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
x-ot-span-context

Это несложная задача, однако для упрощения её реализации уже существует множество библиотек — например, в сервисе sa-web-app клиент RestTemplate пробрасывает эти заголовки, если просто добавить библиотеки Jaeger и OpenTracing в его зависимости.

Заметьте, что приложение Sentiment Analysis демонстрирует реализации на Flask, Spring и ASP.NET Core.

Теперь, когда стало ясно, что мы получаем из коробки (или почти «из коробки»), рассмотрим вопросы тонко настраиваемой маршрутизации, управления сетевым трафиком, безопасности и т.п.!

Прим. перев.: об этом читайте в следующей части материалов по Istio от Rinor Maloku, переводы которых последуют в нашем блоге в ближайшее время. UPDATE (14 марта): Вторая часть уже опубликована.

P.S. от переводчика

Читайте также в нашем блоге:

Источник: habr.com

route:
- destination:
host: sa-frontend # 2
port:
number: 80

ಪ್ರಮುಖ ಅಂಶಗಳು:

  1. ಈ ವರ್ಚುವಲ್ ಸೇವೆಯು ಬರುವ ವಿನಂತಿಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ http-ಗೇಟ್ವೇ;
  2. В destination ವಿನಂತಿಗಳನ್ನು ಕಳುಹಿಸುವ ಸೇವೆಯನ್ನು ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ.

ಹೇಳಿಕೆಯನ್ನು: ಮೇಲಿನ ಸಂರಚನೆಯನ್ನು ಫೈಲ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ sa-virtualservice-external.yaml, ಇದು SA-WebApp ಮತ್ತು SA-ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ ರೂಟಿಂಗ್‌ಗಾಗಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ, ಆದರೆ ಇಲ್ಲಿ ಸಂಕ್ಷಿಪ್ತತೆಗಾಗಿ ಲೇಖನದಲ್ಲಿ ಸಂಕ್ಷಿಪ್ತಗೊಳಿಸಲಾಗಿದೆ.

ಕರೆ ಮಾಡುವ ಮೂಲಕ ವರ್ಚುವಲ್ ಸೇವೆಯನ್ನು ಅನ್ವಯಿಸೋಣ:


ಹೇಳಿಕೆಯನ್ನು: ನಾವು Istio ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸೇವಿಸಿದಾಗ, Kubernetes API ಸರ್ವರ್ Istio ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್ ಸ್ವೀಕರಿಸಿದ ಈವೆಂಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ ಮತ್ತು ಅದರ ನಂತರ ಹೊಸ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಪ್ರತಿ ಪಾಡ್‌ನ ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ. ಮತ್ತು ಇನ್‌ಗ್ರೆಸ್ ಗೇಟ್‌ವೇ ನಿಯಂತ್ರಕವು ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್‌ನಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಮತ್ತೊಂದು ರಾಯಭಾರಿಯಾಗಿ ಕಂಡುಬರುತ್ತದೆ. ರೇಖಾಚಿತ್ರದಲ್ಲಿ ಇದೆಲ್ಲವೂ ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ವಿನಂತಿ ರೂಟಿಂಗ್‌ಗಾಗಿ ಇಸ್ಟಿಯೊ-ಇಂಗ್ರೆಸ್‌ಗೇಟ್‌ವೇ ಕಾನ್ಫಿಗರೇಶನ್

ಸೆಂಟಿಮೆಂಟ್ ಅನಾಲಿಸಿಸ್ ಅಪ್ಲಿಕೇಶನ್ ಈಗ ಲಭ್ಯವಿದೆ http://{EXTERNAL-IP}/. ನೀವು ಪತ್ತೆಯಾಗದ ಸ್ಥಿತಿಯನ್ನು ಪಡೆದರೆ ಚಿಂತಿಸಬೇಡಿ: ಕೆಲವೊಮ್ಮೆ ಕಾನ್ಫಿಗರೇಶನ್ ಪರಿಣಾಮ ಬೀರಲು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಎನ್ವಾಯ್ ಕ್ಯಾಶ್‌ಗಳನ್ನು ನವೀಕರಿಸಲು.

ಮುಂದುವರಿಯುವ ಮೊದಲು, ಟ್ರಾಫಿಕ್ ಅನ್ನು ರಚಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ನೊಂದಿಗೆ ಸ್ವಲ್ಪ ಪ್ಲೇ ಮಾಡಿ. (ನಂತರದ ಕ್ರಿಯೆಗಳಲ್ಲಿ ಸ್ಪಷ್ಟತೆಗಾಗಿ ಅದರ ಉಪಸ್ಥಿತಿಯು ಅವಶ್ಯಕವಾಗಿದೆ - ಅಂದಾಜು. ಅನುವಾದ.).

ಕಿಯಾಲಿ: ಗಮನಿಸುವಿಕೆ

ಕಿಯಾಲಿ ಆಡಳಿತಾತ್ಮಕ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಪಡೆಯಲು, ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿ:


... ಮತ್ತು ತೆರೆಯಿರಿ http://localhost:20001/, ನಿರ್ವಾಹಕ/ನಿರ್ವಾಹಕರಾಗಿ ಲಾಗಿನ್ ಆಗುತ್ತಿದೆ. ಇಲ್ಲಿ ನೀವು ಅನೇಕ ಉಪಯುಕ್ತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಾಣಬಹುದು, ಉದಾಹರಣೆಗೆ, ಇಸ್ಟಿಯೊ ಘಟಕಗಳ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು, ನೆಟ್‌ವರ್ಕ್ ವಿನಂತಿಗಳನ್ನು ಪ್ರತಿಬಂಧಿಸುವ ಮೂಲಕ ಸಂಗ್ರಹಿಸಿದ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಸೇವೆಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು, “ಯಾರು ಯಾರನ್ನು ಸಂಪರ್ಕಿಸುತ್ತಿದ್ದಾರೆ?”, “ಸೇವೆಯ ಯಾವ ಆವೃತ್ತಿಯನ್ನು ಅನುಭವಿಸುತ್ತಿದೆ ಎಂಬ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಗಳನ್ನು ಪಡೆಯಿರಿ. ವೈಫಲ್ಯಗಳು?" ಮತ್ತು ಇತ್ಯಾದಿ. ಸಾಮಾನ್ಯವಾಗಿ, ಗ್ರಾಫಾನಾದೊಂದಿಗೆ ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸುವ ಮೊದಲು ಕಿಯಾಲಿಯ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಅನ್ವೇಷಿಸಿ.

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1

ಗ್ರಾಫನಾ: ಮೆಟ್ರಿಕ್ಸ್ ದೃಶ್ಯೀಕರಣ

ಇಸ್ಟಿಯೊದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಮೆಟ್ರಿಕ್‌ಗಳು ಪ್ರಮೀತಿಯಸ್‌ಗೆ ಹೋಗುತ್ತವೆ ಮತ್ತು ಗ್ರಾಫಾನಾದೊಂದಿಗೆ ದೃಶ್ಯೀಕರಿಸಲ್ಪಡುತ್ತವೆ. ಗ್ರಾಫನಾ ಆಡಳಿತಾತ್ಮಕ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಪಡೆಯಲು, ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ನಂತರ ತೆರೆಯಿರಿ http://localhost:3000/:


ಮೆನುವಿನ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ ಮುಖಪುಟ ಮೇಲಿನ ಎಡ ಮತ್ತು ಆಯ್ಕೆ ಇಸ್ಟಿಯೊ ಸೇವಾ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಮೇಲಿನ ಎಡ ಮೂಲೆಯಲ್ಲಿ, ಸೇವೆಯೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ sa-web-appಸಂಗ್ರಹಿಸಿದ ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ನೋಡಲು:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1

ಇಲ್ಲಿ ನಮಗೆ ಕಾಯುತ್ತಿರುವುದು ಖಾಲಿ ಮತ್ತು ಸಂಪೂರ್ಣವಾಗಿ ನೀರಸ ಪ್ರದರ್ಶನವಾಗಿದೆ - ನಿರ್ವಹಣೆ ಇದನ್ನು ಎಂದಿಗೂ ಅನುಮೋದಿಸುವುದಿಲ್ಲ. ಕೆಳಗಿನ ಆಜ್ಞೆಯೊಂದಿಗೆ ಸಣ್ಣ ಲೋಡ್ ಅನ್ನು ರಚಿಸೋಣ:


ಈಗ ನಾವು ಹೆಚ್ಚು ಉತ್ತಮವಾದ ಗ್ರಾಫ್‌ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಅವುಗಳ ಜೊತೆಗೆ, ಮಾನಿಟರಿಂಗ್‌ಗಾಗಿ ಅದ್ಭುತವಾದ ಪ್ರಮೀಥಿಯಸ್ ಪರಿಕರಗಳು ಮತ್ತು ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಗ್ರಾಫನಾವು ನಮಗೆ ಕಾರ್ಯಕ್ಷಮತೆ, ಆರೋಗ್ಯ, ಸುಧಾರಣೆಗಳು / ಕಾಲಾನಂತರದಲ್ಲಿ ಸೇವೆಗಳಲ್ಲಿನ ಅವನತಿ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ಅಂತಿಮವಾಗಿ, ಸೇವೆಗಳಲ್ಲಿ ವಿನಂತಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದನ್ನು ನೋಡೋಣ.

ಜೇಗರ್: ಪತ್ತೆಹಚ್ಚುವಿಕೆ

ನಮಗೆ ಟ್ರೇಸಿಂಗ್ ಅಗತ್ಯವಿರುತ್ತದೆ ಏಕೆಂದರೆ ನಮ್ಮಲ್ಲಿ ಹೆಚ್ಚಿನ ಸೇವೆಗಳಿವೆ, ವೈಫಲ್ಯದ ಕಾರಣವನ್ನು ಪಡೆಯುವುದು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗಿರುತ್ತದೆ. ಕೆಳಗಿನ ಚಿತ್ರದಿಂದ ಸರಳವಾದ ಪ್ರಕರಣವನ್ನು ನೋಡೋಣ:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ಯಾದೃಚ್ಛಿಕ ವಿಫಲ ವಿನಂತಿಯ ವಿಶಿಷ್ಟ ಉದಾಹರಣೆ

ವಿನಂತಿ ಬರುತ್ತದೆ, ಬೀಳುತ್ತದೆ - ಏನು ಕಾರಣ? ಮೊದಲ ಸೇವೆ? ಅಥವಾ ಎರಡನೆಯದು? ಎರಡರಲ್ಲೂ ವಿನಾಯಿತಿಗಳಿವೆ - ಪ್ರತಿಯೊಂದರ ದಾಖಲೆಗಳನ್ನು ನೋಡೋಣ. ನೀವು ಇದನ್ನು ಎಷ್ಟು ಬಾರಿ ಹಿಡಿದಿದ್ದೀರಿ? ನಮ್ಮ ಕೆಲಸವು ಡೆವಲಪರ್‌ಗಳಿಗಿಂತ ಸಾಫ್ಟ್‌ವೇರ್ ಪತ್ತೆದಾರರಂತೆಯೇ ಇದೆ...

ಇದು ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ಗಳಲ್ಲಿ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಯಾಗಿದೆ ಮತ್ತು ವಿತರಿಸಿದ ಟ್ರೇಸಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳಿಂದ ಪರಿಹರಿಸಲ್ಪಡುತ್ತದೆ, ಇದರಲ್ಲಿ ಸೇವೆಗಳು ಒಂದಕ್ಕೊಂದು ಅನನ್ಯ ಹೆಡರ್ ಅನ್ನು ರವಾನಿಸುತ್ತವೆ, ನಂತರ ಈ ಮಾಹಿತಿಯನ್ನು ಟ್ರೇಸಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗೆ ರವಾನಿಸಲಾಗುತ್ತದೆ, ಅಲ್ಲಿ ಅದನ್ನು ವಿನಂತಿಯ ಡೇಟಾದೊಂದಿಗೆ ಹೋಲಿಸಲಾಗುತ್ತದೆ. ಇಲ್ಲಿದೆ ಒಂದು ದೃಷ್ಟಾಂತ:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
ವಿನಂತಿಯನ್ನು ಗುರುತಿಸಲು TraceId ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ

ಇಸ್ಟಿಯೊ ಜೇಗರ್ ಟ್ರೇಸರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ಮಾರಾಟಗಾರ-ಸ್ವತಂತ್ರ ಓಪನ್ ಟ್ರೇಸಿಂಗ್ API ಫ್ರೇಮ್‌ವರ್ಕ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಕೆಳಗಿನ ಆಜ್ಞೆಯೊಂದಿಗೆ ನೀವು ಜೇಗರ್ ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಪ್ರವೇಶಿಸಬಹುದು:


ಈಗ ಹೋಗಿ http://localhost:16686/ ಮತ್ತು ಸೇವೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ sa-web-app. ಡ್ರಾಪ್-ಡೌನ್ ಮೆನುವಿನಲ್ಲಿ ಸೇವೆಯನ್ನು ತೋರಿಸದಿದ್ದರೆ, ಪುಟದಲ್ಲಿ ಚಟುವಟಿಕೆಯನ್ನು ತೋರಿಸಿ/ಉತ್ಪಾದಿಸಿ ಮತ್ತು ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ನವೀಕರಿಸಿ. ಅದರ ನಂತರ, ಬಟನ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ ಕುರುಹುಗಳನ್ನು ಹುಡುಕಿ, ಇದು ಇತ್ತೀಚಿನ ಕುರುಹುಗಳನ್ನು ತೋರಿಸುತ್ತದೆ - ಯಾವುದನ್ನಾದರೂ ಆಯ್ಕೆಮಾಡಿ - ಎಲ್ಲಾ ಕುರುಹುಗಳ ವಿವರವಾದ ಮಾಹಿತಿಯು ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1

ಈ ಜಾಡಿನ ತೋರಿಸುತ್ತದೆ:

  1. ವಿನಂತಿಯು ಬರುತ್ತದೆ ಇಸ್ಟಿಯೊ-ಇಂಗ್ರೆಸ್‌ಗೇಟ್‌ವೇ (ಇದು ಸೇವೆಗಳಲ್ಲಿ ಒಂದರೊಂದಿಗಿನ ಮೊದಲ ಸಂವಹನವಾಗಿದೆ ಮತ್ತು ವಿನಂತಿಗಾಗಿ ಟ್ರೇಸ್ ಐಡಿಯನ್ನು ರಚಿಸಲಾಗಿದೆ), ಅದರ ನಂತರ ಗೇಟ್‌ವೇ ವಿನಂತಿಯನ್ನು ಸೇವೆಗೆ ಕಳುಹಿಸುತ್ತದೆ sa-web-app.
  2. ಸೇವೆಯಲ್ಲಿ sa-web-app ವಿನಂತಿಯನ್ನು ಎನ್ವಾಯ್ ಸೈಡ್‌ಕಾರ್‌ನಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತದೆ, ಅವಧಿಯಲ್ಲಿ "ಮಗು" ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ (ಅದಕ್ಕಾಗಿಯೇ ನಾವು ಅದನ್ನು ಕುರುಹುಗಳಲ್ಲಿ ನೋಡುತ್ತೇವೆ) ಮತ್ತು ಕಂಟೇನರ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ sa-web-app. (ಕಣ್ - ಜೇಗರ್‌ನಲ್ಲಿನ ಕೆಲಸದ ತಾರ್ಕಿಕ ಘಟಕ, ಇದು ಹೆಸರನ್ನು ಹೊಂದಿದೆ, ಕಾರ್ಯಾಚರಣೆಯ ಪ್ರಾರಂಭ ಸಮಯ ಮತ್ತು ಅದರ ಅವಧಿ. ಸ್ಪ್ಯಾನ್‌ಗಳನ್ನು ನೆಸ್ಟೆಡ್ ಮಾಡಬಹುದು ಮತ್ತು ಆರ್ಡರ್ ಮಾಡಬಹುದು. ವ್ಯಾಪ್ತಿಗಳ ನಿರ್ದೇಶನದ ಅಸಿಕ್ಲಿಕ್ ಗ್ರಾಫ್ ಒಂದು ಜಾಡಿನ ರೂಪಿಸುತ್ತದೆ. - ಅಂದಾಜು ಅನುವಾದ.)
  3. ಇಲ್ಲಿ ವಿನಂತಿಯನ್ನು ವಿಧಾನದಿಂದ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತದೆ ಭಾವನಾತ್ಮಕ ವಿಶ್ಲೇಷಣೆ. ಈ ಕುರುಹುಗಳನ್ನು ಈಗಾಗಲೇ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ರಚಿಸಲಾಗಿದೆ, ಅಂದರೆ. ಅವರಿಗೆ ಕೋಡ್ ಬದಲಾವಣೆಗಳು ಬೇಕಾಗಿದ್ದವು.
  4. ಈ ಕ್ಷಣದಿಂದ, POST ವಿನಂತಿಯನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ ಸ-ತರ್ಕ. ರಿಂದ ಟ್ರೇಸ್ ಐಡಿಯನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡಬೇಕು sa-web-app.
  5. ...

ಹೇಳಿಕೆಯನ್ನು: ಹಂತ 4 ರಲ್ಲಿ, ಅಪ್ಲಿಕೇಶನ್ ಇಸ್ಟಿಯೊದಿಂದ ರಚಿಸಲಾದ ಹೆಡರ್‌ಗಳನ್ನು ನೋಡಬೇಕು ಮತ್ತು ಕೆಳಗಿನ ಚಿತ್ರದಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ ಅವುಗಳನ್ನು ನಂತರದ ವಿನಂತಿಗಳಿಗೆ ರವಾನಿಸಬೇಕು:

ಇಸ್ಟಿಯೊ ಜೊತೆಗೆ ಮೈಕ್ರೋ ಸರ್ವೀಸ್‌ಗೆ ಹಿಂತಿರುಗಿ. ಭಾಗ 1
(ಎ) ಹೆಡರ್‌ಗಳನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡಲು ಇಸ್ಟಿಯೊ ಜವಾಬ್ದಾರನಾಗಿರುತ್ತಾನೆ; (ಬಿ) ಹೆಡರ್‌ಗಳಿಗೆ ಸೇವೆಗಳು ಜವಾಬ್ದಾರರಾಗಿರುತ್ತವೆ

ಇಸ್ಟಿಯೊ ಹೆಚ್ಚಿನ ಕೆಲಸವನ್ನು ಮಾಡುತ್ತದೆ ಏಕೆಂದರೆ... ಒಳಬರುವ ವಿನಂತಿಗಳಿಗಾಗಿ ಹೆಡರ್‌ಗಳನ್ನು ರಚಿಸುತ್ತದೆ, ಪ್ರತಿ ಸೈಡ್‌ಕೇರ್‌ನಲ್ಲಿ ಹೊಸ ಸ್ಪ್ಯಾನ್‌ಗಳನ್ನು ರಚಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಸೇವೆಗಳ ಒಳಗೆ ಹೆಡರ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡದೆಯೇ, ಪೂರ್ಣ ವಿನಂತಿಯ ಟ್ರೇಸ್ ಮಾರ್ಗವು ಕಳೆದುಹೋಗುತ್ತದೆ.

ಕೆಳಗಿನ ಶಿರೋನಾಮೆಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಬೇಕು:


ಇದು ಕಷ್ಟಕರವಾದ ಕೆಲಸವಲ್ಲ, ಆದರೆ ಅದರ ಅನುಷ್ಠಾನವನ್ನು ಸರಳೀಕರಿಸಲು ಈಗಾಗಲೇ ಇದೆ ಅನೇಕ ಗ್ರಂಥಾಲಯಗಳು - ಉದಾಹರಣೆಗೆ, sa-web-app ಸೇವೆಯಲ್ಲಿ, ನೀವು ಕೇವಲ Jaeger ಮತ್ತು OpenTracing ಲೈಬ್ರರಿಗಳನ್ನು ಸೇರಿಸಿದರೆ RestTemplate ಕ್ಲೈಂಟ್ ಈ ಹೆಡರ್‌ಗಳನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆ ಅವನ ಚಟಗಳು.

ಸೆಂಟಿಮೆಂಟ್ ಅನಾಲಿಸಿಸ್ ಅಪ್ಲಿಕೇಶನ್ ಫ್ಲಾಸ್ಕ್, ಸ್ಪ್ರಿಂಗ್ ಮತ್ತು ASP.NET ಕೋರ್‌ನಲ್ಲಿ ಅನುಷ್ಠಾನಗಳನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ.

ಈಗ ನಾವು ಬಾಕ್ಸ್‌ನಿಂದ (ಅಥವಾ ಬಹುತೇಕ ಬಾಕ್ಸ್‌ನಿಂದ) ಏನನ್ನು ಪಡೆಯುತ್ತೇವೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಿದೆ, ಉತ್ತಮವಾದ ರೂಟಿಂಗ್, ನೆಟ್‌ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ನಿರ್ವಹಣೆ, ಭದ್ರತೆ ಇತ್ಯಾದಿಗಳನ್ನು ನೋಡೋಣ!

ಸೂಚನೆ. ಅನುವಾದ.: Rinor Maloku ನಿಂದ Istio ನಲ್ಲಿರುವ ವಸ್ತುಗಳ ಮುಂದಿನ ಭಾಗದಲ್ಲಿ ಇದರ ಬಗ್ಗೆ ಓದಿ, ಅದರ ಅನುವಾದಗಳು ಮುಂದಿನ ದಿನಗಳಲ್ಲಿ ನಮ್ಮ ಬ್ಲಾಗ್‌ನಲ್ಲಿ ಅನುಸರಿಸುತ್ತವೆ. ಅಪಡೇಟ್ (ಮಾರ್ಚ್ 14): ಎರಡನೇ ಭಾಗ ಈಗಾಗಲೇ ಪ್ರಕಟಿಸಲಾಗಿದೆ.

ಅನುವಾದಕರಿಂದ PS

ನಮ್ಮ ಬ್ಲಾಗ್‌ನಲ್ಲಿಯೂ ಓದಿ:

ಮೂಲ: www.habr.com