เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ‡ เจจเจพเจฒ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“เฅค เจญเจพเจ— 3

เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ‡ เจจเจพเจฒ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“เฅค เจญเจพเจ— 3

เจจเฉ‹เจŸ เจ•เจฐเฉ‹เฅค เจ…เจจเฉเจตเจพเจฆ: เจชเจนเจฟเจฒเจพ เจนเจฟเฉฑเจธเจพ เจ‡เจน เจฒเฉœเฉ€ เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจœเจพเจฃเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจพเจฐเจตเจพเจˆ เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจธเจฎเจฐเจชเจฟเจค เจธเฉ€, เจฆเฉ‚เจœเจพ - เจฌเจพเจฐเฉ€เจ• เจŸเจฟเจŠเจจเจก เจฐเฉ‚เจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ เจจเฉˆเจŸเจตเจฐเจ• เจŸเฉเจฐเฉˆเจซเจฟเจ• เจชเฉเจฐเจฌเฉฐเจงเจจเฅค เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡: เจ‡เจธ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจฒเฉ‡เจ–เจ• Auth0 เจชเจ›เจพเจฃ เจธเฉ‡เจตเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจฆเฉ‚เจœเฉ‡ เจชเฉเจฐเจฆเจพเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• Kubernetes เจ•เจฒเฉฑเจธเจŸเจฐ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ Istio เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจฐเจตเจฟเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจญเจพเจตเจจเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ, Istio เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจนเฉˆเฅค

Istio เจฆเฉ‡ เจจเจพเจฒ, เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€เจ†เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉ‹เจŸเจพ เจฐเฉฑเจ–เจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹ เจ—เจ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚, เจŸเจพเจˆเจฎเจ†เจ‰เจŸ, เจธเจฐเจ•เจŸ เจฌเฉเจฐเฉ‡เจ•เจฐ, เจŸเจฐเฉ‡เจธเจฟเฉฐเจ—, เจจเจฟเจ—เจฐเจพเจจเฉ€ เจตเจฐเจ—เฉ€เจ†เจ‚ เจชเจฐเจคเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ…เจธเฉ€เจ‚ เจ‰เฉฑเจจเจค เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจคเจ•เจจเฉ€เจ•เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€: A/B เจŸเฉˆเจธเจŸเจฟเฉฐเจ—, เจฎเจฟเจฐเจฐเจฟเฉฐเจ— เจ…เจคเฉ‡ เจ•เฉˆเจจเจฐเฉ€ เจฐเฉ‹เจฒเจ†เจŠเจŸเจธเฅค

เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ‡ เจจเจพเจฒ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“เฅค เจญเจพเจ— 3

เจจเจตเฉ€เจ‚ เจธเจฎเฉฑเจ—เจฐเฉ€ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจตเจชเจพเจฐเจ• เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจฎเจพเจฐเจ— 'เจคเฉ‡ เจ…เฉฐเจคเจฎ เจชเจฐเจคเจพเจ‚ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจพเจ‚เจ—เฉ‡: เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจ…เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ - เจ…เจคเฉ‡ เจ‡เจธเจคเฉ€เจ“ เจตเจฟเฉฑเจš เจ‡เจน เจ‡เฉฑเจ• เจ…เจธเจฒ เจ–เฉเจธเจผเฉ€ เจนเฉˆ!

Istio เจตเจฟเฉฑเจš เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจ…เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ

เจฎเฉˆเจ‚ เจ•เจฆเฉ‡ เจตเฉ€ เจตเจฟเจธเจผเจตเจพเจธ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ•เจฟ เจฎเฉˆเจ‚ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจ…เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเฉ‡เจฐเจฟเจค เจนเฉ‹เจตเจพเจ‚เจ—เจพ. Istio เจ‡เจนเจจเจพเจ‚ เจตเจฟเจธเจผเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฎเจœเจผเฉ‡เจฆเจพเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚ เจ•เฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡, เจ‡เจธ เจคเฉ‹เจ‚ เจตเฉ€ เจตเฉฑเจง, เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจชเฉเจฐเฉ‡เจฐเจจเจพเจฆเจพเจ‡เจ•?

เจœเจตเจพเจฌ เจธเจงเจพเจฐเจจ เจนเฉˆ: Istio เจ‡เจนเจจเจพเจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฒเจˆ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจฆเฉ‚เจค เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจฆเฉ€ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจฌเจฆเจฒเจฆเจพ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจฆเฉ€เจ†เจ‚ เจนเจจ, เจ‰เจน เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ…เจคเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจค เจนเฉ‹ เจšเฉเฉฑเจ•เฉ€เจ†เจ‚ เจนเจจ, เจ‡เจธ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจตเจชเจพเจฐเจ•-เจฒเจพเจญเจฆเจพเจ‡เจ• เจ•เฉ‹เจก เจฒเจฟเจ–เจฃเจพ เจนเฉˆเฅค

เจ‡เจน เจตเจงเฉ€เจ† เจœเจพเจชเจฆเจพ เจนเฉˆ? เจ†เจ“ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• เจเจพเจค เจฎเจพเจฐเฉ€เจ!

Auth0 เจจเจพเจฒ เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ

เจชเจ›เจพเจฃ เจ…เจคเฉ‡ เจชเจนเฉเฉฐเจš เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ Auth0 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡, เจœเจฟเจธเจฆเจพ เจ‡เฉฑเจ• เจ…เจœเจผเจฎเจพเจ‡เจธเจผ เจธเฉฐเจธเจ•เจฐเจฃ เจนเฉˆ, เจตเจฐเจคเจฃ เจฒเจˆ เจ…เจจเฉเจญเจตเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจชเจธเฉฐเจฆ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‰เจนเฉ€ เจธเจฟเจงเจพเจ‚เจค เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ 'เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ OpenID เจ•เจจเฉˆเจ•เจŸ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ: KeyCloak, IdentityServer เจ…เจคเฉ‡ เจ•เจˆ เจนเฉ‹เจฐเฅค

เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ, 'เจคเฉ‡ เจœเจพเจ“ Auth0 เจชเฉ‹เจฐเจŸเจฒ เจ†เจชเจฃเฉ‡ เจ–เจพเจคเฉ‡ เจจเจพเจฒ, เจ•เจฟเจฐเจพเจเจฆเจพเจฐ เจฌเจฃเจพเจ“ (เจ•เจฟเจฐเจพเจเจฆเจพเจฐ - โ€œเจ•เจฟเจฐเจพเจเจฆเจพเจฐโ€, เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ เจฆเฉ€ เจฒเจพเจœเจผเฉ€เจ•เจฒ เจ‡เจ•เจพเจˆ, เจนเฉ‹เจฐ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจฒเจˆ เจตเฉ‡เจ–เฉ‹ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ - เจฒเจ—เจญเจ— เจ…เจจเฉเจตเจพเจฆเฅค) เจ…เจคเฉ‡ เจœเจพเจ“ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ > เจกเจฟเจซเฉŒเจฒเจŸ เจเจชเจšเฉ‹เจฃ เจจเฉ‚เฉฐ เจกเฉ‹เจฎเฉ‡เจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจธเจ•เฉเจฐเฉ€เจจเจธเจผเจพเจŸ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ:

เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ‡ เจจเจพเจฒ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“เฅค เจญเจพเจ— 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

เจ…เจœเจฟเจนเฉ‡ เจธเจฐเฉ‹เจค เจจเจพเจฒ, เจชเจพเจ‡เจฒเจŸ (เจ‡เจธเจŸเฉ€เจ“ เจตเจฟเฉฑเจš เจคเจฟเฉฐเจจ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจชเจฒเฉ‡เจจ เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• - เจฒเจ—เจญเจ— เจ…เจจเฉเจตเจพเจฆเฅค) เจฆเฉ‚เจค เจจเฉ‚เฉฐ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ: sa-web-app ะธ sa-feedback. เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจธเฉ‡เจตเจพ เจฆเฉ‚เจคเจพเจ‚ 'เจคเฉ‡ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจฒเจพเจ—เฉ‚ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ sa-frontend, เจธเจพเจจเฉ‚เฉฐ เจซเจฐเฉฐเจŸเจเจ‚เจก เจจเฉ‚เฉฐ เจ…เจฃ-เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ›เฉฑเจกเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจจเฉ€เจคเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ“:

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

เจชเฉฐเจจเฉ‡ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเฉ‹ - เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡ เจ•เจฟ เจ‡เจน เจธเจฅเจฟเจคเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ–เจคเจฎ เจนเฉเฉฐเจฆเจพ เจนเฉˆ 401 เจ…เจฃเจ…เจงเจฟเจ•เจพเจฐเจค. เจ†เจ“ เจนเฉเจฃ เจซเจฐเฉฐเจŸเจเจ‚เจก เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ Auth0 เจจเจพเจฒ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เจฐเฉ€เจเฅค

Auth0 เจจเจพเจฒ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจจเจพ

เจ…เฉฐเจคเจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ Auth0 เจตเจฟเฉฑเจš เจ‡เฉฑเจ• API เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจœเฉ‹ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจธเฉ‡เจตเจพเจตเจพเจ‚ (เจธเจฎเฉ€เจ–เจฟเจ†เจตเจพเจ‚, เจตเฉ‡เจฐเจตเฉ‡ เจ…เจคเฉ‡ เจฐเฉ‡เจŸเจฟเฉฐเจ—เจพเจ‚) เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค API เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, 'เจคเฉ‡ เจœเจพเจ“ Auth0 เจชเฉ‹เจฐเจŸเจฒ > APIs > API เจฌเจฃเจพเจ“ เจ…เจคเฉ‡ เจซเจพเจฐเจฎ เจญเจฐเฉ‹:

เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ‡ เจจเจพเจฒ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“เฅค เจญเจพเจ— 3

เจ‡เฉฑเจฅเฉ‡ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉˆ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ, เจœเจฟเจธเจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฑเจš เจตเจฐเจคเจพเจ‚เจ—เฉ‡เฅค เจ†เจ“ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฒเจฟเจ–เฉ€เจ:

  • เจฆเจฐเจธเจผเจ•: {YOUR_AUDIENCE}

เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจฌเจพเจ•เฉ€ เจตเฉ‡เจฐเจตเฉ‡ เจธเฉˆเจ•เจธเจผเจจ เจตเจฟเฉฑเจš Auth0 เจชเฉ‹เจฐเจŸเจฒ 'เจคเฉ‡ เจธเจฅเจฟเจค เจนเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ - เจšเฉเจฃเฉ‹ เจŸเฉˆเจธเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ (API เจฆเฉ‡ เจจเจพเจฒ เจ†เจชเจฃเฉ‡ เจ†เจช เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ†)เฅค

เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจฒเจฟเจ–เจพเจ‚เจ—เฉ‡:

  • เจจเฉ‚เฉฐ เจกเฉ‹เจฎเฉ‡เจจ: {YOUR_DOMAIN}
  • เจ•เจฒเจพเจ‡เฉฐเจŸ เจ†เจˆ.เจกเฉ€: {YOUR_CLIENT_ID}

เจคเฉฑเจ• เจธเจ•เฉเจฐเฉ‹เจฒ เจ•เจฐเฉ‹ เจŸเฉˆเจธเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจŸเฉˆเจ•เจธเจŸ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจฎเจจเจœเจผเฉ‚เจฐเจธเจผเฉเจฆเจพ เจ•เจพเจฒเจฌเฉˆเจ• URL (เจ•เจพเจฒเจฌเฉˆเจ• เจฒเจˆ เจนเฉฑเจฒ เจ•เฉ€เจคเฉ‡ URL), เจœเจฟเจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‰เจน URL เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเฉฑเจฅเฉ‡ เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เจพเจฒ เจญเฉ‡เจœเฉ€ เจœเจพเจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจน เจนเฉˆ:

http://{EXTERNAL_IP}/callback

เจ…เจคเฉ‡ เจฒเจˆ เจฒเฉŒเจ—เจ†เจ‰เจŸ URL เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ (เจฒเฉŒเจ— เจ†เจŠเจŸ เจ•เจฐเจจ เจฒเจˆ เจฎเจจเจœเจผเฉ‚เจฐ URL) เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹:

http://{EXTERNAL_IP}/logout

เจ†เจ“ เจซเจฐเฉฐเจŸเจเจ‚เจก 'เจคเฉ‡ เจšเฉฑเจฒเฉ€เจเฅค

เจซเจฐเฉฐเจŸเจเจ‚เจก เจ…เฉฑเจชเจกเฉ‡เจŸ

เจธเจผเจพเจ–เจพ เจตเจฟเฉฑเจš เจธเจตเจฟเจš เจ•เจฐเฉ‹ auth0 REPOZITORIA [istio-mastery]. เจ‡เจธ เจธเจผเจพเจ–เจพ เจตเจฟเฉฑเจš, เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ เจฒเจˆ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ Auth0 เจตเฉฑเจฒ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš JWT เจŸเฉ‹เจ•เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจซเจฐเฉฐเจŸเจเจ‚เจก เจ•เฉ‹เจก เจฌเจฆเจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจฌเจพเจ…เจฆ เจตเจพเจฒเฉ‡ เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ (เจเจช.เจœเฉ‡.เจเจธ):

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 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 เจธเฉ‡เจตเจพเจตเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจจเจพเจฒ;
  • เจธเฉฐเจšเจพเจฒเจ• (เจธเฉฐเจšเจพเจฒเจ•) - เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจฟเฉฐเจจ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจจเจพเจฒเฅค

เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ‡ เจจเจพเจฒ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“เฅค เจญเจพเจ— 3
เจ…เจงเจฟเจ•เจพเจฐ เจธเฉฐเจ•เจฒเจช

เจ‡เจนเจจเจพเจ‚ เจธเจฎเฉ‚เจนเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ Auth0 เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉฑเจงเจฐเจพเจ‚ เจฆเฉ€ เจชเจนเฉเฉฐเจš เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฒเจˆ Istio เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

Auth0 เจ…เจงเจฟเจ•เจพเจฐ เจฆเฉ€ เจธเจฅเจพเจชเจจเจพ เจ…เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพ

Auth0 เจชเฉ‹เจฐเจŸเจฒ เจตเจฟเฉฑเจš, เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ 'เจคเฉ‡ เจœเจพเจ“ (เจ‡เจ•เจธเจŸเฉˆเจจเจธเจผเจจ) เจ…เจคเฉ‡ เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเฉ‹ Auth0 เจชเฉเจฐเจฎเจพเจฃเฉ€เจ•เจฐเจจ. เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฆเฉ‡ เจฌเจพเจ…เจฆ, 'เจคเฉ‡ เจœเจพเจ“ เจ…เจงเจฟเจ•เจพเจฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ, เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ - เจ‰เฉฑเจชเจฐ เจธเฉฑเจœเฉ‡ เจชเจพเจธเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจ•เฉ‡ เจ…เจคเฉ‡ เจ‰เจšเจฟเจค เจฎเฉ€เจจเฉ‚ เจตเจฟเจ•เจฒเจช เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจ•เฉ‡ เจ•เจฟเจฐเจพเจเจฆเจพเจฐ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจตเฉฑเจฒ (เจ•เฉŒเจจเจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ). เจธเจฎเฉ‚เจนเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฐเจ—เจฐเจฎ เจ•เจฐเฉ‹ (เจธเจฎเฉ‚เจน) เจ…เจคเฉ‡ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจจเจฟเจฏเจฎ เจฌเจŸเจจ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเฉ‹ (เจจเจฟเจฏเจฎ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเฉ‹).

เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ‡ เจจเจพเจฒ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“เฅค เจญเจพเจ— 3

เจ—เจฐเฉเฉฑเจช เจฌเจฃเจพเจ‰เจฃเจพ

เจ…เจงเจฟเจ•เจพเจฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจตเจฟเฉฑเจš เจœเจพเจ“ เจ—เจฐเฉเฉฑเจช เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฌเจฃเจพเจ“ เจธเฉฐเจšเจพเจฒเจ•. เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจธเจพเจฐเฉ‡ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฏเจฎเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฎเฉฐเจจเจพเจ‚เจ—เฉ‡, เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจธเจฎเฉ‚เจน เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจšเฉเจฃเฉ‹ เจธเฉฐเจšเจพเจฒเจ•, เจชเฉเจฐเฉˆเจธ เจธเจฆเฉฑเจธ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹, เจ†เจชเจฃเจพ เจฎเฉเฉฑเจ– เจ–เจพเจคเจพ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹เฅค เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเจนเฉเฉฐเจš เจคเฉ‹เจ‚ เจ‡เจจเจ•เจพเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‚เจน เจฆเฉ‡ เจ•เฉเจ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจกเฉ‹เฅค (เจจเจตเฉ‡เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ‡เจธ เจฆเฉเจ†เจฐเจพ เจนเฉฑเจฅเฉ€เจ‚ เจฌเจฃเจพเจ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจ Auth0 เจชเฉ‹เจฐเจŸเจฒ > เจ‰เจชเจญเฉ‹เจ—เจคเจพ > เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฌเจฃเจพเจ“.)

เจเจ•เจธเฉˆเจธ เจŸเฉ‹เจ•เจจ เจฒเจˆ เจธเจฎเฉ‚เจน เจฆเจพเจ…เจตเจพ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹

เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฎเฉ‚เจนเจพเจ‚ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจชเจฐ เจ‡เจน เจœเจพเจฃเจ•เจพเจฐเฉ€ เจเจ•เจธเฉˆเจธ เจŸเฉ‹เจ•เจจเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉ€ เจชเฉเจฐเจคเฉ€เจฌเจฟเฉฐเจฌเจฟเจค เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค เจ“เจชเจจเจ†เจˆเจกเฉ€ เจ•เจจเฉˆเจ•เจŸ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เจฐเจจ เจฒเจˆ เจ…เจคเฉ‡ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเจฎเฉ‚เจนเจพเจ‚ เจจเฉ‚เฉฐ เจตเจพเจชเจธ เจ•เจฐเจจ เจฒเจˆ, เจŸเฉ‹เจ•เจจ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€ เจ•เจธเจŸเจฎ เจฆเจพเจ…เจตเจพ. Auth0 เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ†เฅค

เจจเจฟเจฏเจฎ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, Auth0 เจชเฉ‹เจฐเจŸเจฒ 'เจคเฉ‡ เจœเจพเจ“ เจจเจฟเจฏเจฎ, เจชเฉเจฐเฉˆเจธ เจจเจฟเจฏเจฎ เจฌเจฃเจพเจ“ เจ…เจคเฉ‡ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸเจธ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจ–เจพเจฒเฉ€ เจจเจฟเจฏเจฎ เจšเฉเจฃเฉ‹เฅค

เจ‡เจธเจŸเฉ€เจ“ เจฆเฉ‡ เจจเจพเจฒ เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ 'เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“เฅค เจญเจพเจ— 3

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ•เจพเจชเฉ€ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจจเจฟเจฏเจฎ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเฉ‹ เจธเจฎเฉ‚เจน เจฆเจพเจ…เจตเจพ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹ (namespacedGroup.js):

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

เจŸเจฟเฉฑเจชเจฃเฉ€: เจ‡เจน เจ•เฉ‹เจก เจ†เจฅเฉ‹เจฐเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจตเจฟเฉฑเจš เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจชเจนเจฟเจฒเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจธเจฎเฉ‚เจน เจจเฉ‚เฉฐ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจธเจŸเจฎ เจ•เจฒเฉ‡เจฎ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจเจ•เจธเฉˆเจธ เจŸเฉ‹เจ•เจจ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ (เจ‡เจธเจฆเฉ‡ เจจเจพเจฎ-เจธเจชเฉ‡เจธ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ Auth0 เจฆเฉเจ†เจฐเจพ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆ)เฅค

เจชเฉฐเจจเฉ‡ โ€™เจคเฉ‡ เจตเจพเจชเจธ เจœเจพเจ“ เจจเจฟเจฏเจฎ เจ…เจคเฉ‡ เจœเจพเจ‚เจš เจ•เจฐเฉ‹ เจ•เจฟ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจฆเฉ‹ เจจเจฟเจฏเจฎ เจฒเจฟเจ–เฉ‡ เจนเฉ‹เจ เจนเจจ:

  • auth0-เจ…เจฅเจพเจฐเจพเจˆเจœเจผเฉ‡เจธเจผเจจ-เจเจ•เจธเจŸเฉ‡เจ‚เจธเจผเจจ
  • เจธเจฎเฉ‚เจน เจฆเจพเจ…เจตเจพ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹

เจ†เจฐเจกเจฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ—เจฐเฉเฉฑเจช เจซเฉ€เจฒเจก เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเจฟเจฏเจฎ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆ auth0-เจ…เจฅเจพเจฐเจพเจˆเจœเจผเฉ‡เจธเจผเจจ-เจเจ•เจธเจŸเฉ‡เจ‚เจธเจผเจจ เจ…เจคเฉ‡ เจ‰เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เจธ เจจเฉ‚เฉฐ เจฆเฉ‚เจœเฉ‡ เจจเจฟเจฏเจฎ เจฆเฉเจ†เจฐเจพ เจฆเจพเจ…เจตเฉ‡ เจตเจœเฉ‹เจ‚ เจœเฉ‹เฉœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจจเจคเฉ€เจœเจพ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจเจ•เจธเฉˆเจธ เจŸเฉ‹เจ•เจจ เจนเฉˆ:

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

เจนเฉเจฃ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเจนเฉเฉฐเจš เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจฆเฉ‚เจค เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจœเจฟเจธ เจฒเจˆ เจธเจฎเฉ‚เจน เจจเฉ‚เฉฐ เจฆเจพเจ…เจตเฉ‡ เจคเฉ‹เจ‚ เจนเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจœเจพเจตเฉ‡เจ—เจพ (https://sa.io/group) เจตเจพเจชเจธ เจ•เฉ€เจคเฉ‡ เจเจ•เจธเฉˆเจธ เจŸเฉ‹เจ•เจจ เจตเจฟเฉฑเจšเฅค เจ‡เจน เจฒเฉ‡เจ– เจฆเฉ‡ เจ…เจ—เจฒเฉ‡ เจญเจพเจ— เจฆเจพ เจตเจฟเจธเจผเจพ เจนเฉˆเฅค

Istio เจตเจฟเฉฑเจš เจ…เจงเจฟเจ•เจพเจฐ เจธเฉฐเจฐเจšเจจเจพ

เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ Istio เจฒเจˆ RBAC เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡:

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 เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ†:

  • เจธเจฐเจตเจฟเจธ เจฐเฉ‹เจฒ - เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเฉˆ;
  • เจธเจฐเจตเจฟเจธ เจฐเฉ‹เจฒ เจฌเจพเจˆเจกเจฟเฉฐเจ— โ€” เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจธเจฐเจตเจฟเจธ เจฐเฉ‹เจฒ เจ•เจฟเจธ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆเฅค

เจ†เจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ•เฉเจ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเจพเจ‚เจ—เฉ‡ (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 เจธเจพเจฐเฉ‡ เจชเฉ‡เจœ เจตเจฟเจœเจผเจฟเจŸเจฐเจพเจ‚ เจฒเจˆ เจธเจฐเจตเจฟเจธเจฐเฉ‹เจฒ เจฒเจพเจ—เฉ‚ เจ•เจฐเฉ‹ (เจจเจฟเจฏเจฎเจค-เจ‰เจชเจญเฉ‹เจ—เจคเจพ-เจธเฉ‡เจตเจพ-เจฐเฉ‹เจฒ-เจฌเจพเจˆเจกเจฟเฉฐเจ—.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 เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจฒเจˆ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ—เจฟเจ†เจจ เจ…เจคเฉ‡ เจคเจฟเจ†เจฐ-เจฌเจฃเจพเจ‡เจ† เจตเจฟเจนเจพเจฐเจ• เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ…เจจเฉเจตเจพเจฆเจ• เจคเฉ‹เจ‚ เจชเฉ€.เจเจธ

เจธเจพเจกเฉ‡ เจฌเจฒเฉŒเจ— 'เจคเฉ‡ เจตเฉ€ เจชเฉœเฉเจนเฉ‹:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹