α
αααΆαα ααααααα ααααΆααααααΆαααααα·αααΆααΆαααααΆααα
ααΆαααααααααΆααααααΆααααααααα
αααα»αα αααααΆαα
ααΆααααααααααααΎααααααΆαααααααα·ααΈαααααΆααααΈααααΆααααααααααΈααααΌααααΆααααα ααααααααα Istio α’αΆα
ααΉααααα·ααα
ααΎαααΌαααΆαααααααα·ααααα DevOps ααΆα
αααΎα ααΆααΊααΆααα·αααααααΈαα½ααα ααααααααααααααΆαααΆαααΌααααΌααΆααα
αααα»ααααααααααααααααααΆααααααΆαααααα±αα α’αΆα
ααααΌαααΆααααααααΆα
αααΎαααΎααααΈααααΆααα αα·αααααααααΆαα·α’αΆα‘αΊαααα Rinor Maloku αααααΆα’αααααα½ααα»αααααΌαααΎααΆα cloud computing αααααΆααα’αα·αα·ααααααα
αααα»αα αα»αααΌαααααΆαααα Orange Networks ααΆαααααααααααΈαααααΆααααα’ααα
αΆααααααα’αα»ααααΆαα±ααα’αααααααα»αααΉαα
αΌααα
αααα»α Istio αααΆααα αα αα·ααααα
α ααΆααα
αΆααααααΎαααΏαααααααΆααααΆαα½αααΉαα’αααΈααα Istio α’αΆα
ααααΎααΆαααΆααΌαα
αα·ααααααααα’αααα’αΆα
ααΎαααΎαααΆααααΆααααααααααααααα’αααα
α’ααΈαααΈα’αΌ - αααααααααααααΎαα
αα αααααααΌαααΆααααααΎαα‘αΎαααααα ααΆαααΆαα½ααααα»αααααΈ Google, IBM αα·α Lyft α ααΆαααααααΆαααΆααααα»αααααααΆααααααΎαα‘αΎααα
αααα»ααααααα·ααΈαααααΆαααΌαααααΆαααΎ microservices ααΌα
ααΆα
- ααΆααααααααααα ααΆα αααα α’ααααα, ααααΆααΆα, αααα»ααα»αααααΆα;
- ααααα·αα»αα ααΆααααααααααΆααα’αααααααΎααααΆααα α»αααααα αα·αααΆαα’αα»ααααΆαα·;
- ααΆαααααααα ααΆαααΆα, αααα½ααα·αα·ααα, αααααααΆα
ααΆααα’αααααα’αΆα ααααΌαααΆααααααααΆααα ααααα·ααααααα·ααΈ ααα»αααααααααΆααααΈαααααααΆααααααααα’αααααΉααααααΆ "ααΈααααΌ" αααα αΎαα ααΆαααα·α αα αα·αααααααΉααααααααααααααΎααααΈαααααααΆααααα αΆααΆαααααααΊααΆααΆαααααααααΆαααααΆααααααααα»αα αα»ααααα’αΆα ααααΎααααΆαααααααααΆαααααααΆαααααααα’αΆααΈαααααα αααααΎαα§ααΆα αααα
α’αααβαααααβααααβααααααα ααΎβααααΌαβα αααΆαβαααβααα»ααααΆαβααΎααααΈβααααααβααααααβαα·αααβααα·βαααααα’?
α’αααα’αα·ααααααα αααααΈααMP: ααα’αΈ?.. ααΆααααΆααααααΆ CRUD!
R: ααΆαααααΎ CRUD ααΊααΆααααααα½αααααΆααααα½α ααα»ααααααΎααα ααααααΌαααΆααααααααααΆαα αα·αααααααα·αααα·αααα’αααααααΎααααΆαα αα·αααααΆααααα αααααΆααααααΆααα·ααα½αα±αααα»αα α·ααα α’αααααΉαααααΌαα’αα»ααααααααΎααααα αΎαααααααα ααααΌα ααΆααααΆααααααααααααΈ αα αααα»αα’αα·αα·ααα ααΌα ααααΆααααααααααΎααααΈααααΎα±ααααααΆααααΆααααααααααΆααααΌααα·αααΆααα’αααααΉαααααΌαααΆαααΆαα’ααααααα·ααααΆαα (αααααΆααααααααΆααααα’α·αααααααα’αααΈααααΌαααααΆααααααΆααααΆααααΈα ααΌαααΎααα αααααααααααα»αα’ααααα - αααα αΆαααααα ααα ααααααα )α αΎαααΎααααΈααααααααααα αΆ ααΆααααα½ααα·αα·ααα ααΆαααΆα [β¦]αααΆαα·ααααΆα α’αΌ α’ααα αΉαααααααα αΌααα»αααΆαααααα αααα»αααααΆααααααα·αααα
αααα»αβαα·αβααΆβαααα·αβαααβα αααΆααβααΆααα α ααα½αβααα αΆαβαα·αβααΆαβαα·αβααβααααΉαβαααααβαααβααΆαααΆαβααΎααααΈβααααααβααααΆβαα½αβααΊβααβαααααΎαα αα αααα»αα’αααααααα ααΎαααΉααα·αα·αααααΎαααΈααααααα Istio ααα ααααΌαααΆααααα»αααααΆαααΆααα’αααααααΆααααααΆααααΆαααΎ (ααααα·αααΆαααααααΆαααααα·ααααΆα’αΆααΈααααα) ααΈααααΆααααα
ααΆαααααααααΆααα α’ααααααααααααααααΆα’αααααΆαα
ααααααΉαααΆαααΆααααα Kubernetes α ααΎαα·αααΌα
αααααααααα»αααΌαααααΆαα±ααα’αΆα
αααα·α
αα αααα»ααα·ααααααααααααΆα Istio ααααΆαααααα½αααααΎααααΎαααααααΆαααα αα½ααααααααα α αΎααααα»αααααΈααΆαααΆααααΆααα ααααΆααααααααΌααααααααααΆαααααααα½αα―αα ααααΎααΆαααα»ααααααααΈ ααααααααααααΆα’ααααα ααΎαα§ααααααααααααααααααΈααα
α
ααΆα
ααααααααΆααα
αααα»α Kubernetes
Istio αααααααΌααααααααααΆαα―αααα αααααααΆαααααα»αααΈααααΆαααα αα·αααααΎαααΆααααααΆαααααΆααααααΆαααααΆαααααααααααΆαα α αΎαααΌα ααααααΆα’αα»ααααα
- ααΆαα’αααααααααα α»αα αααααα’ααααΎαααααΌαααααΆαααΆααα αααα»αααΆαααααΎααα ααΆαααααΆααΎααααΎααααααΆαααα αΎαα¬α’αα α αΎαααααΎαααΆαααΆα‘αΎααα·αα
- ααΆαα ααααααΆα Canaryα αααααΌαααααααααΆααααααααααααΎαα ααΆααααααααααΈααααααΆααααα
- ααΆααααα½ααα·αα·ααααα·αααααααα ααΎααΆααααΌαααΆααααααα»ααααΆααααααΆααααααΆααααααΎααααΈααααΎααα?
- ααΆαααΆαααΆα αα·αααΆαααααααα ααααααααααααΆαα·ααααα ααααΎααΈαα½αα α αΎαααΆαααΆααα½αααΆααΆαα αααααα
- ααααα·αα»αα ααΆααααα·αα·ααααααααΆ JWT αααααααααΆαα αα·αααααααα·αααα·α±ααα’αααααααΎααααΆααα
ααΆαααααααααΆααααααΆααααααΆααα½αα ααα½αααα»ααααα (αα·αααΆααΆααα·α αα½α ααΆαα!) ααΎααααΈααΆααααΆαα αααΆααα’αΆααααααα’αααα α₯α‘αΌαβααΎαβα αΌαβααΎαβααααααΆαβαααα’α·αβαα αα ααααα!
ααααΆααααααααα’ααΈααααΌ
Istio ααααΆααα αΆααα ααΆα ααααααααΆαααΆααα’αα α αΎαα’αα»αααααααα»αααα αααΆαααα ααΆ ααααααα αΌαααααΌααααΈααααΆααααααα»αααααααααΆαα»αα αα αααα αααα»αααααΈαα½ααα ααααΌααααΈαααααααΎαααΆααααααααΆαααΆααα’αααααααΎαααΆαααΆ a ααααα αααα·ααααααα αΎααα½αααΆα’αΆα ααααΌαααΆαααααααα ααΆααααααααααΆααααααααααααΎ ααααα ααααααααααα.
ααααα αααα·αααααα
ααααΌααααΈαααααΆααααα αΌααα αααα»ααα α’αα»ααααΆαα±αα Istio ααΆααααα½ααααααααΆααααααΌαααΆααααααΎαααααΌαααΆαα ααΆα§ααΆα ααα ααΌααα·αα·αααααΎααα»αααΆαααααα§ααααααααααααααααααΈαααααααα
αααααααααΆαααααΆααΆα αα·αααΆααααααααααααΈααααΌαααΆαα’αα»αααααα
αααα»α Envoy
ααΎααααΈαααααα:
- αααααα·α (ααΎααααα»ααα·ααΆαα’αααΈααααΌααααΈαααααΆαααΈααΆαααα
αααα»ααα»αα
αα αα αααααααΌαααΆαα
ααα
αΆαααΆ
ααα·αααααΆα ααααα‘αα - αααα αα ααααααα ) ααααΎααααΎαα ααααΆαααα B α αΎααααΆαααα - Envoy Sidecar ααααΆααΆαααααααα (ααααΆααΆαααααααα). (1β)
- ααααΎαααΆααα α αΎαααααΌααααααααα ααααΌααααΈαααα α ααΆαα·αα
- ααΆααΎα Circuit Breaker α αΎαα α ααααΆαααααΆαααααααΆααααααΎααΆαααααααααΆααα (2β)
αααααΆααααααΆα’ααααα·αα αΆαααΆα αααααΎαααααΆαααααΆαααααααααααααα α’ααααα·αα αΆαααΆα αα’αα»ααααααΆααααααααααααΈ αα·αααΆαααααΎαααααΆααααααααΆαααααα½αααααα’αααααΆααΆααΆααααααααααα·ααΈ X, Y α¬ Zα ααΆααα’ααααα αα·αα’αααΈαααΆα αααΎααααααΊα’αΆα ααααΆαα ααααΈαααα’ααα αα αααα»α Istio αα·ααα·αααΆαααΆα αα ααΆαααααΆααααααΌααα αααα»αααΌαα
α’ααα αΆααα! α₯α‘αΌααααα’ααααααα ααααΆα αααα ααααΎααααΎαααΆαα½α Istio ααα»ααααα’ααααα ααααΆαααΆααααααααααα ααΎααααα½αα ααααα·αααΎαααααΆαααααααααΆαααΆααααααααΆαααααααα±ααΆαααΆααα’αααααα»αααΈαα·α αααα’αααααΆαααΆαααααααααΈααααααΆαα·αα½αα αααααΆααααΈααΆααα’αα αααααααααΆααααααααα αααα»αααΆααα·ααααααα ααΆαα·ααααααααααααΆααααααΈααΆαα½αα
α αΎαα α»ααααααα’ααααα½αααΆ "ααΎααΆα’αΆα ααααΌαααΆαααααααΆααα?"
α₯α‘αΌααααα’αααααααααααα½ααααααΆααααΆαααααΎααααΎαααΆαααα»αααα αΎα αααααααααΆααααααα αααααααΆα
ααααα ααααααααααα
ααΆααΆαααΆαα»ααααααΈαααΆαα ααΆααααα, ααΆα ΠΈ CitadelαααααααΎααΆααα½αααααΆααΎααααΈααααααα ααΆααααααααααααααααΎααααΈαααααΌαα ααΆα ααα αααααΉαααααααααΆα αα·ααααααΌααα·ααααααααΌααααα ααΆααααααααΆαααααΆααΎααα ααΌα ααα:
α’ααααααααααααααα αααααααααααααΆαα½αααααα αααα·αααααα
αααααα (α§. ααααα αααα·αααααα) ααααΌαααΆαααααααα
ααΆαααααααααααααααΎ
ααααΆααααααααααααΆααααααΆαα½α Istio
ααΎαααΆααααααΆα’αααΈααααΆαααααααααα Istio α ααααααααΆαααα ααα»αααααα·ααααααΆααΆααααα αααΆαααα ααΎααααΆααααααΆααααααΉα Istio αααΆαααΌα ααααα ?
αα·ααΆαα±ααααααααα ααααΆααΉαα’αααΈααααααΆααααα Istio ααααααααααΈααΆαααΉα αα αααααααα½ααααα½ααααα½αα―αααΆ "ααΎααΉαααΆα’αααΈ?"
α§ααΆα ααα
ααΌα ααααα αΎα α’αααα’αΆα ααα αααααααααααα»αααααΎαααΆα α αΎααααααΆααααΈααΆαααααααΆααααΆαααΆα Istio ααααΆαααααααααΆααα αααα»αααΆααΉαααααααααΎαααΆα α αΎααααααΆααααΈαααααΆαααΆαα»ααΆαααααα αα α’αααΈαααΉαααα’αααααααα ααΆα αααΆααααΆααααΆαααα»αααααΈαααα’αααααΉαααΆααααααααααααΆαααααααααααα Istio α
ααααΉααααΈαααααααααΆαα - αααααα ααααααΉαααααα α’αα»αααα!
Istio αα αααα»αααΆαα’αα»αααα
Istio ααΆαααΆαα
ααααα Kubernetes αααααΆα vCPU αααΆααα·α
4 αα·α RAM 8 GB α ααΎααααΈαααα
αα
ααααααααΆαααΆαααα αα αα·αααααΎααΆαααΆαααααΆαααΈα’ααααα αααα»αααΌαααααΆαα±ααααααΎ Google Cloud Platform ααααααααααΌαα’αααααααΎααααΆααααααΈ
αααααΆααααΈαααααΎαα ααααα αα·αααααααα ααΆααααααααααΆαα αΌαααααΎ Kubernetes ααΆααααα§αααααααααΎααααΆαααα»αααΌα α’αααα’αΆα ααα‘αΎα Istio ααΆαααααααααα·ααΈααααααααααααα αα Helm α
ααΆαααα‘αΎααα½α
ααα‘αΎααααααα·ααΈ Helm αα
ααΎαα»αααααΌαααααααα’ααα ααΌα
αααααΆααα·αααααΆαα
αααα»α
ααΆαααα‘αΎα Istio
ααΆαααααααΆα Istio ααΈ [istio-resources]
.
ααΎααααΈααΆααααα½ααααααα’ααααααααΆαααααΆα Istio αααααΎα namespace αααα»αα
ααααα 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 αα
ααΆα―αααΆααα½αα istio.yaml
. ααΎαααΆαααααααααααΌαααααααΆαα±ααααααΉααααα½αααΎα ααααααααΆαααααΆαααΆααααααααΌα
ααΆααααααα
-
global.mtls.enabled
ααΆαααα‘αΎααα αααα»αfalse
(α§. ααΆααααααααααΆαα mTLS ααααΌαααΆααα·α - αααα αΆαααααα αα)ααΎααααΈααααα½αααααΎαααΆαααΆαααα½αααααααΎα; -
tracing.enabled
αα½ααααα αΌαααΆααααΆαααΆαααΆαααααΎαααααααΎ Jaeger; -
kiali.enabled
ααα‘αΎα Kiali αα αααα»αα ααααα ααΎααααΈααΎαααΎαααααΆαααα αα·αα ααΆα αααα -
grafana.enabled
ααα‘αΎα Grafana ααΎααααΈαααααααΎαααααααααααααααΌαααΆαα
αααααααΎααααΆααααααΆααααααΎααααααααΎααΆααααααααΆα
$ kubectl apply -f istio.yaml
ααΆαααα‘αΎα Istio αα
ααΎα
αααααααααΌαααΆααααα
αα! αααα
αΆααα αΌααααααααΆααα’αααααα·ααα
αααα»αα
αααααααααα istio-system
ααΉαα’αΆα
Running
α¬ Completed
αααααααΎαααΆαααΆααααααααΆααΆααααααα
$ kubectl get pods -n istio-system
α₯α‘αΌαααα ααΎαααααααααα½ααα½α ααΆααα αΎαααΎααααΈαααααα ααααααααααΆαα αααααΎαααΉαααααΎαααΆααααααα·ααΈα
ααααΆαααααααααααααααα·ααΈαα·ααΆαα’αΆαααααα
α
αΌαααΎαααααΎα§ααΆα ααααααααααα·ααΈααΈααααΌααααΆαααα Sentiment Analysis αααααααΎαααα»αα’αααΈαααααΆααααααΆαααα½α
α αΎα
αααααα·ααΈααΆαααΈααααΌααααΆα ααα½ααα½αα
- RΠRΞΌSΠRΠRΡSΠ SA-FrontenααααααααΎαααααααΆααα»ααααααααα·ααΈ Reactjs;
- RΠRΞΌSΠRΠRΡSΠ SA-WebAppααααααααΎαααα½αααΆααα·ααΆαα’αΆαααααα;
- RΠRΞΌSΠRΠRΡSΠ SA-Logicαααα’αα»ααααααααααα½αααΆααααΆαα
ααΆααα·ααΆαα’αΆαααααα ; - RΠRΞΌSΠRΠRΡSΠ SA- ααα·ααααα·αααααααααα½αααΆαααα·αααααα’ααΈα’αααααααΎααααΆααα’αααΈααΆαααααΉαααααΌαααααΆααα·ααΆαα
αα
αααα»αααααΆααααΆαααα ααααααααΈααΎααααΆαααα ααΎαααααΎα Ingress Controller ααααα
αααα»α Kubernetes αααααΌαααααΎα
αΌααα
ααΆααααααΆααααααααααα Istio ααααΎαααα·αααααααααααΆαα
αααα»α Ingress Gateway ααααααΆ ααααααΆααααα’α·ααααααααααααΉαααααΎααΆαα
αααα»αααααΎαααΆααααααα·ααΈααΆαα½αααααΌααααΈααΈ Istio
αααααΆααααααα·ααααα·ααΆαααααααααααααααΆααααααΆαααα
αααα»αα’ααααα ααΌαααααΌαααααΆααααααα’αααα
ααΆααααα αΌαααααααα αα αα
ααΆααααα
αΌαα’αΆα
ααααΎαα
ααΆα αααααααααααααααα· α¬ ααααα. ααΎααααΈαααα
αΌααα»αα
αα αααααααααααααααααα· α’αααααΉαααααΌααααααααααΆααα
α
αααααααααα istio-injection=enabled
αααααααΌαααΆαααααΎαααααΆααααααααΆααΆααααααα
$ kubectl label namespace default istio-injection=enabled
namespace/default labeled
α₯α‘αΌαααα ααααΈαα½αααααααΉαααααΌαααΆαααΆααα±ααααααΎααααΆαααααα»αα
ααααααααααααααΆαααΎα (default
) ααΉαααα½αααΆααα»αα
αα ααααααααΆα ααΎααααΈαααααααααΆααααΆ ααΌαααΆααα±ααααααΎααααΆαααααααα·ααΈααΆααααα αααα
αΌααα
ααΆαααα root ααααααΆαα [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
ααΆαααααααααΆααΎααα ααΌα αααα
ααααΌααααΈαααααααα
αααα»ααααααα½αα
α₯α‘αΌαααααααααα·ααΈα αΆααααααΎαααααΎαααΆαα αΎα ααΎαααααΌαα’αα»ααααΆαα±ααα ααΆα αα αΌαα αΌααααααα»ααααααα·ααΈα
α αααααααΆαα αΌα
ααΆαα’αα»ααααααα’αααα»αααΎααααΈαααααα ααΆαααΌαα ααα»α ααα (α’αα»ααααΆαα ααΆα ααααα αααα»αα ααααα) ααΊααααααΆαα α αααααααΆαα αΌα αα αααα»α 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 ααΊααΆ CRD (Custom Resource Definition) αα αααα»α Kubernetes αααααααααααααΆααααΈααα‘αΎα Istio αα αααα»α cluster α αΎαααΎαααααααΆααααα»αααΆααααααΆααα ααα αα·ααΈααΆα αα·α hosts αααααΎαα ααα’αα»ααααΆαα ααΆα αα αΌαα
αααα»αααααΈααααααΎα ααΎαα
ααα’αα»ααααΆαα±ααα
ααΆα
α HTTP αα
ααΎα
ααα 80 αααααΆαααααΆαααΈαααΆααα’ααα ααΆααα·α
αα
ααααΌαααΆαα’αα»ααααααΆααα·αααααααΆαααααα (
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 α
ααΆαααααααα ααΆααααααααααααΌαααΆαα’αα»αααααααα α ααΆααααααααΆααΆααααααα
$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created
α αααααααΌαα₯α‘αΌααααα’αα»ααααΆαα±ααα αΌααα ααΆααα ααα 80 ααα»αααααα·αααΉαααΆααααΌααααααΌαααααΎαα ααΈααΆααα αααααΆααααΆααααα’αααααΉαααααΌαααΆα ααααΆαααααα·αααα·α.
ααααΆα VirtualService
VirtualService ααααΆαα Ingress Gateway ααΈαααααααααΌαααααΎαααααααΌαααΆαα’αα»ααααΆααα αααα»αα αααααα
ααααΎαα ααΆαααααααα·ααΈααααααΎααααα αΌαααααΆαααα http-gateway ααααΌαααααααΎαα ααΆαα sa-frontend, sa-web-app αα·α sa-feedback services:
ααααΌααααααααΌαααααααα
ααΆααααααααααΆαα½αααααΆαααα VirtualServices
ααΌααααα‘ααααΎαααααΎααααα½αααααΎαα SA-Frontendα
- ααΆαααααα½ααα·αααααΆαααα
ααΆαααααΌα
/
αα½αααααααΌαααΆααααααΌααα SA-Frontend ααΎααααΈααα½αααΆα index.html; - ααααΌααα»ααααα
/static/*
ααααΌαααααααΎαα SA-Frontend ααΎααααΈααα½αα―αααΆααα·αα·αααααααααααΎαααα»ααααααααΆααα»α ααΌα ααΆ CSS αα·α JavaScript α - ααααΌαααααΌαααααΆαααααααααααααααΆα
'^.*.(ico|png|jpg)$'
ααααΌααααααααΌααα SA-Frontend ααΈααααα ααΆαααααααΊααΆααΌαααΆαααααααα αΆααα ααΎαααααα
ααΆαα’αα»ααααααααΌαααΆααααααα
αααααΆααααααααΌα
ααΆαααααα (
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
α ααα»α ααααΆαααα
- ααααΆβαα·αααα·αβαααβαααα βααΎβααααΎβαααβααβααα 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 αααΆαααΈααααααΎ API αααα Kubernetes αααααΎαααααΉαααα·ααΆααααα½ααααααααΌαααΆαααα½αααα Istio Control Plane α αΎααααααΆααααΈαααααΆαααααααα ααΆααααααααααααΈααααΌαααΆαα’αα»ααααα ααααααααΌααααΈ Envoy αααα pod ααΈαα½ααα α αΎαα§ααααααααααΆ Ingress Gateway α αΆααααΌα ααΆαααααα·ααα½ααααααααααααααΆαααααααα ααΆαααααααααα αααα»α Control Plane α ααΆααα’αααααααΎααα ααΌα ααααα αααα»αααααΆααααΆαα
ααΆαααααααα
ααΆαααααααα Istio-IngressGateway αααααΆααααΆααααααααααΌαααααΎαα»α
αααααα·ααΈαα·ααΆαα’αΆααααααα₯α‘αΌααααααΆααα
ααΎ http://{EXTERNAL-IP}/
. αα»αααΆαααα ααααα·αααΎα’αααααα½αααΆαααααΆαααΆααααα·αααΎαα αααααααααΆααααΌαα
αααΆααααααΌαααααα·α
ααΎααααΈα±ααααΆααααααααΆαααααα·αααααΆα α αΎα Envoy ααααΆαααααααΆααααΎααααΈααααΎαα
αα
α»ααααααααΆα.
αα»αααΉααααα ααΌααααααΆαα½ααααααα·ααΈααααα·α ααΎααααΈαααααΎαα ααΆα αααα (ααααααΆαααααααΆααΊα αΆαααΆα ααααααΆααααΆαα αααΆααααΆαααα αααα»ααααααααΆαααΆαααααααααΆαα - αααα αΆαααααα ααα transl α ).
Kiali: ααΆααααααα
ααΎααααΈα αΌααα ααΆααα ααα»α αααααΆααααααααΆα Kiali ααΌαααααΎαααΆαααΆααααααααΆααΆααααααα
$ 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 ααΌαααααΎαααΆαααΆααααααααΆααΆαααααα αα½α
ααΎα
$ 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ααΎααααΈααΎαααααααααααααααΌαααΆαα
α’αααΈβαααβαααα»αβαααα
αΆαβααΎαβαα
βααΈβαααβααΊβααΆαβα’αα»ααααβαααβαα·αβαα½αβα±ααβαα»αβααααΆααβααΆααβαααα»α - ααΆαβαααααβααααβααΉαβαα·αβαααβαααααααβα
ααααβααΆαβαααβα ααααααααΎαααααα»αααΌα
αα½ααααααααΎααΆααααααααΆααΆααααααα
$ 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: ααΆαααΆα
ααΎαβααΉαβααααΌαβααΆαβααΆαβααΆαβααΆαβαααααβααβααΎαβααΆαβααααΆβααΆααβααβα αααΎα ααΆβααΆααβααβααααΆαβαααα»αβααΆαβααΆαβαα βααβααΌαα ααα»βααβααΆαβαααΆαααα αααααΎαααααΈααΆαααααα½αααΈααΌαααΆαααΆααααααα
α§ααΆα αααααααααΆααααααΎααααααΆααααααα
ααααα
ααααΎααΆααα, ααααΆαα - ααΎβα’αααΈβααΆβα ααα»αα? ααααΆααααααααΌα? α¬ααΈααΈα? ααΆαααααΈααΎααααααΆααααΈα - αααααΎααααααα ααα»ααΈαα½ααα ααΎα’αααα αΆαααααα½αα―αααααΎααααααααΉαααΆααααα»ααααΆ? ααΆαααΆαααααααΎαααΊααΌα ααΆα’ααααααΎαα’ααααααααααα·ααΈααΆαα’αααα’αα·αααααα...
αααααΊααΆαααα αΆααΌαα αα αααα»αααααΆααΈααααΌ αα·αααααΌαααΆααααααααΆααααααααααααααΆαααΆαα ααα αΆα ααααααα»ααααααααΆαααααααααΌαααααααΆαααα½αααααα ααααΆαα αα·ααα αα αααααΆααααΈαααααααααΆααααααααΌαααΆααααααΌααααααα ααααααααααΆαααΆα αααααΆααααΌαααΆαααααααααααΆαα½ααα·ααααααααααΎα αααααΆααΌαααΆαα
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
α₯α‘αΌαααααα
ααΆαααααααα αΆαα
- ααΆααααα»αα αΌααα istio-ingressgateway (αααβααΆβα’ααααααααβααααΌαβααΆαα½αβααααΆααααβαα½α α αΎαβαααβαααααΆααβααΆαβααααΌαβααΆαβαααααΎαβαααααΆααβααααΎ) αααααΆααβααΈβαααβα αααβα ααβααΉαβααααΎβααααΎβαα βααααΆαααα sa-web-app.
- αα
αααα»αααααΆαααα sa-web-app ααααΎβαααβααααΌαβααΆαβααα½αβαααβααααααβααΆαβαααααα·α βααΌαβ ααααΌαβααΆαβαααααΎαβα‘αΎαβαααα»αβα
ααααα (αααβααΆβααΌαβα ααα»βαααβααΎαβααΎαβααΆβαα
βαααα»αβααΆα) α αΎαβαααααΌαβααααβαα
βαα»αααΊαααα sa-web-app. (
αααααα - α―αααΆα‘αΌααΈααααααΆαααΆααα αααα»α Jaeger αααααΆαααααα αααααααΆα αΆααααααΎαααααααα·ααααα·ααΆα αα·αααααααααααααΆα α αααααα’αΆα ααααΌαααΆαααΆαααα·ααααααΆα ααααΆα αα acyclic ααΉαααΆααααα·ααΆαααΆααααααΎαααΆααΆααα½αα - αααα αα ααααααα ) - αα ααΈαααααααΎααααΌαααΆαααααΎαααΆαααααα·ααΈααΆααααα ααΆααα·ααΆαα’αΆαααααα. ααΆαααΆαααααααααΌαααΆααααααΎααα½α α αΎαααααααααα·ααΈ i.e. αα½αααααΆαααΆαααΆαααααΆααααααΌαααΌαα
- α αΆααααΈααααααααα ααααΎ POST ααααΌαααΆααααα½α ααααΎααα αααα»α ααΆ-αααααα·ααααΆ. ααααααααΆααααΆαααααΌααααααααΌαααααααΈ sa-web-app.
- ...
ααΆαααααααααΆααα αα αααα»αααα αΆαααΈ 4 αααααα·ααΈαα½αααααΎαααααααΆααααααααΎαααα Istio α αΎααααααΌαααΆαα ααααΎααΆαααααααααΆααααΌα αααα αΆααααα»αααΌαααΆαααΆααααααα
(A) 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α
α₯α‘αΌααααααΆα αααΆααααΆα’αααΈαααααΎαααα½αααΆαα ααααΈαααα’αα (α¬ααααΎαααα ααααΈαααα’αα) ααΌααααα‘ααααΎαααΆαααΆααα·ααα routing, network traffic management, security, etc.!
α
αααΆαα ααααααα ααΌαα’αΆαα’αααΈααΏαααααα
αααα»αααααααααααΆαααααααααΆαααα
ααΎ Istio ααΈ Rinor Maloku ααΆααααααααααααΉαααααΎααΆααα
ααΎαααααααααααΎαααΆαααααΆααα»ααααα ααααΎα±ααααΆαααααα (ααααααΈα‘α€ ααααΈααΆ)α
PS ααΈα’ααααααααα
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- "αααααααα
ααααΆααααααααΆαααΌα
ααΆαα½α Istio"α
αααααααΈ 2 (ααααΌα, ααΆααααα½ααα·αα·αααα ααΆα ααα) ,αααααααΈ 3 (ααΆααααααααααΆαα αα·αααΆαα’αα»ααααΆα) ; - Β«
ααααα - ααααΆααααααΆααααααααααΆααααααΆαα Kubernetes Β» - Β«
ααΎα’αααΈαα ααΆααααΆααααΆαα α αΎαα ααα»α’αααΈααΆαααΆαααα»αααααΌαααΆα [αααααΆαααααααα·ααΈαααααΆαα½αααΈααααΌααΊααΈα]? Β» - Β«
ααααα»ααααααααααα αΆαα’αααΈαααααΆααα αααα»α Kubernetes α αααααααΈ 1 αα·αααΈ 2 Β» - Β«
ααΎβαα»αααΊαααβααΆαβααααααβαααβαααα ααβαααβααααβααΆβαα βααΈααα [αααα»α Kubernetes]? "α
ααααα: www.habr.com