เชคเซ เชธเชพเชเซเช เชเซ, เชชเซเชฐเชเชพเชถเชจ เชชเชเซ
เช เชเซเชฏเซเชเซเชฐเซเชฏเชฒเชฎเชพเช เชเชชเชฃเซ เชธเซเชเซเชช เชฌเชพเชฏ เชธเซเชเซเชช เชฌเชจเชพเชตเซเชถเซเช
เชเชพเชเชเซ
เชเซ เชเชชเชฃเซ เชเชเช
เชเชเซเชคเชฟ 1: เชเซเชจเซเชธเซเชฏเซเชฒ เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟเชจเซ เชธเชคเซเชคเชพเชตเชพเชฐ เชเชพเชเชเซ
เชเชพเชฒเซ เช
เชเชฆเชฐ เชเซเชเช
เชเซเชเซเชเชธ, เชคเซเชฏเชพเช เชเชชเชฏเซเชเซ เชฎเชพเชนเชฟเชคเซ เชเซ, เชชเชฐเชเชคเซ เชคเซ เชฌเชงเชพเชจเซ เชตเชพเชธเซเชคเชตเชฎเชพเช เชเซเชตเซ เชฐเซเชคเซ เชเชชเชฏเซเช เชเชฐเชตเซ เชคเซ เช เชเชเซ เชเซเช เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชฟเชเชพ เชจเชฅเซ. เชคเซเชฅเซ, เชเซเชเชชเชฃ เชธเชฎเชเชฆเชพเชฐ เชตเซเชฏเชเซเชคเชฟเชจเซ เชเซเชฎ, เชคเชฎเซ เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชจ เชฎเชพเชเซ เชเชจเซเชเชฐเชจเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ. เช เชจเซ เชชเชเซ... เชคเชฎเซ เชจเชฟเชทเซเชซเชณ เชฅเชถเซ. เชคเซ เชฅเชพเชฏ เชเซ. เชเชพเชฒเซ เชเชจเซ เช เซเช เชเชฐเซเช.
เช เชฎเซ เช เชฎเชพเชฐเชพ POC เชฌเชจเชพเชตเชตเชพ เชชเชฐ เชเชเชณ เชตเชงเซเช เชคเซ เชชเชนเซเชฒเชพเช, เชเชพเชฒเซ เชเซเชจเซเชธเซเชฏเซเชฒเชจเซ เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟเช (เชกเชพเชฏเชพเชเซเชฐเชพเชฎ 1) เชจเซ เชเชพเชเชเซ เชชเชฐ เชชเชพเชเชพ เชเชเช เช เชจเซ เชคเซเชจเซ เชเซเชฌเชฐเชจเซเชเซเชธเชจเชพ เชธเชเชฆเชฐเซเชญเชฎเชพเช เชธเซเชงเชพเชฐเซเช.
เชธเซเชฅเชพเชชเชคเซเชฏ
เช เชเซเชฏเซเชเซเชฐเซเชฏเชฒเชฎเชพเช, เช เชฎเซ เชเช เช เชฒเช เชฎเชถเซเชจ เชชเชฐ เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐ เชฌเชจเชพเชตเซเชถเซเช เชเซ เชเซเชจเซเชธเซเชฏเซเชฒ เชเซเชฒเชพเชฏเชจเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒเชพ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐ เชธเชพเชฅเซ เชตเชพเชคเชเซเชค เชเชฐเชถเซ. เชชเชเซ เช เชฎเซ เชชเซเชกเชฎเชพเช เช เชฎเชพเชฐเซ เชกเชฎเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเซเชถเซเช เช เชจเซ เช เชฎเชพเชฐเซ เชเซเชจเซเชธเซเชฒ เชเซ/เชตเซเชฒเซเชฏเซ เชธเซเชเซเชฐเชฎเชพเชเชฅเซ เชตเชพเชเชเชตเชพ เชฎเชพเชเซ เช เชฎเชพเชฐเซ เชเซเช เชตเซเชฒเซ เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช.
เชจเซเชเซเชจเซ เชเชเซเชคเชฟ เช เชเซเชฏเซเชเซเชฐเซเชฏเชฒเชฎเชพเช เชเชชเชฃเซ เชเซ เชเชฐเซเชเชฟเชเซเชเซเชเชฐ เชฌเชจเชพเชตเซ เชฐเชนเซเชฏเชพ เชเซเช เชคเซเชจเซ เชตเชฟเชเชคเซ เชเชชเซ เชเซ, เชคเซเชฎเช เชเชฅเซเชฐเชพเชเชเซเชถเชจ เชชเชฆเซเชงเชคเชฟ เชชเชพเชเชณเชจเซ เชคเชฐเซเช เชชเชฃ เชเซ, เชเซ เชชเชเซเชฅเซ เชธเชฎเชเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชกเชพเชฏเชพเชเซเชฐเชพเชฎ 2: เชเซเชฌเชฐเชจเซเชเซเชธ เชเชฅเซเชฐเชพเชเชเซเชถเชจ เชฎเซเชฅเชก เชตเชฟเชนเชเชเชพเชตเชฒเซเชเชจ
เชเช เชเชกเชชเซ เชจเซเชเชง: เช เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชจเซเชธเชฒ เชธเชฐเซเชตเชฐเชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐเชจเซ เชฌเชนเชพเชฐ เชฐเชนเซเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ. เชชเชฃ เชนเชพ, เชคเซ เช เชฐเซเชคเซ เช เชจเซ เชคเซ เชฐเซเชคเซ เชเชฐเซ เชถเชเซ เชเซ.
เชคเซเชฅเซ, เชเซเชจเซเชธเซเชฏเซเชฒ เชเชตเชฐเชตเซเชฏเซ เชกเชพเชฏเชพเชเซเชฐเชพเชฎ (เชกเชพเชฏเชพเชเซเชฐเชพเชฎ 1) เชจเซ เชฒเชเชจเซ เช เชจเซ เชคเซเชจเชพ เชชเชฐ เชเซเชฌเชฐเชจเซเชเซเชธ เชฒเชพเชเซ เชเชฐเชตเชพเชฅเซ, เช เชฎเชจเซ เชเชชเชฐเชจเซ เชเชเซเชคเชฟ เชฎเชณเซ เชเซ (เชกเชพเชฏเชพเชเซเชฐเชพเชฎ 2), เช เชจเซ เช เชนเซเชเชจเซ เชคเชฐเซเช เชจเซเชเซ เชฎเซเชเชฌ เชเซ:
- เชฆเชฐเซเช เชชเซเชก เชคเซเชจเซ เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒ เชเช เชธเซเชตเชพ เชเชพเชคเซเช เชนเชถเซ เชเซเชฎเชพเช เชเซเชฌเชฐเชจเซเชเซเชธ เชฆเซเชตเชพเชฐเชพ เชเชจเชฐเซเช เชเชฐเชพเชฏเซเชฒ เช เชจเซ เชเชพเชฃเซเชคเซเช JWT เชเซเชเชจ เชนเชถเซ. เช เชเซเชเชจ เชชเชฃ เชฎเซเชณเชญเซเชค เชฐเซเชคเซ เชชเซเชกเชฎเชพเช เชฆเชพเชเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- เชชเซเชกเชจเซ เช เชเชฆเชฐ เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เช เชฅเชตเชพ เชธเซเชตเชพ เช เชฎเชพเชฐเชพ เชเซเชจเซเชธเซเชฏเซเชฒ เชเซเชฒเชพเชฏเชจเซเชเชจเซ เชฒเซเชเชฟเชจ เชเชฆเซเชถ เชถเชฐเซ เชเชฐเซ เชเซ. เชฒเซเชเชฟเชจ เชตเชฟเชจเชเชคเซเชฎเชพเช เช เชฎเชพเชฐเชพ เชเซเชเชจ เช เชจเซ เชจเชพเชฎเชจเซ เชชเชฃ เชธเชฎเชพเชตเซเชถ เชฅเชถเซ เชเชพเชธ เชฌเชจเชพเชตเซเชฒ เชเซ เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟ (เชเซเชฌเชฐเชจเซเชเซเชธ เชชเซเชฐเชเชพเชฐ). เช เชชเชเชฒเซเช #2 เชเซเชจเซเชธเชฒ เชกเชพเชฏเชพเชเซเชฐเชพเชฎ (เชธเซเชเซเชฎ 1) เชจเชพ เชชเชเชฒเซเช 1 เชจเซ เช เชจเซเชฐเซเชช เชเซ.
- เช เชฎเชพเชฐเชพ เชเซเชจเซเชธเซเชฏเซเชฒ เชเซเชฒเชพเชฏเชเช เชชเชเซ เช เชตเชฟเชจเชเชคเซ เช เชฎเชพเชฐเชพ เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐเชจเซ เชซเซเชฐเชตเชฐเซเชก เชเชฐเชถเซ.
- เชฎเซเชเชฟเช! เช เชคเซ เชเซ เชเซเชฏเชพเช เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐ เชตเชฟเชจเชเชคเซเชจเซ เช เชงเชฟเชเซเชคเชคเชพเชจเซ เชเชเชพเชธเชฃเซ เชเชฐเซ เชเซ, เชตเชฟเชจเชเชคเซเชจเซ เชเชณเช เชตเชฟเชถเซเชจเซ เชฎเชพเชนเชฟเชคเซ เชเชเชคเซเชฐเชฟเชค เชเชฐเซ เชเซ เช เชจเซ เชคเซเชจเซ เชคเซเชฒเชจเชพ เชเซเชเชชเชฃ เชธเชเชฌเชเชงเชฟเชค เชชเซเชฐเซเชตเชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชจเชฟเชฏเชฎเซ เชธเชพเชฅเซ เชเชฐเซ เชเซ. เชเชจเซ เชธเชฎเชเชพเชตเชตเชพ เชฎเชพเชเซ เชจเซเชเซ เช เชจเซเชฏ เชเชเซเชคเชฟ เชเซ. เช เชชเชเชฒเซเช เชเซเชจเซเชธเชฒ เชเชตเชฐเชตเซเชฏเซ เชกเชพเชฏเชพเชเซเชฐเชพเชฎ (เชกเชพเชฏเชพเชเซเชฐเชพเชฎ 3) เชจเชพ เชชเชเชฒเชพเช 4, 5 เช เชจเซ 1 เชจเซ เช เชจเซเชฐเซเชช เชเซ.
- เช เชฎเชพเชฐเซเช เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐ เชตเชฟเชจเชเชคเซเชเชฐเซเชคเชพเชจเซ เชเชณเช เชธเชเชฌเชเชงเชฟเชค เช เชฎเชพเชฐเชพ เชจเชฟเชฐเซเชฆเชฟเชทเซเช เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟ เชจเชฟเชฏเชฎเซ (เชเซ เช เชฎเซ เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซเชฏเซเช เชเซ) เช เชจเซเชธเชพเชฐ เชชเชฐเชตเชพเชจเชเซเช เชธเชพเชฅเซ เชเชจเซเชธเซเชฏเซเชฒ เชเซเชเชจ เชเชจเชฐเซเช เชเชฐเซ เชเซ. เชคเซ เชชเชเซ เชคเซ เชเซเชเชจ เชชเชพเชเซเช เชฎเซเชเชฒเชถเซ. เช เชเซเชจเซเชธเชฒ เชกเชพเชฏเชพเชเซเชฐเชพเชฎ (เชกเชพเชฏเชพเชเซเชฐเชพเชฎ 6) เชจเชพ เชธเซเชเซเชช 1 เชจเซ เช เชจเซเชฐเซเชช เชเซ.
- เช เชฎเชพเชฐเชพ เชเซเชจเซเชธเซเชฏเซเชฒ เชเซเชฒเชพเชฏเชจเซเช เชตเชฟเชจเชเชคเซ เชเชฐเชคเซ เช เชฐเชเซ เช เชฅเชตเชพ เชธเซเชตเชพเชจเซ เชเซเชเชจ เชซเซเชฐเชตเชฐเซเชก เชเชฐเซ เชเซ.
เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เช เชฅเชตเชพ เชธเซเชตเชพ เชนเชตเซ เช เชเซเชจเซเชธเชฒ เชเซเชเชจเชจเซ เชเชชเชฏเซเช เช เชฎเชพเชฐเชพ เชเซเชจเซเชธเซเชฏเซเชฒ เชกเซเชเชพ เชธเชพเชฅเซ เชตเชพเชคเชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซ เชถเชเซ เชเซ, เชเซเชฎ เชเซ เชเซเชเชจเชจเชพ เชตเชฟเชถเซเชทเชพเชงเชฟเชเชพเชฐเซ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชเชพเชฆเซ เชชเซเชฐเชเช เชฅเชพเชฏ เชเซ!
เชคเชฎเชพเชฐเชพเชฎเชพเชเชจเชพ เชเซเช เชเซเชชเซเชฎเชพเชเชฅเซ เชฎเชพเชคเซเชฐ เชธเชธเชฒเชพเชฅเซ เชเซเชถ เชจเชฅเซ เช เชจเซ เชคเซ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฎ เชเชฐเซ เชเซ เชคเซ เชเชพเชฃเชตเชพ เชฎเชพเชเซ เชเซ... เชเชพเชฒเซ เชนเซเช เชคเชฎเชจเซ เชฌเชคเชพเชตเซเช เชเซ เชเซเชเชฒเซเช เชเชเชกเซเช เชธเชธเชฒเซเช เชเชฟเชฆเซเชฐยป.
เช เชเชพเช เชธเซเชเชตเซเชฏเชพ เชฎเซเชเชฌ, เช เชฎเชพเชฐเซเช "เชเชพเชฆเซเช" เชชเชเชฒเซเช (เชเชเซเชคเชฟ 2: เชชเชเชฒเซเช 4) เช เชเซ เชเซเชฏเชพเช เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐ เชตเชฟเชจเชเชคเซเชจเซ เชชเซเชฐเชฎเชพเชฃเชฟเชค เชเชฐเซ เชเซ, เชตเชฟเชจเชเชคเซ เชตเชฟเชถเซเชจเซ เชฎเชพเชนเชฟเชคเซ เชเชเชคเซเชฐเชฟเชค เชเชฐเซ เชเซ เช เชจเซ เชคเซเชจเซ เชคเซเชฒเชจเชพ เชเซเชเชชเชฃ เชธเชเชฌเชเชงเชฟเชค เชชเซเชฐเซเชตเชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชจเชฟเชฏเชฎเซ เชธเชพเชฅเซ เชเชฐเซ เชเซ. เช เชชเชเชฒเซเช เชเซเชจเซเชธเชฒ เชเชตเชฐเชตเซเชฏเซ เชกเชพเชฏเชพเชเซเชฐเชพเชฎ (เชกเชพเชฏเชพเชเซเชฐเชพเชฎ 3) เชจเชพ เชชเชเชฒเชพเช 4, 5 เช เชจเซ 1 เชจเซ เช เชจเซเชฐเซเชช เชเซ. เชจเซเชเซ เชเช เชเชเซเชคเชฟ เชเซ (เชเชเซเชคเชฟ 3), เชเซเชจเซ เชนเซเชคเซ เชเชฐเซเชเชฐ เชถเซเช เชฅเช เชฐเชนเซเชฏเซเช เชเซ เชคเซ เชธเซเชชเชทเซเชเชชเชฃเซ เชฌเชคเชพเชตเชตเชพเชจเซ เชเซ เชนเซเชก เชนเซเช เชณ เชเซเชเซเชเชธ เชเซเชฌเชฐเชจเซเชเซเชธ เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟ.
เชเชเซเชคเชฟ 3: เชเชพเชฆเซ เชชเซเชฐเชเช เชฅเชฏเซ!
- เชชเซเชฐเชพเชฐเชเชญเชฟเช เชฌเชฟเชเชฆเซ เชคเชฐเซเชเซ, เช เชฎเชพเชฐเชพ เชเซเชจเซเชธเซเชฏเซเชฒ เชเซเชฒเชพเชฏเชจเซเช เช เชฎเชพเชฐเชพ เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐ เชชเชฐ เชฒเซเชเชฟเชจ เชตเชฟเชจเชเชคเซเชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเชเชพเชเชจเซเช เชเซเชเชจ เช เชจเซ เช เชเชพเช เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฒเซ เช เชงเชฟเชเซเชค เชชเชฆเซเชงเชคเชฟเชจเชพ เชเซเชเซเชเชธ เชเชฆเชพเชนเชฐเชฃเชจเชพ เชจเชพเชฎ เชธเชพเชฅเซ เชซเซเชฐเชตเชฐเซเชก เชเชฐเซ เชเซ. เช เชชเชเชฒเซเช เช เชเชพเชเชจเชพ เชธเชฐเซเชเชฟเช เชธเชฎเชเซเชคเซเชฎเชพเช เชชเชเชฒเซเช 3 เชจเซ เช เชจเซเชฐเซเชช เชเซ.
- เชนเชตเซ เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐ (เช เชฅเชตเชพ เชจเซเชคเชพ) เช เชชเซเชฐเชพเชชเซเชค เชเซเชเชจเชจเซ เช เชงเชฟเชเซเชคเชคเชพ เชเชเชพเชธเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชคเซเชฅเซ, เชคเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐเชจเซ เชธเชเชชเชฐเซเช เชเชฐเชถเซ (เชเซเชจเซเชธเซเชฏเซเชฒ เชเซเชฒเชพเชฏเชจเซเช เชฆเซเชตเชพเชฐเชพ) เช เชจเซ, เชฏเซเชเซเชฏ เชชเชฐเชตเชพเชจเชเซเช เชธเชพเชฅเซ, เช เชฎเซ เชถเซเชงเซเชถเซเช เชเซ เชเซเชเชจ เช เชธเชฒเซ เชเซ เชเซ เชเซเชฎ เช เชจเซ เชคเซ เชเซเชจเซเช เชเซ.
- เชฎเชพเชจเซเชฏ เชเชฐเซเชฒ เชตเชฟเชจเชเชคเซ เชชเชเซ เชเซเชจเซเชธเซเชฏเซเชฒ เชฒเซเชกเชฐเชจเซ เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เช เชจเซ เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐ เชฒเซเชเชฟเชจ เชตเชฟเชจเชเชคเซ (เช เชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชชเซเชฐเชเชพเชฐ) เชฎเชพเชเชฅเซ เชเชฒเซเชฒเซเชเชฟเชค เชจเชพเชฎ เชธเชพเชฅเซ เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟ เชฆเชพเชเชฒเชพ เชเซเช เชเซ.
- เชเซเชจเซเชธเซเชฏเซเชฒ เชฒเซเชกเชฐ เชธเซเชชเชทเซเช เชเชฐเซเชฒ เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟ เชฆเชพเชเชฒเชพ (เชเซ เชฎเชณเซ เชคเซ) เชเชณเชเซ เชเซ เช เชจเซ เชคเซเชจเซ เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒเชพ เชฌเชเชงเชจเชเชฐเซเชคเชพ เชจเชฟเชฏเชฎเซเชจเชพ เชธเชฎเซเชนเชจเซ เชตเชพเชเชเซ เชเซ. เชคเซ เชชเชเซ เช เชจเชฟเชฏเชฎเซ เชตเชพเชเชเซ เชเซ เช เชจเซ เชเชเชพเชธเชพเชฏเซเชฒ เชเชณเช เชตเชฟเชถเซเชทเชคเชพเช เชธเชพเชฅเซ เชคเซเชจเซ เชคเซเชฒเชจเชพ เชเชฐเซ เชเซ.
- เชเซเช-เชกเชพเชน! เชเชพเชฒเซ เช เชเชพเชเชจเชพ เชธเชฐเซเชเชฟเช เชธเชฎเชเซเชคเซเชฎเชพเช เชชเชเชฒเซเช 5 เชชเชฐ เชเชเชณ เชตเชงเซเช.
เชจเชฟเชฏเชฎเชฟเชค เชตเชฐเซเชเซเชฏเซเช เชฒ เชฎเชถเซเชจ เชชเชฐ เชเซเชจเซเชธเชฒ-เชธเชฐเซเชตเชฐ เชเชฒเชพเชตเซ
เชนเชตเซเชฅเซ, เชนเซเช เชฎเซเชเซ เชญเชพเชเซ เช เชชเซเชเชธเซ เชเซเชตเซ เชฐเซเชคเซ เชฌเชจเชพเชตเชตเซเช เชคเซเชจเชพ เชชเชฐ เชธเซเชเชจเชพเช เชเชชเซเชถ, เชเชฃเซ เชตเชเชค เชฌเซเชฒเซเช เชชเซเชเชจเซเชเชฎเชพเช, เชธเชเชชเซเชฐเซเชฃ เชตเชพเชเซเชฏ เชธเซเชชเชทเซเชเชคเชพ เชตเชฟเชจเชพ. เชเชชเชฐเชพเชเชค, เช เชเชพเช เชจเซเชเชงเซเชฏเซเช เชคเซเชฎ, เชนเซเช เชคเชฎเชพเชฎ เชเชจเซเชซเซเชฐเชพเชธเซเชเซเชฐเชเซเชเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ 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
- เชคเชฎเชพเชฐเซ เชเชเชเชชเซเชเชจเซ เชธเชฎเซเชน เชเซเชตเซ เชเซเชเช เช เชจเซ "... ACLs เชฆเซเชตเชพเชฐเชพ เช เชตเชฐเซเชงเชฟเชค เช เชชเชกเซเช" เชธเชพเชฅเซ เชธเชฎเชพเชชเซเชค เชฅเชตเซเช เชเซเชเช.
- เชเซเชจเซเชธเชฒ เชธเชฐเซเชตเชฐเชจเซเช เชฌเชพเชนเซเชฏ IP เชธเชฐเชจเชพเชฎเซเช เชถเซเชงเซ เช เชจเซ เชชเซเชฐเซเช 8500 เชชเชฐ เช IP เชธเชฐเชจเชพเชฎเชพ เชธเชพเชฅเซเชจเซเช เชฌเซเชฐเชพเชเชเชฐ เชเซเชฒเซ. เชเชพเชคเชฐเซ เชเชฐเซ เชเซ UI เชเซเชฒเซ เชเซ.
- เชเซ/เชฎเซเชฒเซเชฏเชจเซ เชเซเชกเซ เชเชฎเซเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ. เชเซเช เชญเซเชฒ เชนเซเชตเซ เชเซเชเช. เช เชเชเชฒเชพ เชฎเชพเชเซ เชเซ เชเชพเชฐเชฃ เชเซ เช เชฎเซ เชเซเชจเซเชธเชฒ เชธเชฐเซเชตเชฐเชจเซ ACL เชธเชพเชฅเซ เชฒเซเชก เชเชฐเซเชฏเซเช เชเซ เช เชจเซ เชคเชฎเชพเชฎ เชจเชฟเชฏเชฎเซเชจเซ เช เชเซเชทเชฎ เชเชฐเซเชฏเชพ เชเซ.
- เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชฐเซเชตเชฐ เชชเชฐ เชคเชฎเชพเชฐเชพ เชถเซเชฒ เชชเชฐ เชชเชพเชเชพ เชเชพเช เช เชจเซ เชคเซเชจเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชชเซเชทเซเช เชญเซเชฎเชฟเชฎเชพเช เช เชฅเชตเชพ เช เชจเซเชฏ เชเซเช เชฐเซเชคเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชถเชฐเซ เชเชฐเซ เช เชจเซ เชจเซเชเซเชจเชพ เชฆเชพเชเชฒ เชเชฐเซ:
consul acl bootstrap
- "SecretID" เชฎเซเชฒเซเชฏ เชถเซเชงเซ เช เชจเซ UI เชชเชฐ เชชเชพเชเชพ เชซเชฐเซ. ACL เชเซ เชฌเชฎเชพเช, เชคเชฎเซ เชนเชฎเชฃเชพเช เชเซเชชเชฟ เชเชฐเซเชฒ เชเซเชเชจเชจเซเช เชเซเชชเซเชค ID เชฆเชพเชเชฒ เชเชฐเซ. SecretID เชจเซ เชฌเซเชเซ เชเซเชฏเชพเชเช เชเซเชชเซ เชเชฐเซ, เช เชฎเชจเซ เชชเชเซเชฅเซ เชคเซเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ.
- เชนเชตเซ เชเซ/เชฎเซเชฒเซเชฏเชจเซ เชเซเชกเซ เชเชฎเซเชฐเซ. เช POC เชฎเชพเชเซ, เชจเซเชเซเชจเซ เชเชฎเซเชฐเซ: เชเซ: โcustom-ns/test_keyโ, เชฎเซเชฒเซเชฏ: โเชนเซเช custom-ns เชซเซเชฒเซเชกเชฐเชฎเชพเช เชเซเช!โ
เชกเซเชฎเชจเชธเซเช เชคเชฐเซเชเซ เชเซเชจเซเชธเซเชฏเซเชฒ เชเซเชฒเชพเชฏเชจเซเช เชธเชพเชฅเซ เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐ เชถเชฐเซ เชเชฐเซ เชฐเชนเซเชฏเชพเช เชเซเช
- K8s (Kubernetes) เชเซเชฒเชธเซเชเชฐ เชฌเชจเชพเชตเซ. เช เชฎเซ เชคเซเชจเซ เชเชกเชชเซ เชเชเซเชธเซเชธ เชฎเชพเชเซ เชธเชฐเซเชตเชฐ เชเซเชตเชพ เช เชเซเชจเชฎเชพเช เชฌเชจเชพเชตเซเชถเซเช, เช เชจเซ เชคเซเชฅเซ เช เชฎเซ เชเชเชคเชฐเชฟเช IP เชธเชฐเชจเชพเชฎเชพเช เชธเชพเชฅเซ เชธเชฐเชณเชคเชพเชฅเซ เชเชจเซเชเซเช เชฅเชตเชพ เชฎเชพเชเซ เชธเชฎเชพเชจ เชธเชฌเชจเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซเช เชเซเช. เช เชฎเซ เชคเซเชจเซ "skywiz-app-with-consul-client-poc" เชเชนเซเชถเซเช.
- เชฌเชพเชเซเชจเซ เชจเซเชเชง เชคเชฐเซเชเซ, เช เชนเซเช เชเช เชธเชพเชฐเซเช เชเซเชฏเซเชเซเชฐเซเชฏเชฒ เชเซ เชเซ เชฎเชจเซ Consul Connect เชธเชพเชฅเซ 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
- เชเซเชฏเชพเชฐเซ เชคเซ เชเชฒเชพเชตเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเซเชจเซ เชเซเชจเซเชธเชฒ เชธเชฐเซเชตเชฐ เชฎเชพเชเซ เชชเชฐเชตเชพเชจเชเซเชเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ, เชคเซเชฅเซ เชเชพเชฒเซ เชคเซเชจเซ เชเชฎเซเชฐเซเช.
- เชเซเชฒเชธเซเชเชฐ เชกเซเชถเชฌเซเชฐเซเชก เชชเชฐ เชธเซเชฅเชฟเชค "เชชเซเชก เชเชกเซเชฐเซเชธ เชฐเซเชจเซเช"เชจเซ เชจเซเชเชง เชฒเซ เช เชจเซ เช เชฎเชพเชฐเชพ "เชธเซเชเชพเชฏเชตเชฟเช-เชเชจเซเชธเซเชฏเซเชฒ-เชธเชฐเซเชตเชฐ-เชชเซเช" เชซเชพเชฏเชฐเชตเซเชฒ เชจเชฟเชฏเชฎเชจเซ เชธเชเชฆเชฐเซเชญ เชฒเซ.
- เชเชเชชเซ เชเชกเซเชฐเซเชธเชจเซ เชฏเชพเชฆเซเชฎเชพเช เชชเซเชก เชฎเชพเชเซ เชเชกเซเชฐเซเชธ เชฐเซเชจเซเช เชเชฎเซเชฐเซ เช เชจเซ เชชเซเชฐเซเช 8301 เช เชจเซ 8300 เชเซเชฒเซ.
- เชเซเชจเซเชธเชฒ UI เชชเชฐ เชเชพเช เช เชจเซ เชฅเซเชกเซเชตเชพเชฐ เชชเชเซ เชคเชฎเซ เชจเซเชกเซเชธ เชเซเชฌเชฎเชพเช เช เชฎเชพเชฐเซเช เชเซเชฒเชธเซเชเชฐ เชฆเซเชเชพเชถเซ.
เชเซเชฌเชฐเชจเซเชเซเชธ เชธเชพเชฅเซ เชเซเชจเซเชธเชฒเชจเซ เชเชเซเชเซเชค เชเชฐเซเชจเซ เช เชงเชฟเชเซเชคเชคเชพ เชชเชฆเซเชงเชคเชฟเชจเซ เชเซเช เชตเชตเซ
- เชเซเชจเซเชธเชฒ เชธเชฐเซเชตเชฐ เชถเซเชฒ เชชเชฐ เชชเชพเชเชพ เชซเชฐเซ เช เชจเซ เชคเชฎเซ เช เชเชพเช เชธเชพเชเชตเซเชฒ เชเซเชเชจ เชจเชฟเชเชพเชธ เชเชฐเซ:
export CONSUL_HTTP_TOKEN=<SecretID>
- เช เชงเชฟเชเซเชค เชชเชฆเซเชงเชคเชฟเชจเซ เชฆเชพเชเชฒเซ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เช เชฎเชจเซ เช เชฎเชพเชฐเชพ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐเชฎเชพเชเชฅเซ เชฎเชพเชนเชฟเชคเซเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ:
- kubernetes-เชฏเชเชฎเชพเชจ
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>"
- เชเชเชณ เชเชชเชฃเซ เชเช เชจเชฟเชฏเชฎ เชฌเชจเชพเชตเชตเชพเชจเซ เช เชจเซ เชคเซเชจเซ เชจเชตเซ เชญเซเชฎเชฟเชเชพ เชธเชพเชฅเซ เชเซเชกเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เช เชญเชพเช เชฎเชพเชเซ เชคเชฎเซ Consul UI เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ, เชชเชฐเชเชคเซ เช เชฎเซ เชเชฆเซเชถ เชตเชพเชเซเชฏเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช.
- เชเช เชจเชฟเชฏเชฎ เชฒเชเซ
### 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
- เชคเชฎเซ เชนเชฎเชฃเชพเช เช เชเชเชเชชเซเชเชฎเชพเชเชฅเซ เชฌเชจเชพเชตเซเชฒ เชจเชฟเชฏเชฎเชจเซเช ID เชถเซเชงเซ.
- เชจเชตเชพ เชจเชฟเชฏเชฎ เชธเชพเชฅเซ เชญเซเชฎเชฟเชเชพ เชฌเชจเชพเชตเซ.
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
- เชชเชเซ configmap เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชจเซเชเซเชจเชพ เชฌเชฟเชฒเซเชเชฟเชจ เชเชฆเซเชถเชจเซ เชเชชเชฏเซเช เชเชฐเซ [
ัััะปะบะฐ ]. เชเซเชชเชพ เชเชฐเซเชจเซ เชจเซเชเชงเซ เชเซ เช เชฎเซ เช เชฎเชพเชฐเซ เชธเซเชตเชพเชจเชพ เชจเชพเชฎเชจเซ เชเชฒเซเชฒเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช, เชเซ เชเชฐเซเชฐเซ เชนเซเชฏ เชคเซ เชคเซเชจเซ เชฌเชฆเชฒเซ.
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
เชชเซเชฐเชฎเชพเชฃเซเชเชฐเชฃ เชชเชฆเซเชงเชคเชฟเชจเซเช เชชเชฐเซเชเซเชทเชฃ
เชนเชตเซ เชเชพเชฒเซ เชเชพเชฆเซเชจเซ เชเซเชฐเชฟเชฏเชพเชฎเชพเช เชเซเชเช!
- เชธเชฎเชพเชจ เชเซเชช-เชฒเซเชตเชฒ เชเซ เชตเชกเซ เชเชฃเชพ เชตเชงเซ เชเซ เชซเซเชฒเซเชกเชฐเซเชธ เชฌเชจเชพเชตเซ (เชฆเชพ.เชค. /sample_key) เช เชจเซ เชคเชฎเชพเชฐเซ เชชเชธเชเชฆเชเซเชจเซเช เชฎเซเชฒเซเชฏ. เชจเชตเชพ เชฎเซเชเซเชฏ เชฎเชพเชฐเซเชเซ เชฎเชพเชเซ เชฏเซเชเซเชฏ เชจเซเชคเชฟเช เช เชจเซ เชญเซเชฎเชฟเชเชพเช เชฌเชจเชพเชตเซ. เช เชฎเซ เชฌเชพเชเชจเซเชกเซเชเช เชชเชเซเชฅเซ เชเชฐเซเชถเซเช.
เชเชธเซเชเชฎ เชจเซเชฎเชธเซเชชเซเชธ เชเซเชธเซเช:
- เชเชพเชฒเซ เชเชชเชฃเซเช เชชเซเชคเชพเชจเซเช เชจเซเชฎเชธเซเชชเซเชธ เชฌเชจเชพเชตเซเช:
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) เชเช เชญเซเชฎเชฟเชเชพ เชฌเชจเชพเชตเซ, เชคเซเชจเซ "เชเชธเซเชเชฎ-เชธเชพ-เชฐเซเชฒ" เชเชนเซ
c) เชจเซเชคเชฟเชจเซ เชญเซเชฎเชฟเชเชพ เชธเชพเชฅเซ เชเซเชกเซ.
- เชจเชฟเชฏเชฎ-เชฌเชเชงเชจเชเชฐเซเชคเชพ เชฌเชจเชพเชตเซ (เชฎเชพเชคเซเชฐ 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>โ
- เชคเชฎเซ เช เชชเชฃ เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเซ เชถเชเซ เชเซ เชเซ เช เชเซเชเชจ "custom-ns/" เชฎเชพเช kv เชจเซ เชเชเซเชธเซเชธ เชเชชเชคเซเช เชจเชฅเซ. "เชเชธเซเชเชฎ-เชธเชพ" เชจเซ เชเชชเชธเชฐเซเช "เชเชธเซเชเชฎ-เชเชจเชเชธ" เชธเชพเชฅเซ เชฌเชฆเชฒเซเชฏเชพ เชชเชเซ เชซเชเซเชค เชเชชเชฐเชจเชพ เชเชฆเซเชถเชจเซเช เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เชเชฐเซ.
เชชเชฐเชตเชพเชจเชเซ เชจเชเชพเชฐเซ.
เชเชตเชฐเชฒเซ เชเชฆเชพเชนเชฐเชฃ:
- เช เชจเซเชเชงเชตเซเช เชฏเซเชเซเชฏ เชเซ เชเซ เชคเชฎเชพเชฎ เชจเชฟเชฏเชฎ-เชฌเชเชงเชจเชเชฐเซเชคเชพ เชฎเซเชชเชฟเชเชเซเชธ เช เช เชงเชฟเชเชพเชฐเซ เชธเชพเชฅเซ เชเซเชเชจเชฎเชพเช เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
- เช เชฎเชพเชฐเซเช เชเชจเซเชเซเชจเชฐ "poc-ubuntu-custom-sa" เชกเชฟเชซเซเชฒเซเช เชจเซเชฎเชธเซเชชเซเชธเชฎเชพเช เชเซ - เชคเซ เชเชพเชฒเซ เชคเซเชจเซ เชเชชเชฏเซเช เช เชฒเช เชจเชฟเชฏเชฎ-เชฌเชเชงเชจ เชฎเชพเชเซ เชเชฐเซเช.
- เชชเชพเชเชฒเชพ เชชเชเชฒเชพเชเชเชจเซเช เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เชเชฐเซ:
a) โเชกเชฟเชซเซเชฒเซเช/โ เชเซ เชเชชเชธเชฐเซเช เชฎเชพเชเซ เชเช เชธเชฐเชเซ เชจเซเชคเชฟ เชฌเชจเชพเชตเซ.
b) เชเช เชญเซเชฎเชฟเชเชพ เชฌเชจเชพเชตเซ, เชคเซเชจเซ "default-ns-role" เชจเชพเชฎ เชเชชเซ
c) เชจเซเชคเชฟเชจเซ เชญเซเชฎเชฟเชเชพ เชธเชพเชฅเซ เชเซเชกเซ. - เชเช เชจเชฟเชฏเชฎ-เชฌเชเชงเชจเชเชฐเซเชคเชพ เชฌเชจเชพเชตเซ (เชฎเชพเชคเซเชฐ 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 เชฎเชพเช เชฆเชฐเซเช เชเซเชเชจ เชฎเชพเชเซ เชเชฒเซเชฒเซเชเชฟเชค เชเชณเชเชชเชคเซเชฐเซ เชเซเช เชถเชเซ เชเซ. เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เช เชฎเชพเชฐเชพ เชตเชฐเซเชคเชฎเชพเชจ เชเซเชเชจ เชธเชพเชฅเซ เชซเชเซเชค เชเช "เชเชธเซเชเชฎ-เชธเชพ-เชฐเซเชฒ" เชเซเชกเชพเชฏเซเชฒ เชเซ. เช เชฎเซ เชนเชพเชฒเชฎเชพเช เชเซ เชเซเชเชจเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช เชคเซ เชเซเชฏเชพเชฐเซ เช เชฎเซ เชฒเซเช เชเชจ เชเชฐเซเชฏเซเช เชคเซเชฏเชพเชฐเซ เชเชจเชฐเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช เช เชจเซ เชคเซ เชธเชฎเชฏเซ เชฎเซเชณ เชเชพเชคเซ เชฎเชพเชคเซเชฐ เชเช เช เชจเชฟเชฏเชฎ-เชฌเชเชงเชจเชเชฐเซเชคเชพ เชนเชคเซ. เช เชฎเชพเชฐเซ เชซเชฐเซเชฅเซ เชฒเซเชเชฟเชจ เชเชฐเชตเชพเชจเซ เช เชจเซ เชจเชตเชพ เชเซเชเชจเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. - เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชคเชฎเซ เชฌเชเชจเซ "เชเชธเซเชเชฎ-เชธเชพ/" เช
เชจเซ "เชกเชฟเชซเซเชฒเซเช/" kv เชชเชพเชฅเชฎเชพเชเชฅเซ เชตเชพเชเชเซ เชถเชเซ เชเซ.
เชธเชซเชณเชคเชพ!
เช เชเชเชฒเชพ เชฎเชพเชเซ เชเซ เชเชพเชฐเชฃ เชเซ เช เชฎเชพเชฐเซเช โpoc-ubuntu-custom-saโ โเชเชธเซเชเชฎ-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 เชเชฎเซเชฐเซเชถเซเช.
เชคเซเชฏเชพเช เชธเซเชงเซ, เชเชตเซเช เชธเซเชเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซ เชคเชฎเซ เชคเชฎเชพเชฐเชพ เชคเชฐเซเชเชฎเชพเช เชฒเซเชเชเชเช เชเชจเซเชกเชชเซเชเชจเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ.
https://www.consul.io/api/acl/acl.html#logout-from-auth-method https://www.consul.io/docs/acl/acl-auth-methods.html#overall-login-process
เช เชฎเชพเชฐเชพ เชฌเซเชฒเซเช เชชเชฐ เช เชจเซเชฏ เชฒเซเชเซ เชชเชฃ เชตเชพเชเชเซ:
เช เชงเชฟเชเซเชคเชคเชพ เชธเชพเชฅเซ เชเซเชฒเชฟเชเชนเชพเชเชธเชฎเชพเชเชฅเซ เช เชงเชฟเชเซเชคเชคเชพ เชตเชฟเชจเชพ เชเซเชฒเชฟเชเชนเชพเชเชธเชฎเชพเช เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฃ เชถเซเช เชคเชฐเชซ เชฆเซเชฐเซ เชเชฏเซเช? GitLab CI/CD เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฌเชนเซเชตเชฟเชง เชชเชพเชเชชเชฒเชพเชเชจ เชเซเชตเซ เชฐเซเชคเซ เชเชฒเชพเชตเชตเซ เชกเซเชเชฐ เชเชฌเซเชเชจเซ เชธเชเชเซเชเชตเชพเชจเซ เชคเซเชฐเชฃ เชธเชฐเชณ เชฏเซเชเซเชคเชฟเช K8S เชฎเชพเชเซ เชชเซเชฐเชตเซเชถ เชจเชฟเชฏเชเชคเซเชฐเช เชคเชฐเซเชเซ เชเซเชฐเซเชซเชฟเช เชฎเซเชเซ เชธเชเชเซเชฏเชพเชฎเชพเช เชตเชฟเชเชพเชคเซเชฏ เชตเซเชฌ เชชเซเชฐเซเชเซเชเซเชเซเชธเชจเซ เชฌเซเชเช เชช เชฐเซเชกเชฎเชพเชเชจ เชฎเชพเชเซ เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชฌเซเช. เชคเชฎเชพเชฐเชพ เช เชจเซ เช เชจเซเชฏ เชฒเซเชเซ เชฎเชพเชเซ เชเซเชตเชจ เชเซเชตเซ เชฐเซเชคเซ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช
เชธเซเชฐเซเชธ: www.habr.com