ááŸááºáá»ááºá áá¬áá¬ááŒááº: áááºáá±á¬ááºááŸá¯ meshes áá»á¬ážááẠmicroservice áááá¯áá¬ááᯠááá¯ááºáá¬áá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážá¡ááœáẠáá±ááºáá®á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááœáẠáááºááá¯ááºááá·áºááŒá±ááŸááºážáá»ááºáá
áºáá¯ááŒá
áºáá¬áááºááŸá¬ áá±áá»á¬áá«áááºá Istio ááẠDevOps á¡ááºáá»ááºáá®áá¬áá»á¬ážá
áœá¬áááŸá¯ááºáá»á¬ážááœáẠááŸááá±áá±á¬áºáááºáž áááºážááẠáááºážáá
áœááºážáá±á¬ááºááá¯ááºáááºáá»á¬ážááŸáá·áºáááºáááºá áá»ááºáá»ááºááŒáá·áºááŒáá·áºááááŸáááá¯ááºáá±á¬áºáááºáž áááºážááŸáá·áºáááºážááŸá®ážáá»áœááºážáááºááẠá¡áá»áááºáá»á¬ážá
áœá¬ááá¯á¡ááºááá¯ááºáááºááŸá¬ áá»áŸááá±á¬áá¯ááºáá¯ááºá¡áá
áºáá
áºáá¯ááŒá
áºáááºá áááºááœááºáá±ážáá¯áá¹ááá® Orange Networks á០áá±á¬ááºáááºááŒá®ážáá»á¬ážá¡ááœáẠcloud computing ááᯠáá¬áááºáá°ááá·áº áá»á¬áááºá¡ááºáá»ááºáá®áᬠRinor Maloku ááẠIstio ááá¯á· áá»ááºááŒááºá
áœá¬ áááºáááºááŸáá¯ááºážááŸáá¯ááºáž áá¯ááºáá»áŸáá¯ážááá¯ááºá
á±ááá·áº á¡á¶á·ááœááºáá
á¹á
ááºážáá»á¬ážááᯠáá±ážáá¬ážáá²á·áááºá Istio ááẠáá±áá°áá»á¡á¬ážááŒáá·áº áááºážááᯠáááºáááºáá²á·ááá¯á· áá»ááºááŒááºá
áœá¬ ááŒááºááá¯ááºáá¯á¶ááŒáá·áº áááºážááá¬ááºáááºážááᯠá
áááºáááºá
Istio â Googleá IBM ááŸáá·áº Lyft ááá¯á·á០á¡ááœá²á·áá»á¬ážááŸáá·áº áá°ážáá±á«ááºážáááºáá®ážáá¬ážáá±á¬ Open Source ááá±á¬áá»ááºá áááºážááẠmicroservices-based applications áá»á¬ážáá²á·ááá¯á·áá±á¬ ááŸá¯ááºááœá±ážááŸá¯áá»á¬ážááᯠááŒá±ááŸááºážáá±ážáááº-
- áááºážá ááºážáááºáž á á®áá¶ááá·áºááœá²ááŸá¯á¡áá»áááºáá¯ááºááŒááºážá áááºá ááºážááŒááºážá áá»áááºááœááºáá»áŸá¬ááŸáááŒááºážá
- áá¯á¶ááœá¯á¶ááŸá¯: á¡áá¯á¶ážááŒá¯áá° á á áºááŸááºááŒá±á¬ááºážááŸáá·áº ááœáá·áºááŒá¯áá»ááºá
- ááŒááºááá¯ááºá áœááºáž: ááŒá±áá¬áá¶ááŒááºážá á á±á¬áá·áºááŒáá·áºááŒááºážá áá áºáá¯ááºááŒááºážá
áá«ááœá±á¡á¬ážáá¯á¶ážááᯠá¡ááá®áá±ážááŸááºážá¡ááá·áºááŸá¬ ááŒá±ááŸááºážááá¯ááºáá±ááá·áº á¡á²áá®áá±á¬ááºááá¯ááºážááŸá¬ ááá·áºáááºáá±á¬ááºááŸá¯ááœá±á âááá¯ááºáááá¯â ááŒá áºáá±á¬á·ááŸá¬ ááá¯ááºáá«áá°ážá á€ááŒá¿áá¬áá»á¬ážááá¯ááŒá±ááŸááºážááẠá¡ááá¯á¡á¬ážáá¯ááºááŸá¯á¡á¬ážáá¯á¶ážááẠáá¯ááºáááºážáááºááá¯ážá¡ááœáẠááá¯ááºááá¯ááºá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº áá¯áá¹ááá®á¡áááºážá¡ááŒá áºáá»á¬ážááᯠááŒá¯ááºážáá®ážááŒááºážáááºááŒá áºáááºá á¥ááá¬áá áºáá¯ááá¯ááŒáá·áºáá¡á±á¬ááºá
ááá±á¬áá»ááºáááºáá±áá»á¬- áá¯á¶á·ááŒááºáá»ááºá¡ááºá¹áá«áááºááᯠááá·áºááẠá¡áá»áááºáááºáá»áŸááŒá¬ááááºážá
ááŒá¯á á¯áá°- ááŒá±ážááŸá áºáá¯ááºáMP: áá¬áá².. á¡á²áá« CRUD áá²!
R- CRUD áá¯ááºááŒááºážááẠááœááºáá°áá±á¬á¡ááá¯ááºážááŒá áºáá±á¬áºáááºáž áá¯á¶ážá áœá²áá°áá»á¬ážááŸáá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá á áºááŸááºááŒá±á¬ááºážááŸáá·áº ááœáá·áºááŒá¯ááẠááá¯á¡ááºáá±áá±ážáááºá ááœááºáááºááẠáá¯á¶ááŒááºá áááºáá»áááŒááºážáááŸááá±á¬ááŒá±á¬áá·áºá áááºááẠáááºáá«ááá²áá² áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááá¯á¡ááºáááºááŒá áºáááºácircuit breaker áá¯á¶á ᶠáá±á¬ááºáááºáá»á¬ážááœááºá ááá¯á·á¡ááŒáẠá áá áºáá áºáá¯áá¯á¶áž áá»ááºáááœá¬ážá á±ááẠáá±áá»á¬á á±áááºá áááºááẠá¡áá»áááºáá¯ááºááœá¬ážááŒááºáž ááá¯á¡ááºáá«áááºáá (áá±á¬áºááŒáá¬ážáá±á¬ áá¯á¶á á¶ááŸá áºáá»áá¯ážáá¯á¶ážá¡ááŒá±á¬ááºáž á¡áá±ážá áááºááᯠáá±á¬ááºážáá«ážááœáẠáá±á¬ááºááŸááŒáá·áºáá« - ááá·áºááŸááºážááŒá± áá¬áá¬ááŒááºáá«áááºá)ááŸáá·áº ááŒá¿áá¬áá»á¬ážááᯠááŸá¬ááœá±áááºá á á±á¬áá·áºááŒáá·áºááŒááºážá ááŒá±áá¬áá¶ááŒááºážá [âŠ]MP: á¡áá¯ážá áá«ááᯠáá®á¡ááºá¹áá«áááºááᯠáá¯ááºáá¯ááºáááºáá±á¬ááºááŸá¯ááŸá¬ ááá·áºááá¯ááºááŒáá¡á±á¬ááºá
á¡áá¯ááºáá®áá¬á ááŸááºážáá«áááºáááºáá«áááº- áááºáá±á¬ááºááŸá¯áá áºáá¯ááá·áºááá¯á· ááá¯á¡ááºáá²á· á¡ááá·áºáá²á· ááŒáá¯ážá á¬ážá¡á¬ážáá¯ááºááŸá¯ ááá¬áá ááŒá®ážáá¬ážáá«áááºá á€áá±á¬ááºážáá«ážááœááºá áááºáá±á¬ááºááŸá¯áá»á¬ážá០á¡áááºáá±á¬áºááŒáá« ááŸá¯ááºááœá±ážááŸá¯á¡á¬ážáá¯á¶ážááᯠIstio áááºáá²á·ááá¯á· áááºááŸá¬ážáááºáž (áááºážááẠáá¯ááºáááºážááá¯ááºáᬠáá¯áá¹áááá±áá¡á áááºááœááºááŒááºážááá¯ááº) ááᯠáááºáá±á¬ááºááŸá¯áá»á¬ážá០áááºááŸá¬ážáááºááᯠáá±á·áá¬áá«áááºá
ááœá±á¬ááá¯: á€áá±á¬ááºážáá«ážááẠááá·áºááœáẠKubernetes ááŸáá·áº áááºáááºáá±á¬ áá¯ááºáááºážááœááºááá¯ááºáᬠá¡ááááá¬ááŸááááºáᯠáá°ááá«áááºá ááá¯ááºááẠá
á¬áááºááá¯á· á¡ááŒá¶áá±ážáá«áááºá
á¡áá¯ááºáá®áá¬
Istio áááŸááá±á¬ááá¹áá¬ááœááºá áááºáá±á¬ááºááŸá¯áá áºáá¯ááẠá¡ááŒá¬ážáá áºáá¯áá¶ááá¯á· ááá¯ááºááá¯ááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŒá¯áá¯ááºááŒá®áž áá»ááºááœááºááŸá¯áá áºáá¯ááœááºá áááºáá±á¬ááºááŸá¯ááẠáááºážááᯠááá¯ááºááá¯ááºááá¯ááºááœááºááááº- ááŒáá¯ážá á¬ážááŸá¯á¡áá áºááŒá¯áá¯ááºáááºá á¡áá»áááºáá¯ááºááœá¬ážá á±áááºá circuit breaker áá áºáá¯ááœáá·áºááŒááºáž á¡á ááŸááááºááá¯á·ááᯠáá¯ááºáá±á¬ááºááááºááŒá áºáááºá
Kubernetes ááŸá ááœááºáááºá¡ááœá¬ážá¡áá¬
Istio ááẠáááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº áá¯á¶ážááááºážááœá¬ááŒá®áž ááœááºáááºáááºááœááºááŸá¯ááᯠá¡ááŸá±á¬áá·áºá¡ááŸááºáá±ážááŒááºážááŒáá·áº áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ á¡áá°ážááŒá¯ááŒá±ááŸááºážáá»ááºáá áºáá¯ááᯠáá±ážáá«áááºá áááºážáááºá€ááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºáááº-
- á¡ááŸá¬ážáá¶ááá¯ááºáááº: áá¯á¶á·ááŒááºááŸá¯ááŸá á¡ááŒá±á¡áá±áá¯ááºááᯠá¡ááŒá±áá¶á áá±á¬ááºážááá¯ááŸá¯ áá¡á±á¬ááºááŒááºáá² áááºážááᯠááŒááºáááºáá¯ááºáá±á¬ááºááŒááºážááŸááááŸá áá¬ážáááºáááºá
- áááá¹ááá® ááŒáá·áºáá»ááá±áž: áááºáá±á¬ááºááŸá¯á áá¬ážááŸááºážá¡áá áºááá¯á· áá±á¬ááºážááá¯áá»ááºáá»á¬ážá áá¯á¶áá±áá¬ááá¯ááºááŸá¯ááºážááá¯áᬠááŒááºááœáŸááºážáááºá
- á á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áº ááá¯ááºážáá¬ááŸá¯áá»á¬áž: áááºáá±á¬ááºááŸá¯ááᯠáá¯á¶á·ááŒááºááẠá¡áá»áááºáááºáá»áŸááŒá¬áá²á·ááááºážá
- ááŒá±áá¬áá¶ááŒááºážááŸáá·áº á á±á¬áá·áºááŒáá·áºááá¯ááºááŸá¯: áá±á¬ááºážááá¯ááŸá¯áá áºáá¯á á®ááœáẠá¡áá°ážáá±á«ááºážá á®ážáá»á¬ážááᯠáá±á«ááºážááá·áºáᬠá¡á á¯á¡áá±ážáá áºáá»áŸá±á¬áẠáááºážááá¯á·ááᯠááŒá±áá¬áá¶áá«á
- áá¯á¶ááœá¯á¶ááŸá¯â JWT ááá¯áááºááᯠáá¯ááºáá°áááºá á á áºááŸááºááŒá±á¬ááºážáááºáá±ááŒááŒá®áž á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááᯠááœáá·áºááŒá¯áá±ážáááºá
á€á¡áá¬áá»á¬ážááẠááá·áºá¡á¬áž á áááºáááºá á¬ážá á±áááºá¡ááœáẠááŒá áºááá¯ááºáá»á±á¡áááºážáááºáá»áŸáᬠ(á¡ááŸááºáááẠá¡áááºážáááºáá»áŸáá¬ááŒá áºáááº)á ááᯠáááºážááá¬ááá¯ááºáᬠá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáá±á·áá¬ááŒáá·áºáá¡á±á¬ááºá
Istio áááá¯áá¬
Istio ááẠááœááºáááºá¡ááœá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááᯠááŒá¬ážááŒááºááŒá®áž áááºážááœáẠá ááºážáá»á¥áºážá ááºážáááºážáá»á¬ážááᯠá¡áá¯á¶ážáá»áᬠá áááºááá±á¬ááºá á®ááᯠáá±ážááœá²ááœááºááááºáá¬áá¯á¶á á¶ááŒáá·áº áá°ážáá áºáá¯á á®ááœáẠááá·áºááœááºážáááºá áá¯ááºáá±á¬ááºááá¯ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠááœáá·áºáá±ážáá±á¬ ááá±á¬ááºá á®áá»á¬ážááẠa áá¯á¶á á¶ááŒá áºáááºá áá±áá¬áá±áá¬ááºááá¯á·ááᯠá¡áá¯á¶ážááŒá¯á dynamically configure áá¯ááºááá¯ááºáá«áááºá ááááºážáá»á¯ááºáá±ážáá±áá¬ááº.
áá±áá¬áá±áá¬ááº
pods áá»á¬ážááœááºááá·áºááœááºážáá¬ážáá±á¬ proxy áá»á¬ážááẠIstio ááẠáá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±á¬ááá¯á¡ááºáá»ááºáá»á¬ážááᯠá¡ááœááºááá°ááŒáá·áºáááºážááá¯ááºá á±áá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááŒááºááŒáá¯ážá á¬ážááŒá®áž circuit breaker áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá á áºáá±ážááŒáá·áºááŒáá«á áá¯á·á
Envoy ááœáẠáááºáá¶ááŒáá¯ážá
á¬ážááŸá¯áá»á¬ážááŸáá·áº áááºáááºážáá±á¬ááºááœááºážááŸá¯áá»á¬ážááᯠáááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºáááºáááºážá
á¡ááŸá áºáá»á¯ááºáááº:
- á¡áá°ážáá¶áááẠ(áá»áœááºá¯ááºááá¯á·ááẠááŒáá·áºáá±áá¬ážááá·áº áá±ážááœá²ááœááºááááºáá¬ááœááºááŸááá±á¬ ááá±á¬ááºá
á®á¡ááŒá±á¬ááºáž ááŒá±á¬áá±áá«áááºá
áá®ážááŒá¬ážáá¯ááºáá¯áẠ- ááá·áºááŸááºážááŒá± áá¬áá¬ááŒááºá) áááºáá±á¬ááºááŸá¯ B á áááá¥ááá¬áá áºáá¯áá¶ááá¯á· áá±á¬ááºážááá¯áá»ááºáá áºáᯠáá±ážááá¯á·ááŒá®áž áá¡á±á¬ááºááŒááºáá«á - Envoy Sidecar á áááºááŒáá¯ážá á¬ážáááºá (áááºááŒáá¯ážá á¬ážáá«). (1)
- áá±á¬ááºážááá¯ááŸá¯ áá»ááºááœááºááŒá®áž áááºážááᯠáá±á«áºáá±á¬ ááá±á¬ááºá á®ááá¯á· ááŒááºááá¯á·áááºá
- áááºážááẠCircuit Breaker ááá¯ááœáá·áºááŒá®áž áá±á¬ááºáááºááœá²áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡ááœáẠáá±á¬ááºáááºáá±á¬ááºááŸá¯ááᯠáá±á«áºááá¯áááºá (2)
ááá¯ááá¯áááºááŸá¬ áááºááẠá¡ááŒá¬ážáá±á¬ Retry library ááᯠá¡áá¯á¶ážááŒá¯ááẠáááá¯á¡ááºáá«á áááºááẠáááá¯ááááºážáááºážáá¬áá¬á áá¬áž Xá Y ááá¯á·ááá¯áẠZ ááŒáá·áº Circuit Breaking ááŸáá·áº Service Discovery ááᯠáááºááá¯ááºááá¯áẠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáááá¯á¡ááºáá«á á€á¡áá¬á¡á¬ážáá¯á¶ážááŸáá·áº á¡ááŒá¬ážáá»á¬ážá áœá¬ááᯠááœááºáááºááœáẠáááá¯ááºáá«áááºá Istio ááœáẠáááá¯á¡ááºáá«á áááºááá·áº áá¯ááºá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá
ááá¯ááºáááº! ááᯠáááºááẠIstio ááŸáá·áº ááá®ážáá áºáá¯ááœá¬ážáá»ááºáá±á¬áºáááºáž áá¶áááá»á¬ážá ááœáá·áºááœáá·áºáááºážáááºáž áá±ážááœááºážáá»á¬áž ááŸááá±áá±ážáááºá á€á¡áá¬ááẠáááá¡áá»áááºá¡áá«ááá¯ááºážá¡ááœáẠuniversal solution ááŒá áºáá«áá ááá·áºááœáẠááá¬ááá¶áááá áºáᯠááŸááááº- á¡ááŸááºá ááºá á áºááœáẠááá¯ááŒá±ááŸááºážáááºážáá»á¬ážá¡á¬ážáá¯á¶ážááẠáááºááá·áºááá á¹á ááŸáá·áºáá»áŸ áááá·áºáá±á¬áºáá±á¬á·áá«á
áá±á¬ááºáá¯á¶ážááœáẠáááºááẠâá áááºááŒáá¯ááºááŒááºáááºááá¯ááºááá±á¬â áᯠáá±ážáááºá
á¡áᯠáááºáááºááá®ážá¡ááœáẠá¡áááºááá·áºááŒá áºááŒá®á Control Plane áá²á· áááºážááŸá®ážáá¡á±á¬ááºá
ááááºážáá»á¯ááºáá±ážáá±áá¬ááº
áááºážááœáẠá¡á áááºá¡ááá¯ááºáž áá¯á¶ážáᯠáá«áááºáá«áááºá áá±áá¬ááºááŸá°áž, áá±á¬á ááºáᬠО Citadelá¡ááœá¬ážá¡áá¬áááºážááŒá±á¬ááºážááŒá±á¬ááºážáááºá áá°áá«ááá»á¬ážááᯠááŒáá¹áá¬ááºážáááºááŸáá·áº áááºáá®áá®áá¬áá±áá¬á á¯áá±á¬ááºážááẠáá¶ááááºáá»á¬ážááᯠá á®á ááºáááºááŸááºááẠá¡áá°áááœáá¯ááºáá±á¬ááºáá±á¬á ááááºážááááºážá¡á á¡á¬ážáá¯á¶ážááẠá€áá²á·ááá¯á· ááŒá áºáá±áááº-
Control Plane á Data Plane ááŸáá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯
áá¶ááááºáá»á¬áž (ááá¯ááá¯áááºááŸá¬ áá±áá¬áá±áá¬ááº) ááᯠá¡áá¯á¶ážááŒá¯á á
á®á
ááºáááºááŸááºáá¬ážáááºá
Istio ááŸáá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážá áááºá ááºááŸá¯
áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº Istio ááááºááœááºááŸá¯ááᯠáá±á¬áºááŒáá²á·ááŒá®ážááŒá áºáá±á¬áºáááºáž ááŒá±á¬ááºážááŒááºááá¯ááºáá«- áááºáá±á¬ááºááŸá¯áá»á¬ážááẠIstio ááŸáá·áº áááºááá¯á·áááºá ááºáá±ááááºážá
ááá¯ážááá¯ážáá¬ážáá¬áž ááŒá±á¬ááá»áŸáẠáááºáá±á¬ááºááŸá¯áá»á¬ážááẠáá«ážáá»á¬ážááẠáá±áá²á·ááá¯á· Istio á ááŸááá±ááŒááºážááᯠáááááŒá¯ááááŒááŒá®áž áááºážááá¯á·ááá¯ááºáá°ááá¯á· "áá±ááá¯áᬠáá¬áá²" áᯠáá±ážáá±á¬á¡áá«á
áá¯á¶á¥ááá¬
ááá¯á·ááŒá±á¬áá·áº áááºááẠá¡áá¯ááºáá¯ááºáá±á¬ á¡á á¯á¡áá±ážáá áºáá¯ááᯠáá°ááá¯ááºááŒá®áž Istio á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠááŒáá·áºáá»ááºááŒá®ážáá±á¬ááºá áááºážááœááºááŸááá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááẠáááºáááºá¡áá¯ááºáá¯ááºáááºááŒá áºááŒá®áž á¡ááá¯áá«á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáááºááŸá¬ážááŒá®ážáá±á¬áẠá¡áá¬á¡á¬ážáá¯á¶ážááẠááŒááºáááºáá±á¬ááºážááœááºáá¬áááºááŒá áºáááºá á€ááá á¹á ááœáẠáááºááẠIstio ááŸáá±ážáá±á¬ á áœááºážáááºáá»á¬áž áá¯á¶ážááŸá¯á¶ážáááºááŸá¬ ááŸááºážáá«áááºá
áá¯á¶áá±á¬ááºáá²á·áá®á¡áá¯áá® - áá®á¡ááááá¬ááᯠáááºááœá±á·á¡áá¯á¶ážáá»ááá¯ááºááŒáá¡á±á¬ááºá
áááºááœá±á·ááœááºááŒá áºáááºá
Istio ááẠá¡áááºážáá¯á¶áž vCPU 4 áá¯ááŸáá·áº RAM 8 GB áááá¯ááºáá±á¬ Kubernetes á¡á
á¯á¡áá±ážáá
áºáᯠááá¯á¡ááºáááºá á¡á
á¯á¡ááœá²á·áá
áºáá¯ááᯠá¡ááŒááºáááºááŸááºááŒá®áž áá±á¬ááºážáá«ážá០ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠááá¯ááºáá¬áááºá áá¯á¶ážá
áœá²áá°á¡áá
áºáá»á¬ážááᯠáá±ážáá±á¬ááºááá·áº Google Cloud Platform ááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááŒá¶ááŒá¯ááá¯áá«áááºá
ááœááºááá¯ážáẠutility ááŸáááá·áº Kubernetes ááá¯á·áááºáá±á¬ááºááœáá·áºááᯠááŒááºáááºáááºááŸááºááŒá®ážáá±á¬ááºá Helm áááºáá±á·áá»áºáááºáá±áá»á¬ááŸáá áºááá·áº Istio ááᯠááá·áºááœááºážááá¯ááºáááºá
áá²á·á ááºáááºáááºááŒááºážá
ááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºáž Helm client ááᯠááá·áºááœááºáá»á°áá¬ááœáẠááá·áºááœááºážáá«á
Istio ááᯠááá·áºááœááºážááŒááºážá
Istio á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºáá«á [istio-resources]
.
Istio á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠá¡ááœááºááá°ááœá²ááŒá¬ážááááŸáááá¯ááºááẠK8s á¡á
á¯á¡áá±ážááœáẠnamespace áá
áºáá¯áááºáá®ážáá«á istio-system
:
$ kubectl create namespace istio-system
áááºážááœáŸááºááá¯á·ááœá¬ážááŒááºážááŒáá·áº ááá·áºááœááºážááŸá¯ááᯠá¡ááŒá®ážáááºáá«á [istio-resources]
ááŸáá·áº command ááᯠrun:
$ 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 á á¡áááá¡á
áááºá¡ááá¯ááºážáá»á¬ážááᯠááá¯ááºáá
áºáá¯ááá¯á·áá¯ááºáá±ážáááºááŒá
áºáááºá istio.yaml
. áá»áœááºá¯ááºááá¯á·ááẠá¡á±á¬ááºáá±á¬áºááŒáá« ááá·áºáááºáá»ááºáá»á¬ážááᯠáááºááŸááºáá±ážááŒááºážááŒáá·áº ááááááá¯ááºááá¯ááºááŸáá·áº ááá¯ááºáá®á
á±ááẠá
á¶áá¯á¶á
á¶áá¯á¶á
á¶ááᯠááŒá¯ááŒááºááœááºážáá¶áá¬ážáá«áááºá
-
global.mtls.enabled
ááœááºáááºáááºáá¬ážáááºáfalse
(ááá¯ááá¯áááºááŸá¬ mTLS á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážááᯠááááºáá¬ážááẠ- ááá·áºááŸááºážááŒá±á)áá»áœááºá¯ááºááá¯á·ááá»áááºážááœá±á·ááŒááºážáá¯ááºáááºážá ááºááᯠááá¯ážááŸááºážá á±áááºá -
tracing.enabled
Jaeger ááᯠá¡áá¯á¶ážááŒá¯á áá±á¬ááºážááá¯ááŸá¯ ááŒá±áá¬áá¶ááŒááºáž áá«áááºáááºá -
kiali.enabled
áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááœá¬ážá¡áá¬áá»á¬ážááᯠááŒááºáá¬á á±ááẠá¡á á¯á¡áá±ážáá áºáá¯ááœáẠKiali ááᯠááá·áºááœááºážáá«á -
grafana.enabled
á á¯áá±á¬ááºážáá¬ážáá±á¬ áááºááá áºáá»á¬ážááᯠááŒááºáá¬á á±ááẠGrafana ááᯠááá·áºááœááºážáá«á
á¡áááá·áºááŒáá·áº áá¯ááºáá¯ááºáá¬ážáá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒáá«á áá¯á·á
$ kubectl apply -f istio.yaml
á¡á
á¯á¡áá±ážááœáẠIstio áááºáááºááŒááºáž ááŒá®ážáá«ááŒá®á pods á¡á¬ážáá¯á¶ážááẠnamespace ááœááºááŸááááºá¡ááá
á±á¬áá·áºáá«á istio-system
ááá¯ááºáááá·áºáááºá Running
ááá¯á·ááá¯áẠCompleted
á¡á±á¬ááºáá« command ááᯠrun ááŒááºážááŒáá·áº
$ kubectl get pods -n istio-system
ááᯠáá»áœááºá¯ááºááá¯á·ááẠáá»áŸá±á¬ááºááœáŸá¬ááᯠá áááºá áá¯ááºáá±á¬ááºáááá·áº áá±á¬ááºá¡ááá¯ááºážááœáẠáááºáááºáá¯ááºáá±á¬ááºááẠá¡áááºááá·áºááŒá áºáá±áá«ááŒá®á
á áááºáá¬ááºááá¯ááºážááá¯ááºáᬠááœá²ááŒááºážá áááºááŒá¬ááŒááºáž á¡ááºááá®áá±ážááŸááºážá áááá¯áá¬
áá±á¬áºááŒáá¬ážááŒá®ážááŒá
áºáá±á¬ Sentiment Analysis microservice application áááá°áá¬ááᯠá¡áá¯á¶ážááŒá¯ááŒáá«á
áá¯á·
á¡ááá®áá±ážááŸááºážááœáẠmicroservices áá±ážáá¯áá«áááºáááº-
- áááºáá±á¬ááºááŸá¯ SA- FrontendReactjs á¡ááá®áá±ážááŸááºážáá áºáá¯á ááŸá±á·áá¯á¶ážááœáẠáá±á¬ááºááœááºáá±ážáá±á¬á
- áááºáá±á¬ááºááŸá¯ SA-WebAppSentiment ááœá²ááŒááºážá áááºááŒá¬ááŸá¯áá±ážááŒááºážáá»ááºáá»á¬ážááá¯áá±á¬ááºááœááºáá±ážáá±á¬á
- áááºáá±á¬ááºááŸá¯ SA-Logicááá¯ááºááá¯ááºáá¯ááºáá±á¬ááºáá±ážáá±á¬á
á áááºáá¬ááºáá»á¬ážááœá²ááŒááºážá áááºááŒá¬ ; - áááºáá±á¬ááºááŸá¯ SA-áá¯á¶á·ááŒááºáá»ááºááœá²ááŒááºážá áááºááŒá¬ááŸá¯á áááá»ááŸá¯ááŸáá·áº áááºáááºá á¡áá¯á¶ážááŒá¯áá°áá»á¬ážáá¶á០áá¯á¶á·ááŒááºáá»ááºááᯠáááºáá¶áááŸáááá·áºá
á€áá¯á¶ááœááºá áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááŒáẠKubernetes á០á¡áááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠááá·áºáá»á±á¬áºáá±á¬áááºáá±á¬ááºááŸá¯áá»á¬ážááá¯á· áááºážááŒá±á¬ááºážáá±ážááá·áº Ingress Controller ááá¯áááºáž áá»áœááºá¯ááºááá¯á·ááœá±á·ááŒááºááááºá Istio ááẠáááºážá Ingress Gateway á¡ááœááºážááŸá á¡áá¬ážáá°ááá±á¬ááá¬ážááᯠá¡áá¯á¶ážááŒá¯áá¬ážááŒá®ážá áá±á¬ááºáááºá¡áá±ážá
áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáááºáááºáá±á¬áºááŒáá«áááºá
Istio á០proxy áá áºáá¯ááŒáá·áº á¡ááºááºáá áºáá¯ááᯠáá¯ááºáá±á¬ááºááŒááºážá
áá±á¬ááºážáá«ážááœááºáá±á¬áºááŒáá¬ážáá±á¬ áá±á¬ááºáááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœááºá áááºáááá¯ááŸá±á¬ááºáá¬ááᯠáá¯á¶áá°ááœá¬ážáá«á
ááá¯ááºáá¬ážáá»á¬áž ááá·áºááœááºážááŒááºážá
ááá·áºááœááºážáá¯ááºáá±á¬ááºááá¯ááºáááºá á¡ááá¯á¡áá»áŸá±á¬áẠááá¯á·ááá¯áẠááá¯ááºááá¯ááº. áá±ážááœá²ááœááºááááºáá¬áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºááá·áºááœááºážáááºá á¡áááºáá±áá¬á¡ááœáẠá¡ááœáŸááºážáá
áºáᯠáááºááŸááºááẠááá¯á¡ááºáááºááŒá
áºáááºá istio-injection=enabled
á¡á±á¬ááºáá« command ááŒáá·áºáá¯ááºáá±á¬ááºáá±á¬á
$ kubectl label namespace default istio-injection=enabled
namespace/default labeled
ááᯠdefault namespace ááœááºá¡áá¯á¶ážááŒá¯ááá·áº pod áá
áºáá¯á
á® (default
) áááºážááá±ážááœá²ááœááºááááºáá¬ááá¯áááºáá¶áááŸááááá·áºáááºá áááºážááá¯á¡áááºááŒá¯áááºá repository á root directory ááá¯á·ááœá¬ážááŒááºážááŒáá·áº test application ááá¯á¡áá¯á¶ážááŒá¯ááŒáá«á
áá¯á· [istio-mastery]
á¡á±á¬ááºáá« command ááᯠrun áá«á
$ 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
á¡ááŒááºá¡á¬ážááŒáá·áºá
pods áá»á¬ážáá²á០áá
áºáá¯ááœáẠEnvoy proxy
ááᯠá¡ááá®áá±ážááŸááºážááẠáááºáááºáá±ááŒá®ážá áá»áœááºá¯ááºááá¯á·ááẠá¡áááºá¡ááœá¬ážá¡áá¬áá»á¬ážááᯠá¡ááºááºáá®áá±ážááŸááºážáá²ááá¯á· áááºáá±á¬ááºááœáá·áºááŒá¯ááẠááá¯á¡ááºáá«áááºá
Ingress Gateway
áááºážááá¯á¡á±á¬ááºááŒááºááẠá¡áá±á¬ááºážáá¯á¶ážá¡áá±á·á¡áá»áá·áº (á¡á á¯á¡áá±ážá¡ááœááºáž á¡ááœá¬ážá¡áá¬ááá¯ááœáá·áºááŒá¯áá«) ááẠááŒááºáááºážáááºááŒá áºáááºá Ingress Gateway á¡á á¯á¡áá±ážá âá¡á áœááºážâ ááœááºááŸááá±á¬ Istio ááœáẠáááºááŸáááŒá®áž áááºážááŒá±á¬ááºážááŒááŒááºážá áááºáá»áááºááŸáááŒááºážá áá¯á¶ááŒá¯á¶áá±ážááŸáá·áº á¡áááºá¡ááœá¬ážá¡áá¬áá»á¬ážá¡ááœáẠá á±á¬áá·áºááŒáá·áºááŒááºážáá²á·ááá¯á·áá±á¬ Istio á¡ááºá¹áá«áááºáá»á¬ážááᯠááœáá·áºááœáá·áºááŒá¯áá¬ážáááºá
Ingress Gateway á¡á áááºá¡ááá¯ááºážááŸáá·áº áááºážááᯠááŒááºáááá¯á· áá±ážááá¯á·ááá·áº áááºáá±á¬ááºááŸá¯ááᯠIstio ááá·áºááœááºážá ááºá¡ááœááºáž á¡á á¯á¡áá±ážááœáẠááá·áºááœááºážáá²á·áááºá áááºáá±á¬ááºááŸá¯á ááŒááºá 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 ááá¯á¡áá¯á¶ážááŒá¯á á¡ááá®áá±ážááŸááºážááᯠáááºáááºáááºáá±á¬ááºááŒáá·áºááŸá¯áá«ááẠ(á¡á²áá«ááᯠEXTERNAL-IP á¡ááŒá ẠáááºááœáŸááºážáá«áááº)á ááá¯á·ááŒá±á¬áá·áº á¡áááºááŒá±á á±áááºá¡ááœáẠáááºááá¯ážááᯠááááºážááŸááºá¡ááŒá Ạáá±ážááá¯ááºáá«áááºá
$ EXTERNAL_IP=$(kubectl get svc -n istio-system
-l app=istio-ingressgateway
-o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')
ááá±á¬ááºáá¬ááŸáá áºááá·áº ဠIP ááᯠââááá¯áááºáá±á¬ááºááẠááŒáá¯ážá á¬ážáá«áá áááºáá±á¬ááºááŸá¯ááááŸáááá¯ááºáá±á¬ á¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááᯠáááºáááŸááááá·áºáááºááŒá áºáá±á¬ááŒá±á¬áá·áºá áá°áááºážá¡á¬ážááŒáá·áº Istio ááẠá¡áááºá¡ááœá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááᯠááááºááá¯á·áááºáGateway ááá¯áá±á¬á· ááááºááŸááºááá±ážáá«áá°ážá
Gateway á¡áááºážá¡ááŒá áº
Gateway ááẠKubernetes ááœáẠCRD (Custom Resource Definition) ááŒá áºááŒá®ážá á¡á á¯á¡áá±ážááœáẠIstio ááᯠááá·áºááœááºážááŒá®ážáá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠá¡áááºá¡ááœááºá¡ááœá¬ážá¡áá¬ááᯠááœáá·áºááŒá¯ááá¯áá±á¬ ááááºáááºážáá»á¬ážá áááá¯ááá¯áá±á¬ááŸáá·áº áááºáá¬ááá¬áá»á¬ážááᯠáááºááŸááºáá±ážááá¯ááºáááºá
áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá host á¡á¬ážáá¯á¶ážá¡ááœáẠport 80 ááœáẠHTTP traffic ááá¯ááœáá·áºááŒá¯ááá¯áá«áááºá áá¬áááºááᯠá¡á±á¬ááºáá«á¡áááá¹áá«ááºááŒáá·áº á¡áá±á¬ááºá¡áááºáá±á¬áºáááºá (
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
. á€ááœá±ážáá»ááºááŸá¯á
áá
áºááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠáááºááá·áº Ingress Gateway ááᯠááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááᯠá¡áá¯á¶ážááŒá¯ááẠáááºááŸááºááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá áááºážááẠIstio ááœáẠáá°áááºážá¡ááá¯ááºážááá·áºááœááºážáá¬ážááá·áº Ingress Gateway ááááºážáá»á¯ááºáááááá¬ááŒá
áºáááºá
á¡á±á¬ááºáá« command ááá¯áá±á«áºááá¯ááŒááºážááŒáá·áº configuration ááá¯á¡áá¯á¶ážááŒá¯áááº-
$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created
ááᯠáá¶áá«ážáá±á«ááºááẠport 80 ááá¯á· áááºáá±á¬ááºááœáá·áºááŒá¯áá±á¬áºáááºáž áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºááá·áºáá±áá¬ááœáẠáááºážááŒá±á¬ááºážáá±ážááááºááᯠáááááŸááá«á áá®á¡ááœááºáááºááá¯á¡ááºáá«áááá·áºáááºá Virtual Services áá»á¬áž.
VirtualService á¡áááºážá¡ááŒá áº
VirtualService ááẠIngress Gateway á¡á¬áž á¡á á¯á¡áá±ážá¡ááœááºáž ááœáá·áºááŒá¯áá¬ážáá±á¬ áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºááá¯á·áááºážááŒá±á¬ááºážáá±ážááááºááᯠááŒá±á¬ááŒáááºá
http-gateway ááŸáááá·áºáá±á¬ááºááŸááá¬áá±á¬áá»áœááºá¯ááºááá¯á·áá¡ááá®áá±ážááŸááºážááá¯á·áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠsa-frontendá sa-web-app ááŸáá·áº sa-feedback áááºáá±á¬ááºááŸá¯áá»á¬ážááá¯á·áá±ážááá¯á·ááá«áááºá
VirtualServices ááŒáá·áº ááŒááºáááºáááºááŸááºááẠááá¯á¡ááºáá±á¬ áááºážááŒá±á¬ááºážáá»á¬áž
SA-Frontend ááá¯á· áá±ážááá¯á·ááá·áºáá±á¬ áá±á¬ááºážááá¯áá»ááºáá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
- áááºážááá»áŸá±á¬áẠáááá»áá²á· ááœá²á
ááº
/
index.html ááá¯ááá°ááẠSA-Frontend ááá¯á· áá±ážááá¯á·ááá·áºáááºá - ááŸá±á·ááŒá±ážáááºážááŒá±á¬ááºážáá»á¬áž
/static/*
CSS ááŸáá·áº JavaScript áá²á·ááá¯á·áá±á¬ frontend ááœááºá¡áá¯á¶ážááŒá¯ááá·áº static ááá¯ááºáá»á¬ážááá¯áááºáá¶áááŸáááẠSA-Frontend ááá¯á· áá±ážááá¯á·ááááºááŒá áºáááºá - áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážááŒáá·áº ááá¯ááºáááºáá±á¬ áááºážááŒá±á¬ááºážáá»á¬áž
'^.*.(ico|png|jpg)$'
SA-Frontend ááá¯á· áá±ážááá¯á·ááááºááŒá áºáá±á¬ááŒá±á¬áá·áºá áá«ááœá±ááá±á¬á· Page ááŸá¬ááŒáá¬ážáá²á·áá¯á¶ááœá±áá«á
á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠá¡á±á¬ááºáá«áá¯á¶á
á¶áá»á¬ážááŒáá·áº á¡á±á¬ááºááŒááºáááºá (
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)$'
route:
- destination:
host: sa-frontend # 2
port:
number: 80
á¡áá±ážááŒá®ážá¡áá»ááºáá»á¬áž -
- ဠVirtualService ááẠááŒááºáááºážáá¬áá±á¬ áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠáááºááœáŸááºážáááºá http-gateway;
- Ð
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 áá¬áá¬ááẠIstio Control Plane á០áááºáá¶áááŸáááá·áº á¡ááŒá áºá¡áá»ááºáá áºáá¯ááᯠáááºáá®ážááŒá®áž ááá¯á·áá±á¬áẠááœá²á·á ááºážááŸá¯á¡áá áºááᯠpod á Envoy proxies áá áºáá¯á á®ááœáẠáááºáá±á¬ááºáááºá Ingress Gateway controller ááẠControl Plane ááœáẠááŒááºáááºáá¬ážáá±á¬ á¡ááŒá¬ážáá±á¬ Envoy ááŒá áºáá¯á¶áá±á«áºáááºá á€á¡áá¬á¡á¬ážáá¯á¶ážááẠáá¯á¶ááœááºááŒáá¬ážááá·áºá¡ááá¯ááºážááŒá áºáááº-
áá±á¬ááºážááá¯ááŸá¯áááºážááŒá±á¬ááºážáááºááŒááºážá¡ááœáẠIstio-IngressGateway ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶
á
áááºáá¶á
á¬ážááŸá¯ ááá¯ááºážááŒá¬ážá
áááºááŒá¬ááŒááºáž áá»áŸá±á¬ááºááœáŸá¬ááᯠááá¯ááœáẠáááá¯ááºáá«áááºá http://{EXTERNAL-IP}/
. ááŸá¬áááœá±á·áá±ážáá²á· á¡áá±á¡áá¬ážáá±á¬ááºááẠá
áááºááá°áá«áá²á· ááá«ááá¶ááœáẠááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶á¡áá»áá¯ážáááºáá±á¬ááºá
á±áááºááŸáá·áº Envoy áááºááŸáºáá»á¬ážááᯠá¡ááºááááºáá¯ááºááẠá¡áá»áááºá¡áááºážáááºááŒá¬áááºá.
áááºáááºááá¯ááºáá±á¬ááºáá® áá¬ááºá¡ááœá¬ážá¡áá¬áááºáá®ážááẠá¡ááºááºááŸáá·áº á¡áááºážáááºáá á¬ážáá«á (áá±á¬ááºáááºááœá²áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááœáẠááŸááºážáááºážáááºá¡ááœáẠáááºážááááºááŸáááŸá¯ááẠááá¯á¡ááºááẠ- ááá·áºááŸááºážááŒá± áá¬áá¬ááŒááºáá«áááºá).
Kiali: ááŒááºááá¯ááºá áœááºáž
Kiali á á®áá¶ááá·áºááœá²áá±áž á¡ááºáá¬áá±á·á áºááá¯á·ááœá¬ážáááºá á¡á±á¬ááºáá« command ááᯠrun áá«á
$ kubectl port-forward
$(kubectl get pod -n istio-system -l app=kiali
-o jsonpath='{.items[0].metadata.name}')
-n istio-system 20001
... áá²á· ááœáá·áºáááºá
Grafana- áááºááá áºáá»á¬ážááᯠáá¯á¶áá±á¬áºááŒááºáž
Istio ááœáẠá
á¯áá±á¬ááºážáá¬ážáá±á¬ áááºááá
áºáá»á¬ážááẠPrometheus áá²ááá¯á· áá±á¬ááºááœá¬ážááŒá®áž Grafana ááŒáá·áº ááŒááºáá±á¬ááºáá±áá«áááºá Grafana á
á®áá¶ááá·áºááœá²áá±ážá¡ááºáá¬áá±á·á
áºááá¯á·áá±á¬ááºááŸááááºá á¡á±á¬ááºáá±á¬áºááŒáá« command ááᯠrun ááŒá®ážáá±á¬ááºááœáá·áºáá«á
$ kubectl -n istio-system port-forward
$(kubectl -n istio-system get pod -l app=grafana
-o jsonpath={.items[0].metadata.name}) 3000
áá®áá°ážááá¯ááŸáááºáá«á áááºáá á¬áá»ááºááŸá¬ áááºáááºá¡áá±á«áºááá± ááœá±ážáá±ážááá¯ááºáá«á Istio áááºáá±á¬ááºááŸá¯ ááá¯ááºááœáẠáááºáááºá¡áá±á«áºáá±á¬áá·áºááœáẠáááºáá±á¬ááºááŸá¯ááŒáá·áº á áááºáá«á sa-web-appá á¯áá±á¬ááºážáá¬ážáá±á¬ áááºááá áºáá»á¬ážááᯠááŒáá·áºááŸá¯áááº-
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááᯠá
á±á¬áá·áºááŒáá¯áá±ááá·áºá¡áá¬ááŸá¬ á¡áá»ááºážááŸá®ážááŒá
áºááŒá®áž áá¯á¶ážáááŒá®ážááœá±á·ááœááºáá±á¬ááºážáá±á¬ á
áœááºážáá±á¬ááºáááºááŒá
áºááẠ- á
á®áá¶ááá·áºááœá²ááŸá¯á áááºážááᯠáááºáá±á¬á¡áá«á០áááºáá¶áááºááá¯ááºáá«á á¡á±á¬ááºáá« command ááŒáá·áº áá±ážáááºáá±á¬ load áá
áºáá¯ááᯠáááºáá®ážááŒáá«á
áá¯á·á
$ while true; do
curl -i http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}';
sleep .8; done
ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠááá¯áá±á¬ááºážáá±á¬ ááááºáá»á¬ážááŸáááŒá®áž áááºážááá¯á·á¡ááŒááºá á á±á¬áá·áºááŒáá·áºááŒááºážá¡ááœáẠá¡á¶á·ááŒááœááºáá±á¬ááºážáá±á¬ Prometheus áááááá¬áá»á¬ážááŸáá·áº Grafana ááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž á áœááºážáá±á¬ááºáááºá áá»ááºážáá¬áá±ážá áááºáá±á¬ááºááŸá¯áá»á¬ážááœáẠá¡áá»áááºááŸáá·áºá¡áá»áŸ áá±á·áá¬ááá¯ááºá á±ááá·áº á áœááºážáá±á¬ááºáááºá áá»ááºážáá¬áá±ážá ááá¯ážáááºááŸá¯/áá¯ááºáá¯ááºááŸá¯ááá¯á·á¡ááŒá±á¬ááºáž áá±á·áá¬ááá¯ááºá á±ááá·áº áááºááá áºáá»á¬ážááᯠááŒááºáá¬á á±ááẠGrafanaá
áá±á¬ááºáá¯á¶ážááœááºá áááºáá±á¬ááºááŸá¯áá»á¬ážááœáẠááŒá±áá¬áá¶ááŒááºážáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
Jaeger: ááŒá±áá¬áá¶áááºá
áá»áœááºá¯ááºááá¯á·ááœáẠáááºáá±á¬ááºááŸá¯áá»á¬áž áá»á¬ážáá±áá±á áá»ááŸá¯á¶ážááŸá¯á á¡ááŒá±á¬ááºážáááºážááᯠáá±á¬ááºááẠááá¯áááºáá²áá±ááŒá áºáá±á¬ááŒá±á¬áá·áº ááŒá±áá¬áá¶ááẠááá¯á¡ááºáá«áááºá á¡á±á¬ááºááá¯á¶áá±ážááá± ááá¯ážááŸááºážáá²á· Case ááá¯ááŒáá·áºááá¯ááºáá¡á±á¬ááºá
áá»áááºážáá¡á±á¬ááºááŒááºáá±á¬ áá±á¬ááºážááá¯ááŸá¯á áá¬áá¬ááºá¥ááá¬
áá±á¬ááºážááá¯áá¬áá¬á áá¬ááºáááºá áá¬á¡ááŒá±á¬ááºážááŒá±á¬áá·áºáá²á ááááá¯á¶ážáááºáá±á¬ááºááŸá¯áá¬áž? áá«ááŸááá¯áẠáá¯ááááá áºáá¯áá¬ážá ááŸá áºáá¯áá¯á¶ážááœááºááŒáœááºážáá»ááºááŸáááẠ- áá áºáá¯áá»ááºážá á®áááŸááºáááºážáá»á¬ážááá¯ááŒáá·áºááŒáá«á áá¯á·á áá®ááá¯áá¯ááºáá±áá¬ááᯠáááºážááá¯ááºáááºáž áááºááŸá áºááŒáááºáááºážáááá²á áá»áœááºá¯ááºááá¯á·áá¡áá¯ááºááẠdeveloper áá»á¬ážááẠsoftware á á¯á¶áá±á¬ááºáá»á¬ážááŸáá·áº ááá¯áá°áááº...
áááºážááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááœáẠááŒá áºááá¯ážááŒá áºá ááºáá áºáá¯ááŒá áºááŒá®ážá áááºáá±á¬ááºááŸá¯áá»á¬ážááẠáá®ážááŒá¬ážáá±á«ááºážá á®ážáá áºáá¯ááᯠá¡ááŒááºá¡ááŸááºáá±ážááá¯á·áᬠáááºáá±á¬ááºááŸá¯áá»á¬ážááẠáá±á¬ááºážááá¯áá»ááºáá±áá¬ááŸáá·áº ááŸáá¯ááºážááŸááºáá¬ážááá·áº tracing system ááá¯á· áááºááá·áºáá±ážááá¯á·ááŒá®ážáá±á¬ááºá áááºážááẠáá±á¬ááºážááá¯áá»ááºáá±áá¬ááŸáá·áº ááŸáá¯ááºážááŸááºááá·áºá áá áºááá¯á· áááºááá·áºáá±ážááá¯á·áááºá á€áááºááŸá¬ áá¯á¶á¥ááá¬áá áºáá¯ááŒá áºáááºá
áá±á¬ááºážááá¯áá»ááºááá¯áá±á¬áºáá¯ááºááẠTraceId ááá¯á¡áá¯á¶ážááŒá¯áááºá
Istio ááẠáá±á¬ááºážáá»áá°-á¡ááŸá®á¡ááá¯áááºážáá±á¬ OpenTracing API áá°áá±á¬ááºááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºááá·áº Jaeger Tracer ááá¯á¡áá¯á¶ážááŒá¯áááºá á¡á±á¬ááºáá« command ááŒáá·áº Jaeger á¡áá¯á¶ážááŒá¯áá° á¡ááºáá¬áá±á·á áºááᯠáááºáááºáá±á¬ááºááá¯ááºáááºá
$ kubectl port-forward -n istio-system
$(kubectl get pod -n istio-system -l app=jaeger
-o jsonpath='{.items[0].metadata.name}') 16686
á¡áᯠááœá¬ážááá¯ááºáá«á
á€ááŒá±áá¬áá¶áááº-
- áá±á¬ááºážááá¯áá»ááºáááºáá¬áááºá istio-ingressgateway (áááºážááẠáááºáá±á¬ááºááŸá¯áá áºáá¯ááŸáá·áº ááááá¯á¶ážá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯ááŒá áºááŒá®áž áá±á¬ááºážááá¯áá»ááºá¡ááœáẠTrace ID ááá¯áá¯ááºáá±ážáááº) ááŒá®ážáá±á¬áẠááááºáá±ážááẠáááºáá±á¬ááºááŸá¯áá¶ááá¯á· áá±á¬ááºážááá¯áá»ááºááᯠáá±ážááá¯á·áááºá sa-web-app.
- áááºáá±á¬ááºááŸá¯ááœáẠsa-web-app áá±á¬ááºážááá¯áá»ááºááᯠEnvoy ááá¯ááºáá¬ážá០áá±á¬ááºáá°ááŒá®áž á¡ááá¯ááºážá¡ááœááºáž "ááá±áž" ááᯠáááºáá®ážáá¬ážááẠ(ááá¯á·ááŒá±á¬áá·áº áááºážááᯠáá²ááœááºá
áá»á¬ážááœáẠááŒááºááœá±á·ááááº) ááŸáá·áº ááœááºááááºáá¬ááá¯á· ááŒááºááœáŸááºážáááºá sa-web-app. (
span - á¡áááºáá áºáá¯á áááºáááºááŸá¯á áááºáá»áááºááŸáá·áº áááºážáááŒá¬áá»áááºáá«ááŸááá±á¬ Jaeger ááŸá áá¯áá¹áááá¯áá¹áááá°áá áºáá áºáá¯á á¡ááá¯ááºážáá»á¬ážááᯠá¡ááá¯ááºááœá²á·ááŒá®áž á¡áááá·áºáá±ážááá¯ááºáá«áááºá spans á áááºážááœáŸááºáá¬ážáá±á¬ acyclic ááááºáá áºááẠááŒá±áá¬áá¶áá áºáá¯ááŒá áºáááºá - ááá·áºááŸááºážááŒá± áá¬áá¬ááŒááºá) - á€áá±áá¬ááœáẠáá±á¬ááºážááá¯áá»ááºááᯠáááºážáááºážááŒáá·áº áá¯ááºáá±á¬ááºáá«áááºá á áááºáá¶á á¬ážááŸá¯ ááá¯ááºážááŒá¬ážá áááºááŒá¬ááŒááºážá. á€áá²ááœááºá áá»á¬ážááᯠá¡ááá®áá±ážááŸááºážá០áá¯ááºáá¯ááºááŒá®ážááŒá áºáááºá ááá¯ááá¯áááºááŸá¬á áá¯ááºá¡ááŒá±á¬ááºážá¡áá²áá»á¬áž ááá¯á¡ááºáááºá
- á€á¡ááá¯ááºá¡ááá·áºááŸá áá POST áá±á¬ááºážááá¯áá»ááºáá áºáá¯ááᯠá áááºáá¯ááºáá±á¬ááºáá«áááºá sa-logic. ááŒá±áá¬áᶠID á០áá áºááá·áº áá±ážááá¯á·ááá«áááºá sa-web-app.
- ...
ááœá±á¬ááá¯á¡ááá·áº 4 ááœááºá á¡ááá®áá±ážááŸááºážááẠIstio ááŸáá¯ááºáá±ážáá±á¬ áá±á«ááºážá á®ážáá»á¬ážááá¯ááŒááºáááŒá®áž á¡á±á¬ááºáá«áá¯á¶ááœááºááŒáá¬ážááá·áºá¡ááá¯ááºáž áá±á¬ááºáááºááœá²áá±á¬ááºážááá¯ááŸá¯áá»á¬ážáá¶áá±ážááá¯á·ááá·áºáááº-
(á) Istio ááẠáá±á«ááºážá
á®ážáá»á¬ážááᯠáááºááá·áºááá¯á·ááẠáá¬áááºááŸááááºá (á) áááºáá±á¬ááºááŸá¯áá»á¬ážááẠáá±á«ááºážá
á®ážáá»á¬ážá¡ááœáẠáá¬áááºááŸááááºá
Istio á á¡áá¯ááºá¡áá»á¬ážá á¯áá¯ááºáá¬ááá¯á·... áááºáá¬áá±á¬áá±á¬ááºážááá¯ááŸá¯áá»á¬ážá¡ááœáẠáá±á«ááºážá á®ážáá»á¬ážááá¯áá¯ááºáá±ážáᬠáá±ážááœááºá á±á¬áá·áºááŸá±á¬ááºááŸá¯áá áºáá¯á á®ááœáẠá¡ááá¯ááºážá¡áá áºáá»á¬ážáááºáá®ážáᬠáááºážááá¯á·ááᯠáááºááá·áºááá¯á·áááºá ááá¯á·áá¬ááœááºá áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœááºážááŸá áá±á«ááºážá á®ážáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážáááŸááá²á áá±á¬ááºážááá¯ááŸá¯áááºážááŒá±á¬ááºážá¡ááŒáá·áºá¡á á¯á¶ááᯠáá¯á¶ážááŸá¯á¶ážááœá¬ážáááºááŒá áºáááºá
á¡á±á¬ááºáá« áá±á«ááºážá á®ážáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážááááº-
x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
x-ot-span-context
áá«á áááºáá²áá²á·á¡áá¯ááºááá¯ááºáá±ááá·áº áá°á·áá²á·á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠááá¯ážááŸááºážá¡á±á¬ááºáá¯ááºááá¯á·ááá¯áᬠááŸáááŒá®ážáá¬ážáá«á
Sentiment Analysis á¡ááá®áá±ážááŸááºážááẠFlaská Spring ááŸáá·áº ASP.NET Core ááá¯á·ááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááᯠááá¯ááºááŒáááºááᯠáááááŒá¯áá«á
ááᯠáá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºá áºáá²á០ááœááºáá¬ááẠ(ááá¯á·ááá¯áẠáá±áá¹áá¬áá²á០áá®ážáá«áž) ááᯠááŸááºážááŸááºážáááºážáááºáž ááááŒá®ážááŒá áºááá·áºá¡ááœáẠáá±á¬ááºážááœááºáá±á¬ áááºážááŒá±á¬ááºážáááºááŸááºááŒááºážá ááœááºáááºá¡ááœá¬ážá¡áᬠá á®áá¶ááá·áºááœá²ááŸá¯á áá¯á¶ááŒá¯á¶áá±áž á¡á ááŸááááºááá¯á·ááᯠááŒáá·áºááŒáá«á áá¯á·á
ááŸááºáá»ááºá áá¬áá¬ááŒááº: Rinor Maloku á០Istio á áá±á¬ááºá¡ááá¯ááºážáá»á¬ážááœáẠá€á¡ááŒá±á¬ááºážáááºáá«á áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœáẠáá±á¬ááºáá¬ááá·áº áá¬áá¬ááŒááºáá»á¬ážá UPDATE áááºá (áá)áááºá
PS áá¬áá¬ááŒááºááŸ
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœááºáááºážáááºáá«
- "Istio ááŒáá·áº á¡áá±ážá
á¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážááá¯á· ááŒááºááœá¬ážáááº"-
á¡ááá¯ááºáž 2 (áááºážááŒá±á¬ááºážá áá¬ááºááááºáž) ,á¡ááá¯ááºáž á (á á áºááŸááºááŒá±á¬ááºážááŸáá·áº ááœáá·áºááŒá¯áá»ááº) ; - «
Conduit - Kubernetes á¡ááœáẠáá±á«á·áá«ážáá±á¬ áááºáá±á¬ááºááŸá¯ááœáẠ"; - «
áááºáá±á¬ááºááŸá¯ mesh ááá¯áᬠáá¬áá²á [ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážáá«áá±á¬ cloud application áá áºáá¯á¡ááœááº] áá¬ááŒá±á¬áá·áº ááá¯á¡ááºáá¬áá²á "; - «
Kubernetes ááœáẠááœááºáááºáá»áááºáááºááŒááºážá¡ááœáẠááá¯ááºáá±á¬áºáááºážááœáŸááºáá»ááºá á¡ááá¯ááºáž á ááŸáá·áº á "; - «
á€ááá¯ááºáá¬ážááœááºááááºáá¬ááẠá€áá±áá¬ááœáẠ[ Kubernetes ] ááœáẠáááºááá¯á· á¡áá¯á¶ážáááºáá²á·ááááºážá "á
source: www.habr.com