เด‡เดธเตเดคเดฟเดฏเต‹เดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•. เดญเดพเด—เด‚ 3

เด‡เดธเตเดคเดฟเดฏเต‹เดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•. เดญเดพเด—เด‚ 3

เด•เตเดฑเดฟเดชเตเดชเต. เดตเดฟเดตเตผเดคเตเดคเดจเด‚.: เด†เดฆเตเดฏ เดญเดพเด—เด‚ เดˆ เดธเต€เดฐเต€เดธเต เด‡เดธเตเดคเดฟเดฏเต‹เดฏเตเดŸเต† เด•เดดเดฟเดตเตเด•เตพ เด…เดฑเดฟเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดต เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ เดชเตเดฐเด•เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดจเต€เด•เตเด•เดฟเดตเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต - เดจเดจเตเดจเดพเดฏเดฟ เดŸเตเดฏเต‚เตบ เดšเต†เดฏเตเดค เดฑเต‚เดŸเตเดŸเดฟเด‚เด—เตเด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเตเดฐเดพเดซเดฟเด•เต เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเตเด‚. เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เดธเตเดฐเด•เตเดทเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚: เด…เดคเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดฐเดšเดฏเดฟเดคเดพเดตเต Auth0 เดเดกเดจเตเดฑเดฟเดฑเตเดฑเดฟ เดธเต‡เดตเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดฎเดฑเตเดฑเต เดฆเดพเดคเดพเด•เตเด•เดณเต† เดธเดฎเดพเดจเดฎเดพเดฏ เดฐเต€เดคเดฟเดฏเดฟเตฝ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เดžเด™เตเด™เตพ เด’เดฐเต เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด‚ เด‡เดธเตเดคเดฟเดฏเต‹เดฏเตเดŸเต† เด•เดดเดฟเดตเตเด•เตพ เดชเตเดฐเด•เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏ เดธเต†เดจเตเดฑเดฟเดฎเต†เดจเตเดฑเต เด…เดจเดพเดฒเดฟเดธเดฟเดธเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเต.

Retries, Timeouts, Circuit Breakers, Tracing, Monitoring เดคเตเดŸเด™เตเด™เดฟเดฏ เดฒเต†เดฏเดฑเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ Istio เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เดธเต‡เดตเดจเด™เตเด™เตพ เดšเต†เดฑเตเดคเดพเด•เตเด•เดฟ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดžเตเดžเต. เด•เต‚เดŸเดพเดคเต†, เดžเด™เตเด™เตพ เดตเดฟเดชเตเดฒเดฎเดพเดฏ เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เตเด‚ เดตเดฟเดจเตเดฏเดพเดธ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดคเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต: เดŽ/เดฌเดฟ เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต, เดฎเดฟเดฑเดฑเดฟเด‚เด—เต, เด•เดพเดจเดฑเดฟ เดฑเต‹เตพเด”เดŸเตเดŸเตเด•เตพ.

เด‡เดธเตเดคเดฟเดฏเต‹เดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•. เดญเดพเด—เด‚ 3

เดชเตเดคเดฟเดฏ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเตฝ, เดฌเดฟเดธเดฟเดจเดธเตเดธเต เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดคเดฏเดฟเดฒเต† เด…เดตเดธเดพเดจ เดชเดพเดณเดฟเด•เตพ เดžเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด‚: เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเดตเตเด‚ เด…เด‚เด—เต€เด•เดพเดฐเดตเตเด‚ - เด•เต‚เดŸเดพเดคเต† เด‡เดธเตเดฑเตเดฑเดฟเดฏเต‹เดฏเดฟเตฝ เด‡เดคเต เด’เดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เดธเดจเตเดคเต‹เดทเดฎเดพเดฃเต!

เด‡เดธเตเดคเดฟเดฏเต‹เดฏเดฟเดฒเต† เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเดตเตเด‚ เด…เด‚เด—เต€เด•เดพเดฐเดตเตเด‚

เด†เดงเดฟเด•เดพเดฐเดฟเด•เดคเดฏเดฟเดฒเตเด‚ เด…เด‚เด—เต€เด•เดพเดฐเดคเตเดคเดฟเดฒเตเด‚ เดŽเดจเดฟเด•เตเด•เต เดชเตเดฐเดšเต‹เดฆเดจเด‚ เดฒเดญเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ. เดˆ เดตเดฟเดทเดฏเด™เตเด™เตพ เดฐเดธเด•เดฐเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดคเดฟเดฒเตเดชเดฐเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดšเต‹เดฆเดจเด‚ เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด’เดฐเต เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต เด‡เดธเตเดคเดฟเดฏเต‹เดฏเตเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด•?

เด‰เดคเตเดคเดฐเด‚ เดฒเดณเดฟเดคเดฎเดพเดฃเต: เดˆ เด•เดดเดฟเดตเตเด•เดณเตเดŸเต† เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต‡เดตเดจเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเตปเดตเต‹เดฏเต เดชเตเดฐเต‹เด•เตเดธเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด‡เดธเตเดคเดฟเดฏเต‹ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต. เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดธเต‡เดตเดจเด™เตเด™เดณเดฟเตฝ เดŽเดคเตเดคเตเดฎเตเดชเต‹เดดเต‡เด•เตเด•เตเด‚, เด…เดต เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดฌเดฟเดธเดฟเดจเดธเตเดธเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เด•เต‹เดกเต เดŽเดดเตเดคเตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต.

เดจเดฒเตเดฒเดคเต†เดจเตเดจเต เดคเต‡เดพเดจเตเดจเตเดจเตเดจเต? เดจเดฎเตเด•เตเด•เต เด…เด•เดคเตเดคเต‡เด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚!

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

เดชเต‡เดœเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เดฟ เด’เดฐเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดคเตเดคเตเด• - เด…เดคเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต‹เดŸเต† เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚ XXX เด…เด‚เด—เต€เด•เดพเดฐเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดพเดฃเต. Auth0 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดงเดฟเด•เดพเดฐเดฟเด•เดฎเดพเด•เตเด•เดพเตป เด‡เดจเดฟ เดซเตเดฐเดฃเตเดŸเตโ€ŒเดŽเตปเดกเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต† เดฑเต€เดกเดฏเดฑเด•เตโ€ŒเดŸเต เดšเต†เดฏเตเดฏเดพเด‚.

Auth0 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดจเตเดคเดฟเดฎ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด†เดงเดฟเด•เดพเดฐเดฟเด•เดฎเดพเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ เด†เดงเดฟเด•เดพเดฐเดฟเด• เดธเต‡เดตเดจเด™เตเด™เดณเต† (เด…เดตเดฒเต‹เด•เดจเด™เตเด™เตพ, เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ, เดฑเต‡เดฑเตเดฑเดฟเด‚เด—เตเด•เตพ) เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต API Auth0-เตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด’เดฐเต API เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป, เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• Auth0 เดชเต‹เตผเดŸเตเดŸเตฝ > APIเด•เตพ > 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 เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเต‹เดฑเดฟเดฏ [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 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 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เด…เด‚เด—เต€เด•เดพเดฐเด‚

เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เด†เดฐเดพเดฃเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด…เดตเตผเด•เตเด•เต เด†เด•เตเดธเดธเต เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดพเตป เด…เด‚เด—เต€เด•เดพเดฐเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด‡เดคเดฟเดจเตเดณเตเดณ เดŸเต‚เดณเตเด•เดณเตเด‚ เด‡เดธเตเดคเดฟเดฏเต‹ เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดจเดฎเตเด•เตเด•เต เดฐเดฃเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚ (เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดกเดฏเด—เตเดฐเด‚ เด•เดพเดฃเตเด•):

  • เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ (เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ) - SA-WebApp, SA-Frontend เดธเต‡เดตเดจเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดคเตเดฐเด‚ เด†เด•เตโ€Œเดธเดธเตเดธเต;
  • เดฎเต‹เดกเดฑเต‡เดฑเตเดฑเตผเดฎเดพเตผ (เดฎเต‹เดกเดฑเต‡เดฑเตเดฑเตผเดฎเดพเตผ) - เดฎเต‚เดจเตเดจเต เดธเต‡เดตเดจเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเตเดฐเดตเต‡เดถเดจเด‚.

เด‡เดธเตเดคเดฟเดฏเต‹เดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•. เดญเดพเด—เด‚ 3
เด…เด‚เด—เต€เด•เดพเดฐ เด†เดถเดฏเด‚

เดˆ เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ Auth0 เด“เดคเดฑเตˆเดธเต‡เดทเตป เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเตผเด•เตเด•เต เดตเดฟเดตเดฟเดง เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดธเตเดคเดฟเดฏเต‹ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

Auth0 เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเตเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด‚

Auth0 เดชเต‹เตผเดŸเตเดŸเดฒเดฟเตฝ, เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• (เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ) เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• Auth0 เด…เด‚เด—เต€เด•เดพเดฐเด‚. เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเต เดถเต‡เดทเด‚, เดชเต‹เด•เตเด• เด…เด‚เด—เต€เด•เดพเดฐ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด‚, เด…เดตเดฟเดŸเต† - เดฎเตเด•เดณเดฟเตฝ เดตเดฒเดคเตเดญเดพเด—เดคเตเดคเต เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตโ€Œเดคเต เด‰เดšเดฟเดคเดฎเดพเดฏ เดฎเต†เดจเต เด“เดชเตเดทเตป เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดตเดพเดŸเด•เด•เตเด•เดพเดฐเดจเตเดฑเต† เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต (เด•เต‡เดพเตบเดซเดฟเด—เดฑเต‡เดทเตป). เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เดธเดœเต€เดตเดฎเดพเด•เตเด•เตเด• (เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ) เด•เต‚เดŸเดพเดคเต† เดชเดฌเตเดฒเดฟเดทเต เดฑเต‚เตพ เดฌเดŸเตเดŸเดฃเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด• (เดจเดฟเดฏเดฎเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเด•).

เด‡เดธเตเดคเดฟเดฏเต‹เดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•. เดญเดพเด—เด‚ 3

เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เด“เดคเดฑเตˆเดธเต‡เดทเตป เดŽเด•เตเดธเตเดฑเตเดฑเตปเดทเดจเดฟเตฝ เดชเต‹เด•เตเด• เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เด’เดชเตเดชเด‚ เด’เดฐเต เด—เตเดฐเต‚เดชเตเดชเต เด‰เดฃเตเดŸเดพเด•เตเด•เตเด• เดฎเต‹เดกเดฑเต‡เดฑเตเดฑเตผเดฎเดพเตผ. เดŽเดฒเตเดฒเดพ เด†เดงเดฟเด•เดพเดฐเดฟเด• เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต†เดฏเตเด‚ เดžเด™เตเด™เตพ เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเดพเดฏเดฟ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด…เดตเตผเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เด…เดงเดฟเด• เด—เตเดฐเต‚เดชเตเดชเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.

เด’เดฐเต เด—เตเดฐเต‚เดชเตเดชเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด• เดฎเต‹เดกเดฑเต‡เดฑเตเดฑเตผเดฎเดพเตผ, เด…เดฎเตผเดคเตเดคเตเด• เด…เด‚เด—เด™เตเด™เดณเต† เดšเต‡เตผเด•เตเด•เตเด•, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดงเดพเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เดšเต‡เตผเด•เตเด•เตเด•. เดšเดฟเดฒ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เด†เด•เตโ€Œเดธเดธเตเดธเต เดจเดฟเดทเต‡เดงเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเตเดตเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป เด’เดฐเต เด—เตเดฐเต‚เดชเตเดชเตเด‚ เด‡เดฒเตเดฒเดพเดคเต† เด…เดตเดฐเต† เดตเดฟเดŸเตเด•. (เดชเตเดคเดฟเดฏ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต† เด‡เดคเตเดตเดดเดฟ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ Auth0 เดชเต‹เตผเดŸเตเดŸเตฝ > เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ > เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•.)

เด†เด•เตโ€Œเดธเดธเต เดŸเต‹เด•เตเด•เดฃเดฟเดฒเต‡เด•เตเด•เต เด—เตเดฐเต‚เดชเตเดชเต เด•เตเดฒเต†เดฏเดฟเด‚ เดšเต‡เตผเด•เตเด•เตเด•

เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต† เด—เตเดฐเต‚เดชเตเดชเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดˆ เดตเดฟเดตเดฐเด™เตเด™เตพ เด†เด•เตเดธเดธเต เดŸเต‹เด•เตเด•เดฃเตเด•เดณเดฟเดฒเตเด‚ เดชเตเดฐเดคเดฟเดซเดฒเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เดฃเด‚. OpenID Connect เด…เดจเตเดธเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดคเต‡ เดธเดฎเดฏเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเตเด‚, เดŸเต‹เด•เตเด•เตบ เด…เดคเดฟเดจเตเดฑเต‡เดคเดพเดฏ เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เด•เดธเตเดฑเตเดฑเด‚ เด•เตเดฒเต†เดฏเดฟเด‚. 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-authorization-extension
  • เด—เตเดฐเต‚เดชเตเดชเต เด•เตเดฒเต†เดฏเดฟเด‚ เดšเต‡เตผเด•เตเด•เตเด•

เด—เตเดฐเต‚เดชเตเดชเต เดซเต€เตฝเดกเดฟเดจเต เดฑเต‚เตพ เด…เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ เด“เตผเดกเตผ เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต auth0-authorization-extension เด…เดคเดฟเดจเต เดถเต‡เดทเด‚ เด…เดคเต เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดจเดฟเดฏเดฎเด‚ เดตเดดเดฟ เด’เดฐเต เด•เตเดฒเต†เดฏเดฟเด‚ เด†เดฏเดฟ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต. เดซเดฒเด‚ เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เด†เด•เตเดธเดธเต เดŸเต‹เด•เตเด•เตบ เด†เดฃเต:

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

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด†เด•เตโ€Œเดธเดธเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดŽเตปเดตเต‹เดฏเต เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดคเดฟเดจเดพเดฏเดฟ เด—เตเดฐเต‚เดชเตเดชเดฟเดจเต† เด•เตเดฒเต†เดฏเดฟเดฎเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฟเตปเดตเดฒเดฟเด•เตเด•เตเด‚ (https://sa.io/group) เดคเดฟเดฐเดฟเดšเตเดšเต†เดคเตเดคเดฟเดฏ เด†เด•เตเดธเดธเต เดŸเต‹เด•เตเด•เดฃเดฟเตฝ. เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เด…เดŸเตเดคเตเดค เดญเดพเด—เดคเตเดคเดฟเดจเตเดณเตเดณ เดตเดฟเดทเดฏเด‚ เด‡เดคเดพเดฃเต.

เด‡เดธเตเดคเดฟเดฏเต‹เดฏเดฟเดฒเต† เด“เดคเดฑเตˆเดธเต‡เดทเตป เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป

เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด…เด‚เด—เต€เด•เดพเดฐเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เด‡เดธเตเดฑเตเดฑเดฟเดฏเต‹เดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ 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 เดธเต‡เดตเดจเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตเดธเดธเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด‡เดธเตเดฑเตเดฑเดฟเดฏเต‹ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟ:

  • เดธเตผเดตเต€เดธเต เดฑเต‹เตพ - เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เด‰เดณเตเดณ เด…เดตเด•เดพเดถเด™เตเด™เตพ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต;
  • เดธเตผเดตเต€เดธเต เดฑเต‹เตพ เดฌเตˆเตปเดกเดฟเด‚เด—เต - เดˆ เดธเตผเดตเต€เดธเต เดฑเต‹เตพ เด†เดฐเตเดŸเต‡เดคเดพเดฃเต†เดจเตเดจเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดžเด™เตเด™เตพ เดšเดฟเดฒ เดธเต‡เดตเดจเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตเดธเดธเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚ (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 เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด• (เดชเดคเดฟเดตเต-เด‰เดชเดฏเต‹เด•เตเดคเตƒ-เดธเต‡เดตเดจ-เดฑเต‹เตพ-เดฌเตˆเตปเดกเดฟเด‚เด—เต.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

เดฆเต‚เดคเดจเตเดฎเดพเดฐเดฟเตฝ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด…เด‚เด—เต€เด•เดพเดฐ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดชเตเดฐเดพเดฌเดฒเตเดฏเดคเตเดคเดฟเตฝ เดตเดฐเดพเตป เด•เตเดฑเดšเตเดšเต เดฎเดฟเดจเดฟเดฑเตเดฑเต เดŽเดŸเตเดคเตเดคเต‡เด•เตเด•เดพเด‚. เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เตเด‚ เดฎเต‹เดกเดฑเต‡เดฑเตเดฑเตผเดฎเดพเตผเด•เตเด•เตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดค เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เด‰เดฃเตเดŸเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเดจเดพเด•เตเด‚.

เดˆ เดญเดพเด—เดคเตเดคเต† เดจเดฟเด—เดฎเดจเด‚

เด—เต—เดฐเดตเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเดฒเตเด‚, เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเด‚ เด…เด‚เด—เต€เด•เดพเดฐเดคเตเดคเดฟเดจเตเดฎเตเดณเตเดณ เดฒเดณเดฟเดคเดตเตเด‚ เด…เดจเดพเดฏเดพเดธเดตเตเด‚ เด…เดณเด•เตเด•เดพเดตเตเดจเตเดจเดคเตเด‚ เดธเตเดฐเด•เตเดทเดฟเดคเดตเตเดฎเดพเดฏ เด’เดฐเต เดธเดฎเต€เดชเดจเด‚ เดจเดฟเด™เตเด™เตพ เดŽเดชเตเดชเต‹เดดเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เดฃเตเดŸเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹?

เดธเต‡เดตเดจเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด…เดจเตเดคเดฟเดฎ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด†เด•เตโ€Œเดธเดธเตเดธเดฟเดจเตเดฑเต† เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเด‚ เด…เด‚เด—เต€เด•เดพเดฐเดคเตเดคเดฟเดจเตเด‚ เดฎเต‡เตฝ เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเต เดฎเต‚เดจเตเดจเต เด‡เดธเตเดฑเตเดฑเดฟเดฏเต‹ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ (RbacConfig, ServiceRole, เด•เต‚เดŸเดพเดคเต† ServiceRoleBinding) เดฎเดพเดคเตเดฐเดฎเต‡ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเต‚.

เด•เต‚เดŸเดพเดคเต†, เดžเด™เตเด™เดณเตเดŸเต† เดฆเต‚เดคเตป เดธเต‡เดตเดจเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดˆ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เดžเด™เตเด™เตพ เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเต, เดจเต‡เดŸเดฟเดฏเดคเต:

  • เดธเตเดฐเด•เตเดทเดพ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเตเด‚ เดฌเด—เตเด•เดณเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดœเดจเดฑเดฟเด•เต เด•เต‹เดกเดฟเดจเตเดฑเต† เด…เดณเดตเต เด•เตเดฑเดฏเตเด•เตเด•เตเด•;
  • เด’เดฐเต เดŽเตปเดกเตโ€Œเดชเต‹เดฏเดฟเดจเตเดฑเต เดชเตเดฑเดคเตเดคเต เดจเดฟเดจเตเดจเต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเตเด‚ เด…เดคเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เดฎเดฑเดจเตเดจเดคเตเดฎเดพเดฏ เดฎเดฃเตเดŸเดคเตเดคเดฐเดฎเดพเดฏ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต;
  • เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เด’เดฐเต เดชเตเดคเดฟเดฏ เดฑเต‹เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดตเด•เดพเดถเด‚ เดšเต‡เตผเด•เตเด•เตเดฎเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพ เดธเต‡เดตเดจเด™เตเด™เดณเตเด‚ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดค เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเต;
  • เดชเตเดคเดฟเดฏ เดธเต‡เดตเดจเด™เตเด™เตพ เดฒเดณเดฟเดคเดตเตเด‚ เดธเตเดฐเด•เตเดทเดฟเดคเดตเตเด‚ เดตเต‡เด—เดคเดฏเตเดฎเตเดณเตเดณเดคเดพเดฏเดฟ เดคเตเดŸเดฐเตเดจเตเดจเต.

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดธเต‡เดตเดจเด™เตเด™เตพเด•เตเด•เต เด“เดตเตผเดนเต†เดกเต เดšเต‡เตผเด•เตเด•เดพเดคเต†, เดฎเตˆเด•เตเดฐเต‹ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเดฟเดฒเต‡เด•เตเด•เต เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเดคเต†, เดฌเดฟเดธเดฟเดจเดธเต-เดจเดฟเตผเดฃเตเดฃเดพเดฏเด•เดฎเดพเดฏ เดœเต‹เดฒเดฟเด•เดณเดฟเตฝ เดคเด™เตเด™เดณเตเดŸเต† เดตเดฟเดญเดตเด™เตเด™เตพ เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดŸเต€เดฎเตเด•เดณเต† เด‡เดธเตเดคเดฟเดฏเต‹ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดฒเต‡เด–เดจเด‚ (เดฎเต‚เดจเตเดจเต เดญเดพเด—เด™เตเด™เดณเดพเดฏเดฟ) เดฏเดฅเดพเตผเดคเตเดฅ เดชเดฆเตเดงเดคเดฟเด•เดณเดฟเตฝ เด‡เดธเตเดคเดฟเดฏเต‹ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด…เดฑเดฟเดตเตเด‚ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดชเตเดฐเดพเดฏเต‹เด—เดฟเด• เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เดจเตฝเด•เดฟ.

เดตเดฟเดตเตผเดคเตเดคเด•เดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฟ.เดŽเดธเต

เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เดฟเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•