ืืขืจื. ืชืจืืื: ืจืฉืชืืช ืฉืืจืืช ืืืืื ืืคืื ืื ืืฉื ืื ืืชืฉืชืืช ืฉื ืืืื ื ืขืืืจ ืืืฉืืืื ืืขืงืืืช ืืจืืืืงืืืจืช ืืืงืจื-ืฉืืจืืช. ืืขืื ืฉ-Istio ืขืฉืื ืืืืืช ืขื ืืจืืืจ ืฉื ืืื ืืกื DevOps ืจืืื, ืืืืืจ ืืืืฆืจ ืืืฉ ืืืื, ืฉืืื ื ืืืจืื ืืืืื ืช ืืชืืื ืืช ืฉืืื ืืกืคืง, ืื ืืืื ืืงืืช ืืจืื ืืื ืืืืืจ. ืืืื ืืกืช ืืืจืื ืืช ืจืื ืืจ ืืืืืงื, ืฉืืืจืืืช ืขื ืืืฉืื ืขื ื ืืืงืืืืช ืืืืืื ืืืืจืช ืืชืงืฉืืจืช Orange Networks, ืืชืื ืกืืจื ื ืคืืื ืฉื ืืืืจืื ืืืืคืฉืจืื ืืฆืืื ืืืืืจืืช ืืืขืืืง ืืืืกืืื. ืืื ืืชืืื ืืช ืืกืืคืืจ ืฉืื ืืื ืฉืืืกืืื ืืืื ืืขืฉืืช ืืืื ืืชื ืืืื ืืจืืืช ืืช ืื ืืืืืจืืช ืืื ืขืื ืื.
Istio - ืคืจืืืงื ืงืื ืคืชืื, ืฉืคืืชื ืืฉืืชืืฃ ืคืขืืื ืขื ืฆืืืชืื ืืืืื, ืืื ืืืืคื. ืืื ืคืืชืจ ืืช ืืืืจืืืืืืช ืืืชืขืืจืจืืช ืืืืฉืืืื ืืืืืกืกืื ืขื ืืืงืจื-ืฉืืจืืชืื, ืืืฉื, ืืืื:
- ื ืืืื ืชืขืืืจื: ืคืกืงื ืืื, ื ืืกืืื ืืช ืืืืจืื, ืืืืื ืขืืืกืื;
- ืืืืื: ืืืืืช ืืืจืฉืื ืฉื ืืฉืชืืฉ ืงืฆื;
- ืืืืืช ืฆืคืืื: ืืขืงื, ื ืืืืจ, ืจืืฉืื.
ืืช ืืืื ื ืืชื ืืคืชืืจ ืืจืืช ืืืคืืืงืฆืื, ืืืื ืืืืจ ืืื ืืฉืืจืืชืื ืฉืืื ืื ืืืื ืืืชืจ "ืืืงืจื". ืื ืืืืืฅ ืื ืืกืฃ ืืืคื ืื ืืฉืืื ืืื ืืื ืืืืื ืฉื ืืฉืืื ืืืืจื ืฉืืืืืื ืืฉืืฉ ืืฉืืจืืช ืืขืจื ืขืกืงื. ืฉืงืื ืืืืื:
ืื ืื ืคืจืืืงื: ืืื ืืื ืืืงื ืืืืกืืฃ ืชืืื ืช ืืฉืื?
ืืคืชื: ืฉื ื ืกืคืจืื ืืื.MP: ืื?... ืื ืคืฉืื CRUD!
R: ืืืฆืืข CRUD ืืื ืืืืง ืืงื ืืืฉืืื, ืืื ืื ืื ื ืขืืืื ืฆืจืืืื ืืืืช ืืืืฉืจ ืืฉืชืืฉืื ืืฉืืจืืชืื. ืืืืืื ืฉืืจืฉืช ืืื ื ืืืื ื, ืชืฆืืจื ืืืืฉื ืืงืฉืืช ืืืืจืืช, ืืื ืืืืคืืก ืืคืกืง ืืืงืืืืช. ืืื ืื, ืืื ืืืืื ืฉืื ืืืขืจืืช ืื ืงืจืกื, ืคืกืงื ืืื ืืืืืฆืืช (ืจืื ืืืืฉื ืืืืืจ ืืคืจืืื ื ืืกืคืื ืขื ืฉื ื ืืืคืืกืื ืฉืืืืืจื.), ืืขื ืื ืช ืืืชืจ ืืขืืืช, ื ืืืืจ, ืืขืงื, [โฆ]MP: ืื, ืื ืืื ื ืื ืืก ืืช ืืชืืื ื ืืื ืืฉืืจืืช ืืืืฆืจ.
ืื ื ืืืฉื ืฉืืจืขืืื ืืจืืจ: ืืืืช ืืฆืขืืื ืืืืืืฅ ืื ืืจืฉืื ืืืืกืคืช ืฉืืจืืช ืืืื ืืื ืขืฆืืื. ืืืืืจ ืื, ื ืกืงืืจ ืืืฆื Istio ืืกืืจื ืืช ืื ืืืืจืืืืช ืฉืืืืืจื ืืขืื (ืื ืืืืงืืช ืขื ืืื ืืืืืืื ืืขืกืงื) ืืืฉืืจืืชืื.
ืฉืื ืื: ืืืืืจ ืื ืื ืฉืืฉ ืื ืืืข ืืขืืืื ืขื Kubernetes. ืืืจืช, ืื ื ืืืืืฅ ืืงืจืื
ืจืขืืื ืืืกืืื
ืืขืืื ืืื Istio, ืฉืืจืืช ืืื ืืืืฉ ืืงืฉืืช ืืฉืืจืืช ืืืืจ, ืืืืงืจื ืฉื ืืฉื, ืืฉืืจืืช ืืืื ืืืคื ืื ืืขืฆืื: ืืขืฉืืช ื ืืกืืื ืืืฉ, ืืกืคืง ืคืกืง ืืื, ืืคืชืื ืืคืกืง ืืื'.
ืชืขืืืจืช ืจืฉืช ื-Kubernetes
Istio, ืืขืืืช ืืืช, ืืฆืืขื ืคืชืจืื ืืืืื ืื ืคืจื ืืืืืืื ืืฉืืจืืชืื ืืคืื ืงืฆืืืช ืขื ืืื ืืคืจืขื ืืืื ืืจืืงืฆืื ืืจืฉืช. ืืื ืืื ืืืืฉื:
- ืกืืืื ืืช ืืชืงืืืช: ืืืชืืกืก ืขื ืงืื ืืกืืืืก ืืชืืืื, ืืื ืืืื ืื ืืืงืฉื ื ืืฉืื ืืืืืฉ ืืืชื ืืืืฉ.
- ืืฉืงืืช ืงื ืจืืืช: ืืคื ื ืจืง ืืืื ืงืืืข ืืืืงืฉืืช ืืืจืกื ืืืืฉื ืฉื ืืฉืืจืืช.
- ื ืืืืจ ืืืืืื: ืืื ืืื ืืงื ืืฉืืจืืช ืืืืื?
- ืืขืงื ืืฆืคืืื: ืืืกืืฃ ืืืชืจืืช ืืืืืืืช ืืื ืืงืฉื ืืขืืงื ืืืจืืื ืืจืืื ืืืฉืืื.
- ืืืืื: ืืืืืจ ืืกืืืื JWT, ืืืืช ืืืืฉืจ ืืฉืชืืฉืื.
ืืื ืื ืจืง ืืื ืืืืคืฉืจืืืืช (ืืืืช ืจืง ืืื!) ืืกืงืจื ืืืชื. ืขืืฉืื ืืืื ื ืฆืืื ืืคืจืืื ืืืื ืืื!
ืืจืืืืงืืืจื
Istio ืืืืจื ืืช ืื ืชืขืืืจืช ืืจืฉืช ืืืืื ืขืืื ืกื ืืืืื, ืืืื ืืก ืืื ืคืื ืคืจืืงืกื ืืื ืืฆืืจื ืฉื ืืืื ืฆืืื. ืคืจืืงืกื ืฉืืคืขืืืื ืืช ืื ืืืคืฉืจืืืืช ืืืฆืจืื ื ืืืืก ื ืชืื ืื, ืื ืืชื ืืืชืืื ืืืชื ืืืืคื ืืื ืื ืืืืก ืืงืจื.
ืืืืก ื ืชืื ืื
ื-proxys ืืืืื ืกืื ืืชืจืืืืื ืืงืืื ืขื Istio ืืขืืื ืืืจืืฉืืช ืฉืื ื ืฆืจืืืื. ืืืืืื, ืืื ื ืืืืง ืืช ืืคืื ืงืฆืืืช ืฉื ื ืืกืืื ืืืืจ ืืืคืกืง.
ืืืฆื ื ืืกืืื ืืช ืืืืจืื ืืฉืืืจืช ืืขืืืื ืืืืฉืืื ื-Envoy
ืกืืืื:
- ืฉืึทืึฐืจึดืืจ (ืื ืื ื ืืืืจืื ืขื ืคืจืืงืกื ืืืืืงื ืืืืื ืฆืืื, ืฉืืืคืฅ ื
ืืืฆืจ ื ืคืจื - ืืฉืืขืจ. ืชืจืืื) ืฉืืื ืืงืฉื ืืืืคืข ืืจืืฉืื ืฉื ืฉืืจืืช B ืื ืืฉื. - Envoy Sidecar ืื ืกื ืฉืื (ื ืกื ืฉืื). (1)
- ืืืงืฉื ืฉื ืืฉืื ืืืืืจืช ื-proxy ืฉืงืจื ืื.
- ืื ืคืืชื ืืช ืืคืกืง ืืืขืื ืืืชืงืฉืจ ืืฉืืจืืช ืืื ืขืืืจ ืืงืฉืืช ืขืืงืืืช. (2)
ืืฉืืขืืช ืืืืจ ืืื ืฉืืื ื ืฆืจืื ืืืฉืชืืฉ ืืกืคืจืืืช ื-Resession ืืืื, ืืื ื ืฆืจืื ืืืฆืข ืืืฉืื ืืฉืื ืฉื ืฉืืืจืช ืืขืืืื ืืืืืื ืฉืืจืืช ืืฉืคืช ืืชืื ืืช X, Y ืื Z. ืื ืื ืืขืื ืืืื ืืชืื ืงืืคืกื ืืืืกืืื ืืืื ื ืืืจืฉืช ืื ืฉืื ืืืื ืืงืื.
ืืืื! ืขืืฉืื ืืืื ืชืจืฆื ืืฆืืช ืืืกืข ืขื ืืืกืืื, ืืื ืขืืืื ืืฉ ืืื ืกืคืงืืช, ืฉืืืืช ืคืชืืืืช. ืื ืื ืคืชืจืื ืืื ืืืจืกืื ืืื ืืืจืืข ืืืืื, ืื ืืฉ ืื ืืฉื ืืืืืืื: ืืจื ืื ืืคืชืจืื ืืช ืืืื ืืืขืฉื ืื ืืชืืืืื ืืื ืืงืจื.
ืืืืกืืฃ ืืชื ืฉืืื: "ืืื ืื ื ืืชื ืืืชืืื ืืืฉืืช?"
ืขืืฉืื ืืชื ืืืื ืื ืืืกืข ืืื โ ืืืืื ืืืืืจ ืืช Control Plane.
ืืืืก ืืงืจื
ืืื ืืืจืื ืืฉืืืฉื ืืจืืืืื: ืืืก, ืืืงืกืจ ะธ ืืฆืืื, ืืฉืจ ืืืื ืืืืืจืื ืืช ืฉืืืืื ืื ืชื ืชืขืืืจื, ืืืืื ืืืื ืืืช ืืืืกืืฃ ื ืชืื ื ืืืืืจืื. ืืืืคื ืกืืืื, ืืื ื ืจืื ืื:
ืืื ืืจืืงืฆืื ืฉื ืืืฉืืจ ืืงืจื ืขื ืืืฉืืจ ื ืชืื ืื
ืฉืืืืื (ืืืืืจ ืืืฉืืจ ื ืชืื ืื) ืืืืืจืื ืขื
ืงืฉืจ ืฉืืจืืชืื ืืืืกืืื
ืชืืืจื ื ืืช ืืงืฉืจ ืฉื Istio ืืฉืืจืืชืื, ืืื ืื ืืืืคื: ืืื ืืฉืืจืืชืื ืงืฉืืจืื ืืืืกืืื?
ืืืขื ืืืืช, ืฉืืจืืชืื ืืืืขืื ืขื ื ืืืืืชื ืฉื ืืืกืืื ืืื ืื ืืืื ืืืืขืื ืขื ืืื, ืืฉืื ืฉืืืืื ืืช ืขืฆืื: "ืื ืื ืืื ืืืื?".
ืึดืืึผืจ
ืื ื ืืชื ืืงืืช ืืฉืืื ืขืืื ืืืืืจ ืคืจืืกืช ืจืืืื Istio ืืฉืืจืืชืื ืื ืืืฉืืื ืืขืืื ืืืืืจ ืืกืจืช ืจืืืืื ืืื ืืื ืืืืืจ ืืืืืช ืืกืืจ. ืืจืืจ ืฉืืืงืจื ืื ืชืืื ืืช ืืืืืื ืืืืช ืฉืืกืคืงืช ืืืกืืื.
ืื ืืชืืืืจืื - ืืืื ื ืืฆืื ืืช ืืืืข ืืื ืืคืืขื!
ืืืกืืื ืืคืืขื
Istio ืืืจืฉ ืืฉืืื Kubernetes ืขื ืืคืืืช 4 vCPUs ื-8 GB ืฉื ืืืืจืื RAM ืืืื. ืืื ืืืขืืืช ืืช ืืืฉืืื ืืืืืจืืช ืืืขืงืื ืืืจ ืืืืจืืืช ืืืืืืจ, ืื ื ืืืืืฅ ืืืฉืชืืฉ ื-Google Cloud Platform, ืืืฆืืขื ืืฉืชืืฉืื ืืืฉืื
ืืืืจ ืืฆืืจืช ืืืฉืืื ืืืืืจืช ืืืฉื ื-Kubernetes ืืจื ืืื ืืฉืืจืืช ืืืกืืฃ, ืชืืื ืืืชืงืื ืืช Istio ืืจื ืื ืื ืืืืืืืช ืฉื Helm.
ืืชืงื ืช ืืื
ืืชืงื ืืช ืืงืื Helm ืืืืฉื ืฉืื ืืืชืืืจ ื
ืืชืงื ืช Istio
ืืืจื ืืฉืืื Istio ื [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 ืืงืืืฅ 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 ืืืฉืืฉืช ืืืจ ืฉืืืืืจื
ืืืคืืืงืฆืื ืืืจืืืช ืืืจืืขื ืฉืืจืืชื ืืืงืจื:
- ืฉืืจืืช SA-Frontend, ืืืฉืจืช ืืช ืืืคืืืงืฆืื ืืงืืืืช ื-Reactjs;
- ืฉืืจืืช SA WebApp, ืืืฉืจืช ืฉืืืืชืืช ื ืืชืื ืกื ืืืื ื;
- ืฉืืจืืช SA Logicืฉืืืฆืขืช ืืช ืขืฆืื
ื ืืชืื ืืกื ืืืื ื ; - ืฉืืจืืช ืืฉืื SA, ืืืงืื ืืฉืื ืืืืฉืชืืฉืื ืขื ืืืืง ืื ืืชืื ืฉืืืฆืข.
ืืชืจืฉืื ืื, ืื ืืกืฃ ืืฉืืจืืชืื, ืื ื ืจืืืื ืื ืืช Ingress Controller, ืืฉืจ ื-Kubernetes ืื ืชื ืืงืฉืืช ื ืื ืกืืช ืืฉืืจืืชืื ืืืงืืืืื. Istio ืืฉืชืืฉ ืืงืื ืกืคื ืืืื ืืืืง ื-Ingress Gateway, ืฉืคืจืืื ืืืืขื ืืืืฉื.
ืืคืขืืช ืืคืืืงืฆืื ืขื ืคืจืืงืกื ื-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
ืืืืื ื ืืืืืืืืช ืื ื ืจืื ืื:
ืคืจืืงืกื ืฉืืื ืืืื ืืชืจืืืืื
ืืขืช ืืฉืืืคืืืงืฆืื ืคืืขืืช, ื ืฆืืจื ืืืคืฉืจ ืืชื ืืขื ื ืื ืกืช ืืืืื ืก ืืืคืืืงืฆืื.
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 ืืื CRD (Custom Resource Definition) ื-Kubernetes, ืืืืืืจ ืืืืจ ืืชืงื ืช Istio ืืืฉืืื ืืืืคืฉืจ ืืช ืืืืืืช ืืฆืืื ืคืืจืืื, ืคืจืืืืงืื ืืืืจืืื ืขืืืจื ืื ื ืจืืฆืื ืืืคืฉืจ ืชืขืืืจื ื ืื ืกืช.
ืืืงืจื ืฉืื ื, ืื ื ืจืืฆืื ืืืคืฉืจ ืชืขืืืจืช 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 ืืืืื ืืช ืืชืฆืืจื. ืืืงืจื ืฉืื ื, ืืืืืจ ืืืงืจ Ingress Gateway, ืฉืืืชืงื ืืืจืืจืช ืืืื ื-Istio.
ืืชืฆืืจื ืืืืืช ืขื ืืื ืงืจืืื ืืคืงืืื ืืืื:
$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created
ืืฉืขืจ ืืืคืฉืจ ืืขืช ืืืฉื ืืืฆืืื 80 ืื ืืื ืื ืืืฉื ืืื ืื ืชื ืืช ืืืงืฉืืช. ืืฉืืื ืื ืชืฆืืจื ืฉืืจืืชืื ืืืจืืืืืืื.
ืืฉืื ืฉืืจืืช ืืืจืืืืื
ื-VirtualService ืืืืจ ื-Ingress Gateway ืืืฆื ืื ืชื ืืงืฉืืช ืืืืชืจืืช ืืชืื ืืืฉืืื.
ืืงืฉืืช ืืืคืืืงืฆืื ืฉืื ื ืืืืืขืืช ืืจื http-gateway ืืืืืืช ืืืืฉืื ืืฉืืจืืชื sa-frontend, sa-web-app ื-sa-feedback:
ืืกืืืืื ืืืืืจื ืขื VirtualServices
ืฉืงืื ืืช ืืืงืฉืืช ืฉืืฉ ืืฉืืื ืื SA-Frontend:
- ืืชืืื ืืืืืงืช ืืืืจื ืืืจื
/
ืืฉ ืืฉืืื ืื SA-Frontend ืืื ืืงืื index.html; - ื ืชืืืื ืขื ืงืืืืืช
/static/*
ืืฉ ืืฉืืื ืื SA-Frontend ืืื ืืืฉืชืืฉ ืืงืืฆืื ืกืืืืื ื-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, ืืืืืจ ืืื ืืชืฆืืจื ืืืืฉื ืืืืืช ืขื ืคืจืืงืกื ื-Envoy ืฉื ืื ืคืื. ืื ืจืื ืฉืืืงืจ ืฉื Ingress Gateway ืืื ืฉืืื ืืืจ ืฉืืืืืจ ืืืืฉืืจ ืืืงืจื. ืื ืื ื ืจืื ืื ืืชืจืฉืื:
ืชืฆืืจืช Istio-IngressGateway ืื ืืชืื ืืงืฉืืช
ื ืืชืื ืกื ืืืื ื ืืืื ืืขืช ื- http://{EXTERNAL-IP}/
. ืื ืชืืื ืื ืืชื ืืงืื ืกืืืืก ืื ื ืืฆื: ืืคืขืืื ืืืงื ืงืฆืช ืืืชืจ ืืื ืขื ืฉืืชืฆืืจื ื ืื ืกืช ืืชืืงืฃ ืืืืืื ืื ืฉื Envoy ืืชืขืืื ืื.
ืืคื ื ืฉืชืืฉืื, ืฉืืง ืงืฆืช ืขื ืืืคืืืงืฆืื ืืื ืืืฆืืจ ืชื ืืขื. (ืื ืืืืืช ืฉืื ื ืืืฆื ืืืืืจืืช ืืคืขืืืืช ืืืืืช - ืืขืจื ืชืจืืื).
ืงืืืื: ืฆืคืืื
ืืื ืืืืืข ืืืืฉืง ืื ืืืื ืฉื Kiali, ืืคืขื ืืช ืืคืงืืื ืืืื:
$ kubectl port-forward
$(kubectl get pod -n istio-system -l app=kiali
-o jsonpath='{.items[0].metadata.name}')
-n istio-system 20001
...ืืืคืชืื
ืืจืคื ื: ืืืืื ืฉื ืืืืื
ืืืืืื ืฉื ืืกืคื ื-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
ืขืืฉืื ืืฉ ืื ื ืืจืคืื ืืจืื ืืืชืจ ืืคืื, ืืื ืืกืฃ ืืืืื, ืืื ืคืจืืืชืืืก ื ืคืืืื ืื ืืืืจ ื-Grafana ืืืืืฉืช ืืืืื ืฉืืืคืฉืจื ืื ื ืืืืื ืขื ืืืฆืืขืื, ืืจืืืืช, ืฉืืคืืจืื/ืืืจืืจืืช ืืฉืืจืืชืื ืืืืจื ืืื.
ืืืกืืฃ, ืืืื ื ืกืชืื ืขื ืืขืงื ืืืจ ืืงืฉืืช ืืฉืืจืืชืื.
ืืืืจ: ืืืชืืจ
ื ืฆืืจื ืืืชืืจ, ืื ืืื ืฉืืฉ ืื ื ืืืชืจ ืฉืืจืืชืื, ืื ืงืฉื ืืืชืจ ืืืืืข ืืืืจื ืืชืงืื. ืืืื ื ืกืชืื ืขื ืืงืจื ืคืฉืื ืืืชืืื ื ืืืื:
ืืืืื ืืืคืืกืืช ืืืงืฉื ืืงืจืืืช ืฉื ืืฉืื
ืืงืฉื ืืื, ื ืืคืืช - ืื ืืกืืื? ืฉืืจืืช ืจืืฉืื? ืื ืฉื ืื? ืืฉ ืืืฆืืื ืื ืืืื ืืฉื ืืื - ืืืื ื ืกืชืื ืขื ืืืืื ืื ืฉื ืื ืืื ืืื. ืืืืื ืชืืืจืืช ืชืคืกืช ืืช ืขืฆืื ืขืืฉื ืืช ืื? ืืขืืืื ืฉืื ื ืืืื ืืืชืจ ืืืืฉื ืชืืื ื ืืืฉืจ ืืืคืชืืื...
ืืืืืจ ืืืขืื ื ืจืืืช ืืฉืืจืืชื ืืืงืจื ืื ืคืชืจืช ืขื ืืื ืืขืจืืืช ืืขืงื ืืืืืจืืช, ืฉืืื ืืฉืืจืืชืื ืืขืืืจืื ืืืชืจืช ืืืืืืืช ืื ืืื, ืืืืืจ ืืื ืืืืืข ืืื ืื ืืชื ืืืขืจืืช ืืืขืงื, ืฉื ืืื ืืืฉืืื ืื ืชืื ื ืืืงืฉืืช. ืื ื ืืืืฉื:
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 (ืืืื ืืืื ืืจืืงืฆืื ืืจืืฉืื ื ืขื ืืื ืืฉืืจืืชืื, ืื ืืฆืจ Trace ID ืขืืืจ ืืืงืฉื), ืืืืืจ ืืื ืืฉืขืจ ืฉืืื ืืช ืืืงืฉื ืืฉืืจืืช sa-web-app.
- ืืฉืืจืืช sa-web-app ืืืงืฉื ื ืืกืคืช ืขื ืืื ื-Envoy ืืฆื, "ืืื" ื ืืฆืจ ืืืืื (ืืืื ืื ืื ืื ื ืจืืืื ืืช ืื ืืขืงืืืช) ืืืืคื ื ืืืืฉ ืืืืื sa-web-app. (
ืึฐืึทืงึดืืฃ - ืืืืืช ืขืืืื ืืืืื ืืช ืืืืจ, ืืขืืช ืฉื, ืฉืขืช ืชืืืืช ืืคืขืืื ืืืฉื ืืืื ืฉืื. ื ืืชื ืืงื ื ืืืืืืื ืืืืืื. ืืจืฃ ืืฆืืงืื ืืืืื ืฉื ืืืืืื ืืืฆืจ ืขืงืืืช. - ืืฉืืขืจ. ืชืจืืื) - ืืื ืืืงืฉื ืืขืืืืช ืืฉืืื ื ืืชืื ืืกื ืืืื ื. ืขืงืืืช ืืื ืืืจ ื ืืฆืจื ืขื ืืื ืืืคืืืงืฆืื, ืืืืืจ. ืื ืืจืฉื ืฉืื ืืืื ืืงืื.
- ืืจืืข ืื ืืืคืขืืช ืืงืฉืช POST ื ืกื-ืืืืืงื. ืืฉ ืืืขืืืจ ืืืื ืืขืงื ื sa-web-app.
- ...
ืฉืื ืื: ืืฉืื 4, ืืืคืืืงืฆืื ืฆืจืืื ืืจืืืช ืืช ืืืืชืจืืช ืฉื ืืฆืจื ืขื ืืื Istio ืืืืขืืืจ ืืืชื ืืืงืฉืืช ืขืืงืืืช, ืืคื ืฉืืืฆื ืืชืืื ื ืืืื:
(ื) ืืขืืจืช ืืืชืจืืช ืืื ืืืืจืืืช Istio; (ื) ืืฉืืจืืชืื ืืืจืืื ืืืืชืจืืช
ืืืกืืื ืขืืฉื ืืช ืขืืงืจ ืืขืืืื ืืืื ืืืฆืจ ืืืชืจืืช ืืืงืฉืืช ื ืื ืกืืช, ืืืฆืจ ืืืืืื ืืืฉืื ืืื sidecare ืืืขืืืจ ืืืชื. ืขื ืืืช, ืืืื ืืขืืื ืขื ืืืชืจืืช ืืชืื ืืฉืืจืืชืื, ื ืชืื ืืขืงื ืืืงืฉื ืืืื ืืืื.
ืืฉ ืืงืืช ืืืฉืืื ืืช ืืืืชืจืืช ืืืืืช (ืืืขืืืจ):
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.
ืขืืฉืื, ืืฉืืจืืจ ืื ืื ืื ื ืืงืืืื ืืืงืืคืกื (ืื ืืืขื ืืืืฅ ืืงืืคืกื), ืืืื ื ืกืชืื ืขื ืืืื ืื ื ืืชืื, ื ืืืื ืชืขืืืจืช ืจืฉืช, ืืืืื ืืขืื!
ืืขืจื. ืชืจืืื: ืงืจืื ืขื ืื ืืืืง ืืื ืฉื ืืืืจืื ื-Istio ืืืช Rinor Maloku, ืฉืชืจืืืื ืืืืข ืืืืื ืฉืื ื ืืขืชืื ืืงืจืื. ืขืืืื (14 ืืืจืฅ):
ื .ื ืืืืชืจืื
ืงืจื ืื ืืืืื ืฉืื ื:
- "ืืืจื ืืฉืืจืืชื ืืืงืจื ืขื Istio":
ืืืง 2 (ื ืืชืื, ืืงืจืช ืชื ืืขื) ,ืืืง 3 (ืืืืืช ืืืจืฉืื) ; - ยซ
Conduit - ืจืฉืช ืฉืืจืืช ืงืืช ืืฉืงื ืขืืืจ Kubernetes "; - ยซ
ืืื ืจืฉืช ืฉืืจืืช ืืืื ืื ื ืฆืจืื ืืืชื [ืขืืืจ ืืคืืืงืฆืืืช ืขื ื ืขื ืืืงืจื-ืฉืืจืืชืื]? "; - ยซ
ืืืจืื ืืืืืจ ืืจืฉืช ื-Kubernetes. ืืืงืื 1 ื-2 "; - ยซ
ืืืฆื ืืืืขื ืืืืื ืฆืืืืช ืื ืืืื [ื-Kubernetes]? ".
ืืงืืจ: www.habr.com