เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

เด…เดคเต เดถเดฐเดฟเดฏเดพเดฃเต, เดฑเดฟเดฒเต€เดธเดฟเดจเต เดถเต‡เดทเด‚ เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเตฝ 1.5.0 2019 เดฎเต†เดฏเต เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ, เด•เต‹เตบเดธเดฒเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเด‚ เดธเต‡เดตเดจเด™เตเด™เดณเตเด‚ เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เดˆ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเดฟเตฝ เดžเด™เตเด™เตพ เด˜เดŸเตเดŸเด‚ เด˜เดŸเตเดŸเดฎเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚ POC (เดธเด™เตเด•เตฝเดชเตเดชเดคเตเดคเดฟเดจเตเดฑเต† เดคเต†เดณเดฟเดตเต, PoC) เดˆ เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเต‡เดทเดค เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต, เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเดฟเดจเตเดฑเต† เด•เต‹เตบเดธเตฝ เดŽเดจเตเดจเดฟเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดŸเดฟเดธเตเดฅเดพเดจ เด…เดฑเดฟเดตเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เตเดฒเต—เดกเต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฐเดฟเดธเดฐเดคเตเดคเต† เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เด™เตเด•เดฟเดฒเตเด‚, เดˆ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเดฟเตฝ เดžเด™เตเด™เตพ Google-เดจเตเดฑเต† เด•เตเดฒเต—เดกเต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดชเต†เดพเดคเต เด…เดตเดฒเต‡เดพเด•เดจเด‚

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

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

เดกเดฏเด—เตเดฐเด‚ 1: เด•เต‹เตบเดธเตฝ เด…เดงเดฟเด•เดพเดฐเดชเตเดชเต†เดŸเตเดคเตเดคเตฝ เดฐเต€เดคเดฟเดฏเตเดŸเต† เด”เดฆเตเดฏเต‹เด—เดฟเด• เด…เดตเดฒเต‹เด•เดจเด‚

เดจเดฎเตเด•เตเด•เต เด…เด•เดคเตเดคเต‡เด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟเด•เตเด•เตเดณเตเดณ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป.

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

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

เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏ

เดˆ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเดฟเตฝ, เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เด•เต‹เตบเดธเตฝ เด•เตเดฒเดฏเดจเตเดฑเตเดฎเดพเดฏเดฟ เด’เดฐเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเดฎเดพเดฏเดฟ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฎเต†เดทเต€เดจเดฟเตฝ เดžเด™เตเด™เตพ เด’เดฐเต เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚. เดคเตเดŸเตผเดจเตเดจเต เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดกเดฎเตเดฎเดฟ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเต‹เดกเดฟเตฝ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เต‹เตบเดธเตฝ เด•เต€/เดฎเต‚เดฒเตเดฏเด‚ เดธเตเดฑเตเดฑเต‹เดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเด•เตเด•เดพเตป เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตโ€Œเดค เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดกเดฏเด—เตเดฐเด‚ เดˆ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเดฟเตฝ เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเดฟเดจเต†เดฏเตเด‚ เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟเดฏเตเดŸเต† เดชเดฟเดจเตเดจเดฟเดฒเต† เดฏเตเด•เตเดคเดฟเดฏเต†เดฏเตเด‚ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดชเดฟเดจเตเดจเต€เดŸเต เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

เดกเดฏเด—เตเดฐเด‚ 2: เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเตป เดฐเต€เดคเดฟ เด…เดตเดฒเต‹เด•เดจเด‚

เด’เดฐเต เดชเต†เดŸเตเดŸเต†เดจเตเดจเตเดณเตเดณ เด•เตเดฑเดฟเดชเตเดชเต: เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดคเดพเดฎเดธเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เดชเด•เตเดทเต‡ เด…เดคเต†, เด…เดฏเดพเตพเด•เตเด•เต เด…เดคเต เด‡เด™เตเด™เดจเต†เดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

เด…เดคเดฟเดจเดพเตฝ, เด•เต‹เตบเดธเตฝ เด…เดตเดฒเต‹เด•เดจ เดกเดฏเด—เตเดฐเด‚ (เดกเดฏเด—เตเดฐเด‚ 1) เดŽเดŸเตเดคเตเดคเต เด…เดคเดฟเตฝ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดกเดฏเด—เตเดฐเด‚ เดจเดฎเตเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚ (เดกเดฏเด—เตเดฐเด‚ 2), เด‡เดตเดฟเดŸเต†เดฏเตเดณเตเดณ เดฏเตเด•เตเดคเดฟ เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต:

  1. เด“เดฐเต‹ เดชเต‹เดกเดฟเดฒเตเด‚ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดœเดจเดฑเต‡เดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดคเดคเตเด‚ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดคเตเดฎเดพเดฏ เด’เดฐเต JWT เดŸเต‹เด•เตเด•เตบ เด…เดŸเด™เตเด™เตเดจเตเดจ เด’เดฐเต เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เด…เดฑเตเดฑเดพเดšเตเดšเต เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเด‚. เดˆ เดŸเต‹เด•เตเด•เดฃเตเด‚ เดกเดฟเดซเต‹เตพเดŸเตเดŸเดพเดฏเดฟ เดชเต‹เดกเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต.
  2. เดชเต‹เดกเดฟเดจเตเดณเตเดณเดฟเดฒเต† เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต‹ เดธเต‡เดตเดจเดฎเต‹ เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดธเตฝ เด•เตเดฒเดฏเดจเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฒเต‹เด—เดฟเตป เด•เดฎเดพเตปเดกเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. เดฒเต‹เด—เดฟเตป เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เดžเด™เตเด™เดณเตเดŸเต† เดŸเต‹เด•เตเด•เดฃเตเด‚ เดชเต‡เดฐเตเด‚ เด‰เตพเดชเตเดชเต†เดŸเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเต เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟ (เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดคเดฐเด‚). เดˆ เด˜เดŸเตเดŸเด‚ #2 เด•เต‹เตบเดธเตฝ เดกเดฏเด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† (เดธเตเด•เต€เด‚ 1) เด˜เดŸเตเดŸเด‚ 1 เดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต.
  3. เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดธเตฝ เด•เตเดฒเดฏเดจเตเดฑเต เดˆ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเด‚.
  4. เดœเดพเดฒเดตเดฟเดฆเตเดฏ! เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเต, เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เดเดกเดจเตเดฑเดฟเดฑเตเดฑเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด…เดจเตเดฌเดจเตเดง เดฎเตเตปเดจเดฟเตผเดตเดšเดฟเดšเตเดš เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเตŠเดฐเต เดกเดฏเด—เตเดฐเด‚ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต. เดˆ เด˜เดŸเตเดŸเด‚ เด•เต‹เตบเดธเตฝ เด…เดตเดฒเต‹เด•เดจ เดกเดฏเด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† (เดกเดฏเด—เตเดฐเด‚ 3) 4, 5, 1 เด˜เดŸเตเดŸเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเต.
  5. เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเดจเตเดจเดฏเดพเดณเตเดŸเต† เดเดกเดจเตเดฑเดฟเดฑเตเดฑเดฟ เดธเด‚เดฌเดจเตเดงเดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟ เดจเดฟเดฏเดฎเด™เตเด™เตพ (เดžเด™เตเด™เตพ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต) เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เด…เดจเตเดฎเดคเดฟเด•เดณเต‹เดŸเต† เด’เดฐเต เด•เต‹เตบเดธเตฝ เดŸเต‹เด•เตเด•เตบ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดชเดฟเดจเตเดจเต€เดŸเต เด† เดŸเต‹เด•เตเด•เตบ เดคเดฟเดฐเดฟเด•เต† เด…เดฏเด•เตเด•เตเด‚. เด‡เดคเต เด•เต‹เตบเดธเตฝ เดกเดฏเด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† (เดกเดฏเด—เตเดฐเด‚ 6) เด˜เดŸเตเดŸเด‚ 1 เดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต.
  6. เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดธเตฝ เด•เตเดฒเดฏเดจเตเดฑเต เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต‹ เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต‹ เดŸเต‹เด•เตเด•เตบ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต.

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

เดฎเดพเดจเตเดคเตเดฐเดฟเด•เดค เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดŸเต!

เดจเดฟเด™เตเด™เดณเดฟเตฝ เดคเตŠเดชเตเดชเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดฎเตเดฏเดฒเดฟเดจเต† เดคเตƒเดชเตเดคเดฐเดพเด•เตเด•เดพเดคเตเดคเดตเตผเด•เตเด•เดพเดฏเดฟ, เด…เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต ... "เดŽเดคเตเดฐ เด†เดดเดคเตเดคเดฟเดฒเตเดณเตเดณเดคเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เด•เดพเดฃเดฟเดšเตเดšเตเดคเดฐเดพเด‚ เดฎเตเดฏเตฝ เดฆเตเดตเดพเดฐเด‚".

เดจเต‡เดฐเดคเตเดคเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเต† เด†เดงเดฟเด•เดพเดฐเดฟเด•เดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเตเตปโ€Œเดจเดฟเตผเดตเตเดตเดšเดฟเดšเตเดš เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดŸเดคเตเดคเดพเดฃเต เดžเด™เตเด™เดณเตเดŸเต† "เดฎเดพเดœเดฟเด•เต" เด˜เดŸเตเดŸเด‚ (เดšเดฟเดคเตเดฐเด‚ 2: เด˜เดŸเตเดŸเด‚ 4). เดˆ เด˜เดŸเตเดŸเด‚ เด•เต‹เตบเดธเตฝ เด…เดตเดฒเต‹เด•เดจ เดกเดฏเด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† (เดกเดฏเด—เตเดฐเด‚ 3) 4, 5, 1 เด˜เดŸเตเดŸเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดคเดพเดดเต† เด’เดฐเต เดกเดฏเด—เตเดฐเด‚ (เดกเดฏเด—เตเดฐเด‚ 3), เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เด•เดพเดฃเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด‡เดคเดฟเดจเตเดฑเต† เด‰เดฆเตเดฆเต‡เดถเตเดฏเด‚ เดฎเต‡เตฝเด•เตเด•เตเดฐเตเดฏเตเดŸเต† เด…เดŸเดฟเดฏเดฟเตฝ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟ.

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

เดกเดฏเด—เตเดฐเด‚ 3: เดฎเดพเดจเตเดคเตเดฐเดฟเด•เดค เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดŸเต!

  1. เด’เดฐเต เด†เดฐเด‚เดญ เดชเต‹เดฏเดฟเดจเตเดฑเต เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดธเตฝ เด•เตเดฒเดฏเดจเตเดฑเต เดฒเต‹เด—เดฟเตป เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด…เด•เตเด•เต—เดฃเตเดŸเต เดŸเต‹เด•เตเด•เดฃเตเด‚ เดฎเตเดฎเตเดชเต เดธเตƒเดทเตเดŸเดฟเดšเตเดš เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟเดฏเตเดŸเต† เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด‰เดฆเดพเดนเดฐเดฃเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต. เดˆ เด˜เดŸเตเดŸเด‚ เดฎเตเดฎเตเดชเดคเตเดคเต† เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเต เดตเดฟเดถเดฆเต€เด•เดฐเดฃเดคเตเดคเดฟเดฒเต† เด˜เดŸเตเดŸเด‚ 3 เดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต.
  2. เด‡เดชเตเดชเต‹เตพ เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเต‡เดคเดพเดตเต) เดธเตเดตเต€เด•เดฐเดฟเดšเตเดš เดŸเต‹เด•เตเด•เดฃเดฟเดจเตเดฑเต† เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ, เด‡เดคเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเดฎเดพเดฏเดฟ (เด•เตบเดธเตฝ เด•เตเดฒเดฏเดจเตเดฑเต เดตเดดเดฟ) เด•เต‚เดŸเดฟเดฏเดพเดฒเต‹เดšเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด‰เดšเดฟเดคเดฎเดพเดฏ เด…เดจเตเดฎเดคเดฟเด•เดณเต‹เดŸเต†, เดŸเต‹เด•เตเด•เตบ เดฏเดฅเดพเตผเดคเตเดฅเดฎเดพเดฃเต‹ เดŽเดจเตเดจเตเด‚ เด…เดคเต เด†เดฐเตเดŸเต‡เดคเดพเดฃเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚.
  3. เดธเดพเดงเต‚เด•เดฐเดฟเดšเตเดš เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด•เต‹เตบเดธเตฝ เดจเต‡เดคเดพเดตเดฟเดจเต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เดฒเต‹เด—เดฟเตป เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต (เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดคเดฐเดคเตเดคเดฟเดฒเตเด‚) เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดชเต‡เดฐเดฟเดจเตŠเดชเตเดชเด‚ เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเต‹เด•เตเด•เตเดจเตเดจเต.
  4. เด•เต‹เตบเดธเตฝ เดจเต‡เดคเดพเดตเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เด“เดคเดฑเตˆเดธเต‡เดทเตป เดฐเต€เดคเดฟ เด‰เดฆเดพเดนเดฐเดฃเด‚ (เด•เดฃเตเดŸเต†เดคเตเดคเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ) เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเด•เดฏเตเด‚ เด…เดคเดฟเดจเต‹เดŸเต เด˜เดŸเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฌเตˆเตปเดกเดฟเด‚เด—เต เดจเดฟเดฏเดฎเด™เตเด™เดณเตเดŸเต† เดธเต†เดฑเตเดฑเต เดตเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต เดชเดฟเดจเตเดจเต€เดŸเต เดˆ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดตเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดš เดเดกเดจเตเดฑเดฟเดฑเตเดฑเดฟ เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เดณเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  5. TA-dah! เดฎเตเดฎเตเดชเดคเตเดคเต† เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเต เดตเดฟเดถเดฆเต€เด•เดฐเดฃเดคเตเดคเดฟเดฒเต† 5-เดพเด‚ เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚.

เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเดฟเตฝ เด•เต‹เตบเดธเตฝ-เดธเต†เตผเดตเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•

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

  • เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด• (เด‰เดฆเดพเดนเดฐเดฃเด‚/เดธเต†เตผเดตเตผ).

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

  • เดซเดฏเตผเดตเดพเดณเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดจเดฟเดฏเดฎเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• (AWS-เดฒเต† เดธเตเดฐเด•เตเดทเดพ เด—เตเดฐเต‚เดชเตเดชเต):
  • เดฑเต‚เดณเดฟเดจเตเด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเดพเด—เดฟเดจเตเด‚ เด’เดฐเต‡ เดฎเต†เดทเต€เตป เดจเดพเดฎเด‚ เดจเตฝเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต, เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ "skywiz-consul-server-poc".
  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเดจเตเดฑเต† IP เดตเดฟเดฒเดพเดธเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เด‰เดฑเดตเดฟเดŸ IP เดตเดฟเดฒเดพเดธเด™เตเด™เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด•, เด…เดคเตเดตเดดเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด‡เดจเตเดฑเตผเดซเต‡เดธเต (UI) เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.
  • UI-เดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดชเต‹เตผเดŸเตเดŸเต 8500 เดคเตเดฑเด•เตเด•เตเด•. เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•. เดžเด™เตเด™เตพ เดˆ เดซเดฏเตผเดตเดพเตพ เด‰เดŸเตป เดฎเดพเดฑเตเดฑเตเด‚ [เดฒเดฟเด™เตเด•เต].
  • เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดซเดฏเตผเดตเดพเตพ เดจเดฟเดฏเดฎเด‚ เดšเต‡เตผเด•เตเด•เตเด•. เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเดฑเดฟเดฒเต† VM เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเดฟเดฒเต‡เด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เดชเต‹เดฏเดฟ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเดพเด—เต เดซเต€เตฝเดกเดฟเดฒเต‡เด•เตเด•เต โ€œskywiz-consul-server-pocโ€ เดšเต‡เตผเด•เตเด•เตเด•. เดธเต‡เดตเต เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•.

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

  • เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเดฟเตฝ เด•เต‹เตบเดธเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•, เด‡เดตเดฟเดŸเต† เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‹เตบเดธเตฝ เดชเดคเดฟเดชเตเดชเต โ‰ฅ 1.5 เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เด“เตผเด•เตเด•เตเด• [เดฒเดฟเด™เตเด•เต]
  • เดจเดฎเตเด•เตเด•เต เด’เดฐเต เด’เดฑเตเดฑ เดจเต‹เดกเต เด•เต‹เตบเดธเตฝ เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚ - เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต.

groupadd --system consul
useradd -s /sbin/nologin --system -g consul consul
mkdir -p /var/lib/consul
chown -R consul:consul /var/lib/consul
chmod -R 775 /var/lib/consul
mkdir /etc/consul.d
chown -R consul:consul /etc/consul.d

  • เด•เต‹เตบเดธเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ 3 เดจเต‹เดกเตเด•เดณเตเดŸเต† เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เด—เตˆเดกเดฟเดจเดพเดฏเดฟ, เด•เดพเดฃเตเด• เด‡เดตเดฟเดŸเต†.
  • เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เด’เดฐเต เดซเดฏเตฝ /etc/consul.d/agent.json เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด• [เดฒเดฟเด™เตเด•เต]:

### /etc/consul.d/agent.json
{
 "acl" : {
 "enabled": true,
 "default_policy": "deny",
 "enable_token_persistence": true
 }
}

  • เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•:

consul agent 
-server 
-ui 
-client 0.0.0.0 
-data-dir=/var/lib/consul 
-bootstrap-expect=1 
-config-dir=/etc/consul.d

  • เดจเดฟเด™เตเด™เตพ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเต เด•เดพเดฃเตเด•เดฏเตเด‚ "... ACL-เด•เตพ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดคเดŸเดžเตเดžเต" เดŽเดจเตเดจเต เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.
  • เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เดฌเดพเดนเตเดฏ IP เดตเดฟเดฒเดพเดธเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เดชเต‹เตผเดŸเตเดŸเต 8500-เตฝ เดˆ IP เดตเดฟเดฒเดพเดธเดฎเตเดณเตเดณ เด’เดฐเต เดฌเตเดฐเต—เดธเตผ เดคเตเดฑเด•เตเด•เตเด•. UI เดคเตเดฑเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด•.
  • เด’เดฐเต เด•เต€/เดฎเต‚เดฒเตเดฏเด‚ เดœเต‹เดŸเดฟ เดšเต‡เตผเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•. เด’เดฐเต เดคเต†เดฑเตเดฑเตเดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เดžเด™เตเด™เตพ เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เด’เดฐเต ACL เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดŽเดฒเตเดฒเดพ เดจเดฟเดฏเดฎเด™เตเด™เดณเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเดคเดฟเดจเดพเดฒเดพเดฃเดฟเดคเต.
  • เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเดฑเดฟเดฒเต† เดจเดฟเด™เตเด™เดณเตเดŸเต† เดทเต†เดฒเตเดฒเดฟเดฒเต‡เด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เดชเต‹เดฏเดฟ เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเดฒเต‹ เดฎเดฑเตเดฑเต†เดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเดพเตผเด—เดคเตเดคเดฟเดฒเต‹ เดชเตเดฐเด•เตเดฐเดฟเดฏ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดจเตฝเด•เตเด•:

consul acl bootstrap

  • "SecretID" เดฎเต‚เดฒเตเดฏเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ UI-เดฏเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•. ACL เดŸเดพเดฌเดฟเตฝ, เดจเดฟเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดชเด•เตผเดคเตเดคเดฟเดฏ เดŸเต‹เด•เตเด•เดฃเดฟเดจเตเดฑเต† เดฐเดนเดธเตเดฏ เดเดกเดฟ เดจเตฝเด•เตเด•. SecretID เดฎเดฑเตเดฑเต†เดตเดฟเดŸเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเด•เตผเดคเตเดคเตเด•, เดžเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เดชเดฟเดจเตเดจเต€เดŸเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเด‚.
  • เด‡เดชเตเดชเต‹เตพ เด’เดฐเต เด•เต€/เดฎเต‚เดฒเตเดฏเด‚ เดœเต‹เดŸเดฟ เดšเต‡เตผเด•เตเด•เตเด•. เดˆ POC-เดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต‡เตผเด•เตเด•เตเด•: เด•เต€: โ€œcustom-ns/test_keyโ€, เดฎเต‚เดฒเตเดฏเด‚: โ€œเดžเดพเตป เด•เดธเตเดฑเตเดฑเด‚-เดŽเตปเดŽเดธเต เดซเต‹เตพเดกเดฑเดฟเดฒเดพเดฃเต!โ€

เดกเต†เดฎเต‹เตบเดธเต†เดฑเตเดฑเดพเดฏเดฟ เด•เต‹เตบเดธเตฝ เด•เตเดฒเดฏเดจเตเดฑเตเดฎเดพเดฏเดฟ เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดฐเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

  • เด’เดฐเต K8s (เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต) เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เดตเต‡เด—เดคเตเดคเดฟเดฒเตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเตเดธเดฟเดจเดพเดฏเดฟ เดธเต†เตผเดตเดฑเดฟเดจเตเดฑเต† เด…เดคเต‡ เดธเต‹เดฃเดฟเตฝ เดžเด™เตเด™เตพ เด‡เดคเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด‚, เด…เดคเดฟเดจเดพเตฝ เด†เดจเตเดคเดฐเดฟเด• IP เดตเดฟเดฒเดพเดธเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด…เดคเต‡ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดžเด™เตเด™เตพ เด…เดคเดฟเดจเต† "skywiz-app-with-consul-client-poc" เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚.

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

  • เด’เดฐเต เดธเตˆเดกเต เดจเต‹เดŸเตเดŸเต เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เด•เต‹เตบเดธเตฝ เด•เดฃเด•เตเดฑเตเดฑเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเต POC เด•เต‹เตบเดธเตฝ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดžเดพเตป เด•เดฃเตเดŸ เด’เดฐเต เดจเดฒเตเดฒ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เด‡เดคเดพ.
  • เดตเดฟเดชเตเดฒเต€เด•เตƒเดค เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เดซเดฏเดฒเตเดณเตเดณ เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เดนเต†เตฝเด‚ เดšเดพเตผเดŸเตเดŸเตเด‚ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.
  • เดนเต†เตฝเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•. เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด˜เดŸเตเดŸเด™เตเด™เตพ:

kubectl create serviceaccount tiller --namespace kube-system
kubectl create clusterrolebinding tiller-admin-binding 
   --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
./helm init --service-account=tiller
./helm update

  • เดนเต†เตฝเด‚ เดšเดพเตผเดŸเตเดŸเต: https://www.consul.io/docs/platform/k8s/helm.html
  • เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฎเต‚เดฒเตเดฏเดฎเตเดณเตเดณ เดซเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• (เดžเดพเตป เดเดฑเตเดฑเดตเตเด‚ เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดฟเดฏเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•):

### poc-helm-consul-values.yaml
global:
 enabled: false
 image: "consul:latest"
# Expose the Consul UI through this LoadBalancer
ui:
 enabled: false
# Allow Consul to inject the Connect proxy into Kubernetes containers
connectInject:
 enabled: false
# Configure a Consul client on Kubernetes nodes. GRPC listener is required for Connect.
client:
 enabled: true
 join: ["<PRIVATE_IP_CONSUL_SERVER>"]
 extraConfig: |
{
  "acl" : {
 "enabled": true,   
 "default_policy": "deny",   
 "enable_token_persistence": true 
  }
}
# Minimal Consul configuration. Not suitable for production.
server:
 enabled: false
# Sync Kubernetes and Consul services
syncCatalog:
 enabled: false

  • เดนเต†เตฝเด‚ เดšเดพเตผเดŸเตเดŸเต เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด•:

./helm install -f poc-helm-consul-values.yaml ./consul-helm - name skywiz-app-with-consul-client-poc

  • เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเดฑเดฟเดจเตเดณเตเดณ เด…เดจเตเดฎเดคเดฟเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเด‚, เด…เดคเดฟเดจเดพเตฝ เดจเดฎเตเด•เตเด•เต เด…เดต เดšเต‡เตผเด•เตเด•เดพเด‚.
  • เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเดฟเตฝ เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ "Pod เดตเดฟเดฒเดพเดธ เดถเตเดฐเต‡เดฃเดฟ" เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† "skywiz-consul-server-poc" เดซเดฏเตผเดตเดพเตพ เดฑเต‚เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•.
  • IP เดตเดฟเดฒเดพเดธเด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดกเดฟเดจเตเดฑเต† เดตเดฟเดฒเดพเดธ เดถเตเดฐเต‡เดฃเดฟ เดšเต‡เตผเด•เตเด•เตเด•, 8301, 8300 เดŽเดจเตเดจเต€ เดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดคเตเดฑเด•เตเด•เตเด•.

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

  • เด•เต‹เตบเดธเตฝ เดฏเตเดเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•, เด•เตเดฑเดšเตเดšเต เดฎเดฟเดจเดฟเดฑเตเดฑเตเด•เตพเด•เตเด•เต เดถเต‡เดทเด‚ เดจเต‹เดกเตเด•เตพ เดŸเดพเดฌเดฟเตฝ เดžเด™เตเด™เดณเตเดŸเต† เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚.

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

เด•เต‹เตบเดธเดฒเดฟเดจเต† เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเตเดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเดšเตเดšเต เด’เดฐเต เด“เดคเดฑเตˆเดธเต‡เดทเตป เดฐเต€เดคเดฟ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

  • เด•เต‹เตบเดธเตฝ เดธเต†เตผเดตเตผ เดทเต†เดฒเตเดฒเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•, เดจเดฟเด™เตเด™เตพ เดจเต‡เดฐเดคเตเดคเต† เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดš เดŸเต‹เด•เตเด•เตบ เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเด•:

export CONSUL_HTTP_TOKEN=<SecretID>

  • เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดฐเต€เดคเดฟเดฏเตเดŸเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เดณเตเดŸเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต:
  • kubernetes-host

kubectl get endpoints | grep kubernetes

  • kubernetes-service-account-jwt

kubectl get sa <helm_deployment_name>-consul-client -o yaml | grep "- name:"
kubectl get secret <secret_name_from_prev_command> -o yaml | grep token:

  • เดŸเต‹เด•เตเด•เตบ เดฌเต‡เดธเต64 เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตโ€Œเดคเดคเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เด‰เดชเด•เดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต เดกเต€เด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด• [เดฒเดฟเด™เตเด•เต]
  • kubernetes-ca-cert

kubectl get secret <secret_name_from_prev_command> -o yaml | grep ca.crt:

  • "ca.crt" เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต (base64 เดกเต€เด•เต‹เดกเดฟเด‚เด—เดฟเดจเต เดถเต‡เดทเด‚) เดŽเดŸเตเดคเตเดคเต "ca.crt" เดซเดฏเดฒเดฟเตฝ เดŽเดดเตเดคเตเด•.
  • เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดชเตเดชเต‹เตพ เดฒเดญเดฟเดšเตเดš เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฒเต†เดฏเตโ€Œเดธเตโ€Œเดนเต‹เตพเดกเดฑเตเด•เตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดšเตเดšเต เด“เดคเตเดคเต เดฐเต€เดคเดฟ เด‰เดŸเดจเดŸเดฟ เดจเตฝเด•เตเด•.

consul acl auth-method create 
-type "kubernetes" 
-name "auth-method-skywiz-consul-poc" 
-description "This is an auth method using kubernetes for the cluster skywiz-app-with-consul-client-poc" 
-kubernetes-host "<k8s_endpoint_retrieved earlier>" 
[email protected] 
-kubernetes-service-account-
jwt="<decoded_token_retrieved_earlier>"

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

### kv-custom-ns-policy.hcl
key_prefix "custom-ns/" {
 policy = "write"
}

  • เดจเดฟเดฏเดฎเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด•

consul acl policy create 
-name kv-custom-ns-policy 
-description "This is an example policy for kv at custom-ns/" 
-rules @kv-custom-ns-policy.hcl

  • เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดจเดฟเดฏเดฎเดคเตเดคเดฟเดจเตเดฑเต† เดเดกเดฟ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•.
  • เด’เดฐเต เดชเตเดคเดฟเดฏ เดจเดฟเดฏเดฎเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•.

consul acl role create 
-name "custom-ns-role" 
-description "This is an example role for custom-ns namespace" 
-policy-id <policy_id>

  • เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดคเดฟเดฏ เดฑเต‹เดณเดฟเดจเต† เด“เดคเตเดคเต เดฐเต€เดคเดฟ เด‰เดฆเดพเดนเดฐเดฃเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚. เดžเด™เตเด™เดณเตเดŸเต† เดฒเต‹เด—เดฟเตป เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เต เดˆ เดฑเต‹เตพ เดฒเดญเดฟเด•เตเด•เตเดฎเต‹ เดŽเดจเตเดจเต "เดธเต†เดฒเด•เตเดŸเตผ" เดซเตเดฒเดพเด—เต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•. เดฎเดฑเตเดฑเต เดธเต†เดฒเด•เตเดŸเตผ เด“เดชเตเดทเดจเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด‡เดตเดฟเดŸเต† เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•: https://www.consul.io/docs/acl/auth-methods/kubernetes.html#trusted-identity-attributes

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='custom-ns-role' 
-selector='serviceaccount.namespace=="custom-ns"'

เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เตพ

เด†เด•เตเดธเดธเต เด…เดตเด•เดพเดถเด™เตเด™เตพ

  • เด†เด•เตเดธเดธเต เด…เดตเด•เดพเดถเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. K8s เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เดŸเต‹เด•เตเด•เดฃเดฟเดจเตเดฑเต† เดเดกเดจเตเดฑเดฟเดฑเตเดฑเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเดจเตเด‚ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเดจเตเด‚ เดžเด™เตเด™เตพ เด•เต‹เตบเดธเตฝ เด…เดจเตเดฎเดคเดฟ เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
  • เดซเดฏเดฒเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดŽเดดเตเดคเตเด• [เดฒเดฟเด™เตเด•เต]:

###skywiz-poc-consul-server_rbac.yaml
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: review-tokens
 namespace: default
subjects:
- kind: ServiceAccount
 name: skywiz-app-with-consul-client-poc-consul-client
 namespace: default
roleRef:
 kind: ClusterRole
 name: system:auth-delegator
 apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: service-account-getter
 namespace: default
rules:
- apiGroups: [""]
 resources: ["serviceaccounts"]
 verbs: ["get"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: get-service-accounts
 namespace: default
subjects:
- kind: ServiceAccount
 name: skywiz-app-with-consul-client-poc-consul-client
 namespace: default
roleRef:
 kind: ClusterRole
 name: service-account-getter
 apiGroup: rbac.authorization.k8s.io

  • เดจเดฎเตเด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดจ เด…เดตเด•เดพเดถเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚

kubectl create -f skywiz-poc-consul-server_rbac.yaml

เด•เต‹เตบเดธเตฝ เด•เตเดฒเดฏเดจเตเดฑเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

  • เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต† เด‡เดตเดฟเดŸเต†เดกเต†เดฎเต‹เตบเดธเต†เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เด“เดชเตเดทเดจเตเด•เตพ เด‰เดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด‚:
  • เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเตฝ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด• [เดฒเดฟเด™เตเด•เต].

### poc-consul-client-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
 name: consul-ds-client
spec:
 selector:
   app: consul
   chart: consul-helm
   component: client
   hasDNS: "true"
   release: skywiz-app-with-consul-client-poc
 ports:
 - protocol: TCP
   port: 80
   targetPort: 8500

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

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
 labels:
   addonmanager.kubernetes.io/mode: EnsureExists
 name: kube-dns
 namespace: kube-system
data:
 stubDomains: |
   {"consul": ["$(kubectl get svc consul-ds-client -o jsonpath='{.spec.clusterIP}')"]}
EOF

เด“เดคเตเดคเต เดฐเต€เดคเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดฎเดพเดœเดฟเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ เด•เดพเดฃเดพเด‚!

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

เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเต เด•เต‹เตบเดธเดฒเดฟเดจเตเดฑเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด“เดคเดฑเตˆเดธเต‡เดทเดจเตเดฑเต† เด†เดฎเตเด–เด‚

เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต‡เดธเต เดชเดฐเดฟเดถเต‹เดงเดจ:

  • เดจเดฎเตเด•เตเด•เต เดจเดฎเตเดฎเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเต เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚:

kubectl create namespace custom-ns

  • เดจเดฎเตเด•เตเด•เต เดจเดฎเตเดฎเตเดŸเต† เดชเตเดคเดฟเดฏ เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเดฟเตฝ เด’เดฐเต เดชเต‹เดกเต เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚. เดชเต‹เดกเดฟเดจเตเดฑเต† เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดŽเดดเตเดคเตเด•.

###poc-ubuntu-custom-ns.yaml
apiVersion: v1
kind: Pod
metadata:
 name: poc-ubuntu-custom-ns
 namespace: custom-ns
spec:
 containers:
 - name: poc-ubuntu-custom-ns
   image: ubuntu
   command: ["/bin/bash", "-ec", "sleep infinity"]
 restartPolicy: Never

  • เดคเดพเดดเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•:

kubectl create -f poc-ubuntu-custom-ns.yaml

  • เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เด…เดตเดฟเดŸเต† เดชเต‹เดฏเดฟ เดšเตเดฐเตเดณเตป เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•.

kubectl exec poc-ubuntu-custom-ns -n custom-ns -it /bin/bash
apt-get update && apt-get install curl -y

  • เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดจเต‡เดฐเดคเตเดคเต† เดธเตƒเดทเตเดŸเดฟเดšเตเดš เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เต‹เตบเดธเดฒเดฟเดจเต เด’เดฐเต เดฒเต‹เด—เดฟเตป เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเด‚ [เดฒเดฟเด™เตเด•เต].
  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเตฝเด•เดฟเดฏ เดŸเต‹เด•เตเด•เตบ เด•เดพเดฃเตเดจเตเดจเดคเดฟเดจเต:

cat /run/secrets/kubernetes.io/serviceaccount/token

  • เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต† เด’เดฐเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดŽเดดเตเดคเตเด•:

### payload.json
{
 "AuthMethod": "auth-method-test",
 "BearerToken": "<jwt_token>"
}

  • เดฒเต‡เดพเด—เดฟเตป!

curl 
--request POST 
--data @payload.json 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด˜เดŸเตเดŸเด™เตเด™เตพ เด’เดฐเต เดตเดฐเดฟเดฏเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดพเตป (เดžเด™เตเด™เตพ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเดฟเดจเดพเตฝ), เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต†เดฏเตเดฏเดพเด‚:

echo "{ 
"AuthMethod": "auth-method-skywiz-consul-poc", 
"BearerToken": "$(cat /run/secrets/kubernetes.io/serviceaccount/token)" 
}" 
| curl 
--request POST 
--data @- 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต! เด•เตเดฑเดžเตเดžเดคเต เด…เดคเต เดตเต‡เดฃเด‚. เด‡เดชเตเดชเต‹เตพ SecretID เดŽเดŸเตเดคเตเดคเต เดจเดฎเตเด•เตเด•เต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เด•เต€/เดฎเต‚เดฒเตเดฏเด‚ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•.

curl 
consul-ds-client.default.svc.cluster.local/v1/kv/custom-ns/test_key --header โ€œX-Consul-Token: <SecretID_from_prev_response>โ€

  • เดจเดฟเด™เตเด™เตพเด•เตเด•เต "เดฎเต‚เดฒเตเดฏเด‚" เด…เดŸเดฟเดธเตเดฅเดพเดจ64 เดกเต€เด•เต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ UI-เดฏเดฟเดฒเต† custom-ns/test_key-เดฒเต† เดฎเต‚เดฒเตเดฏเดตเตเดฎเดพเดฏเดฟ เด‡เดคเต เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต เด•เดพเดฃเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เดˆ เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเดฟเตฝ เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด…เดคเต‡ เดฎเต‚เดฒเตเดฏเด‚ เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตเดค เดฎเต‚เดฒเตเดฏเด‚ IkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เดชเดฐเดฟเดถเต‹เดงเดจ:

  • เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดธเต‡เดตเดจ เด…เด•เตเด•เต—เดฃเตเดŸเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด• [เดฒเดฟเด™เตเด•เต].

kubectl apply -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
 name: custom-sa
EOF

  • เดชเต‹เดกเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดคเดฟเดฏ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เด…เดงเตเดตเดพเดจเด‚ เดฒเดพเดญเดฟเด•เตเด•เดพเตป เดžเดพเตป เดšเตเดฐเตเดณเตป เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• :)

###poc-ubuntu-custom-sa.yaml
apiVersion: v1
kind: Pod
metadata:
 name: poc-ubuntu-custom-sa
 namespace: default
spec:
 serviceAccountName: custom-sa
 containers:
 - name: poc-ubuntu-custom-sa
   image: ubuntu
   command: ["/bin/bash","-ec"]
   args: ["apt-get update && apt-get install curl -y; sleep infinity"]
 restartPolicy: Never

  • เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด’เดฐเต เดทเต†เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.

kubectl exec -it poc-ubuntu-custom-sa /bin/bash

  • เดฒเต‡เดพเด—เดฟเตป!

echo "{ 
"AuthMethod": "auth-method-skywiz-consul-poc", 
"BearerToken": "$(cat /run/secrets/kubernetes.io/serviceaccount/token)" 
}" 
| curl 
--request POST 
--data @- 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • เด…เดจเตเดฎเดคเดฟ เดจเดฟเดทเต‡เดงเดฟเดšเตเดšเต. เด“, เด‰เดšเดฟเดคเดฎเดพเดฏ เด…เดจเตเดฎเดคเดฟเด•เดณเต‹เดŸเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดจเดฟเดฏเดฎเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดฎเดฑเดจเตเดจเต, เด‡เดชเตเดชเต‹เตพ เด…เดคเต เดšเต†เดฏเตเดฏเดพเด‚.

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดฎเตเตป เด˜เดŸเตเดŸเด™เตเด™เตพ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•:
a) โ€œเด•เดธเตเดฑเตเดฑเด‚-เดธ/โ€ เดŽเดจเตเดจ เดชเตเดฐเดฟเดซเดฟเด•เตโ€Œเดธเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดจเดฏเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•.
b) เด’เดฐเต เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•, เด…เดคเดฟเดจเต† "เด•เดธเตเดฑเตเดฑเด‚-เดธเดพ-เดฑเต‹เตพ" เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด•
เดธเดฟ) เดฑเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเด‚ เด…เดฑเตเดฑเดพเดšเตเดšเตเดšเต†เดฏเตเดฏเตเด•.

  • เด’เดฐเต เดฑเต‚เตพ-เดฌเตˆเตปเดกเดฟเด‚เด—เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• (cli/api-เตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดคเตเดฐเด‚ เดธเดพเดงเตเดฏเดฎเดพเดฃเต). เดธเต†เดฒเด•เตเดŸเตผ เดซเตเดฒเดพเด—เดฟเดจเตเดฑเต† เดตเตเดฏเดคเตเดฏเดธเตเดค เด…เตผเดคเตเดฅเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•.

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='custom-sa-role' 
-selector='serviceaccount.name=="custom-sa"'

  • "poc-ubuntu-custom-sa" เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเต€เดฃเตเดŸเตเด‚ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•. เดตเดฟเดœเดฏเด‚!
  • เด•เดธเตเดฑเตเดฑเด‚-เดธ/ เด•เต€ เดชเดพเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เด†เด•เตโ€Œเดธเดธเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•.

curl 
consul-ds-client.default.svc.cluster.local/v1/kv/custom-sa/test_key --header โ€œX-Consul-Token: <SecretID>โ€

  • เดˆ เดŸเต‹เด•เตเด•เตบ "เด•เดธเตเดฑเตเดฑเด‚-เดŽเตปเดŽเดธเต/" เดŽเดจเตเดจเดคเดฟเตฝ kv-เดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเด‚. "custom-sa" เดฎเดพเดฑเตเดฑเดฟ "custom-ns" เดŽเดจเตเดจ เดชเตเดฐเดฟเดซเดฟเด•เตโ€Œเดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด•เดฎเดพเตปเดกเต เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•.
    เด…เดจเตเดฎเดคเดฟ เดจเดฟเดทเต‡เดงเดฟเดšเตเดšเต.

เด“เดตเตผเดฒเต‡ เด‰เดฆเดพเดนเดฐเดฃเด‚:

  • เดˆ เด…เดตเด•เดพเดถเด™เตเด™เดณเตเดณเตเดณ เดŸเต‹เด•เตเด•เดฃเดฟเดฒเต‡เด•เตเด•เต เดŽเดฒเตเดฒเดพ เดฑเต‚เตพ-เดฌเตˆเตปเดกเดฟเด‚เด—เต เดฎเดพเดชเตเดชเดฟเด‚เด—เตเด•เดณเตเด‚ เดšเต‡เตผเด•เตเด•เตเด‚ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต.
  • เดžเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ "poc-ubuntu-custom-sa" เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเดฟเดฒเดพเดฃเต - เด…เดคเดฟเดจเดพเตฝ เดจเดฎเตเด•เตเด•เต เด‡เดคเต เดฎเดฑเตเดฑเตŠเดฐเต เดฑเต‚เตพ-เดฌเตˆเตปเดกเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.
  • เดฎเตเดฎเตเดชเดคเตเดคเต† เด˜เดŸเตเดŸเด™เตเด™เตพ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•:
    a) โ€œเดกเดฟเดซเต‹เตพเดŸเตเดŸเต/โ€ เด•เต€ เดชเตเดฐเดฟเดซเดฟเด•เตโ€Œเดธเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดจเดฏเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•.
    b) เด’เดฐเต เดฑเต‹เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•, เด…เดคเดฟเดจเต "default-ns-role" เดŽเดจเตเดจเต เดชเต‡เดฐเต เดจเตฝเด•เตเด•
    เดธเดฟ) เดฑเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเด‚ เด…เดฑเตเดฑเดพเดšเตเดšเตเดšเต†เดฏเตเดฏเตเด•.
  • เด’เดฐเต เดฑเต‚เตพ-เดฌเตˆเตปเดกเดฟเด‚เด—เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• (cli/api-เตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดคเตเดฐเด‚ เดธเดพเดงเตเดฏเดฎเดพเดฃเต)

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='default-ns-role' 
-selector='serviceaccount.namespace=="default"'

  • เดžเด™เตเด™เดณเตเดŸเต† "poc-ubuntu-custom-sa" เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เดชเต‹เดฏเดฟ "default/" kv เดชเดพเดคเตเดคเต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•.
  • เด…เดจเตเดฎเดคเดฟ เดจเดฟเดทเต‡เดงเดฟเดšเตเดšเต.
    ACL > เดŸเต‹เด•เตเด•เดฃเตเด•เตพเด•เตเด•เต เด•เต€เดดเดฟเตฝ UI-เดฏเดฟเดฒเต† เด“เดฐเต‹ เดŸเต‹เด•เตเด•เดฃเดฟเดจเตเดฎเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด•เตเดฐเต†เดกเตปเดทเตเดฏเดฒเตเด•เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดžเด™เตเด™เดณเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดŸเต‹เด•เตเด•เดฃเดฟเตฝ เด’เดฐเต "เด•เดธเตเดฑเตเดฑเด‚-เดธเดพ-เดฑเต‹เตพ" เดฎเดพเดคเตเดฐเดฎเต‡ เด˜เดŸเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดณเตเดณเต‚. เดžเด™เตเด™เตพ เดจเดฟเดฒเดตเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดŸเต‹เด•เตเด•เตบ เดžเด™เตเด™เตพ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตโ€Œเดคเดชเตเดชเต‹เตพ เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดคเดคเดพเดฃเต, เด…เดจเตเดจเต เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดฑเต‚เตพ-เดฌเตˆเตปเดกเดฟเด‚เด—เต เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเตเดณเตเดณเต‚. เดžเด™เตเด™เตพ เดตเต€เดฃเตเดŸเตเด‚ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดคเต เดชเตเดคเดฟเดฏ เดŸเต‹เด•เตเด•เตบ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
  • "เด•เดธเตเดฑเตเดฑเด‚-เดธ/", "เดกเดฟเดซเต‹เตพเดŸเตเดŸเต/" เด•เต†เดตเดฟ เดชเดพเดคเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดพเดฏเดฟเด•เตเด•เดพเดจเดพเด•เตเดฎเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด•.
    เดตเดฟเดœเดฏเดฟเดšเตเดšเต!
    เด•เดพเดฐเดฃเด‚, เดžเด™เตเด™เดณเตเดŸเต† "poc-ubuntu-custom-sa", "custom-sa", "default-ns" เดฑเต‚เตพ เดฌเตˆเตปเดกเดฟเด‚เด—เตเด•เดณเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเต.

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

TTL เดŸเต‹เด•เตเด•เตบ mgmt?

เด‡เดคเต เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เดˆ เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟ เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดŸเต‹เด•เตเด•เดฃเตเด•เตพเด•เตเด•เตเดณเตเดณ TTL เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เด’เดฐเต เดธเด‚เดฏเต‹เดœเดฟเดค เดฎเดพเตผเด—เดฎเดฟเดฒเตเดฒ. เด•เต‹เตบเดธเตฝ เด…เด‚เด—เต€เด•เดพเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดพเดฏ เด“เดŸเตเดŸเต‹เดฎเต‡เดทเตป เดจเตฝเด•เดพเดจเตเดณเตเดณ เดฎเดฟเด•เดšเตเดš เด…เดตเดธเดฐเดฎเดพเดฃเดฟเดคเต.

TTL เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดŸเต‹เด•เตเด•เตบ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด“เดชเตเดทเตป เด‰เดฃเตเดŸเต:

  • https://www.consul.io/docs/acl/acl-system.html#acl-tokens
    เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดจเตเดจ เดธเดฎเดฏเด‚ - เดˆ เดŸเต‹เด•เตเด•เตบ เด…เดธเดพเดงเตเดตเดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจ เดธเดฎเดฏเด‚. (เด“เดชเตเดทเดฃเตฝ; เด•เต‹เตบเดธเตฝ 1.5.0 เตฝ เดšเต‡เตผเดคเตเดคเต)
  • เดธเตเดตเดฎเต‡เดงเดฏเดพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚/เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฏเดฟ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต https://www.consul.io/api/acl/tokens.html#expirationtime

เดธเดฎเต€เดชเดญเดพเดตเดฟเดฏเดฟเตฝ เดŸเต‹เด•เตเด•เดฃเตเด•เตพ เดŽเด™เตเด™เดจเต† เดœเดจเดฑเต‡เดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต (เดจเดฟเดฏเดฎเดคเตเดคเดฟเดจเต‹ เด…เด‚เด—เต€เด•เดพเดฐ เดฐเต€เดคเดฟเดฏเดฟเดฒเต‹) TTL เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเตเดตเดฐเต†, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฒเต‹เดœเดฟเด•เตเด•เดฟเตฝ เด’เดฐเต เดฒเต‹เด—เตเด”เดŸเตเดŸเต เดŽเตปเดกเต เดชเต‹เดฏเดฟเดจเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต.

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

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

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