แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แฒ›แƒ” -3 แƒœแƒแƒฌแƒ˜แƒšแƒ˜

แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แฒ›แƒ” -3 แƒœแƒแƒฌแƒ˜แƒšแƒ˜

แฒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ. แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ: แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ”แƒก แƒกแƒ”แƒ แƒ˜แƒ แƒ›แƒ˜แƒ”แƒซแƒฆแƒ•แƒœแƒ แƒ˜แƒกแƒขแƒ˜แƒแƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒชแƒœแƒแƒ‘แƒแƒก แƒ“แƒ แƒ›แƒแƒ— แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ”แƒ›แƒแƒœแƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒก, แƒ›แƒ”แƒแƒ แƒ” โ€” แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ“แƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ. แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ— แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒแƒ–แƒ”: แƒ›แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒแƒ•แƒขแƒแƒ แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก Auth0 แƒžแƒ˜แƒ แƒแƒ“แƒแƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ•แƒแƒ˜แƒ“แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒแƒ“.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ’แƒแƒœแƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ— Istio แƒ“แƒ แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, Sentiment Analysis, Istio-แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ”แƒ›แƒแƒœแƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

Istio-แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒ–แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ›แƒแƒ— แƒแƒ  แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒคแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒชแƒ“แƒ”แƒ‘แƒ˜, แƒ•แƒแƒ“แƒ”แƒ‘แƒ˜, แƒแƒ›แƒแƒ›แƒ แƒ—แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜, แƒ›แƒ˜แƒ™แƒ•แƒšแƒ”แƒ•แƒ, แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ›แƒแƒฌแƒ˜แƒœแƒแƒ•แƒ” แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒ: A/B แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ, mirroring แƒ“แƒ canary rollouts.

แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แฒ›แƒ” -3 แƒœแƒแƒฌแƒ˜แƒšแƒ˜

แƒแƒฎแƒแƒš แƒ›แƒแƒกแƒแƒšแƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒคแƒ”แƒœแƒ”แƒ‘แƒก แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒ˜แƒก แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒ™แƒ”แƒœ แƒ›แƒ˜แƒ›แƒแƒ•แƒแƒš แƒ’แƒ–แƒแƒ–แƒ”: แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ - แƒ“แƒ แƒ˜แƒกแƒขแƒ˜แƒแƒจแƒ˜ แƒ”แƒก แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ˜ แƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ”แƒ‘แƒแƒ!

แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒ˜แƒกแƒขแƒ˜แƒแƒจแƒ˜

แƒแƒ แƒแƒกแƒแƒ“แƒ”แƒก แƒ“แƒแƒ•แƒ˜แƒฏแƒ”แƒ แƒ”แƒ‘แƒ“แƒ˜, แƒ แƒแƒ› แƒจแƒ—แƒแƒ’แƒแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒ–แƒ˜แƒ—. แƒ แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒ—แƒแƒ•แƒแƒ–แƒแƒก Istio-แƒก แƒขแƒ”แƒฅแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒ˜ แƒžแƒ”แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ•แƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ› แƒ”แƒก แƒ—แƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒกแƒแƒฎแƒแƒšแƒ˜แƒกแƒ แƒ“แƒ, แƒ›แƒ˜แƒ— แƒฃแƒ›แƒ”แƒขแƒ”แƒก, แƒจแƒ—แƒแƒ›แƒแƒ’แƒแƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒฎแƒ“แƒ”แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก?

แƒžแƒแƒกแƒฃแƒฎแƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ: Istio แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ›แƒก แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก แƒแƒ› แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ–แƒ” แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ Envoy proxy-แƒ–แƒ”. แƒ˜แƒ› แƒ“แƒ แƒแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก แƒ›แƒ˜แƒแƒฆแƒฌแƒ”แƒ•แƒก, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒแƒกแƒ” แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ™แƒแƒ“แƒ˜.

แฒ™แƒแƒ แƒ’แƒแƒ“ แƒŸแƒฆแƒ”แƒ แƒก? แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—!

แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ Auth0-แƒ˜แƒ—

แƒ แƒแƒ’แƒแƒ แƒช แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒแƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Auth0-แƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒฅแƒ•แƒก แƒกแƒแƒชแƒ“แƒ”แƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“ แƒ˜แƒœแƒขแƒฃแƒ˜แƒชแƒ˜แƒฃแƒ แƒ˜แƒ แƒ“แƒ แƒ›แƒ” แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ›แƒแƒ›แƒฌแƒแƒœแƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒกแƒฎแƒ•แƒแƒ–แƒ” OpenID Connect แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜: KeyCloak, IdentityServer แƒ“แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒกแƒฎแƒ•แƒ.

แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“, แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— Auth0 แƒžแƒแƒ แƒขแƒแƒšแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ›แƒแƒ˜แƒฏแƒแƒ แƒ” (แƒ“แƒแƒ›แƒฅแƒ˜แƒ แƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ - โ€žแƒ›แƒแƒ˜แƒฏแƒแƒ แƒ”โ€œ, แƒ˜แƒ–แƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜, แƒ“แƒแƒฌแƒ•แƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒฎ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ - แƒ“แƒแƒแƒฎแƒš. แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜.) แƒ“แƒ แƒฌแƒแƒ“แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜ > แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒแƒ แƒฉแƒ”แƒ•แƒ แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ”:

แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แฒ›แƒ” -3 แƒœแƒแƒฌแƒ˜แƒšแƒ˜

แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒ”แƒก แƒ“แƒแƒ›แƒ”แƒœแƒ˜ แƒคแƒแƒ˜แƒšแƒจแƒ˜ resource-manifests/istio/security/auth-policy.yaml (แƒฌแƒงแƒแƒ แƒ):

apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: auth-policy
spec:
  targets:
  - name: sa-web-app
  - name: sa-feedback
  origins:
  - jwt:
      issuer: "https://{YOUR_DOMAIN}/"
      jwksUri: "https://{YOUR_DOMAIN}/.well-known/jwks.json"
  principalBinding: USE_ORIGIN

แƒแƒกแƒ”แƒ—แƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜แƒ—, แƒžแƒ˜แƒšแƒแƒขแƒ˜ (แƒ˜แƒกแƒขแƒ˜แƒแƒจแƒ˜ แƒกแƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ แƒกแƒ˜แƒ‘แƒ แƒขแƒงแƒ˜แƒก แƒกแƒแƒ›แƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒ“แƒแƒœ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ - แƒ“แƒแƒแƒฎแƒš. แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜.) แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก Envoy-แƒก, แƒ แƒแƒ—แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒก แƒ›แƒแƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ–แƒ” แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ›แƒ“แƒ”: sa-web-app ะธ sa-feedback. แƒแƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก Envoys-แƒ–แƒ” sa-frontend, แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒ“แƒแƒ•แƒขแƒแƒ•แƒแƒ— แƒคแƒ แƒแƒœแƒขแƒ”แƒœแƒขแƒ˜ แƒแƒฃแƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ:

$ kubectl apply -f resource-manifests/istio/security/auth-policy.yaml
policy.authentication.istio.io โ€œauth-policyโ€ created

แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ” แƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ - แƒœแƒแƒฎแƒแƒ•แƒ—, แƒ แƒแƒ› แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒ— แƒแƒ แƒแƒกแƒแƒœแƒฅแƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒฌแƒ˜แƒœแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ Auth0-แƒ˜แƒ— แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ Auth0-แƒ˜แƒ—

แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— API Auth0-แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก แƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒš แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก (แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ”แƒ‘แƒ˜, แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ แƒ”แƒ˜แƒขแƒ˜แƒœแƒ’แƒ”แƒ‘แƒ˜). API-แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— Auth0 แƒžแƒแƒ แƒขแƒแƒšแƒ˜ > APIs > แƒจแƒ”แƒฅแƒ›แƒœแƒ API แƒ“แƒ แƒจแƒ”แƒแƒ•แƒกแƒ”แƒ— แƒคแƒแƒ แƒ›แƒ:

แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แฒ›แƒ” -3 แƒœแƒแƒฌแƒ˜แƒšแƒ˜

แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒจแƒ˜. แƒ›แƒแƒ“แƒ˜แƒ— แƒฉแƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒแƒกแƒ”:

  • แƒแƒฃแƒ“แƒ˜แƒขแƒแƒ แƒ˜แƒ: {YOUR_AUDIENCE}

แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒšแƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ Auth0 แƒžแƒแƒ แƒขแƒแƒšแƒ–แƒ” แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜ - แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ (แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ API-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“).

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ—:

  • แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก: {YOUR_DOMAIN}
  • แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก ID: {YOUR_CLIENT_ID}

แƒ’แƒแƒ“แƒแƒแƒฎแƒ•แƒ˜แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ•แƒ”แƒšแƒจแƒ˜ แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒ˜แƒก แƒ“แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ URL-แƒ”แƒ‘แƒ˜ (แƒ’แƒแƒ“แƒแƒญแƒ แƒ˜แƒš URLโ€“ แƒ”แƒ‘แƒก แƒ’แƒแƒ›แƒแƒฎแƒ›แƒแƒฃแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก), แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ— URLโ€“ แƒก, แƒกแƒแƒ“แƒแƒช แƒ–แƒแƒ แƒ˜ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒแƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ”แƒก แƒแƒ แƒ˜แƒก:

http://{EXTERNAL_IP}/callback

แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒกแƒ•แƒšแƒ˜แƒก URL-แƒ”แƒ‘แƒ˜ (แƒ“แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ URL-แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก) แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ—:

http://{EXTERNAL_IP}/logout

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒคแƒ แƒแƒœแƒขแƒ–แƒ”.

Frontend แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ

แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ–แƒ” แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒ auth0 แƒ แƒ”แƒžแƒแƒ–แƒ˜แƒชแƒ˜แƒ”แƒ‘แƒ˜ [istio-mastery]. แƒแƒ› แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜, แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ—แƒ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ“แƒ”แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ Auth0-แƒ–แƒ” แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก JWT แƒŸแƒ”แƒขแƒแƒœแƒ˜ แƒกแƒฎแƒ•แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒจแƒ˜. แƒ”แƒก แƒฃแƒ™แƒแƒœแƒแƒกแƒ™แƒœแƒ”แƒšแƒ˜ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“ (App.js):

analyzeSentence() {
    fetch('/sentiment', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${auth.getAccessToken()}` // Access Token
        },
        body: JSON.stringify({ sentence: this.textField.getValue() })
    })
        .then(response => response.json())
        .then(data => this.setState(data));
}

Auth0-แƒจแƒ˜ แƒ›แƒแƒ˜แƒฏแƒแƒ แƒ”แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“ แƒฌแƒ˜แƒœแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒชแƒ•แƒšแƒ”แƒšแƒแƒ“, แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— sa-frontend/src/services/Auth.js แƒ“แƒ แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒ›แƒแƒกแƒจแƒ˜ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ–แƒ”แƒ›แƒแƒ— แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ”แƒ— (Auth.js):

const Config = {
    clientID: '{YOUR_CLIENT_ID}',
    domain:'{YOUR_DOMAIN}',
    audience: '{YOUR_AUDIENCE}',
    ingressIP: '{EXTERNAL_IP}' // ะ˜ัะฟะพะปัŒะทัƒะตั‚ัั ะดะปั ั€ะตะดะธั€ะตะบั‚ะฐ ะฟะพัะปะต ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ
}

แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒ–แƒแƒ“แƒแƒ. แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ Docker ID แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒจแƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒ แƒ“แƒ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ˜แƒกแƒแƒก:

$ docker build -f sa-frontend/Dockerfile 
 -t $DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0 
 sa-frontend

$ docker push $DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0

$ kubectl set image deployment/sa-frontend 
 sa-frontend=$DOCKER_USER_ID/sentiment-analysis-frontend:istio-auth0

แƒกแƒชแƒแƒ“แƒ”แƒ— แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ! แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ“แƒ”แƒ‘แƒ˜แƒ— Auth0-แƒ–แƒ”, แƒกแƒแƒ“แƒแƒช แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฎแƒ•แƒ˜แƒ“แƒ”แƒ— (แƒแƒœ แƒ“แƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ“แƒ”แƒ—), แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒ’แƒแƒ›แƒแƒ’แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒ— แƒ˜แƒ› แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ”, แƒกแƒแƒ˜แƒ“แƒแƒœแƒแƒช แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜. แƒ—แƒฃ แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜ แƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒš แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒก curl-แƒ˜แƒ— แƒกแƒชแƒแƒ“แƒ”แƒ—, แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ™แƒแƒ“แƒก 401 แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒก แƒ™แƒแƒ“แƒ˜, แƒ แƒแƒช แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒ˜แƒ›แƒแƒ–แƒ”, แƒ แƒแƒ› แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ’แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ - แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ.

แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ Auth0-แƒ˜แƒ—

แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒ’แƒแƒ•แƒ˜แƒ’แƒแƒ— แƒ•แƒ˜แƒœ แƒแƒ แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒแƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ•แƒ˜แƒชแƒแƒ“แƒ”แƒ— แƒ แƒแƒ–แƒ” แƒแƒฅแƒ•แƒก แƒ›แƒแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ. Istio แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช.

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒแƒ แƒ˜ แƒฏแƒ’แƒฃแƒคแƒ˜ (แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ—):

  • แƒฌแƒ”แƒ•แƒ แƒ”แƒ‘แƒ˜ (แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜) โ€” แƒ›แƒฎแƒแƒšแƒแƒ“ SA-WebApp แƒ“แƒ SA-Frontend แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ—;
  • แƒ›แƒแƒ“แƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ (แƒ›แƒแƒ“แƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜) โ€” แƒกแƒแƒ›แƒ˜แƒ•แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ—.

แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แฒ›แƒ” -3 แƒœแƒแƒฌแƒ˜แƒšแƒ˜
แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ

แƒแƒ› แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Auth0 แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Istio-แƒก, แƒ แƒแƒ—แƒ แƒ›แƒ˜แƒ•แƒแƒฌแƒแƒ“แƒแƒ— แƒ›แƒแƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ“แƒแƒœแƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ.

Auth0 แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

Auth0 แƒžแƒแƒ แƒขแƒแƒšแƒ–แƒ” แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ” (แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ) แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— Auth0 แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ. แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒ“แƒ แƒ˜แƒฅ - แƒ›แƒแƒ˜แƒฏแƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒ–แƒ” แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ–แƒ”แƒ“แƒ แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒœแƒ แƒ™แƒฃแƒ—แƒฎแƒ”แƒจแƒ˜ แƒ“แƒ แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒ›แƒ”แƒœแƒ˜แƒฃแƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ (แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ). แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒ (แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜) แƒ“แƒ แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ˜แƒก แƒฌแƒ”แƒกแƒ˜แƒก แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” (แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ˜แƒก แƒฌแƒ”แƒกแƒ˜).

แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แฒ›แƒ” -3 แƒœแƒแƒฌแƒ˜แƒšแƒ˜

แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒฏแƒ’แƒฃแƒคแƒ˜ แƒ›แƒแƒ“แƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒงแƒ•แƒ”แƒšแƒ แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก, แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ.

แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒฏแƒ’แƒฃแƒคแƒ˜ แƒ›แƒแƒ“แƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜, แฒ“แƒแƒญแƒ”แƒ แƒ แƒฌแƒ”แƒ•แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ, แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜. แƒ“แƒแƒขแƒแƒ•แƒ”แƒ— แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ แƒแƒ—แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒ›แƒแƒ— แƒแƒ™แƒ แƒซแƒแƒšแƒฃแƒšแƒ˜ แƒแƒฅแƒ•แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ. (แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒฎแƒ”แƒšแƒ˜แƒ— Auth0 แƒžแƒแƒ แƒขแƒแƒšแƒ˜ > แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ > แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ.)

แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒฏแƒ’แƒฃแƒคแƒฃแƒ แƒ˜ แƒžแƒ แƒ”แƒขแƒ”แƒœแƒ–แƒ˜แƒ Access Token-แƒก

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ”แƒ›แƒแƒขแƒœแƒ”แƒœ แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒแƒกแƒ”แƒ•แƒ” แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒกแƒแƒฎแƒแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒจแƒ˜. OpenID Connect-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒ แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒŸแƒ”แƒขแƒแƒœแƒก แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒกแƒแƒ‘แƒแƒŸแƒ แƒžแƒ แƒ”แƒขแƒ”แƒœแƒ–แƒ˜แƒ. แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Auth0 แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜แƒ—.

แƒฌแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— Auth0 แƒžแƒแƒ แƒขแƒแƒšแƒ–แƒ” แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜, แฒ“แƒแƒญแƒ”แƒ แƒ แƒฌแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ“แƒ แƒจแƒ”แƒแƒ แƒฉแƒ˜แƒ”แƒ— แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜ แƒฌแƒ”แƒกแƒ˜ แƒจแƒแƒ‘แƒšแƒแƒœแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ.

แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก Istio-แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แฒ›แƒ” -3 แƒœแƒแƒฌแƒ˜แƒšแƒ˜

แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ— แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒฌแƒ”แƒกแƒ˜แƒ— แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒฏแƒ’แƒฃแƒคแƒฃแƒ แƒ˜ แƒžแƒ แƒ”แƒขแƒ”แƒœแƒ–แƒ˜แƒ (namespacedGroup.js):

function (user, context, callback) {
    context.accessToken['https://sa.io/group'] = user.groups[0];
    return callback(null, user, context);
}

แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: แƒ”แƒก แƒ™แƒแƒ“แƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒฏแƒ’แƒฃแƒคแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒŸแƒ”แƒขแƒแƒœแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒ”แƒขแƒ”แƒœแƒ–แƒ˜แƒ (แƒ›แƒ˜แƒกแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ›แƒแƒก แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก Auth0).

แƒ’แƒ•แƒ”แƒ แƒ“แƒ–แƒ” แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ—, แƒ แƒแƒ› แƒ’แƒแƒฅแƒ•แƒ— แƒแƒ แƒ˜ แƒฌแƒ”แƒกแƒ˜ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ—:

  • แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ-แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ
  • แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒฏแƒ’แƒฃแƒคแƒฃแƒ แƒ˜ แƒžแƒ แƒ”แƒขแƒ”แƒœแƒ–แƒ˜แƒ

แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒ•แƒ”แƒšแƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒฌแƒ”แƒกแƒก แƒแƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒฃแƒšแƒแƒ“ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ-แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ แƒฎแƒแƒšแƒ แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒžแƒ แƒ”แƒขแƒ”แƒœแƒ–แƒ˜แƒแƒก แƒ›แƒ”แƒแƒ แƒ” แƒฌแƒ”แƒกแƒ˜แƒ—. แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒแƒ แƒ˜แƒก แƒแƒกแƒ”แƒ—แƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒœแƒ˜แƒจแƒแƒœแƒ˜:

{
 "https://sa.io/group": "Moderators",
 "iss": "https://sentiment-analysis.eu.auth0.com/",
 "sub": "google-oauth2|196405271625531691872"
 // [ัะพะบั€ะฐั‰ะตะฝะพ ะดะปั ะฝะฐะณะปัะดะฝะพัั‚ะธ]
}

แƒแƒฎแƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— Envoy proxy แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“, แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒฏแƒ’แƒฃแƒคแƒ˜ แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒกแƒแƒ แƒฉแƒ”แƒšแƒ˜แƒ“แƒแƒœ (https://sa.io/group) แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒš แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒŸแƒ”แƒขแƒแƒœแƒจแƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ—แƒ”แƒ›แƒ.

แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ˜แƒกแƒขแƒ˜แƒแƒจแƒ˜

แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒฉแƒแƒ แƒ—แƒแƒ— RBAC Istio-แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก:

apiVersion: "rbac.istio.io/v1alpha1"
kind: RbacConfig
metadata:
  name: default
spec:
  mode: 'ON_WITH_INCLUSION'                     # 1
  inclusion:
    services:                                   # 2
    - "sa-frontend.default.svc.cluster.local"
    - "sa-web-app.default.svc.cluster.local"
    - "sa-feedback.default.svc.cluster.local" 

แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ:

  • 1 โ€” แƒฉแƒแƒ แƒ—แƒ”แƒ— RBAC แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ•แƒ”แƒšแƒจแƒ˜ แƒฉแƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Inclusion;
  • 2 - แƒฉแƒ•แƒ”แƒœ แƒฉแƒแƒ›แƒแƒ•แƒ—แƒ•แƒšแƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ—:

$ kubectl apply -f resource-manifests/istio/security/enable-rbac.yaml
rbacconfig.rbac.istio.io/default created

แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก แƒแƒฎแƒšแƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ แƒแƒšแƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜. แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒแƒ™แƒ แƒซแƒแƒšแƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒžแƒแƒกแƒฃแƒฎแƒก RBAC: access denied. แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒฃแƒจแƒ•แƒแƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก.

แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒ–แƒ” แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก แƒฃแƒœแƒ“แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ SA-Frontend แƒ“แƒ SA-WebApp แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ–แƒ”. แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ Istio แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

  • แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ แƒแƒšแƒ˜ โ€” แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒ˜แƒ› แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒ แƒแƒช แƒแƒฅแƒ•แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก;
  • ServiceRoleBinding โ€” แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒ•แƒ˜แƒก แƒ”แƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒก แƒ”แƒก ServiceRole.

แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฃแƒจแƒ•แƒ”แƒ‘แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒแƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ–แƒ” (แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ แƒแƒšแƒ˜.yaml):

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRole
metadata:
  name: regular-user
  namespace: default
spec:
  rules:
  - services: 
    - "sa-frontend.default.svc.cluster.local" 
    - "sa-web-app.default.svc.cluster.local"
    paths: ["*"]
    methods: ["*"]

แƒ“แƒ แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— regular-user-binding แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— ServiceRole แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒ˜แƒ–แƒ˜แƒขแƒแƒ แƒ–แƒ” (regular-user-service-role-binding.yaml):

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: regular-user-binding
  namespace: default
spec:
  subjects:
  - user: "*"
  roleRef:
    kind: ServiceRole
    name: "regular-user"

แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก แƒ—แƒฃ แƒแƒ แƒ โ€žแƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜โ€œ, แƒ แƒแƒ› แƒแƒ แƒแƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒแƒกแƒ”แƒ•แƒ” แƒ”แƒฅแƒœแƒ”แƒ‘แƒแƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ SA WebApp-แƒ–แƒ”? แƒแƒ แƒ, แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก JWT แƒขแƒแƒ™แƒ”แƒœแƒ˜แƒก แƒ•แƒแƒšแƒ˜แƒ“แƒแƒ‘แƒแƒก.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜:

$ kubectl apply -f resource-manifests/istio/security/user-role.yaml
servicerole.rbac.istio.io/regular-user created
servicerolebinding.rbac.istio.io/regular-user-binding created

แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒแƒ“แƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒ–แƒ”

แƒ›แƒแƒ“แƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒก แƒ’แƒ•แƒกแƒฃแƒ แƒก แƒฉแƒแƒ แƒ—แƒแƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ–แƒ” (mod-service-role.yaml):

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRole
metadata:
  name: mod-user
  namespace: default
spec:
  rules:
  - services: ["*"]
    paths: ["*"]
    methods: ["*"]

แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ› แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒœแƒ˜แƒจแƒแƒœแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒžแƒ แƒ”แƒขแƒ”แƒœแƒ–แƒ˜แƒแƒก https://sa.io/group แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒ— Moderators (mod-service-role-binding.yaml):

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: mod-user-binding
  namespace: default
spec:
  subjects:
  - properties:
      request.auth.claims[https://sa.io/group]: "Moderators"
  roleRef:
    kind: ServiceRole
name: "mod-user" 

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜:

$ kubectl apply -f resource-manifests/istio/security/mod-role.yaml
servicerole.rbac.istio.io/mod-user created
servicerolebinding.rbac.istio.io/mod-user-binding created

แƒ”แƒšแƒฉแƒ”แƒ‘แƒจแƒ˜ แƒฅแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒซแƒแƒšแƒแƒจแƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒแƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฌแƒฃแƒ—แƒ˜ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒก. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒ—, แƒ แƒแƒ› แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒ“แƒ แƒ›แƒแƒ“แƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒก แƒแƒฅแƒ•แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒแƒœแƒ”.

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ แƒแƒ› แƒœแƒแƒฌแƒ˜แƒšแƒจแƒ˜

แƒ—แƒฃแƒ›แƒชแƒ แƒกแƒ”แƒ แƒ˜แƒแƒ–แƒฃแƒšแƒแƒ“, แƒ’แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒแƒ“แƒ”แƒกแƒ›แƒ” แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒฃแƒ แƒ˜ แƒ“แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ?

แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒแƒ›แƒ˜ Istio แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜ (RbacConfig, ServiceRole แƒ“แƒ ServiceRoleBinding) แƒ˜แƒงแƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒ˜ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒฌแƒ”แƒ•แƒแƒ“.

แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ–แƒ แƒฃแƒœแƒ”แƒ— แƒแƒ› แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ–แƒ” แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ“แƒ”แƒกแƒžแƒแƒœแƒ˜แƒก แƒกแƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ›แƒ˜แƒ•แƒแƒฆแƒฌแƒ˜แƒ”แƒ—:

  • แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก;
  • แƒกแƒฃแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ”แƒ แƒ—แƒ˜ แƒ‘แƒแƒšแƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ แƒ’แƒแƒ แƒ”แƒ“แƒแƒœ แƒ“แƒ แƒ“แƒแƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ;
  • แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒแƒฆแƒ›แƒแƒคแƒฎแƒ•แƒ แƒ แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ” แƒแƒฎแƒแƒšแƒ˜ แƒ แƒแƒšแƒ˜แƒก แƒแƒœ แƒฃแƒคแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒกแƒแƒก;
  • แƒ แƒแƒ› แƒแƒฎแƒแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ แƒฉแƒ”แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒ“แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜.

แƒ’แƒแƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒก

Istio แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒแƒซแƒšแƒ”แƒ•แƒก แƒ’แƒฃแƒœแƒ“แƒ”แƒ‘แƒก แƒ’แƒแƒแƒ›แƒแƒฎแƒ•แƒ˜แƒšแƒแƒœ แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ—แƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜ แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒš แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ–แƒ”, แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ–แƒ” แƒ–แƒ”แƒ“แƒœแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ— แƒ›แƒ˜แƒ™แƒ แƒ แƒกแƒขแƒแƒขแƒฃแƒกแƒ–แƒ”.

แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ (แƒกแƒแƒ› แƒœแƒแƒฌแƒ˜แƒšแƒแƒ“) แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒชแƒแƒ“แƒœแƒ แƒ“แƒ แƒ›แƒ–แƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒจแƒ˜ Istio-แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“.

PS แƒ›แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒšแƒ˜แƒกแƒ’แƒแƒœ

แƒแƒกแƒ”แƒ•แƒ” แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒ‘แƒšแƒแƒ’แƒ–แƒ”:

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ