ಉತ್ಪಾದನೆಯಲ್ಲಿ ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇಸ್ಟಿಯೊವನ್ನು ಹೇಗೆ ಚಲಾಯಿಸುವುದು. ಭಾಗ 1

ಏನು ಇಸ್ಟಿಯೊ? ಇದು ಸೇವಾ ಜಾಲರಿ ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತದೆ, ಇದು ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಅಮೂರ್ತತೆಯ ಪದರವನ್ನು ಸೇರಿಸುವ ತಂತ್ರಜ್ಞಾನವಾಗಿದೆ. ನಾವು ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಅಥವಾ ಟ್ರಾಫಿಕ್‌ನ ಭಾಗವನ್ನು ತಡೆಹಿಡಿಯುತ್ತೇವೆ ಮತ್ತು ಅದರೊಂದಿಗೆ ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ. ಯಾವುದು? ಉದಾಹರಣೆಗೆ, ನಾವು ಸ್ಮಾರ್ಟ್ ರೂಟಿಂಗ್ ಮಾಡುತ್ತೇವೆ, ಅಥವಾ ನಾವು ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ವಿಧಾನವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತೇವೆ, ನಾವು "ಕ್ಯಾನರಿ ನಿಯೋಜನೆ" ಅನ್ನು ಆಯೋಜಿಸಬಹುದು, ಸೇವೆಯ ಹೊಸ ಆವೃತ್ತಿಗೆ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಭಾಗಶಃ ಬದಲಾಯಿಸಬಹುದು, ಅಥವಾ ನಾವು ಬಾಹ್ಯ ಸಂವಹನಗಳನ್ನು ಮಿತಿಗೊಳಿಸಬಹುದು ಮತ್ತು ಕ್ಲಸ್ಟರ್‌ನಿಂದ ಎಲ್ಲಾ ಪ್ರವಾಸಗಳನ್ನು ನಿಯಂತ್ರಿಸಬಹುದು ಬಾಹ್ಯ ನೆಟ್ವರ್ಕ್. ವಿಭಿನ್ನ ಮೈಕ್ರೋಸರ್ವಿಸ್‌ಗಳ ನಡುವಿನ ಪ್ರವಾಸಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು ನೀತಿ ನಿಯಮಗಳನ್ನು ಹೊಂದಿಸಲು ಸಾಧ್ಯವಿದೆ. ಅಂತಿಮವಾಗಿ, ನಾವು ಸಂಪೂರ್ಣ ನೆಟ್‌ವರ್ಕ್ ಸಂವಹನ ನಕ್ಷೆಯನ್ನು ಪಡೆಯಬಹುದು ಮತ್ತು ಮೆಟ್ರಿಕ್‌ಗಳ ಏಕೀಕೃತ ಸಂಗ್ರಹವನ್ನು ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಪಾರದರ್ಶಕಗೊಳಿಸಬಹುದು.

ಕೆಲಸದ ಕಾರ್ಯವಿಧಾನದ ಬಗ್ಗೆ ನೀವು ಓದಬಹುದು ಅಧಿಕೃತ ದಸ್ತಾವೇಜನ್ನು. ಇಸ್ಟಿಯೊ ನಿಜವಾಗಿಯೂ ಶಕ್ತಿಯುತ ಸಾಧನವಾಗಿದ್ದು ಅದು ನಿಮಗೆ ಅನೇಕ ಕಾರ್ಯಗಳು ಮತ್ತು ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈ ಲೇಖನದಲ್ಲಿ, ಇಸ್ಟಿಯೊದೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುವಾಗ ಸಾಮಾನ್ಯವಾಗಿ ಉದ್ಭವಿಸುವ ಮುಖ್ಯ ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸಲು ನಾನು ಬಯಸುತ್ತೇನೆ. ಇದನ್ನು ವೇಗವಾಗಿ ನಿಭಾಯಿಸಲು ಇದು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.

ಉತ್ಪಾದನೆಯಲ್ಲಿ ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇಸ್ಟಿಯೊವನ್ನು ಹೇಗೆ ಚಲಾಯಿಸುವುದು. ಭಾಗ 1

ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ

ಇಸ್ಟಿಯೊ ಎರಡು ಪ್ರಮುಖ ಪ್ರದೇಶಗಳನ್ನು ಒಳಗೊಂಡಿದೆ - ನಿಯಂತ್ರಣ ಸಮತಲ ಮತ್ತು ಡೇಟಾ ಪ್ಲೇನ್. ನಿಯಂತ್ರಣ ಸಮತಲವು ಉಳಿದವುಗಳ ಸರಿಯಾದ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಖಾತ್ರಿಪಡಿಸುವ ಮುಖ್ಯ ಅಂಶಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಪ್ರಸ್ತುತ ಆವೃತ್ತಿಯಲ್ಲಿ (1.0) ನಿಯಂತ್ರಣ ಸಮತಲವು ಮೂರು ಮುಖ್ಯ ಅಂಶಗಳನ್ನು ಹೊಂದಿದೆ: ಪೈಲಟ್, ಮಿಕ್ಸರ್, ಸಿಟಾಡೆಲ್. ನಾವು ಸಿಟಾಡೆಲ್ ಅನ್ನು ಪರಿಗಣಿಸುವುದಿಲ್ಲ, ಸೇವೆಗಳ ನಡುವೆ ಪರಸ್ಪರ TLS ಅನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ರಚಿಸುವ ಅಗತ್ಯವಿದೆ. ಪೈಲಟ್ ಮತ್ತು ಮಿಕ್ಸರ್‌ನ ಸಾಧನ ಮತ್ತು ಉದ್ದೇಶವನ್ನು ಹತ್ತಿರದಿಂದ ನೋಡೋಣ.

ಉತ್ಪಾದನೆಯಲ್ಲಿ ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇಸ್ಟಿಯೊವನ್ನು ಹೇಗೆ ಚಲಾಯಿಸುವುದು. ಭಾಗ 1

ಕ್ಲಸ್ಟರ್ - ಸೇವೆಗಳು, ಅವುಗಳ ಅಂತಿಮ ಬಿಂದುಗಳು ಮತ್ತು ರೂಟಿಂಗ್ ನಿಯಮಗಳು (ಉದಾಹರಣೆಗೆ, ಕ್ಯಾನರಿ ನಿಯೋಜನೆ ಅಥವಾ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ ನಿಯಮಗಳ ನಿಯಮಗಳು) ನಲ್ಲಿ ನಾವು ಹೊಂದಿರುವ ಎಲ್ಲಾ ಮಾಹಿತಿಯನ್ನು ವಿತರಿಸುವ ಮುಖ್ಯ ನಿಯಂತ್ರಣ ಘಟಕ ಪೈಲಟ್ ಆಗಿದೆ.

ಮಿಕ್ಸರ್ ಐಚ್ಛಿಕ ನಿಯಂತ್ರಣ ಪ್ಲೇನ್ ಘಟಕವಾಗಿದ್ದು ಅದು ಮೆಟ್ರಿಕ್‌ಗಳು, ಲಾಗ್‌ಗಳು ಮತ್ತು ನೆಟ್‌ವರ್ಕ್ ಸಂವಹನದ ಕುರಿತು ಯಾವುದೇ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಅವರು ನೀತಿ ನಿಯಮಗಳ ಅನುಸರಣೆ ಮತ್ತು ದರ ಮಿತಿಗಳ ಅನುಸರಣೆಯನ್ನು ಸಹ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತಾರೆ.

ಸೈಡ್‌ಕಾರ್ ಪ್ರಾಕ್ಸಿ ಕಂಟೈನರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾ ಪ್ಲೇನ್ ಅನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಶಕ್ತಿಯುತವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಪ್ರತಿನಿಧಿ ಪ್ರಾಕ್ಸಿ. ಇದನ್ನು nginx (nginmesh) ನಂತಹ ಮತ್ತೊಂದು ಅನುಷ್ಠಾನದಿಂದ ಬದಲಾಯಿಸಬಹುದು.

ಇಸ್ಟಿಯೊ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಪಾರದರ್ಶಕವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು, ಸ್ವಯಂಚಾಲಿತ ಇಂಜೆಕ್ಷನ್ ವ್ಯವಸ್ಥೆ ಇದೆ. ಇತ್ತೀಚಿನ ಅನುಷ್ಠಾನವು ಕುಬರ್ನೆಟ್ಸ್ 1.9+ ಆವೃತ್ತಿಗಳಿಗೆ ಸೂಕ್ತವಾಗಿದೆ (ಮ್ಯುಟೇಶನಲ್ ಅಡ್ಮಿಷನ್ ವೆಬ್‌ಹೂಕ್). ಕುಬರ್ನೆಟ್ಸ್ ಆವೃತ್ತಿಗಳು 1.7, 1.8 ಗೆ ಇನಿಶಿಯಲೈಸರ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿದೆ.

GRPC ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸೈಡ್‌ಕಾರ್ ಕಂಟೇನರ್‌ಗಳನ್ನು ಪೈಲಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ, ಇದು ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಸಂಭವಿಸುವ ಬದಲಾವಣೆಗಳಿಗೆ ಪುಶ್ ಮಾದರಿಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. GRPC ಅನ್ನು ಆವೃತ್ತಿ 1.6 ರಿಂದ ಎನ್ವಾಯ್‌ನಲ್ಲಿ ಬಳಸಲಾಗಿದೆ, ಇಸ್ಟಿಯೊದಲ್ಲಿ ಇದನ್ನು ಆವೃತ್ತಿ 0.8 ರಿಂದ ಬಳಸಲಾಗಿದೆ ಮತ್ತು ಪೈಲಟ್-ಏಜೆಂಟ್ ಆಗಿದೆ - ಉಡಾವಣಾ ಆಯ್ಕೆಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವ ರಾಯಭಾರಿ ಮೇಲೆ ಗೋಲಾಂಗ್ ರ್ಯಾಪರ್.

ಪೈಲಟ್ ಮತ್ತು ಮಿಕ್ಸರ್ ಸಂಪೂರ್ಣವಾಗಿ ಸ್ಥಿತಿಯಿಲ್ಲದ ಘಟಕಗಳಾಗಿವೆ, ಎಲ್ಲಾ ಸ್ಥಿತಿಯನ್ನು ಸ್ಮರಣೆಯಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ. ಅವರಿಗೆ ಸಂರಚನೆಯನ್ನು ಕುಬರ್ನೆಟ್ಸ್ ಕಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳ ರೂಪದಲ್ಲಿ ಹೊಂದಿಸಲಾಗಿದೆ, ಇವುಗಳನ್ನು ಇತ್ಯಾದಿಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ.
ಇಸ್ಟಿಯೊ-ಏಜೆಂಟ್ ಪೈಲಟ್‌ನ ವಿಳಾಸವನ್ನು ಪಡೆಯುತ್ತದೆ ಮತ್ತು ಅದಕ್ಕೆ GRPC ಸ್ಟ್ರೀಮ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ.

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

  1. ಸೇವೆಯ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ನಿಯೋಜಿಸಲಾಗುತ್ತಿದೆ.
  2. ಸೈಡ್‌ಕಾರ್ ಕಂಟೇನರ್ ಇಂಜೆಕ್ಟಿಂಗ್ ವಿಧಾನವನ್ನು ಅವಲಂಬಿಸಿ, ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಅನ್ವಯಿಸುವ ಹಂತದಲ್ಲಿ istio-init ಕಂಟೇನರ್ ಮತ್ತು istio-ಏಜೆಂಟ್ ಕಂಟೇನರ್ (ರಾಯಭಾರಿ) ಅನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ಅವುಗಳನ್ನು ಈಗಾಗಲೇ ಕುಬರ್ನೆಟ್ಸ್ ಪಾಡ್ ಘಟಕದ ವಿವರಣೆಯಲ್ಲಿ ಹಸ್ತಚಾಲಿತವಾಗಿ ಸೇರಿಸಬಹುದು.
  3. istio-init ಧಾರಕವು ಪಾಡ್‌ಗೆ iptables ನಿಯಮಗಳನ್ನು ಅನ್ವಯಿಸುವ ಸ್ಕ್ರಿಪ್ಟ್ ಆಗಿದೆ. istio-agent ಧಾರಕದಲ್ಲಿ ಸುತ್ತುವಂತೆ ಟ್ರಾಫಿಕ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಎರಡು ಆಯ್ಕೆಗಳಿವೆ: iptables ಮರುನಿರ್ದೇಶನ ನಿಯಮಗಳನ್ನು ಬಳಸಿ, ಅಥವಾ TPROXY. ಬರೆಯುವ ಸಮಯದಲ್ಲಿ, ಡೀಫಾಲ್ಟ್ ವಿಧಾನವು ಮರುನಿರ್ದೇಶನ ನಿಯಮಗಳೊಂದಿಗೆ ಇರುತ್ತದೆ. istio-init ನಲ್ಲಿ, ಯಾವ ಸಂಚಾರವನ್ನು ತಡೆಹಿಡಿಯಬೇಕು ಮತ್ತು istio-agent ಗೆ ಕಳುಹಿಸಬೇಕು ಎಂಬುದನ್ನು ಸಂರಚಿಸಲು ಸಾಧ್ಯವಿದೆ. ಉದಾಹರಣೆಗೆ, ಎಲ್ಲಾ ಒಳಬರುವ ಮತ್ತು ಎಲ್ಲಾ ಹೊರಹೋಗುವ ಸಂಚಾರವನ್ನು ಪ್ರತಿಬಂಧಿಸಲು, ನೀವು ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ -i и -b ಅರ್ಥದಲ್ಲಿ *. ಪ್ರತಿಬಂಧಿಸಲು ನೀವು ನಿರ್ದಿಷ್ಟ ಪೋರ್ಟ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು. ನಿರ್ದಿಷ್ಟ ಸಬ್‌ನೆಟ್ ಅನ್ನು ಪ್ರತಿಬಂಧಿಸದಿರಲು, ನೀವು ಅದನ್ನು ಫ್ಲ್ಯಾಗ್ ಬಳಸಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು -x.
  4. init ಕಂಟೈನರ್‌ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ನಂತರ, ಪೈಲಟ್-ಏಜೆಂಟ್ (ರಾಯಭಾರಿ) ಸೇರಿದಂತೆ ಮುಖ್ಯವಾದವುಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತದೆ. ಇದು GRPC ಮೂಲಕ ಈಗಾಗಲೇ ನಿಯೋಜಿಸಲಾದ ಪೈಲಟ್‌ಗೆ ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಎಲ್ಲಾ ಸೇವೆಗಳು ಮತ್ತು ರೂಟಿಂಗ್ ನೀತಿಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯುತ್ತದೆ. ಸ್ವೀಕರಿಸಿದ ಡೇಟಾದ ಪ್ರಕಾರ, ಅವರು ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತಾರೆ ಮತ್ತು ಅವುಗಳನ್ನು ನೇರವಾಗಿ ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿನ ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಅಂತಿಮ ಬಿಂದುಗಳಿಗೆ ನಿಯೋಜಿಸುತ್ತಾರೆ. ಒಂದು ಪ್ರಮುಖ ಅಂಶವನ್ನು ಗಮನಿಸುವುದು ಸಹ ಅಗತ್ಯವಾಗಿದೆ: ರಾಯಭಾರಿಯು ಕೇಳುಗರನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ (IP, ಪೋರ್ಟ್ ಜೋಡಿಗಳು) ಅದು ಕೇಳಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ, ವಿನಂತಿಗಳು ಪಾಡ್‌ಗೆ ಪ್ರವೇಶಿಸಿದಾಗ, ಸೈಡ್‌ಕಾರ್‌ನಲ್ಲಿರುವ ಮರುನಿರ್ದೇಶನ iptables ನಿಯಮಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ, ದೂತರು ಈಗಾಗಲೇ ಈ ಸಂಪರ್ಕಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಹುದು ಮತ್ತು ಟ್ರಾಫಿಕ್ ಅನ್ನು ಎಲ್ಲಿ ಪ್ರಾಕ್ಸಿ ಮಾಡಬೇಕೆಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು. ಈ ಹಂತದಲ್ಲಿ, ಮಾಹಿತಿಯನ್ನು ಮಿಕ್ಸರ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ, ಅದನ್ನು ನಾವು ನಂತರ ನೋಡುತ್ತೇವೆ ಮತ್ತು ಟ್ರೇಸಿಂಗ್ ಸ್ಪ್ಯಾನ್‌ಗಳನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತದೆ.

ಪರಿಣಾಮವಾಗಿ, ನಾವು ಒಂದು ಹಂತದಿಂದ (ಪೈಲಟ್) ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದಾದ ರಾಯಭಾರಿ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್‌ಗಳ ಸಂಪೂರ್ಣ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಪಡೆಯುತ್ತೇವೆ. ಎಲ್ಲಾ ಒಳಬರುವ ಮತ್ತು ಹೊರಹೋಗುವ ವಿನಂತಿಗಳು ರಾಯಭಾರಿ ಮೂಲಕ ಹೋಗುತ್ತವೆ. ಇದಲ್ಲದೆ, TCP ಸಂಚಾರವನ್ನು ಮಾತ್ರ ತಡೆಹಿಡಿಯಲಾಗುತ್ತದೆ. ಇದರರ್ಥ Kubernetes ಸೇವೆ IP ಅನ್ನು ಬದಲಾಯಿಸದೆ UDP ಮೂಲಕ kube-dns ಬಳಸಿ ಪರಿಹರಿಸಲಾಗುತ್ತದೆ. ನಂತರ, ಪರಿಹಾರದ ನಂತರ, ಹೊರಹೋಗುವ ವಿನಂತಿಯನ್ನು ದೂತರಿಂದ ತಡೆಹಿಡಿಯಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತದೆ, ವಿನಂತಿಯನ್ನು ಯಾವ ಅಂತಿಮ ಬಿಂದುವಿಗೆ ಕಳುಹಿಸಬೇಕು (ಅಥವಾ ಕಳುಹಿಸಬಾರದು, ಪ್ರವೇಶ ನೀತಿಗಳು ಅಥವಾ ಅಲ್ಗಾರಿದಮ್‌ನ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್‌ನ ಸಂದರ್ಭದಲ್ಲಿ) ಈಗಾಗಲೇ ನಿರ್ಧರಿಸುತ್ತದೆ.

ನಾವು ಪೈಲಟ್ ಅನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ, ಈಗ ಮಿಕ್ಸರ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಅದು ಏಕೆ ಬೇಕು ಎಂಬುದನ್ನು ನಾವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ಇದಕ್ಕಾಗಿ ನೀವು ಅಧಿಕೃತ ದಾಖಲೆಗಳನ್ನು ಓದಬಹುದು ಇಲ್ಲಿ.

ಅದರ ಪ್ರಸ್ತುತ ರೂಪದಲ್ಲಿ ಮಿಕ್ಸರ್ ಎರಡು ಘಟಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ಇಸ್ಟಿಯೊ-ಟೆಲಿಮೆಟ್ರಿ, ಇಸ್ಟಿಯೊ-ನೀತಿ (ಆವೃತ್ತಿ 0.8 ಕ್ಕಿಂತ ಮೊದಲು ಇದು ಒಂದು ಇಸ್ಟಿಯೊ-ಮಿಕ್ಸರ್ ಘಟಕವಾಗಿತ್ತು). ಇಬ್ಬರೂ ಮಿಕ್ಸರ್ಗಳು, ಪ್ರತಿಯೊಂದೂ ತನ್ನದೇ ಆದ ಕಾರ್ಯಕ್ಕೆ ಕಾರಣವಾಗಿದೆ. ಇಸ್ಟಿಯೊ ಟೆಲಿಮೆಟ್ರಿಯು GRPC ಮೂಲಕ ಸೈಡ್‌ಕಾರ್ ವರದಿ ಕಂಟೈನರ್‌ಗಳಿಂದ ಯಾರು ಎಲ್ಲಿಗೆ ಹೋಗುತ್ತಾರೆ ಮತ್ತು ಯಾವ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯುತ್ತಾರೆ. ಇಸ್ಟಿಯೋ-ನೀತಿಯು ಪಾಲಿಸಿ ನಿಯಮಗಳನ್ನು ತೃಪ್ತವಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು ವಿನಂತಿಗಳನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಪಾಲಿಸಿ ಚೆಕ್‌ಗಳು, ಸಹಜವಾಗಿ, ಪ್ರತಿ ವಿನಂತಿಗೆ ಕೈಗೊಳ್ಳಲಾಗುವುದಿಲ್ಲ, ಆದರೆ ಕ್ಲೈಂಟ್‌ನಲ್ಲಿ (ಸೈಡ್‌ಕಾರ್‌ನಲ್ಲಿ) ನಿರ್ದಿಷ್ಟ ಸಮಯದವರೆಗೆ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ವರದಿ ಪರಿಶೀಲನೆಗಳನ್ನು ಬ್ಯಾಚ್ ವಿನಂತಿಗಳಾಗಿ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಹೇಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಮತ್ತು ಯಾವ ನಿಯತಾಂಕಗಳನ್ನು ಸ್ವಲ್ಪ ನಂತರ ಕಳುಹಿಸಬೇಕು ಎಂದು ನೋಡೋಣ.

ಮಿಕ್ಸರ್ ಟೆಲಿಮೆಟ್ರಿ ಡೇಟಾದ ಜೋಡಣೆ ಮತ್ತು ಸಂಸ್ಕರಣೆಯಲ್ಲಿ ಅಡಚಣೆಯಿಲ್ಲದ ಕೆಲಸವನ್ನು ಖಾತ್ರಿಪಡಿಸುವ ಹೆಚ್ಚು ಲಭ್ಯವಿರುವ ಘಟಕವಾಗಿದೆ ಎಂದು ಭಾವಿಸಲಾಗಿದೆ. ಬಹು-ಹಂತದ ಬಫರ್ ಆಗಿ ಸಿಸ್ಟಮ್ ಅನ್ನು ಪಡೆಯಲಾಗುತ್ತದೆ. ಆರಂಭದಲ್ಲಿ, ಕಂಟೈನರ್‌ಗಳ ಸೈಡ್‌ಕಾರ್ ಬದಿಯಲ್ಲಿ ಡೇಟಾವನ್ನು ಬಫರ್ ಮಾಡಲಾಗುತ್ತದೆ, ನಂತರ ಮಿಕ್ಸರ್ ಬದಿಯಲ್ಲಿ, ಮತ್ತು ನಂತರ ಮಿಕ್ಸರ್ ಬ್ಯಾಕೆಂಡ್‌ಗಳು ಎಂದು ಕರೆಯುವವರಿಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಪರಿಣಾಮವಾಗಿ, ಯಾವುದೇ ಸಿಸ್ಟಮ್ ಘಟಕಗಳು ವಿಫಲವಾದರೆ, ಬಫರ್ ಬೆಳೆಯುತ್ತದೆ ಮತ್ತು ಸಿಸ್ಟಮ್ ಅನ್ನು ಪುನಃಸ್ಥಾಪಿಸಿದ ನಂತರ ಫ್ಲಶ್ ಆಗುತ್ತದೆ. ಮಿಕ್ಸರ್ ಬ್ಯಾಕೆಂಡ್‌ಗಳು ಟೆಲಿಮೆಟ್ರಿ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಲು ಅಂತಿಮ ಬಿಂದುಗಳಾಗಿವೆ: statsd, newrelic, ಇತ್ಯಾದಿ. ನಿಮ್ಮ ಸ್ವಂತ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ನೀವು ಬರೆಯಬಹುದು, ಇದು ತುಂಬಾ ಸರಳವಾಗಿದೆ ಮತ್ತು ಅದನ್ನು ಹೇಗೆ ಮಾಡಬೇಕೆಂದು ನಾವು ನೋಡುತ್ತೇವೆ.

ಉತ್ಪಾದನೆಯಲ್ಲಿ ಕುಬರ್ನೆಟ್ಸ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇಸ್ಟಿಯೊವನ್ನು ಹೇಗೆ ಚಲಾಯಿಸುವುದು. ಭಾಗ 1

ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುವುದಾದರೆ, ಇಸ್ಟಿಯೊ-ಟೆಲಿಮೆಟ್ರಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಯೋಜನೆಯು ಈ ಕೆಳಗಿನಂತಿರುತ್ತದೆ.

  1. ಸೇವೆ 1 ಸೇವೆ 2 ಗೆ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ.
  2. ಸೇವೆ 1 ಅನ್ನು ತೊರೆಯುವಾಗ, ವಿನಂತಿಯನ್ನು ಅದರ ಸ್ವಂತ ಸೈಡ್‌ಕಾರ್‌ನಲ್ಲಿ ಸುತ್ತಿಡಲಾಗುತ್ತದೆ.
  3. ಸೈಡ್‌ಕಾರ್ ದೂತರು ವಿನಂತಿಯು ಸೇವೆ 2 ಗೆ ಹೇಗೆ ಹೋಗುತ್ತದೆ ಮತ್ತು ಅಗತ್ಯ ಮಾಹಿತಿಯನ್ನು ಸಿದ್ಧಪಡಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತದೆ.
  4. ನಂತರ ಅದನ್ನು ವರದಿ ವಿನಂತಿಯನ್ನು ಬಳಸಿಕೊಂಡು istio-ಟೆಲಿಮೆಟ್ರಿಗೆ ಕಳುಹಿಸುತ್ತದೆ.
  5. ಈ ವರದಿಯನ್ನು ಬ್ಯಾಕೆಂಡ್‌ಗಳಿಗೆ ಕಳುಹಿಸಬೇಕೆ, ಯಾವುದಕ್ಕೆ ಮತ್ತು ಯಾವ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಬೇಕು ಎಂಬುದನ್ನು ಇಸ್ಟಿಯೊ-ಟೆಲಿಮೆಟ್ರಿ ನಿರ್ಧರಿಸುತ್ತದೆ.
  6. ಅಗತ್ಯವಿದ್ದಲ್ಲಿ ಇಸ್ಟಿಯೊ-ಟೆಲಿಮೆಟ್ರಿ ವರದಿ ಡೇಟಾವನ್ನು ಬ್ಯಾಕೆಂಡ್‌ಗೆ ಕಳುಹಿಸುತ್ತದೆ.

ಮುಖ್ಯ ಘಟಕಗಳನ್ನು (ಪೈಲಟ್ ಮತ್ತು ಸೈಡ್‌ಕಾರ್ ರಾಯಭಾರಿ) ಒಳಗೊಂಡಿರುವ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಇಸ್ಟಿಯೊವನ್ನು ಹೇಗೆ ನಿಯೋಜಿಸಬೇಕು ಎಂದು ಈಗ ನೋಡೋಣ.

ಮೊದಲಿಗೆ, ಪೈಲಟ್ ಓದುವ ಮುಖ್ಯ ಸಂರಚನೆಯನ್ನು (ಮೆಶ್) ನೋಡೋಣ:

apiVersion: v1
kind: ConfigMap
metadata:
  name: istio
  namespace: istio-system
  labels:
    app: istio
    service: istio
data:
  mesh: |-

    # пока что не включаем отправку tracing информации (pilot настроит envoy’и таким образом, что отправка не будет происходить)
    enableTracing: false

    # пока что не указываем mixer endpoint’ы, чтобы sidecar контейнеры не отправляли информацию туда
    #mixerCheckServer: istio-policy.istio-system:15004
    #mixerReportServer: istio-telemetry.istio-system:15004

    # ставим временной промежуток, с которым будет envoy переспрашивать Pilot (это для старой версии envoy proxy)
    rdsRefreshDelay: 5s

    # default конфигурация для envoy sidecar
    defaultConfig:
      # аналогично как rdsRefreshDelay
      discoveryRefreshDelay: 5s

      # оставляем по умолчанию (путь к конфигурации и бинарю envoy)
      configPath: "/etc/istio/proxy"
      binaryPath: "/usr/local/bin/envoy"

      # дефолтное имя запущенного sidecar контейнера (используется, например, в именах сервиса при отправке tracing span’ов)
      serviceCluster: istio-proxy

      # время, которое будет ждать envoy до того, как он принудительно завершит все установленные соединения
      drainDuration: 45s
      parentShutdownDuration: 1m0s

      # по умолчанию используются REDIRECT правила iptables. Можно изменить на TPROXY.
      #interceptionMode: REDIRECT

      # Порт, на котором будет запущена admin панель каждого sidecar контейнера (envoy)
      proxyAdminPort: 15000

      # адрес, по которому будут отправляться trace’ы по zipkin протоколу (в начале мы отключили саму отправку, поэтому это поле сейчас не будет использоваться)
      zipkinAddress: tracing-collector.tracing:9411

      # statsd адрес для отправки метрик envoy контейнеров (отключаем)
      # statsdUdpAddress: aggregator:8126

      # выключаем поддержку опции Mutual TLS
      controlPlaneAuthPolicy: NONE

      # адрес, на котором будет слушать istio-pilot для того, чтобы сообщать информацию о service discovery всем sidecar контейнерам
      discoveryAddress: istio-pilot.istio-system:15007

ಎಲ್ಲಾ ಮುಖ್ಯ ನಿಯಂತ್ರಣ ಘಟಕಗಳು (ನಿಯಂತ್ರಣ ಪ್ಲೇನ್) ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿರುವ ನೇಮ್‌ಸ್ಪೇಸ್ ಇಸ್ಟಿಯೊ-ಸಿಸ್ಟಮ್‌ನಲ್ಲಿವೆ.

ಕನಿಷ್ಠ, ನಾವು ಪೈಲಟ್ ಅನ್ನು ಮಾತ್ರ ನಿಯೋಜಿಸಬೇಕಾಗಿದೆ. ಇದಕ್ಕಾಗಿ ನಾವು ಬಳಸುತ್ತೇವೆ ಅಂತಹ ಸಂರಚನೆ.

ಮತ್ತು ನಾವು ಕಂಟೇನರ್‌ನ ಇಂಜೆಕ್ಟಿಂಗ್ ಸೈಡ್‌ಕಾರ್ ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತೇವೆ.

Init ಕಂಟೇನರ್:

initContainers:
 - name: istio-init
   args:
   - -p
   - "15001"
   - -u
   - "1337"
   - -m
   - REDIRECT
   - -i
   - '*'
   - -b
   - '*'
   - -d
   - ""
   image: istio/proxy_init:1.0.0
   imagePullPolicy: IfNotPresent
   resources:
     limits:
       memory: 128Mi
   securityContext:
     capabilities:
       add:
       - NET_ADMIN

ಮತ್ತು ಸೈಡ್ಕಾರ್:

       name: istio-proxy
       args:
         - "bash"
         - "-c"
         - |
           exec /usr/local/bin/pilot-agent proxy sidecar 
           --configPath 
           /etc/istio/proxy 
           --binaryPath 
           /usr/local/bin/envoy 
           --serviceCluster 
           service-name 
           --drainDuration 
           45s 
           --parentShutdownDuration 
           1m0s 
           --discoveryAddress 
           istio-pilot.istio-system:15007 
           --discoveryRefreshDelay 
           1s 
           --connectTimeout 
           10s 
           --proxyAdminPort 
           "15000" 
           --controlPlaneAuthPolicy 
           NONE
         env:
         - name: POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: POD_NAMESPACE
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
         - name: INSTANCE_IP
           valueFrom:
             fieldRef:
               fieldPath: status.podIP
         - name: ISTIO_META_POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: ISTIO_META_INTERCEPTION_MODE
           value: REDIRECT
         image: istio/proxyv2:1.0.0
         imagePullPolicy: IfNotPresent
         resources:
           requests:
             cpu: 100m
             memory: 128Mi
           limits:
             memory: 2048Mi
         securityContext:
           privileged: false
           readOnlyRootFilesystem: true
           runAsUser: 1337
         volumeMounts:
         - mountPath: /etc/istio/proxy
           name: istio-envoy

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

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

ಎಲ್ಲಾ ಕಂಟ್ರೋಲ್ ಪ್ಲೇನ್ ಘಟಕಗಳು ಸ್ಥಿತಿಯಿಲ್ಲದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಾಗಿವೆ ಮತ್ತು ಸಮಸ್ಯೆಗಳಿಲ್ಲದೆ ಅಡ್ಡಲಾಗಿ ಅಳೆಯಬಹುದು ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಬಹಳ ಮುಖ್ಯ. ಕುಬರ್ನೆಟ್ಸ್ ಸಂಪನ್ಮೂಲಗಳ ಕಸ್ಟಮ್ ವಿವರಣೆಗಳ ರೂಪದಲ್ಲಿ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಇತ್ಯಾದಿಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ.

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

ಬಹು-ಕ್ಲಸ್ಟರ್ ಸ್ಥಾಪನೆಗಾಗಿ, ಈ ಕೆಳಗಿನ ಮಿತಿಗಳ ಬಗ್ಗೆ ತಿಳಿದಿರಲಿ:

  1. ಪಾಡ್ CIDR ಮತ್ತು ಸೇವಾ CIDR ಎಲ್ಲಾ ಕ್ಲಸ್ಟರ್‌ಗಳಲ್ಲಿ ಅನನ್ಯವಾಗಿರಬೇಕು ಮತ್ತು ಅತಿಕ್ರಮಿಸಬಾರದು.
  2. ಎಲ್ಲಾ CIDR ಪಾಡ್‌ಗಳನ್ನು ಕ್ಲಸ್ಟರ್‌ಗಳ ನಡುವೆ ಯಾವುದೇ CIDR ಪಾಡ್‌ಗಳಿಂದ ಪ್ರವೇಶಿಸಬೇಕು.
  3. ಎಲ್ಲಾ ಕುಬರ್ನೆಟ್ಸ್ API ಸರ್ವರ್‌ಗಳು ಪರಸ್ಪರ ಪ್ರವೇಶಿಸಬಹುದಾಗಿದೆ.

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

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ