ΠΡ ΡΠ°Π΄Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ
NSM ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠΎΠΏΡΡΠΆΠ΅Π½ΠΎ Ρ ΡΡΡΠ΄Π½ΠΎΡΡΡΠΌΠΈ ΠΏΡΠΈ ΡΠΎΡΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΎΠ² ΠΏΠΎΡΡΠ°Π²ΠΎΠΊ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ. Π‘Π²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ Π΄Π΅Π»Π°ΡΡΡΡ ΡΡΡΠ΄Π½Π΅Π΅, Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
NSM ΡΠ΅ΡΠ°Π΅Ρ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ Π²Π°ΠΌ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ:
- ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅ΠΉΡΠ°Ρ Π²Π°ΠΆΠ½Π΅Π΅ ΡΠ΅ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ. Π£ΡΠ΅ΡΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠΈΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ΅ΡΡ Π΄ΠΎΡ ΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ΅ΠΏΡΡΠ°ΡΠΈΠΈ. NSM ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mTLS β ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΊΡΠ°ΡΡΡ Π²Π·Π»ΠΎΠΌΡΠΈΠΊΠΈ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΠΏΡΠΎΡΡΠΎ Π½Π΅Ρ. ΠΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π·Π°Π΄Π°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΡΡ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ.
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ. ΠΡΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π΅ΠΌΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ Π½Π° ΡΠ»ΡΡΠ°ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΎΡ NSM Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π½ΠΎΠ²ΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΠΊ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ circuit breakers, Π΄Π°ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π²ΡΠ΅ΠΌ Π²Π°ΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ.
- ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΡΠΌΠ°ΡΠΎΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. NSM ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Grafana, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π² NGINX Plus. Π ΡΠ°ΠΊΠΆΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π½Π°Ρ Open Tracing ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ.
- ΠΠΈΠ±ΡΠΈΠ΄Π½ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ , Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ Π½Π° Kubernetes. NSM Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΎΡΡΠ°Π½ΡΡΡΡ Π±Π΅Π· ΠΏΡΠΈΡΠΌΠΎΡΡΠ°. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΠΎΠ³ΠΎ NGINX Kubernetes Ingress Controller ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠΌΠΎΠ³ΡΡ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ mesh ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
NSM ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ Ρ Π½ΡΠ»Π΅Π²ΡΠΌ Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ΠΌ, ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΠΏΠΎΠΌΠΎΠ³Π°Ρ Π±ΡΡΡΡΠΎ ΠΈ ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΡΡΠ°Π½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ DevOps ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π°Π²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ NGINX Service Mesh?
NSM ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ data plane Π΄Π»Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ (ΡΠ΅ΡΠ²ΠΈΡ-ΠΊ-ΡΠ΅ΡΠ²ΠΈΡΡ) ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½Π½ΠΎΠ³ΠΎ NGINX Plus Ingress Controller Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π΅Π΄ΠΈΠ½ΡΠΌ control plane.
Control plane ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ NGINX Plus data plane, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎ NGINX Plus sidecars.
Π NSM sidecars proxy ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Π² mesh. ΠΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:
- Grafana, Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Prometheus, Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΏΠ°Π½Π΅Π»Ρ NSM ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π²Π°ΠΌ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅;
- Kubernetes Ingress Controllers, Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌ ΠΈ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΌ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ Π² mesh;
- SPIRE, CA Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π² mesh;
- NATS, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΡΡΠΎΠ², Ρ control plane ΠΊ sidecars;
- Open Tracing, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΎΡΠ»Π°Π΄ΠΊΠ° (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Zipkin ΠΈ Jaeger);
- Prometheus, ΡΠ±ΠΎΡ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΎΡ NGINX Plus sidecars, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΡΠ»ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈ SSL handshakes.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
NGINX Plus Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ data plane ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ sidecar proxy (Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΠΊ) ΠΈ Ingress controller (Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ), ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Ρ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ.
Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ:
- ΠΠ·Π°ΠΈΠΌΠ½ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ TLS (mTLS);
- ΠΠ°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ;
- ΠΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ;
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ;
- Circuit breaking;
- Π‘ΠΈΠ½Π΅-Π·Π΅Π»Π΅Π½ΡΠ΅ ΠΈ ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ;
- ΠΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ°.
ΠΠ°ΠΏΡΡΠΊ NGINX Service Mesh
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° NSM Π½ΡΠΆΠ½ΠΎ:
- Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Kubernetes. NGINX Service Mesh ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ Kubernetes, Π²ΠΊΠ»ΡΡΠ°Ρ Amazon Elastic Container Service for Kubernetes (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), VMware vSphere ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes, ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡΠ΅ Π½Π° "ΠΆΠ΅Π»Π΅Π·Π½ΡΡ " ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ;
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
kubectl
, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅, ΠΎΡΠΊΡΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ NSM; - ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌ Π²ΡΠΏΡΡΠΊΠΎΠ² NGINX Service Mesh. Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π·Ρ NSM, Π½ΡΠΆΠ½ΡΠ΅ Π΄Π»Ρ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ Π² Π·Π°ΠΊΡΡΡΡΡ registry Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes. ΠΠ°ΠΊΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ
nginx-meshctl
, Π½ΡΠΆΠ½ΡΡ Π΄Π»Ρ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ NSM.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ NSM Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ NSM ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ (Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°Π΄ΠΎ Π΅Π³ΠΎ
$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0 ;
./nginx-meshctl deploy
--nginx-mesh-api-image "${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}"
--nginx-mesh-sidecar-image "${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}"
--nginx-mesh-init-image "${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}"
--nginx-mesh-metrics-image "${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"
Created namespace "nginx-mesh".
Created SpiffeID CRD.
Waiting for Spire pods to be running...done.
Deployed Spire.
Deployed NATS server.
Created traffic policy CRDs.
Deployed Mesh API.
Deployed Metrics API Server.
Deployed Prometheus Server nginx-mesh/prometheus-server.
Deployed Grafana nginx-mesh/grafana.
Deployed tracing server nginx-mesh/zipkin.
All resources created. Testing the connection to the Service Mesh API Server...
Connected to the NGINX Service Mesh API successfully.
NGINX Service Mesh is running.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ nginx-meshctl deploy βh
ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ control plane ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ nginx-mesh, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ:
$ kubectl get pods βn nginx-mesh
NAME READY STATUS RESTARTS AGE
grafana-6cc6958cd9-dccj6 1/1 Running 0 2d19h
mesh-api-6b95576c46-8npkb 1/1 Running 0 2d19h
nats-server-6d5c57f894-225qn 1/1 Running 0 2d19h
prometheus-server-65c95b788b-zkt95 1/1 Running 0 2d19h
smi-metrics-5986dfb8d5-q6gfj 1/1 Running 0 2d19h
spire-agent-5cf87 1/1 Running 0 2d19h
spire-agent-rr2tt 1/1 Running 0 2d19h
spire-agent-vwjbv 1/1 Running 0 2d19h
spire-server-0 2/2 Running 0 2d19h
zipkin-6f7cbf5467-ns6wc 1/1 Running 0 2d19h
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΡ
ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΎΠΊΡΠΈ NGINX sidecars Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ°ΠΉΡΠ΅
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ°Π·Π²Π΅ΡΠ½Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ sleep Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ default, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Pod β ΡΠ²ΠΈΠ΄ΠΈΠΌ Π΄Π²Π° Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ sleep ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ Π½ΠΈΠΌ sidecar:
$ kubectl apply βf sleep.yaml
$ kubectl get pods βn default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2/2 Running 0 5h23m
Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ sleep Π² ΠΏΠ°Π½Π΅Π»ΠΈ NGINX Plus, Π·Π°ΠΏΡΡΠΊΠ°Ρ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ sidecar Ρ Π²Π°ΡΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ:
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886
ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π·Π°Ρ
ΠΎΠ΄ΠΈΠΌ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ Kubernetes Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ ΡΡΠ°ΡΠΈΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ circuit breaking, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΌΠΎΡΡΠΈΡΠ΅
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
NGINX Service Mesh Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π°
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ NGINX Plus Ingress Controller, Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Π² Π°Π²ΡΠΎΡΡΡΠ²Π΅ ΠΠ°Π²Π»Π° ΠΠ΅ΠΌΠΊΠΎΠ²ΠΈΡΠ°, ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com