ื ืืืืฅ. ืืจืึทื ืกื.: ืกืขืจืืืืก ืืขืฉืขืก ืืึธืื ืืืฉืืืื ืืืขืจื ืึท ืืึทืืืึทืืืง ืืืืืื ื ืืื ืืึธืืขืจื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืคึฟืึทืจ ืึทืคึผืืึทืงืืืฉืึทื ื ื ืึธื ืืืงืจืึธืกืขืจืืืืก ืึทืจืงืึทืืขืงืืฉืขืจ. ืืึธืืฉ Istio ืงืขื ืืืื ืืืืฃ ืื ืืืคื ืคืื ืคืืืข DevOps ืขื ืืืฉืึทื ืืจื, ืขืก ืืื ืึท ืคืขืจืื ื ืืึท ืคึผืจืึธืืืงื ืืืึธืก, ืืึธืืฉ ืคืืืฉืืขื ืืืง ืืื ืืขืจืืื ืขื ืคืื ืื ืงืืืคึผืึทืืืืึทืืื ืขืก ืืื, ืงืขื ืืึทืจืคื ืึท ืืึทืืืืืืง ืกืืืข ืคืื โโโโืฆืืื ืฆื ืืึทืงืืืขื ืืึทืงืึทื ื ืืื. ืืขืจ ืืืึทืืฉ ืื ืืฉืขื ืืจ ืจืื ืึธืจ ืืึทืืึธืงื, ืืืึธืก ืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืืืึธืืงื ืงืึทืืคึผืืืืื ื ืคึฟืึทืจ ืืจืืืก ืงืืืืึทื ืฅ ืืื ืื ืืขืืขืงืึธืืืื ืืงืึทืืืึธื ืคืืจืืข ืึธืจืึทื ืืืฉ ื ืขืืืืึธืจืงืก, ืืื ืืขืฉืจืืื ืึท ืืืื ืืขืจืืขื ืกืขืจืืข ืคืื โโืืึทืืขืจืืึทืืก ืืืึธืก ืืึธืื ืืืจ ืฆื ืืขืฉืืืื ื ืืื ืืืฃ ืื ืืขืจืืืงื ืืื ืืื ืืกืืืึธ. ืขืจ ืืืืื ืืืื ืืขืฉืืืืข ืืื ืืืึธืก ืืกืืืึธ ืงืขื ืขื ืืึธื ืืื ืึทืืืขืืืื ืืื ืืื ืืืจ ืงืขื ืขื ืืขืฉืืืื ื ืืขื ืขืก ืืื ืืืื ืืืืืขื ืข ืืืืื.
ืืกืืืึธ - ืึทื ืขืคึฟื ืืงืืจ ืคึผืจืืืขืงื ืืขืืืขืืึธืคึผืขื ืืื ืืืืึทืจืืขื ืืื ืืืื ืคืื Google, IBM ืืื Lyft. ืขืก ืกืึทืืืื ืงืึทืืคึผืืขืงืกืืืื ืืืึธืก ืฉืืืืขื ืืื ืืืงืจืึธืกืขืจืืืืก-ืืืืืจื ืึทืคึผืืึทืงืืืฉืึทื ื, ืึทืืึท ืืื:
- ืคืึทืจืงืขืจ ืืึทื ืึทืืขืืขื ื: ืืืืืึทืืฅ, ืจืืืจืืขืก, ืืึทืกืข ืืึทืืึทื ืกืื ื;
- ืืืืขืจืงืืึทื: ืกืืฃ ืืึทื ืืฆืขืจ ืึธืืขื ืืึทืงืืืฉืึทื ืืื ืืขืจืืืืืขื ืืฉ;
- ืึธืืกืขืจืืืึทืืืืืื: ืืจืืืกืื ื, ืืึธื ืืืึธืจืื ื, ืืึธืืื ื.
ืึทืืข ืคืื โโโโืื ืงืขื ืขื ืืืื ืกืึทืืืื ืืืืฃ ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืจืื, ืึธืืขืจ ื ืึธื ืืืื ืืึทืืื ืื ืืก ืืืขื ื ืื ืืขืจ ืืืื "ืืืงืจืึธ". ืึทืืข ืื ืขืงืกืืจืข ืื ืฆื ืกืึธืืืืข ืื ืคึผืจืึธืืืขืืก ืืื ืึท ืืืืกื ืคืื ืคืืจืืข ืจืขืกืืจืกื ืืืึธืก ืงืขื ืืืื ืืขืืืืื ื ืืืืึทื ืคึฟืึทืจ ืืขืฉืขืคื ืืืขืจื. ืืื ืก ืงืืง ืืืึท ืึท ืืืึทืฉืคึผืื:
ืคึผืจืึธืืขืงื ืืึทื ืึทืืขืจ: ืืื ืืึทื ื ืขืก ื ืขืื ืฆื ืืืืื ืึท ืืึทืืขืจืงืื ืืขื ืฉืืจืื?
ืืขืืืขืืึธืคึผืขืจ: ืฆืืืื ืกืคึผืจืื ืฅ.MP: ืืืึธืก? .. ืขืก ืืื ื ืึธืจ CRUD!
R: ืืื CRUD ืืื ืืขืจ ืืจืื ื ืืืื, ืึธืืขืจ ืืืจ ื ืึธื ืืึทืจืคึฟื ืฆื ืึธืืขื ืืึทืงืืื ืืื ืึธืืขืจืืื ืืืืขืจื ืืื ืืึทืืื ืื ืืก. ืืื ื ืื ื ืขืฅ ืืื ืึทื ืจืืืืืึทืืึทื, ืืืจ ืืืขื ืืึทืจืคึฟื ืฆื ืื ืกืืจืืืขื ื ืจืืคึผืืืื ืจืืงืืืขืก, ืืื ืืขืืื ื ืืืืงืจืืึทื ืฆืืืืขื ืืืกืืขืจ ืืื ืงืืืืึทื ืฅ. ืืืื, ืฆื ืืึทืื ืืืืขืจ ืึทื ืื ืืื ืฆืข ืกืืกืืขื ืืื ื ืืฉื ืงืจืึทื, ืืืจ ืืึทืจืคึฟื ืืืืืึทืืฅ ืืืืืึทืืงืืขืื (ืคึฟืึทืจ ืืขืจ ืืขืืึทืืืก ืืืขืื ืืืืืข ืืขืจืืื ื ืคึผืึทืืขืจื ื, ืืขื ืฉืคึผืขืืขืจ ืืื ืืขื ืึทืจืืืงื - ืืขืขืจืขื ืืจืึทื ืกื.), ืืื ืืื ืกืืจ ืฆื ืืขืืขืงื ืคึผืจืึธืืืขืืก, ืืึธื ืืืึธืจืื ื, ืืจืืืกืื ื, [โฆ]MP: ืึธื, ืืึธืื ืืื ืื ื ืึธืจ ืึทืจืืึทื ืืืืื ืืขื ืฉืืจืื ืืื ืื ืคึผืจืึธืืืงื ืืื ืกื.
ืืื ืืจืึทืืื ืืขืจ ืืขืืึทื ืง ืืื ืงืืึธืจ: ืื ืกืืืข ืคืื โโืกืืขืคึผืก ืืื ืื ืคืืจืืื ืื ืฆื ืืืืื ืืืื ืืื ืกื ืืื ืจืืืืง. ืืื ืืขื ืึทืจืืืงื, ืืืจ ืืืขืื ืงืืงื ืืื ืืื Istio ืจืืืืืื ืึทืืข ืื ืงืึทืืคึผืืขืงืกืืื ืืขืจืืื ื ืืืืื (ืืืึธืก ืืื ื ืืฉื ืืืขื ืฆื ืืืื ืืขืฉืขืคื ืืึธืืืง) ืคืื ืกืขืจืืืืกืขืก.
ืืึธื: ืืขืจ ืึทืจืืืงื ืึทืกืืื ืึทื ืืืจ ืืึธืื ืืจืืขืื ืืืืกื ืคืื Kubernetes. ืึทื ืืขืจืฉ, ืืื ืจืขืงืึธืืขื ืืืจื ืืืืขื ืขื
ืืืืขืข
ืืื ื ืืืขืื ืื ืืืกืืืื ืืืื ืืืื ืกืขืจืืืืก ืืืจืขืงืืข ืคืืจืืื ืืขื ืฆื ืื ืื ืืขืจื, ืืื ืืื ืคืื ืคืื ื ืืืจืืคืื ืืืจืฃ ืื ืกืขืจืืืืก ืขืก ืืืืื ืก ืืืืื ืืืขื: ืืืื ื ื ืืืข ืคืจืืืื, ืฆืืฉืืขืื ื ืฆืืื-ืืืืก, ืขืคืขื ืขื ื ืงืจืืื ืฆืืืืขื ืืื"ื ื.
ื ืขืฅ ืคืึทืจืงืขืจ ืืื Kubernetes
Istio ืึธืคืคืขืจืก ืึท ืกืคึผืขืฉืึทืืืืื ืืืืืื ื, ืืึธืจ ืืคืืขืฉืืืื ืคืื ืกืขืจืืืืกืขืก ืืื ืคืึทื ืืงืฉืึทื ืื ื ืืืจื ืื ืืขืจืคืืจืื ื ืืื ื ืขืฅ ืงืึธืืื ืืงืึทืฆืืข. ืืื ืึทืืื ืขืก ืืืคึผืืึทืืึทื ืฅ:
- ืฉืืื ืืึธืืขืจืึทื ืฅ: ืืึทืืืจื ืืืืฃ ืื ืกืืึทืืืก ืงืึธื ืืื ืืขืจ ืขื ืืคืขืจ, ืขืก ืคืืจืฉืืืื ืฆื ืื ืืงืฉื ืืื ืืืจืืืขืงืึธืื ืืื ืฉืืึทืขื-ืขืงืกืึทืงืืืืื ื ืขืก.
- ืงืึทื ืึทืจื ืจืึธืืึธืืืฅ: ืจืืืขืจืขืงืฅ ืืืืื ืึท ืคืึทืจืคืขืกืืืงื ืคึผืจืึธืฆืขื ื ืคืื ืจืืงืืืขืก ืฆื ืื ื ืืึทืข ืืืขืจืกืืข ืคืื โโโโืื ืกืขืจืืืืก.
- ืืึธื ืืืึธืจืื ื ืืื ืืขืืจืืงืก: ืืื ืืึทื ื ืืื ืขืก ื ืขืืขื ืคึฟืึทืจ ืื ืืื ืกื ืฆื ืจืืกืคึผืึทื ื?
- ืืจืืืกืื ื ืืื ืึธืืกืขืจืืืึทืฆืืข: ืืืกืืฃ ืกืคึผืขืฆืืขื ืืขืืขืจื ืฆื ืืขืืขืจ ืืงืฉื ืืื ืืจืึทืกืขืก ืืื ืึทืจืืืขืจ ืื ืงื ืืื.
- ืืืืขืจืงืืึทื: ืจืืืจืืืื JWT ืืึธืงืขื, ืึธืืขื ืืึทืงืืืฅ ืืื ืึธืืขืจืืืืื ื ืืฆืขืจืก.
ืืึธืก ืืขื ืขื ืืืืื ืึท ืืืกื ืคืื ืื ืคึผืึทืกืึทืืืืึทืืื (ืืึทืงืข ื ืึธืจ ืึท ืืืกื!) ืฆื ืื ืืจืื ืืืจ. ืืืฆื ืืึธืื ืก ืื ืืขืจืืืงื ืืื ืืื ืื ืืขืื ืืฉ ืืขืืึทืืืก!
ืืกืืืึธ ืึทืจืงืึทืืขืงืืฉืขืจ
Istio ืื ืืขืจืกืขืคึผื ืึทืืข ื ืขืฅ ืคืึทืจืงืขืจ ืืื ืึทืคึผืืืื ืึท ืกืืื ืคืื ืึผืืืื ืฆื ืขืก, ืื ืกืขืจืืื ื ืึท ืงืืื ืคึผืจืึทืงืกื ืืื ืื ืคืึธืจืขื ืคืื ืึท ืกืืืืงืึทืจ ืงืึทื ืืืื ืขืจ ืืื ืืขืืขืจ ืคึผืึธื. ืคึผืจืึทืงืกืื ืืืึธืก ืึทืงืืึทืืืืื ืึทืืข ืงืืืคึผืึทืืืืึทืืื ืคืึธืจืขื ืึท ืืึทืืึท ืคืืึทื, ืืื ืืื ืงืขื ืขื ืืืื ืืื ืึทืืืงืึทืืื ืงืึทื ืคืืืืขืจื ื ืืฆื ืงืึธื ืืจืึธื ืคึผืืืื.
ืืึทืืึท ืคืืึทื
ืคึผืจืึทืงืกืื ืื ืกืขืจืืึทื ืืื ืคึผืึธืืก ืืึธืื Istio ืืืืื ืืจืขืคื ืื ืืืืขืจืคืขื ืืฉื ืืืึธืก ืืืจ ืืึทืจืคึฟื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืึธืืืจ ืงืึธื ืืจืึธืืืจื ืื ืคืึทื ืืงืฉืึทื ื ืคืื ืจืืืจืื ืืื ืงืจืืึทื ืฆืืืืขื.
ืืื ืจืขืืจืืขืก ืืื ืงืจืืึทื ืืจืืืงืื ื ืืขื ืขื ืืืคึผืืึทืืขื ืึทื ืืื Envoy
ืกืึทืืขืจืืื:
- ืขื ืืืื (ืืืจ ืจืขืื ืืืขืื ืึท ืคึผืจืึทืงืกื ืืืื ืืื ืึท ืกืืืืงืึทืจ ืงืึทื ืืืื ืขืจ, ืืืึธืก ืืื ืคืื ืื ืืขืจืืขืืืืื ืืื
ืืึทืืื ืืขืจ ืคึผืจืึธืืืงื - ืืขืขืจืขื. ืืืืขืจืืขืฆื) ืกืขื ืื ืึท ืืงืฉื ืฆื ืืขืจ ืขืจืฉืืขืจ ืืืึทืฉืคึผืื ืคืื ืืื ืกื ื ืืื ืคืืืื. - Envoy Sidecar ืคืจืืืืจื ืืืืืขืจ (ืคืจืืืืจื ืืืืืขืจ). (1)
- ืื ืืงืฉื ืคืืืื ืืื ืืื ืืืืืขืงืขืจื ืฆื ืื ืคึผืจืึทืงืกื ืืืึธืก ืืึธื ืืขืจืืคึฟื ืขืก.
- ืืึธืก ืขืคึฟื ื ืงืจืืึทื ืืจืขืึทืงืขืจ ืืื ืจืืคื ืื ืืืืึทืืขืจ ืืื ืกื ืคึฟืึทืจ ืกืึทืืกืึทืงืืืึทื ื ืจืืงืืืขืก. (2)
ืืึธืก ืืืื ื ืึทื ืืืจ ืืึธื ื ืื ืืึธืื ืฆื ื ืืฆื ืื ืื ืืขืจ ืจืืืจืื ืืืืืืึธืืขืง, ืืืจ ืืึธื ื ืื ืืึธืื ืฆื ืืึทืื ืืืื ืืืืืขื ืข ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืงืจืืึทื ืืจืขืึทืงืื ื ืืื ืกืขืจืืืืก ืืคืืขืงืื ื ืืื ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทื X, Y ืึธืืขืจ Z. ืึทืืข ืืขื ืืื ืคืื ืืขืจ ืืื ืื ืืืฆื ืืืืก ืคืื ืื ืงืขืกืื ืืื ืืกืืืึธ ืืื ืืื ื ืืฉื ืืึทืจืคื ืงืืื ืขื ืืขืจืื ืืขื ืืื ืื ืงืึธื.
ืืจืืืก! ืืืฆื ืืืจ ืืืืื ืฆื ืืืื ืืืืฃ ืึท ื ืขืกืืข ืืื ืืกืืืึธ, ืึธืืขืจ ืืืจ ื ืึธื ืืึธืื ืขืืืขืืข ืกืคืงืืช, ืึธืืคึผืึทื ื ืคืจืืืขืก. ืืืื ืืึธืก ืืื ืึท ืื ืืืืขืจืกืึทื ืืืืืื ื ืคึฟืึทืจ ืึทืืข ืืื ืืื ืืขืื, ืืืจ ืืึธื ืึท ื ืึทืืืจืืขื ืืฉื: ื ืึธื ืึทืืข, ืึทืืข ืึทืืึท ืกืึทืืืฉืึทื ื ืืื ืคืึทืงื ืืขื ืขื ืืืคึผืึทืกืืง ืคึฟืึทืจ ืงืืื ืคืึทื.
ืืื ืืขืกืึธืฃ ืืืจ ืคืจืขืื: "ืืื ืขืก ืงืืกืืึธืืืืึทืืืข?"
ืืืฆื ืืืจ ืืขื ื ืืจืืื ืคึฟืึทืจ ืื ืื ื ืขืกืืข, ืืึธืื ืืื ืื ืืึทืงืืืขื ืืึทืงืึทื ื ืืื ืื ืงืึธื ืืจืึธื ืคืืึทื.
ืงืึธื ืืจืึธื ืคึผืืืื
ืขืก ืืืฉืืืื ืคืื ืืจืืึท ืงืึทืืคึผืึธืื ืึทื ืฅ: ืคึผืืืึธื, ืืืงืกืขืจ ะธ ืฆืืืึทืืขื, ืืืึธืก ืึทืจืืขื ืฆืืืึทืืขื ืฆื ืงืึทื ืคืืืืขืจ ืขื ืืืืก ืฆื ืืึทืจืฉืจืื ืคืึทืจืงืขืจ, ืืืจืืคืืจื ืคึผืึทืืึทืกืื ืืื ืงืืืึทืื ืืขืืขืืขืืจื ืืึทืื. ืกืืขืืึทืืืฉ ืึทืืฅ ืงืืงื ืืื ืืึธืก:
ืื ืืขืจืึทืงืฉืึทื ืคืื ืงืึธื ืืจืึธื ืคึผืืึทื ืข ืืื ืืึทืืึท ืคืืึทื
ืขื ืืืึธืืก (ื"ื ืืึทืื ืคืืึทื) ืืขื ืขื ืงืึทื ืคืืืืขืจื ื ืืฆื
ืฉืืืืืช ืคืื ืกืขืจืืืืกืขืก ืฆื Istio
ืืืจ ืืึธืื ืืืกืงืจืืืื ืื ืฉืืืืืช ืคืื Istio ืฆื ืกืขืจืืืืกืขืก, ืึธืืขืจ ื ืืฉื ืื ืคืึทืจืงืขืจื: ืืื ืืึธื ืื ืกืขืจืืืืกืขืก ืคืึทืจืืื ืื ืฆื Istio?
ืฆื ืืืื ืขืจืืขื, ืกืขืจืืืืกืขืก ืืขื ืขื ืืื ืึทืืืขืจ ืคืื ืืกืืืึธ ืก ืืืึทืืืึทื ืืื ืคืืฉ ืืขื ืขื ืคืื ืืืึทืกืขืจ ืืืขื ืืื ืคืจืขืื ืืื, "ืืืึธืก ืืื ืืืึทืกืขืจ ืกืืึท ืืื ืกืืึท?"
ืืขืืขื
ืืืื, ืืืจ ืงืขื ืขื ื ืขืืขื ืึท ืืจืืขืื ืงื ืืื ืืื ื ืึธื ืืืคึผืืืืื ื ืื Istio ืงืึทืืคึผืึธืื ืึทื ืฅ, ืื ืกืขืจืืืืกืขืก ืืืื ืืื ืขืก ืืืขื ืคืึธืจืืขืฆื ืฆื ืึทืจืืขืื, ืืื ื ืึธื ืจืืืืืืื ื ืื ืงืึทืืคึผืึธืื ืึทื ืฅ, ืึทืืฅ ืืืขื ืืืื ืืื ืืืืืขืจ. ืขืก ืืื ืงืืึธืจ ืึทื ืืื ืืขื ืคืึทื ืืืจ ืืืขื ืคืึทืจืืืจื ืื ืงืืืคึผืึทืืืืึทืืื ืฆืืืขืฉืืขืื ืืืจื Istio.
ืืขื ืื ืืขืึธืจืืข - ืืึธืืืจ ืฉืืขืื ืืขื ืืืืกื ืืื ืคืืจ!
ืืกืืืึธ ืืื ืคืืจ
Istio ืจืืงืืืืืขืจื ืึท ืงืืืขืจื ืขืืขืก ืงื ืืื ืืื ืืคึผืืืช 4 ืืืงืคึผืืก ืืื 8 ืืืืืืืื ืคืื ืืึทืจืึทื ืื ืืืฆื. ืฆื ืืขืฉืืืื ื ืฉืืขืื ืึท ืงื ืืื ืืื ื ืึธืืืืื ืื ืืื ืกืืจืืงืฆืืขืก ืคืื ืืขื ืึทืจืืืงื, ืืื ืจืขืงืึธืืขื ืืืจื ื ืืฆื Google Cloud Platform, ืืืึธืก ืึธืคืคืขืจืก ื ืืึทืข ื ืืฆืขืจืก
ื ืึธื ืงืจืืืืืื ื ืึท ืงื ืืื ืืื ืงืึทื ืคืืืืขืจ ืึทืงืกืขืก ืฆื Kubernetes ืืืจื ืื ืงืึทื ืกืึธืื ื ืืฆื, ืืืจ ืงืขื ืขื ืื ืกืืึทืืืจื Istio ืืืจื ืื ืืขืื ืคึผืขืงื ืคืึทืจืืืึทืืืขืจ.
ืืขืื ืื ืกืืึทืืืจืื ื
ืื ืกืืึทืืืจื ืื ืืขืื ืงืืืขื ื ืืืืฃ ืืืื ืงืึธืืคึผืืืืขืจ, ืืื ืืืกืงืจืืืื ืืื
ืื ืกืืึทืืืจื Istio
ืืจืืคืงืืคืืข Istio ืจืขืกืืจืกื ืคึฟืื [istio-resources]
.
ืฆื ืืืืื ืืืขื ืืืคืืฆืืจื ืืกืืืึธ ืจืขืกืืจืกื, ืฉืึทืคึฟื ืึท ื ืึทืืขืกืคึผืึทืกืข ืืื ืื 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
ืืืฆื ืืืจ ืืขื ืขื ืืจืืื ืฆื ืคืึธืจืืขืฆื ืืื ืืขืจ ืืืืึทืืขืจ ืึธืคึผืืืืืื ื, ืืื ืืืจ ืืืขืื ืืึทืงืืืขื ืื ืึทืคึผืืึทืงืืืฉืึทื ืึทืจืืืฃ ืืื ืคืืืกื ืืืง.
ืึทืจืงืึทืืขืงืืฉืขืจ ืคืื ืื ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืึทืคึผืืึทืงืืืฉืึทื
ืืึธืืืจ ื ืืฆื ืืขื ืืืืฉืคึผืื ืคืื ืื ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืืืงืจืึธืกืขืจืืืืก ืึทืคึผืืึทืงืืืฉืึทื ืืขื ืืฆื ืืื ืื ืฉืืื ืืขืจืืื ื
ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืฉืืืื ืคืื ืคืืจ ืืืงืจืึธ ืืึทืืื ืื ืืก:
- ืืื ืกื ืกืึท-ืคืจืึธื ืืขื ื, ืืืึธืก ืกืขืจืืืขืก ืื ืคืจืึธื ืืขื ื ืคืื ืึท Reactjs ืึทืคึผืืึทืงืืืฉืึทื;
- ืืื ืกื SA-WebApp, ืืืึธืก ืกืขืจืืืขืก ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืงืืืืจืื;
- ืืื ืกื ืกืึท-ืืึธืืืง, ืืืืก ืคืืจื ืืื
ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ; - ืืื ืกื SA-ืคืืขืืืึทืงืง, ืืืึธืก ื ืขืื ืืึทืืขืจืงืื ืืขื ืคืื ื ืืฆืขืจืก ืืืขืื ืื ืึทืงืืขืจืึทืกื ืคืื ืื ืึทื ืึทืืืกืืก.
ืืื ืืขื ืืืึทืืจืึทืืข, ืืื ืึทืืืฉืึทื ืฆื ืืึทืืื ืื ืืก, ืืืจ ืืืื ืืขื ืื ืื ืืจืขืกืก ืงืึธื ืืจืึธืืืขืจ, ืืืึธืก ืืื 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 ืืืจื ืึท ืืืขืืขืจืขืจ ืืืฆื, ืืืจ ืืืขื ืืึทืงืืืขื ืึท ืกืขืจืืืืก ืึทื ืึทืืืืืืึทืืึทื ืืขืืช ืืืืึทื ืืืจื ืคืขืืืงืืึทื ืืกืืืึธ ืืืึทืงืก ืึทืืข ืื ืงืึทืืื ื ืคืึทืจืงืขืจ, ืืืืืืืื ืืื ื ืึธื ื ืืฉื ืืืคืืื ื.
ืืืืืืืื ืืืื
Gateway ืืื ืึท CRD (Custom Resource Definition) ืืื Kubernetes, ืืืคืืื ื ื ืึธื ืื ืกืืึธืืื ื Istio ืืื ืืขื ืงื ืืื ืืื ืืขืื ืื ืคืืืืงืืื ืฆื ืกืคึผืขืฆืืคืืฆืืจื ืื ืคึผืึธืจืฅ, ืคึผืจืึธืืึธืงืึธื ืืื ืืื ืืช ืคึฟืึทืจ ืืืึธืก ืืืจ ืืืืื ืฆื ืืึธืื ืื ืงืึทืืื ื ืคืึทืจืงืขืจ.
ืืื ืืื ืืืขืจ ืคืึทื, ืืืจ ืืืืื ืฆื ืืึธืื ืืืืคึผ ืคืึทืจืงืขืจ ืืืืฃ ืคึผืึธืจื 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 ืืึทืืื ืื ืืก:
ืจืืฅ ืืืึธืก ืืึทืจืคึฟื ืฆื ืืืื ืงืึทื ืคืืืืขืจื ืืื VirtualServices
ืืึธืืืจ ืงืืงื ืืื ืื ืจืืงืืืขืก ืืืึธืก ืืึธื ืืืื ืืขืฉืืงื ืฆื SA-Frontend:
- ืคึผืื ืืืขื ืืืืึทืื ืฆืืืืืขื ืืขื ืืืขื
/
ืืึธื ืืืื ืืขืฉืืงื ืฆื SA-Frontend ืฆื ืืึทืงืืืขื index.html; - ืคึผืจืขืคืืงืกืขื ืคึผืึทืืก
/static/*
ืืืื ืืืื ืืขืฉืืงื ืฆื SA-Frontend ืฆื ืืึทืงืืืขื ืกืืึทืืืง ืืขืงืขืก ืืขื ืืฆื ืืื ืื ืคืจืึธื ืืขื ื, ืึทืืึท ืืื CSS ืืื ืืืฉืึทืืืึทืกืงืจืืคึผื; - ืคึผืึทืืก ืืึทืืฉื ืืืจื ืจืขืืืืขืจ ืืืืกืืจืืง
'^.*.(ico|png|jpg)$'
, ืืืื ืืืื ืืขืฉืืงื ืฆื ืกืึท-ืคืจืึธื ืืขื ื, ืืืืึทื ืืืก ืืขื ืขื ืื ืืืืืขืจ ืืขืืืืื ืืืืฃ ืืขื ืืืึทื.
ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืืื ืึทืืฉืืืื ืืืจื ืื ืคืืืืขื ืืข ืงืึทื ืคืืืืขืจืืืฉืึทื (
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 ืงืึธื ืืจืึธื ืคึผืืึทื ืข, ืืื ื ืึธื ืืขื, ืื ื ืืึทืข ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืืขืืืขื ืื ืฆื ืื ืขื ืืืื ืคึผืจืึทืงืกืื ืคืื ืืขืืขืจ ืคึผืึธื. ืืื ืื ืื ืืจืขืกืก ืืึทืืขืืืืึท ืงืึธื ืืจืึธืืืขืจ ืืื ืื ืื ืืขืจ ืขื ืืืื ืงืึทื ืคืืืืขืจื ืืื ืื ืงืึธื ืืจืึธื ืคืืึทื. ืึทืืข ืืขื ืงืืงื ืืื ืืึธืก ืืื ืื ืืืึทืืจืึทืืข:
Istio-IngressGateway ืงืึทื ืคืืืืขืจืืืฉืึทื ืคึฟืึทืจ ืืขืื ืจืืืื ื
ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืืฆื ืื ืืืฆื ืืืืฃ http://{EXTERNAL-IP}/
. ืฆื ื ืื ืืึธืจื ืืืื ืืืจ ืืึทืงืืืขื ื ืื ืืขืคึฟืื ืขื ืกืืึทืืืก: ืืื ืขืก ื ืขืื ืึท ืืืกื ืืขืจ ืคึฟืึทืจ ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืฆื ื ืขืืขื ืืืืจืงืื ื ืืื ืขื ืืืื ืงืึทืืฉืขืก ืฆื ืืขืจืืืึทื ืืืงื.
ืืืืืขืจ ืคึผืจืึทืกืืืื ื, ืฉืคึผืื ืืื ืื ืึทืคึผ ืึท ืืืกื ืฆื ืืืฉืขื ืขืจืืื ืคืึทืจืงืขืจ. (ืืืึทื ืืืึทืืืึทื ืืื ื ืืืืืง ืคึฟืึทืจ ืงืืขืจืืื ืืื ืกืึทืืกืึทืงืืืึทื ื ืึทืงืฉืึทื ื - ืืขืขืจืขื ืืืืขืจืืขืฆืื ื.).
ืงืืึทืื: ืึธืืกืขืจืืืึทืืืืืื
ืฆื ืืึทืงืืืขื ืฆื ืื Kiali ืึทืืืื ืืกืืจืึทืืืืืข ืฆืืืื ื, ืืืืคื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
$ kubectl port-forward
$(kubectl get pod -n istio-system -l app=kiali
-o jsonpath='{.items[0].metadata.name}')
-n istio-system 20001
... ืืื ืขืคืขื ืขื
ืืจืึทืคืึทื ืึท: ืืขืืจืืง ืืืืืฉืืืึทืืึทืืืืฉืึทื
ืืขืืจืืงืก ืืขืืืืื ืืื Istio ืืืื ืืื ืคึผืจืึธืืขืืืขืืก ืืื ืืขื ืขื ืืืืืฉืืืึทืืืืื ืืื 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 ืกืขืจืืืืก ืืึทืฉืืึธืจื ืืื ืื ืฉืคึผืืฅ ืืื ืงืก ืืืื ืงื, ืึธื ืืืื ืืื ืืื ืกื ืกืึท-ืืืขื-ืึทืคึผืฆื ืงืืงื ืืื ืื ืืขืืืืื ืืขืืจืืงืก:
ืืืึธืก ืึทืืืืืฅ ืืื ืื ืืึธ ืืื ืึท ืืืืืืง ืืื ืืึธืจ ื ืืื ืข ืคืึธืจืฉืืขืืื ื - ืื ืคืึทืจืืืึทืืืื ื ืืืขื ืงืืื ืืึธื ืึทืคึผืจืืื ืคืื ืืขื. ืืึธืืืจ ืืึทืื ืึท ืงืืืื ืืึทืกืข ืืื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
$ while true; do
curl -i http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}';
sleep .8; done
ืืืฆื ืืืจ ืืึธืื ืคืื ืืขืกืขืจ ืืจืึทืคืก, ืืื ืืื ืึทืืืฉืึทื ืฆื ืืื, ืืืื ืืขืจืืขื ืคึผืจืึธืืขืืืขืืก ืืืฉืืจืื ืคึฟืึทืจ ืืึธื ืืืึธืจืื ื ืืื ืืจืึทืคืึทื ืึท ืคึฟืึทืจ ืืืืืฉืืืึทืืืืืื ื ืืขืืจืืงืก ืืืึธืก ืืึธืื ืืื ืื ืฆื ืืขืจื ืขื ืืืขืื ืคืึธืจืฉืืขืืื ื, ืืขืืื ื, ืืืคึผืจืืืืืึทื ืฅ / ืืขืจื ืืืขืจืืงืื ื ืืื ืืึทืืื ืื ืืก ืืืืขืจ ืฆืืื.
ืฆืื ืกืืฃ, ืืึธืืืจ ืงืืงื ืืื ืืจืืืกืื ื ืจืืงืืืขืก ืืื ืกืขืจืืืืกืขืก.
Jaeger: ืืจืืืกืื ื
ืืืจ ืืืขืื ืืึทืจืคึฟื ืืจืืืกืื ื ืืืืึทื ืื ืืขืจ ืืึทืืื ืื ืืก ืืืจ ืืึธืื, ืื ืืขืจ ืฉืืืขืจ ืขืก ืืื ืฆื ืืึทืงืืืขื ืฆื ืื ืืจืื ื ืคืื ืื ืืืจืืคืึทื. ืืื ืก ืงืืง ืืื ืึท ืคึผืฉืื ืคืึทื ืคืื ืื ืืืื ืืื ืื:
ืืืคึผืืฉ ืืืึทืฉืคึผืื ืคืื ืึท ืืจืึทืค - ืืืจืืคืึทื ืืขืื
ืื ืืงืฉื ืงืืื, ืคืืื - ืืืืก ืืื ืื ืกืืื? ืขืจืฉืืขืจ ืืื ืกื? ืืืขืจ ืื ืฆืืืืืืข? ืขืก ืืขื ืขื ืืืืกื ืขืืขื ืืื ืืืืืข - ืืึธืืืจ ืงืืงื ืืื ืื ืืึธืืก ืคืื ืืขืืขืจ. ืืื ืึธืคื ืืึธืื ืืืจ ืืขืืืคื ืืื ืืื ืืขื? ืืื ืืืขืจ ืึทืจืืขื ืืื ืืขืจ ืืื ืืืืืืืืืจื ืืืืขืงืืืืื ืืื ืืขืืืขืืึธืคึผืขืจืก ...
ืืึธืก ืืื ืึท ืคึผืจืึธืกื ืคึผืจืึธืืืขื ืืื ืืืงืจืึธืกืขืจืืืืกืขืก ืืื ืืื ืกืึทืืืื ืืืจื ืคืื ืื ืืขืจืืขืืืืื ืืจืืืกืื ื ืกืืกืืขืืขื, ืืื ืืืึธืก ืกืขืจืืืืกืขืก ืคืึธืจื ืึท ืืื ืฆืืง ืืขืืขืจ ืฆื ืืขืืขืจ ืื ืืขืจืขืจ, โโื ืึธื ืืืึธืก ืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืื ืคืึธืจืืืขืจืืื ืฆื ืื ืืจืืืกืื ื ืกืืกืืขื, ืืื ืขืก ืืื ืงืึทืืคึผืขืจื ืืื ืื ืืขืื ืืึทืื. ืืึธ ืก ืึท ืืืืืกืืจืึทืฆืืข:
TraceId ืืื ืืขื ืืฆื ืฆื ืืืขื ืืืคืืฆืืจื ืื ืืงืฉื
Istio ื ืืฆื Jaeger Tracer, ืืืึธืก ืืืคึผืืึทืืึทื ืฅ ืื ืคืึทืจืงืืืคืขืจ-ืคืจืืึท ืึธืคึผืขื ืืจืึทืกืื ื ืึทืคึผื ืคืจืืืืืืขืจืง. ืืืจ ืงืขื ื ืึทืงืกืขืก ืื 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 ืืื ืืืฉืขื ืขืจืืืืึทื ืคึฟืึทืจ ืื ืืขืื), ื ืึธื ืืืึธืก ืื ืืืืืืืื ืกืขื ืื ืื ืืงืฉื ืฆื ืื ืกืขืจืืืืก ืกืึท-ืืืขื-ืึทืคึผ.
- ืืื ืืื ืกื ืกืึท-ืืืขื-ืึทืคึผ ืื ืืงืฉื ืืื ืคึผืืงื ืึทืจืืืฃ ืืืจื ืื ืขื ืืืื ืกืืืืงืึทืจ, ืึท "ืงืื ื" ืืื ืืืฉืืคื ืืื ืื ืฉืคึผืึทื (ืึทื ืก ืืืึธืก ืืืจ ืืขื ืขืก ืืื ืื ืืจืึทืกืขืก) ืืื ืจืืืขืจืขืงืืื ืฆื ืืขื ืงืึทื ืืืื ืขืจ ืกืึท-ืืืขื-ืึทืคึผ. (
ืฉืคึผืึทื - ืึท ืืึทืืืฉืืงืึทื ืึทืคึผืึทืจืึทื ืคืื ืึทืจืืขื ืืื Jaeger, ืืืึธืก ืืื ืึท ื ืึธืืขื, ืึธื ืืืื ืฆืืื ืคืื ืื ืึธืคึผืขืจืึทืฆืืข ืืื ืื ืืขืืืืขืจ. ืกืคึผืึทื ืก ืงืขื ืขื ืืืื ื ืขืกืืขื ืืื ืึธืจืืขืจื. ื ืืืจืขืงืืขื ืึทืกืืงืืืง ืืจืึทืคืืง ืคืื ืกืคึผืึทื ืก ืคืืจืืขื ืึท ืฉืคึผืืจ. โ ืืขืขืจืขื. ืืืืขืจืืขืฆื) - ืืึธ ืื ืืงืฉื ืืื ืคึผืจืึทืกืขืกื ืืืจื ืืขื ืืืคึฟื ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก. ืื ืืจืึทืกืขืก ืืขื ืขื ืฉืืื ืืืฉืขื ืขืจืืืืึทื ืืืจื ืื ืึทืคึผืืึทืงืืืฉืึทื, ื.ืข. ืืื ืคืืจืืื ืื ืงืึธื ืขื ืืขืจืื ืืขื.
- ืคึฟืื ืืขื ืืึธืืขื ื ืืืืฃ, ืึท POST ืืขืื ืืื ืื ืืฉืืืืืื ืืื ืกืึท-ืืึธืืืง. Trace ID ืืืื ืืืื ืคืึธืจืืืขืจืืื ืคึฟืื ืกืึท-ืืืขื-ืึทืคึผ.
- ...
ืืึธื: ืืื ืฉืจืื 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
ืืึธืก ืืื ื ืืฉื ืึท ืฉืืืขืจ ืึทืจืืขื, ืึธืืขืจ ืฆื ืคืึทืจืคึผืึธืฉืขืืขืจื ืืืึทื ืืืคึผืืึทืืขื ืืืืฉืึทื ืขืก ืืื ืฉืืื
ืืึทืืขืจืงืื ื ืึทื ืื ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืึทืคึผืืึทืงืืืฉืึทื ืืขืืึทื ืกืืจืืืฅ ืืืคึผืืึทืืึทื ืฅ ืืื ืคืืึทืกืง, ืกืคึผืจืื ื ืืื ASP.NET ืงืึธืจ.
ืืืฆื ืึทื ืขืก ืืื ืงืืึธืจ ืืืึธืก ืืืจ ืืึทืงืืืขื ืืืืก ืคืื ืื ืงืขืกืื (ืึธืืขืจ ืึผืืขื ืืืืก ืคืื ืื ืงืขืกืื), ืืึธืืืจ ืงืืงื ืืื ืคืืึทื-ืืื ื ืจืืืื ื, ื ืขืฅ ืคืึทืจืงืขืจ ืคืึทืจืืืึทืืืื ื, ืืืืขืจืืืื, ืืื"ื ื!
ื ืืืืฅ. ืืจืึทื ืกื.: ืืืืขื ืขื ืืืขืื ืืขื ืืื ืืขืจ ืืืืึทืืขืจ ืืืื ืคืื ืืึทืืขืจืืึทืืก ืืืืฃ Istio ืคึฟืื Rinor Maloku, ืืืืขืจืืขืฆืื ืืขื ืคืื ืืืึธืก ืืืขื ื ืึธืืคืึธืืื ืืืืฃ ืืื ืืืขืจ ืืืึธื ืืื ืืขื ืืขืื ืฆืืงืื ืคึฟื. ืืขืจืืืึทื ืืืงื (14ืื ืืขืจืฅ):
ืคึผืก ืคืื ืืืืขืจืืขืฆืขืจ
ืืืืขื ืขื ืืืื ืืืืฃ ืืื ืืืขืจ ืืืึธื:
- "ืฆืืจืืง ืฆื ืืืงืจืึธืกืขืจืืืืกืขืก ืืื Istio":
ืืืื 2 (ืจืืืื ื, ืคืึทืจืงืขืจ ืงืึธื ืืจืึธื) ,ืืืื 3 (ืึธืืขื ืืึทืงืืืฉืึทื ืืื ืืขืจืืืืืขื ืืฉ) ; - ยซ
ืงืึทื ืืืื - ืืืืืืืืื ืืื ืกื ืืืื ืคึฟืึทืจ Kubernetes "; - ยซ
ืืืึธืก ืืื ืึท ืืื ืกื ืืขืฉ ืืื ืืืึธืก ืืึธื ืืื ืืึทืจืคึฟื ืืืื ืขืจ [ืคึฟืึทืจ ืึท ืืืึธืืงื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืืงืจืึธืกืขืจืืืืกืขืก]? "; - ยซ
ืึทื ืืืืืกืืจืืจืืข ืคืืจืขืจ ืฆื ื ืขืืืืึธืจืงืื ื ืืื Kubernetes. ืืืื 1 ืืื 2 "; - ยซ
ืืื ืืืื ืืื ืืขืจ ืืืืืงืขืจ ืกืืืืงืึทืจ ืงืื ืืขืืจ ืืขืขื ืืืื ืืขืืืืจื ืื [ืืื ืงืืืขืจื ืขืืขืก]? '.
ืืงืืจ: www.habr.com