Rook - เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš Kubernetes

Rook - เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš Kubernetes

เปƒเบ™เบงเบฑเบ™เบ—เบต 29 เบกเบฑเบ‡เบเบญเบ™, เบ„เบฐเบ™เบฐเบเปเบฒเบกเบฐเบเบฒเบ™เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™เบ‚เบญเบ‡ CNCF (Cloud Native Computing Foundation), เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบฅเบฑเบ‡ Kubernetes, Prometheus เปเบฅเบฐเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ Open Source เบญเบทเปˆเบ™เป†เบˆเบฒเบเป‚เบฅเบเบ‚เบญเบ‡ containers เปเบฅเบฐ cloud native, เบ›เบฐโ€‹เบเบฒเบ” เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ เบฎเบญเบ เบขเบนเปˆเปƒเบ™เบญเบฑเบ™เบ”เบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เป€เบ›เบฑเบ™เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”เบ—เบตเปˆเบˆเบฐเบฎเบนเป‰เบˆเบฑเบเบเบฑเบš "เบœเบนเป‰เบˆเบฑเบ”เบงเบฒเบ‡เบเบฒเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ—เบตเปˆเปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™ Kubernetes."

Rook เบ›เบฐเป€เบžเบ”เปƒเบ”?

เบฎเบญเบ เปเบกเปˆเบ™เบŠเบญเบšเปเบงเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Go (เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบžเบฒเบโ€‹เปƒเบ•เป‰โ€‹เบเบฒเบ™โ€‹เบŸเบฃเบต Apache License 2.0), เบญเบญเบโ€‹เปเบšเบšโ€‹เป€เบžเบทเปˆเบญโ€‹เปƒเบซเป‰โ€‹เบชเบฒเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒ เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹, เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ›เบดเปˆเบ™โ€‹เบ›เบปเบงโ€‹เบ”เป‰เบงเบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, Rook เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” (เบชเปเบฒเบฅเบฑเบšเบฎเป‰เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก Kubernetes): เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, bootstrapping, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบเบฒเบ™เบˆเบฑเบ”เบซเบฒ, เบ‚เบฐเบซเบ™เบฒเบ”, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡, เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ, เบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเป„เบžเบžเบดเบšเบฑเบ”, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เปเบกเปˆเบ™โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบญเบฑเบ™โ€‹เบŸเบฒโ€‹เปเบฅเบฐโ€‹เบŠเปˆเบฝเบงโ€‹เบŠเบฒเบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบงเบฒเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบ—เบตเปˆโ€‹เปเบˆเบโ€‹เบขเบฒเบ Ceph เปƒเบ™โ€‹เบเบธเปˆเบก Kubernetesโ€‹. เบœเบนเป‰เบ‚เบฝเบ™เบเบฑเบ‡เบ›เบฐเบเบฒเบ”เปเบœเบ™เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบญเบทเปˆเบ™เป†, เปเบ•เปˆเบ™เบตเป‰เบˆเบฐเบšเปเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเบ•เปเปˆเป„เบ›.

เบญเบปเบ‡เบ›เบฐเบเบญเบšเปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™เบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™

เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ Rook เบžเบฒเบเปƒเบ™ Kubernetes เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบžเบดเป€เบชเบ” (เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ‚เบฝเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบš Kubernetes Operators เปƒเบ™ เบšเบปเบ”เบ‚เบฝเบ™เบ™เบตเป‰), เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบญเบ‡เบกเบฑเบ™.

เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™ เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™ Rook เบ›เบฐเบเบปเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™เบ–เบฑเบ‡เบšเบฑเบ™เบˆเบธเบ—เบตเปˆเบšเบฑเบ™เบˆเบธเบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบฅเบฐเบเบฒเบ™เบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒ repository เบ•เปเปˆเบกเบฒ. เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ›เบฐเบเบญเบšเบกเบต:

  • เบเบฒเบ™เบชเป‰เบฒเบ‡ DaemonSet เบชเปเบฒเบฅเบฑเบš daemon เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ Ceph (ceph-osd) เบเบฑเบšเบเบธเปˆเบก RADOS เบ‡เปˆเบฒเบเบ”เบฒเบ;
  • เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฑเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš Ceph (เบˆเบฒเบ ceph-mon, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบเบธเปˆเบก; เบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบก, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”, เบชเบฒเบกเบชเปเบฒเป€เบ™เบปเบฒเบ–เบทเบเบ™เปเบฒเป„เบ›เปƒเบŠเป‰, เปเบฅเบฐเบ–เป‰เบฒเบญเบฑเบ™เปƒเบ”เบ•เบปเบเบฅเบปเบ‡, เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™);
  • เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡ CRDs (เบ„เปเบฒเบ™เบดเบเบฒเบกเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡) เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹ เบเบธเปˆเบก, เบชเบฐเบฅเบญเบเบ™เป‰เบณ, เบฎเป‰เบฒเบ™เบ‚เบฒเบเบงเบฑเบ”เบ–เบธ (เบŠเบธเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป HTTP เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ” PUT/GET เปƒเบ™เบงเบฑเบ”เบ–เบธ - เบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš S3 เปเบฅเบฐ Swift API)เปเบฅเบฐ เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ;
  • เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฑเบเป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เปเบปเบ”;
  • เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบ—เบ™ Rook.

เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡ Rook เบ–เบทเบเบชเบฐเปเบ”เบ‡เป‚เบ”เบ pods เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เปเบ•เปˆเบฅเบฐเบ‚เปเป‰ Kubernetes. เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบ•เบปเบงเปเบ—เบ™เปเบกเปˆเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ plugin FlexVolume, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™ Kubernetes. เบ•เบปเบงเปเบ—เบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ: เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, mounts เบ›เบฐเบฅเบดเบกเบฒเบ™, เบฎเบนเบšเปเบšเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

Rook - เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš Kubernetes
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ เปเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš Rook เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบเบธเปˆเบก Kubernetes เป‚เบ”เบเบฅเบงเบก

Rook เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฒเบกเบ›เบฐเป€เบžเบ”:

  1. เบ•เบฑเบ™ (Block, StorageClass) โ€” mounts เบเบฒเบ™ เป€เบเบฑเบš เบฎเบฑเบ เบชเบฒ เป€เบ›เบฑเบ™ hearth เบ”เบฝเบง;
  2. เบงเบฑเบ”เบ–เบธ (เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡, ObjectStore) - เบกเบตเบขเบนเปˆเบžเบฒเบเปƒเบ™ เปเบฅเบฐเบ™เบญเบเบเบธเปˆเบก Kubernetes (เบœเปˆเบฒเบ™ S3 API);
  3. เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™ (เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™, Filesystem) เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐเบ‚เบฝเบ™เบˆเบฒเบเบซเบผเบฒเบเบเบฑเบ.

เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ Rook เบ›เบฐเบเบญเบšเบกเบต:

  • Mons โ€” เบเบฑเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš Ceph (เบเบฑเบš ceph-mon เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบฅเป‰เบง);
  • OSDs - เบเบฑเบเบ—เบตเปˆเบกเบต daemon ceph-osd (Object Storage Daemons);
  • M.G.R. - เบเบฑเบเบ—เบตเปˆเบกเบตเบœเบต ceph-mgr (Ceph Manager), เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบžเบฒเบเบ™เบญเบ (เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก / เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก);
  • RGW (เบ—เบฒเบ‡เป€เบฅเบทเบญเบ) โ€” เบเบฑเบเบ—เบตเปˆเบกเบตเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบงเบฑเบ”เบ–เบธ;
  • MDS (เบ—เบฒเบ‡เป€เบฅเบทเบญเบ) - เบเบฑเบเบ—เบตเปˆเบกเบตเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™.

Rook - เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš Kubernetes

Rook daemon เบ—เบฑเบ‡เปเบปเบ” (Mons, OSDs, MGR, RGW, MDS) เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ›เบฑเบ™เบ„เบนเปˆเบ”เบฝเบง (rook) เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบชเบฑเป‰เบ™เป†เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ Rook, เบชเบฑเป‰เบ™เบ™เบตเป‰ (12 slides) เบญเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”. เบเบฒเบ™ เบ™เบณ เบชเบฐ เป€เปœเบต เบˆเบฒเบ Bassam Tabbara (CTO เบขเบนเปˆ Quantum Corp).

เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Rook เป„เบ”เป‰

เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™ Rook เบฎเบญเบ‡เบฎเบฑเบš Kubernetes เป€เบงเบตเบŠเบฑเบ™ 1.6 เปเบฅเบฐเบชเบนเบ‡เบเบงเปˆเบฒเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™ (เปเบฅเบฐ, เบšเบฒเบ‡เบชเปˆเบงเบ™, เบเบฒเบ™เบ›เปˆเบญเบ K8s เป€เบเบปเปˆเบฒ - 1.5.2). เบ‚เบญเบ‡โ€‹เบžเบฃเบฐโ€‹เบญเบปเบ‡ เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ ะฒ เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ” เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yaml

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™ Rook เปเบกเปˆเบ™เบเบฒเบ™เบเบฐเบเบฝเบก เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบกเบงเบเบเบฑเบ™เบเบฐเบ—เบปเบš, เบ‚เปโ€‹เบ‚เบญเบšโ€‹เปƒเบˆโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบตเป‰โ€‹:

helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook

เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ—เบตเปˆเบกเบตเบขเบนเปˆ เบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบดเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ RBAC, เบ–เป‰เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เบšเปเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบธเปˆเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™), เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป„เบ›เบซเบฒ helm install เบœเปˆเบฒเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต --set key=value[,key=value] (เบซเบผเบทเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒ YAML เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบฅเบฐเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™ -f values.yaml).

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Rook operator เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบง pods เบเบฑเบšเบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบกเบฑเบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบก Rook เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰ (rook-cluster.yaml):

apiVersion: v1
kind: Namespace
metadata:
  name: rook
---
apiVersion: rook.io/v1alpha1
kind: Cluster
metadata:
  name: rook
  namespace: rook
spec:
  dataDirHostPath: /var/lib/rook
  storage:
    useAllNodes: true
    useAllDevices: false
    storeConfig:
      storeType: bluestore
      databaseSizeMB: 1024
      journalSizeMB: 1024

ะŸั€ะธะผะตั‡ะฐะฝะธะต: เบ„เบงเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเป€เบ›เบฑเบ™เบžเบดเป€เบชเบ”เบ•เปเปˆเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ dataDirHostPath, เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบเบธเปˆเบกเบซเบผเบฑเบ‡เบˆเบฒเบ reboots. เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเปƒเบŠเป‰เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ–เบฒเบงเบญเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Rook เปƒเบ™ Kubernetes hosts, เบœเบนเป‰เบ‚เบฝเบ™เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบกเบตเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ 5 GB เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰.

เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบธเปˆเบกเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ pods เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบเบธเปˆเบก (เปƒเบ™ namespace. rook):

kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
NAME                              READY     STATUS    RESTARTS   AGE
rook-api-1511082791-7qs0m         1/1       Running   0          5m
rook-ceph-mgr0-1279756402-wc4vt   1/1       Running   0          5m
rook-ceph-mon0-jflt5              1/1       Running   0          6m
rook-ceph-mon1-wkc8p              1/1       Running   0          6m
rook-ceph-mon2-p31dj              1/1       Running   0          6m
rook-ceph-osd-0h6nb               1/1       Running   0          5m

เบเบปเบเบฅเบฐเบ”เบฑเบš Rook cluster (เป€เบ–เบดเบ‡เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆ) เปเบกเปˆเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบ™เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Rook เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบขเบนเปˆเปƒเบ™ "เบชเบธเบ‚เบฐเบžเบฒเบš" เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบฅเบฑเบ”. เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เป‚เบ”เบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ Rook เบฎเบธเปˆเบ™ 0.5.0 เบซเบฒ 0.5.1 เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™.

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

Rook - เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš Kubernetes
Rook - เป€เบ›เบฑเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบšเปเบฅเบดเบเบฒเบ™เบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš Kubernetes

เบ„เบงเบฒเบกเบ„เบฒเบ”เบซเบงเบฑเบ‡

เบชเบฐเบ–เบฒเบ™เบฐเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡ Rook เปเบกเปˆเบ™ alpha, เปเบฅเบฐเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เปƒเบซเบเปˆเบซเบผเป‰เบฒเบชเบธเบ”เบกเบฒเบฎเบญเบ”เบ›เบฐเบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™ เบฎเบธเปˆเบ™ 0.6, เบ›เปˆเบญเบเบญเบญเบเบกเบฒเป€เบกเบทเปˆเบญเป€เบ”เบทเบญเบ™เบžเบฐเบˆเบดเบ 2017 (เบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™ - v0.6.2 - เบญเบญเบเบกเบฒเปƒเบ™เบงเบฑเบ™เบ—เบต 14 เบ—เบฑเบ™เบงเบฒ). เปเบฅเป‰เบงเปƒเบ™เป€เบ„เบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ›เบต 2018, เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบญเบเป€เบงเบตเบŠเบฑเบ™เบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒเบ„เบท: เป€เบšเบ•เป‰เบฒ เปเบฅเบฐ เบ„เบงเบฒเบกเปเบฑเป‰เบ™เบ„เบปเบ‡ (เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”).

เบญเบตเบ‡เบ•เบฒเบกเบเบฒเบ™ roadmap เป‚เบ„เบ‡เบเบฒเบ™, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบตเบงเบดเป„เบชเบ—เบฑเบ”เบฅเบฐเบญเบฝเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ Rook เปƒเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบชเบญเบ‡เบฅเบธเป‰เบ™เบ•เปเปˆเป„เบ›: 0.7 (เบ„เบงเบฒเบกเบžเป‰เบญเบกเบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ GitHub tracker. เบ–เบทเบเบ›เบฐเป€เบกเบตเบ™เบœเบปเบ™ เป€เบ›เบฑเบ™ 60%) เปเบฅเบฐ 0.8. เปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰เปเบกเปˆเบ™เบเบฒเบ™เป‚เบญเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš Ceph Block เปเบฅเบฐ Ceph Object เป„เบ›เบชเบนเปˆเบชเบฐเบ–เบฒเบ™เบฐเป€เบงเบตเบŠเบฑเบ™เป€เบšเบ•เป‰เบฒ, เบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบชเปเบฒเบฅเบฑเบš CephFS, เบฅเบฐเบšเบปเบšเบšเบฑเบ™เบ—เบถเบเปเบšเบšเบžเบดเป€เบชเบ”, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบธเปˆเบกเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบฎเบนเบšเบชเปเบฒเบฅเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™.

เป€เบญเบปเบฒ Rook เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบˆเปเบฒเบ™เบงเบ™ เป‚เบ„เบ‡เบเบฒเบ™ CNCF (เบกเบฒเป€เบ–เบดเบ‡เบ•เบญเบ™เบ™เบฑเป‰เบ™เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เบปเป‰เบ™ - "เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™" - เป€เบ—เบปเปˆเบฒเบเบฑเบš เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ ะธ CoreDNS) เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ„เปเป‰เบฒเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เปƒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™. เบงเบดเบ—เบตเบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ foothold เปƒเบ™เป‚เบฅเบเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ cloud เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡เป€เบกเบทเปˆเบญเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ, เป€เบŠเบดเปˆเบ‡เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบˆเบฐเบ™เปเบฒเป€เบญเบปเบฒเบœเบนเป‰เบ—เบปเบ”เบชเบญเบšเปƒเบซเบกเปˆเปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ Rook.

PS

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

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

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