เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เปˆเบญเบ เบเบปเบ‡เบชเบธเบ™ Hashicorp 1.5.0 เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เป€เบ”เบทเบญเบ™เบžเบถเบ”เบชเบฐเบžเบฒ 2019, เปƒเบ™ Consul เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ Kubernetes เป‚เบ”เบเบเปเบฒเป€เบ™เบตเบ”.

เปƒเบ™ tutorial เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป‚เบ”เบเบ‚เบฑเป‰เบ™เบ•เบญเบ™ POC (เบซเบผเบฑเบเบ–เบฒเบ™เบชเบฐเปเบ”เบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”, PoC) เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเบ™เบตเป‰. เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ Kubernetes เปเบฅเบฐเบเบปเบ‡เบชเบธเบ™เบ‚เบญเบ‡ Hashicorp. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบธเบเป€เบงเบ—เบตเบ„เบฅเบฒเบงเบซเบผเบทเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆ, เปƒเบ™เบšเบปเบ”เบชเบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰ Google's Cloud Platform.

เบžเบฒเบšเบฅเบงเบก

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ› เป€เบญเบเบฐเบชเบฒเบ™ Consul เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบ•เบปเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบžเบฒเบšเบฅเบงเบกเป„เบงเบเปˆเบฝเบงเบเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เปเบฅเบฐเบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบกเบฑเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบšเบฒเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เปเบฅเบฐเบชเบฐเบžเบฒเบšเบฅเบงเบกเบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบญเปˆเบฒเบ™เบกเบฑเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเปเบฅเบฐ chewing เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

เปเบœเบ™เบงเบฒเบ”เบ—เบต 1: เบžเบฒเบšเบฅเบงเบกเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบเบปเบ‡เบชเบธเบ™

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบชเบฐเป€เบžเบฒเบฐ.

เปเบ™เปˆเบ™เบญเบ™, เบกเบตเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™, เป€เบŠเบฑเปˆเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบšโ€‹เบ„เบปเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบชเบธโ€‹เบ‚เบฐโ€‹เบžเบฒเบš, เบ—เปˆเบฒเบ™ scour เบญเบดเบ™โ€‹เป€เบ•เบตโ€‹เป€เบ™เบฑเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบŠเบตเป‰โ€‹เบ™เปเบฒ. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ ... เป€เบˆเบปเป‰เบฒเบฅเบปเป‰เบกเป€เบซเบฅเบง. เบกเบฑเบ™โ€‹เป€เบเบตเบ”โ€‹เบ‚เบทเป‰เบ™. เปƒเบซเป‰เปเบเป‰เป„เบ‚เบ™เบตเป‰.

เบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡ POC เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ (เปเบœเบ™เบงเบฒเบ” 1) เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบกเบฑเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡ Kubernetes.

เบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐ

เปƒเบ™เบšเบปเบ”เบชเบญเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Consul เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเบเบธเปˆเบก Kubernetes เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ Consul เบ•เบดเบ”เบ•เบฑเป‰เบ‡. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ dummy เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบเบฑเบเปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเบญเปˆเบฒเบ™เบˆเบฒเบ Consul key / value store เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เปเบœเบ™เบงเบฒเบ”เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เบšเบปเบ”เบชเบญเบ™เบ™เบตเป‰, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบซเบฅเบฑเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™เบžเบฒเบเบซเบฅเบฑเบ‡.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

เปเบœเบ™เบงเบฒเบ” 2: เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes

เบšเบฑเบ™เบ—เบถเบเบ”เปˆเบงเบ™: เป€เบŠเบตเบšเป€เบงเบต Consul เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบญเบฒเป„เบชเบขเบนเปˆเบ™เบญเบเบเบธเปˆเบก Kubernetes เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰. เปเบ•เปˆเปเบกเปˆเบ™เปเบฅเป‰เบง, เบฅเบฒเบงเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰เปเบฅเบฐเปเบšเบšเบ™เบฑเป‰เบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบญเบปเบฒเปเบœเบ™เบงเบฒเบ”เบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ (เปเบœเบ™เบœเบฑเบ‡ 1) เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰ Kubernetes เบเบฑเบšเบกเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเปเบœเบ™เบงเบฒเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡ (เปเบœเบ™เบงเบฒเบ” 2), เปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เปเบ•เปˆเบฅเบฐเบเบฑเบเบˆเบฐเบกเบตเบšเบฑเบ™เบŠเบตเบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบ•เบดเบ”เบขเบนเปˆเบเบฑเบšเบกเบฑเบ™เบ—เบตเปˆเบ›เบฐเบเบญเบšเบกเบต token JWT เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™ เปเบฅเบฐเบฎเบนเป‰เบˆเบฑเบเป‚เบ”เบ Kubernetes. เป‚เบ—เป€เบ„เบฑเบ™เบ™เบตเป‰เบ–เบทเบเปƒเบชเปˆเปƒเบชเปˆเปƒเบ™เบžเบญเบ”เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.
  2. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบซเบผเบทเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเบฒเบเปƒเบ™เบเบฑเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเปƒเบซเป‰เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบˆเบฐเบ›เบฐเบเบญเบšเบกเบต token เปเบฅเบฐเบŠเบทเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™เบžเบดเป€เบชเบ” เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” (เบ›เบฐเป€เบžเบ” Kubernetes). เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ—เบต 2 เบ™เบตเป‰โ€‹เบเบปเบ‡โ€‹เบเบฑเบšโ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ—เบต 1 เบ‚เบญเบ‡โ€‹เปเบœเบ™โ€‹เบงเบฒเบ” Consul (เป‚เบ„เบ‡โ€‹เบเบฒเบ™ 1).
  3. เบฅเบนเบเบ„เป‰เบฒ Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเปˆเบ‡เบ•เปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ™เบตเป‰เป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.
  4. MAGIC! เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Consul เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบšเบกเบฑเบ™เบเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบเปˆเบญเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เปเบœเบ™เบงเบฒเบ”เบญเบทเปˆเบ™เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบเบปเบ‡เบเบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 3, 4 เปเบฅเบฐ 5 เบ‚เบญเบ‡เปเบœเบ™เบงเบฒเบ”เบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ (เปเบœเบ™เบงเบฒเบ”เบ—เบต 1).
  5. เป€เบŠเบตเบšเป€เบงเบต Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ Consul token เบ”เป‰เบงเบเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ (เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”) เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡เบœเบนเป‰เบฎเป‰เบญเบ‡เบ‚เป. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเบชเบปเปˆเบ‡ token เบ™เบตเป‰เบ„เบทเบ™. เบ™เบตเป‰เบเบปเบ‡เบเบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 6 เบ‚เบญเบ‡เปเบœเบ™เบงเบฒเบ”เบเบปเบ‡เบชเบธเบ™ (เปเบœเบ™เบงเบฒเบ”เบ—เบต 1).
  6. เบฅเบนเบเบ„เป‰เบฒ Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡ token เป„เบ›เบซเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบซเบผเบทเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เป.

เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ เบซเบผเบทเบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป‚เบ—เป€เบ„เบฑเบ™ Consul เบ™เบตเป‰เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ•เบฒเบกเบ—เบตเปˆเบเบณเบ™เบปเบ”เป‚เบ”เบเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เบ‚เบญเบ‡ token.

เบงเบดเป€เบชเบ”เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบ!

เบชเบณเบฅเบฑเบšเบ—เปˆเบฒเบ™เปƒเบ”เบ—เบตเปˆเบšเปเปˆเบžเปเปƒเบˆเบเบฑเบšเบžเบฝเบ‡เปเบ•เปˆเบเบฐเบ•เปˆเบฒเบเบญเบญเบเบˆเบฒเบเปเบงเบ เปเบฅเบฐเบขเบฒเบเบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”... เปƒเบซเป‰เบ‚เป‰เบญเบเป€เบšเบดเปˆเบ‡เบงเปˆเบฒ เป€เบฅเบดเบเบŠเบถเป‰เบ‡เบ›เบฒเบ™เปƒเบ” เบ‚เบธเบกเบเบฐเบ•เปˆเบฒเบ".

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ‚เบฑเป‰เบ™เบ•เบญเบ™ "magic" เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ (เบฎเบนเบš 2: เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 4) เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Consul เบขเบทเบ™เบขเบฑเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบšเบกเบฑเบ™เบเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบเปˆเบญเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบเบปเบ‡เบเบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 3, 4 เปเบฅเบฐ 5 เบ‚เบญเบ‡เปเบœเบ™เบงเบฒเบ”เบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ (เปเบœเบ™เบงเบฒเบ”เบ—เบต 1). เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เปเบœเบ™เบงเบฒเบ” (เปเบœเบ™เบงเบฒเบ” 3), เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบˆเบดเบ‡ เบžเบฒเบเปƒเบ•เป‰ Hood เป„เบ”เป‰ เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบชเบฐเป€เบžเบฒเบฐ.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

เปเบœเบ™เบงเบฒเบ”เบ—เบต 3: เบ„เบงเบฒเบกเบงเบดเป€เบชเบ”เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบ!

  1. เป€เบ›เบฑเบ™เบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบฅเบนเบเบ„เป‰เบฒ Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบ•เปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ”เป‰เบงเบ token เบšเบฑเบ™เบŠเบต Kubernetes เปเบฅเบฐเบŠเบทเปˆเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰. เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบเบปเบ‡เบเบฑเบšเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 3 เปƒเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบงเบปเบ‡เบˆเบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.
  2. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Consul (เบซเบผเบทเบœเบนเป‰เบ™เปเบฒ) เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡ token เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบš. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบˆเบฐเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเบฑเบšเบเบธเปˆเบก Kubernetes (เบœเปˆเบฒเบ™เบฅเบนเบเบ„เป‰เบฒ Consul) เปเบฅเบฐ, เบ”เป‰เบงเบเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบญเบเบซเบฒเบงเปˆเบฒ token เป€เบ›เบฑเบ™เบ‚เบญเบ‡เปเบ—เป‰เบซเบผเบทเบšเปเปˆเปเบฅเบฐเบกเบฑเบ™เปเบกเปˆเบ™เบ‚เบญเบ‡เปƒเบœ.
  3. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบœเบนเป‰เบ™เปเบฒ Consul, เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Consul เบŠเบญเบเบซเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบˆเบฒเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš (เปเบฅเบฐเบ›เบฐเป€เบžเบ” Kubernetes).
  4. เบœเบนเป‰เบ™เปเบฒเบเบปเบ‡เบชเบธเบ™เบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰ (เบ–เป‰เบฒเบžเบปเบšเป€เบซเบฑเบ™) เปเบฅเบฐเบญเปˆเบฒเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบ—เบตเปˆเบ•เบดเบ”เบเบฑเบšเบกเบฑเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบญเปˆเบฒเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบšเบžเบงเบเบกเบฑเบ™เบเบฑเบšเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ•เบปเบงเบ•เบปเบ™เบ—เบตเปˆเบ–เบทเบเบขเบทเบ™เบขเบฑเบ™.
  5. เบ”เปˆเบฒ! เปƒเบซเป‰เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบต 5 เปƒเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบงเบปเบ‡เบˆเบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.

เปเบฅเปˆเบ™ Consul-server เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เบ›เบปเบเบเบฐเบ•เบด

เบˆเบฒเบเบ™เบตเป‰เป„เบ›, เบชเปˆเบงเบ™เบซเบผเบฒเบเบ‚เป‰เบญเบเบˆเบฐเปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡ POC เบ™เบตเป‰, เบกเบฑเบเบˆเบฐเบขเบนเปˆเปƒเบ™เบˆเบธเบ” bullet, เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเป€เบ•เบฑเบกเบ›เบฐเป‚เบซเบเบ. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ‚เป‰เบญเบเบˆเบฐเปƒเบŠเป‰ GCP เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบ•เปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเบšเปˆเบญเบ™เบญเบทเปˆเบ™.

  • เป€เบฅเบตเปˆเบกเป€เบ„เบทเปˆเบญเบ‡ virtual (เบ•เบปเบงเบขเปˆเบฒเบ‡/เป€เบŠเบตเบšเป€เบงเบต).

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

  • เบชเป‰เบฒเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเปเบฒเบฅเบฑเบš firewall (เบเบธเปˆเบกเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปƒเบ™ AWS):
  • เบ‚เป‰เบญเบเบกเบฑเบเบเปเบฒเบ™เบปเบ”เบŠเบทเปˆเป€เบ„เบทเปˆเบญเบ‡เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ—เบฑเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเปเบฅเบฐเปเบ—เบฑเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰ "skywiz-consul-server-poc".
  • เบŠเบญเบเบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเป€เบžเบตเปˆเบกเบกเบฑเบ™เปƒเบชเปˆเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆ IP เปเบซเบผเปˆเบ‡เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบชเปˆเบงเบ™เบ•เบดเบ”เบ•เปเปˆเบœเบนเป‰เปƒเบŠเป‰ (UI).
  • เป€เบ›เบตเบ”เบžเบญเบ” 8500 เบชเปเบฒเบฅเบฑเบš UI. เบเบปเบ” เบชเป‰เบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เปˆเบฝเบ™ firewall เบ™เบตเป‰เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปƒเบ™เป„เบงเป†เบ™เบตเป‰ [เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”].
  • เป€เบžเบตเปˆเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเป„เบŸเบงเปเปƒเบชเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡. เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒ dashboard VM เปƒเบ™ Consul Server เปเบฅเบฐเป€เบžเบตเปˆเบก "skywiz-consul-server-poc" เปƒเบชเปˆเบŠเปˆเบญเบ‡เปเบ—เบฑเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เบเบปเบ” Save.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

  • เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Consul เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ—เบตเปˆเบ™เบตเป‰. เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ Consul version โ‰ฅ 1.5 [link]
  • เปƒเบซเป‰เบชเป‰เบฒเบ‡ node Consul เบ”เบฝเบง - เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰.

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

  • เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Consul เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ cluster เบ‚เบญเบ‡ 3 nodes, เป€เบšเบดเปˆเบ‡ เบ—เบตเปˆเบ™เบตเป‰.
  • เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ /etc/consul.d/agent.json เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰ [เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”]:

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

  • เป€เบฅเบตเปˆเบกเป€เบŠเบตเบšเป€เบงเบต Consul เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

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

  • เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบšเบดเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบซเบผเบฒเบเปเบฅเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบ "... เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเบ–เบทเบเบšเบฅเบฑเบญเบเป‚เบ”เบ ACLs."
  • เบŠเบญเบเบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบต Consul เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ—เบตเปˆเบกเบตเบ—เบตเปˆเบขเบนเปˆ IP เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบžเบญเบ” 8500. เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ UI เป€เบ›เบตเบ”.
  • เบฅเบญเบ‡เป€เบžเบตเปˆเบกเบ„เบนเปˆเบ„เบต/เบ„เปˆเบฒ. เบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป‚เบซเบฅเบ”เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Consul เบ”เป‰เบงเบ ACL เปเบฅเบฐเบ›เบดเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบฑเบ‡เบซเบกเบปเบ”.
  • เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒ Shell เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เป€เบŠเบตเบšเป€เบงเบต Consul เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ™เบžเบทเป‰เบ™เบซเบฅเบฑเบ‡เบซเบผเบทเบšเบฒเบ‡เบงเบดเบ—เบตเบญเบทเปˆเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เปเบฅเปˆเบ™เปเบฅเบฐเปƒเบชเปˆเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

consul acl bootstrap

  • เบŠเบญเบเบซเบฒเบ„เปˆเบฒ "SecretID" เปเบฅเบฐเบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒ UI. เปƒเบ™เปเบ–เบš ACL, เปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเบ‚เบญเบ‡ token เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบซเบฒเบเปเปˆเบชเบณเป€เบ™เบปเบฒ. เบชเบณเป€เบ™เบปเบฒ SecretID เป„เบ›เบšเปˆเบญเบ™เบญเบทเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡.
  • เบ•เบญเบ™เบ™เบตเป‰เป€เบžเบตเปˆเบกเบ„เบนเปˆเบ„เบต/เบ„เปˆเบฒ. เบชเปเบฒเบฅเบฑเบš POC เบ™เบตเป‰, เปƒเบซเป‰เป€เบžเบตเปˆเบกเบชเบดเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: key: โ€œcustom-ns/test_keyโ€, เบ„เปˆเบฒ: โ€œเบ‚เป‰เบญเบเบขเบนเปˆเปƒเบ™เป‚เบŸเป€เบ”เบต custom-ns!โ€

เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบเบธเปˆเบก Kubernetes เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ Consul เป€เบ›เบฑเบ™ Daemonset

  • เบชเป‰เบฒเบ‡เบเบธเปˆเบก K8s (Kubernetes). เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบ‚เบ”เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบง, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ subnet เบ”เบฝเบงเบเบฑเบ™เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบเบฑเบšเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเปƒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบญเบตเป‰เบ™เบกเบฑเบ™เบงเปˆเบฒ "skywiz-app-with-consul-client-poc".

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

  • เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบšเบฑเบ™เบ—เบถเบเบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบชเบญเบ™เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบ‚เป‰เบญเบเบžเบปเบšเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ•เบฑเป‰เบ‡เบเบธเปˆเบก POC Consul เบเบฑเบš Consul Connect.
  • เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเปƒเบŠเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบกเบงเบเบเบฑเบ™เบเบฐเบ—เบปเบš Hashicorp เบ—เบตเปˆเบกเบตเป„เบŸเบฅเปŒเบกเบนเบ™เบ„เปˆเบฒเบ‚เบฐเบซเบเบฒเบ.
  • เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Helm. เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹:

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

  • เป€เบกเบทเปˆเบญเบกเบฑเบ™เบžเบฐเบเบฒเบเบฒเบกเปเบฅเปˆเบ™, เบกเบฑเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Consul, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบžเบงเบเบกเบฑเบ™.
  • เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ” โ€œเป„เบฅเบเบฐเบ—เบตเปˆเบขเบนเปˆ Podโ€ เบ—เบตเปˆเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ dashboard เบ‚เบญเบ‡เบเบธเปˆเบก เปเบฅเบฐเบชเบปเปˆเบ‡เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบเบปเบ”เบฅเบฐเบšเบฝเบšเป„เบŸเบงเปเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ โ€œskywiz-consul-server-pocโ€.
  • เป€เบžเบตเปˆเบกเบŠเปˆเบงเบ‡เบ—เบตเปˆเบขเบนเปˆเบชเบณเบฅเบฑเบšเบžเบญเบ”เปƒเบชเปˆเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบขเบนเปˆ IP เปเบฅเบฐเป€เบ›เบตเบ”เบžเบญเบ” 8301 เปเบฅเบฐ 8300.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

  • เป„เบ›เบ—เบตเปˆ Consul UI เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบตเบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบเบธเปˆเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เปเบ–เบš nodes.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เป‚เบ”เบเบเบฒเบ™เบฅเบงเบกเบเบปเบ‡เบชเบธเบ™เบเบฑเบš Kubernetes

  • เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒ Consul server shell เปเบฅเบฐเบชเบปเปˆเบ‡เบญเบญเบ token เบ—เบตเปˆเบ—เปˆเบฒเบ™เบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰:

export CONSUL_HTTP_TOKEN=<SecretID>

  • เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบธเปˆเบก Kubernetes เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡:
  • 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:

  • token เปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” base64, เบชเบฐเบ™เบฑเป‰เบ™ decrypt เบกเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบ—เปˆเบฒเบ™เบกเบฑเบ [เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”]
  • 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"'

เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹

เบชเบดเบ”เบ—เบดเปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡

  • เบชเป‰เบฒเบ‡เบชเบดเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบซเป‰ Consul เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบงเบ”เบชเบญเบšเปเบฅเบฐเบฅเบฐเบšเบธเบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡ token เบšเบฑเบ™เบŠเบตเบšเปเบฅเบดเบเบฒเบ™ K8s.
  • เบ‚เบฝเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปƒเบชเปˆเป„เบŸเบฅเปŒ [link]:

###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

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ Consul

  • เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰ เบ—เบตเปˆเบ™เบตเป‰เบกเบตเบซเบผเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš daemonset, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เปเบเป‰เป„เบ‚เบ‡เปˆเบฒเบเป†เบ•เปเปˆเป„เบ›เบ™เบตเป‰:
  • เบ™เบณเปƒเบŠเป‰เป„เบŸเบฅเปŒเบ•เปเปˆเป„เบ›เบ™เบตเป‰ [เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”].

### 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

  • เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ buildin เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ 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

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบงเบดเบ—เบตเบเบฒเบ™เบเบงเบ”เบชเบญเบš

เบšเบฑเบ”เบ™เบตเป‰เป€เบฎเบปเบฒเบกเบฒเป€เบšเบดเปˆเบ‡เบงเบดเป€เบชเบ”เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”!

  • เบชเป‰เบฒเบ‡เป‚เบŸเบ™เป€เบ”เบตเบซเบผเบฑเบเบซเบผเบฒเบเบญเบฑเบ™เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบฅเบฐเบ”เบฑเบšเป€เบ—เบดเบ‡เบ”เบฝเบงเบเบฑเบ™ (i.e. /sample_key) เปเบฅเบฐเบ„เปˆเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบ. เบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเปเบฅเบฐเบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบซเบกเปˆ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ” Kubernetes เบ‚เบญเบ‡เบเบปเบ‡เบชเบธเบ™ Hashicorp

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš namespace เปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡:

  • เบกเบฒเบชเป‰เบฒเบ‡ namespace เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡:

kubectl create namespace custom-ns

  • เบกเบฒเบชเป‰เบฒเบ‡ pod เปƒเบ™ namespace เปƒเปเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ‚เบฝเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฑเบ.

###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

  • เป€เบกเบทเปˆเบญเบ–เบฑเบ‡เปเบฅเปˆเบ™, เป„เบ›เบ—เบตเปˆเบ™เบฑเป‰เบ™เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡ curl.

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

  • เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเป„เบ›เบซเบฒ Consul เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ [เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”].
  • เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เป‚เบ—เป€เบ„เบฑเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเบˆเบฒเบเบšเบฑเบ™เบŠเบตเบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

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>โ€

  • เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” base64 เบ–เบญเบ”เบฅเบฐเบซเบฑเบ” "Value" เปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เบเบปเบ‡เบเบฑเบšเบ„เปˆเบฒเปƒเบ™ custom-ns/test_key เปƒเบ™ UI. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบ„เปˆเบฒเบ”เบฝเบงเบเบฑเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เปƒเบ™เบšเบปเบ”เบชเบญเบ™เบ™เบตเป‰, เบ„เปˆเบฒเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบˆเบฐเป€เบ›เบฑเบ™ IkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบšเบฑเบ™เบŠเบตเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบœเบนเป‰เปƒเบŠเป‰:

  • เบชเป‰เบฒเบ‡เบšเบฑเบ™เบŠเบตเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡เป‚เบ”เบเปƒเบŠเป‰เบ„เบณเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰ [เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”].

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

  • เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบš pod เป„เบ”เป‰. เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ‚เป‰เบญเบเบฅเบงเบกเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ curl เป€เบžเบทเปˆเบญเบ›เบฐเบซเบเบฑเบ”เปเบฎเบ‡เบ‡เบฒเบ™ :)

###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) เบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ "custom-sa/".
b) เบชเป‰เบฒเบ‡เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”, เป‚เบ—เบซเบฒเบกเบฑเบ™ " custom-sa-role "
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". เบ„เบงเบฒเบกโ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”!
  • เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป€เบžเบทเปˆเบญ custom-sa/ key path.

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

  • เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒ token เบ™เบตเป‰เบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ kv เปƒเบ™ "custom-ns/". เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เปˆเบฝเบ™ "custom-sa" เบเบฑเบšเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ "custom-ns".
    เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”.

เบ•เบปเบงเบขเปˆเบฒเบ‡ overlay:

  • เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบœเบนเบเบกเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆ token เบ—เบตเปˆเบกเบตเบชเบดเบ”เบ—เบดเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.
  • เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ "poc-ubuntu-custom-sa" เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ namespace เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ - เบชเบฐเบ™เบฑเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.
  • เป€เบฎเบฑเบ”เบŠเป‰เบณเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ:
    a) เบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบš "default/" เบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.
    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" เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเป€เบ‚เบปเป‰เบฒเบซเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ kvv "default/".
  • เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”.
    เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ token เปƒเบ™ UI เบžเบฒเบเปƒเบ•เป‰ ACL > Token. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, token เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡ "เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ” custom-sa-" เบ•เบดเบ”เบเบฑเบšเบกเบฑเบ™. เป‚เบ—เป€เบ„เบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเบณเบฅเบฑเบ‡เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบ‚เบฐเบ™เบฐเบ™เบตเป‰ เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš เปเบฅเบฐเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบเบปเบ”เบ—เบตเปˆเบœเบนเบเบกเบฑเบ”เบญเบฑเบ™เบ”เบฝเบงเบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบญเบตเบเบ„เบฑเป‰เบ‡ เปเบฅเบฐเปƒเบŠเป‰เป‚เบ—เป€เบ„เบฑเบ™เปƒเปเปˆ.
  • เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เบˆเบฒเบเบ—เบฑเบ‡เบชเบญเบ‡ "custom-sa/" เปเบฅเบฐ "default/" เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ kv.
    เบ„เบงเบฒเบกโ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”!
    เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒ "poc-ubuntu-custom-sa" เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบปเบ‡เบเบฑเบš "custom-sa" เปเบฅเบฐ "default-ns" เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบš.

เบชเบฐเบซเบฅเบธเบš

TTL token mgmt?

เปƒเบ™เป€เบงเบฅเบฒเบ‚เบฝเบ™เบ™เบตเป‰, เบšเปเปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ” TTL เบชเปเบฒเบฅเบฑเบš tokens เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ™เบตเป‰. เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เบตเปˆเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบเบปเบ‡เบชเบธเบ™.

เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ token เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ”เป‰เบงเบ TTL:

  • https://www.consul.io/docs/acl/acl-system.html#acl-tokens
    เป€เบงเบฅเบฒเปเบปเบ”เบญเบฒเบเบธ - เป€เบงเบฅเบฒเบ—เบตเปˆ token เบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ–เบญเบ™เบ„เบทเบ™. (เบ—เบฒเบ‡เป€เบฅเบทเบญเบ; เป€เบžเบตเปˆเบกเปƒเบ™ Consul 1.5.0)
  • เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ / เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ„เบนเปˆเบกเบท https://www.consul.io/api/acl/tokens.html#expirationtime

เบซเบงเบฑเบ‡เบงเปˆเบฒเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบญเบฑเบ™เปƒเบเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡ tokens (เบ•เปเปˆเบเบปเบ”เบฅเบฐเบšเบฝเบšเบซเบผเบทเบงเบดเบ—เบตเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”) เปเบฅเบฐเป€เบžเบตเปˆเบก TTL.

เบˆเบปเบ™เบเปˆเบงเบฒเบ™เบฑเป‰เบ™, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเปเบ™เบฐเบ™เปเบฒเบงเปˆเบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบˆเบธเบ”เบชเบดเป‰เบ™เบชเบธเบ”เบญเบญเบเบˆเบฒเบเบฅเบฐเบšเบปเบšเปƒเบ™เป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบญเบทเปˆเบ™เป†เปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™