Rook - แžƒแŸ’แž›แžถแŸ†แž„แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŸแŸแžœแžถแž€แž˜แŸ’แž˜แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Kubernetes

Rook - แžƒแŸ’แž›แžถแŸ†แž„แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŸแŸแžœแžถแž€แž˜แŸ’แž˜แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Kubernetes

แž“แŸ…แžแŸ’แž„แŸƒแž‘แžธ 29 แžแŸ‚แž˜แž€แžšแžถ แž‚แžŽแŸˆแž€แž˜แŸ’แž˜แžถแž’แžทแž€แžถแžšแž”แž…แŸ’แž…แŸแž€แž‘แŸแžŸแž“แŸƒ CNCF (Cloud Native Computing Foundation) แžŠแŸ‚แž›แž‡แžถแžขแž„แŸ’แž‚แž€แžถแžšแž“แŸ…แž–แžธแž€แŸ’แžšแŸ„แž™ Kubernetes, Prometheus แž“แžทแž„แž•แž›แžทแžแž•แž› Open Source แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแž–แžธแž–แžทแž—แž–แž€แžปแž„แžแžบแž“แŸแžš แž“แžทแž„แž–แž–แž€แžŠแžพแž˜แŸ” แž”แžถแž“แž”แŸ’แžšแž€แžถแžŸ แžขแŸ†แž–แžธแž€แžถแžšแž‘แž‘แžฝแž›แž™แž€แž‚แž˜แŸ’แžšแŸ„แž„ แžšแžถแž€แŸ‹ แž‘แŸ…แž€แŸ’แž“แžปแž„แž‡แžฝแžšแžšแž”แžŸแŸ‹แž–แžฝแž€แž‚แŸแŸ” แžฑแž€แžถแžŸแžŠแŸแž›แŸ’แžขแžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แž‚แžถแž›แŸ‹ "แžขแŸ’แž“แž€แžšแŸ€แž”แž…แŸ†แžŸแŸ’แžแžปแž€แž…แŸ‚แž€แž…แžถแž™แž“แŸ…แž€แŸ’แž“แžปแž„ Kubernetes" แž“แŸแŸ‡แŸ”

แžแžพ Rook แž”แŸ‚แž”แžŽแžถ?

แžšแžถแž€แŸ‹ แž‚แžบแž‡แžถแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŠแŸ‚แž›แžŸแžšแžŸแŸแžšแž€แŸ’แž“แžปแž„ Go (แž…แŸ‚แž€แž…แžถแž™โ€‹แžŠแŸ„แž™ แž€แŸ’แžšแŸ„แž˜แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ Apache 2.0 แžฅแžแž‚แžทแžแžแŸ’แž›แŸƒ) แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แžšแž…แž“แžถแžกแžพแž„แžŠแžพแž˜แŸ’แž”แžธแž•แŸ’แžแž›แŸ‹แžƒแŸ’แž›แžถแŸ†แž„แž‘แžทแž“แŸ’แž“แž“แŸแž™แž‡แžถแž˜แžฝแž™แž“แžนแž„แž˜แžปแžแž„แžถแžšแžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแžŠแŸ‚แž›แž’แŸ’แžœแžพแžฑแŸ’แž™แž–แžฝแž€แžœแžถ แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แžแŸ’แž›แžฝแž“แžฏแž„ แž€แžถแžšแž’แŸ’แžœแžพแž˜แžถแžแŸ’แžšแžŠแŸ’แž‹แžถแž“แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„ แž“แžทแž„แž€แžถแžšแž–แŸ’แž™แžถแž”แžถแž›แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แŸ”. แžŠแžพแž˜แŸ’แž”แžธแž’แŸ’แžœแžพแžŠแžผแž…แž“แŸแŸ‡ Rook แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžท (แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แž“แŸ’แž›แŸ‚แž„แž•แŸ’แž‘แžปแž€แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŠแŸ‚แž›แž”แŸ’แžšแžพแž€แŸ’แž“แžปแž„แž”แžšแžทแž™แžถแž€แžถแžŸ Kubernetes)แŸ– แž€แžถแžšแžŠแžถแž€แŸ‹แž–แž„แŸ’แžšแžถแž™ แž€แžถแžšแž…แžถแž”แŸ‹แž•แŸ’แžŠแžพแž˜แž”แŸ’แžšแž–แŸแž“แŸ’แž’ แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แž€แžถแžšแž•แŸ’แžแž›แŸ‹ แž€แžถแžšแž’แŸ’แžœแžพแž˜แžถแžแŸ’แžšแžŠแŸ’แž‹แžถแž“ แž€แžถแžšแž’แŸ’แžœแžพแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž—แžถแž– แž€แžถแžšแž’แŸ’แžœแžพแž…แŸ†แžŽแžถแž€แžŸแŸ’แžšแžปแž€ แž€แžถแžšแžŸแž„แŸ’แž‚แŸ’แžšแŸ„แŸ‡แž‚แŸ’แžšแŸ„แŸ‡แž˜แž แž“แŸ’แžแžšแžถแž™ แž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™ แž“แžทแž„แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž’แž“แž’แžถแž“แŸ”

แž‚แž˜แŸ’แžšแŸ„แž„แž“แŸแŸ‡แžŸแŸ’แžแžทแžแž€แŸ’แž“แžปแž„แžŠแŸ†แžŽแžถแž€แŸ‹แž€แžถแž›แžขแžถแž›แŸ‹แž แŸ’แžœแžถ แž แžพแž™แž˜แžถแž“แž‡แŸ†แž“แžถแž‰แž€แŸ’แž“แžปแž„แž€แžถแžšแžšแŸ€แž”แž…แŸ†แž”แŸ’แžšแž–แŸแž“แŸ’แž’แž•แŸ’แž‘แžปแž€แž…แŸ‚แž€แž…แžถแž™ Ceph แž“แŸ…แž€แŸ’แž“แžปแž„แž…แž„แŸ’แž€แŸ„แž˜ Kubernetes แŸ” แžขแŸ’แž“แž€โ€‹แž“แžทแž–แž“แŸ’แž’โ€‹แž€แŸโ€‹แž”แŸ’แžšแž€แžถแžŸโ€‹แž–แžธโ€‹แž‚แž˜แŸ’แžšแŸ„แž„โ€‹แž‚แžถแŸ†แž‘แŸ’แžšโ€‹แž”แŸ’แžšแž–แŸแž“แŸ’แž’โ€‹แž•แŸ’แž‘แžปแž€โ€‹แž‘แžทแž“แŸ’แž“แž“แŸแž™โ€‹แž•แŸ’แžŸแŸแž„โ€‹แž‘แŸ€แžโ€‹แžŠแŸ‚แžš แž”แŸ‰แžปแž“แŸ’แžแŸ‚โ€‹แžœแžถโ€‹แž“แžนแž„โ€‹แž˜แžทแž“โ€‹แž€แžพแžโ€‹แžกแžพแž„โ€‹แž“แŸ…โ€‹แž€แŸ’แž“แžปแž„โ€‹แž€แžถแžšโ€‹แž…แŸแž‰โ€‹แž•แŸ’แžŸแžถแž™โ€‹แž”แž“แŸ’แž‘แžถแž”แŸ‹โ€‹แž‘แŸ€แžโ€‹แž‘แŸแŸ”

แžŸแž˜แžถแžŸแž’แžถแžแžปแž“แžทแž„แžงแž”แž€แžšแžŽแŸแž”แž…แŸ’แž…แŸแž€แž‘แŸแžŸ

แž€แžถแžšแž„แžถแžšแžšแž”แžŸแŸ‹ Rook แž“แŸ…แžแžถแž„แž€แŸ’แž“แžปแž„ Kubernetes แž‚แžบแž•แŸ’แžขแŸ‚แž€แž›แžพแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžšแž–แžทแžŸแŸแžŸ (แž™แžพแž„แž”แžถแž“แžŸแžšแžŸแŸแžšแž”แž“แŸ’แžแŸ‚แž˜แžขแŸ†แž–แžธ Kubernetes Operators แž“แŸ…แž€แŸ’แž“แžปแž„ แžขแžแŸ’แžแž”แž‘แž“แŸแŸ‡)แžŠแŸ‚แž›แž’แŸ’แžœแžพแžฒแŸ’แž™แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž•แŸ’แž‘แžปแž€แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžท แž“แžทแž„แžขแž“แžปแžœแžแŸ’แžแž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™แžšแž”แžŸแŸ‹แžœแžถแŸ”

แž แžพแž™แžŠแžผแž…แŸ’แž“แŸแŸ‡, แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžš Rook แž˜แžพแž›แž‘แŸ…แžŠแžผแž…แž‡แžถแž€แžปแž„แžแžบแž“แŸแžšแžŠแŸ‚แž›แž˜แžถแž“แžขแŸ’แžœแžธแž‚แŸ’แžšแž”แŸ‹แž™แŸ‰แžถแž„แžŠแŸ‚แž›แž…แžถแŸ†แž”แžถแž…แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŠแžถแž€แŸ‹แž–แž„แŸ’แžšแžถแž™ แž“แžทแž„แž€แžถแžšแžแŸ‚แž‘แžถแŸ†แžƒแŸ’แž›แžถแŸ†แž„แž‡แžถแž”แž“แŸ’แžแž”แž“แŸ’แž‘แžถแž”แŸ‹แŸ” แž‘แŸ†แž“แžฝแž›แžแžปแžŸแžแŸ’แžšแžผแžœแžšแž”แžŸแŸ‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžšแžšแžฝแž˜แž˜แžถแž“:

  • แž”แž„แŸ’แž€แžพแž DaemonSet แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŠแŸแž˜แžทแž“แž•แŸ’แž‘แžปแž€ Ceph (ceph-osd) แž‡แžถแž˜แžฝแž™แž“แžนแž„แž…แž„แŸ’แž€แŸ„แž˜ RADOS แžŸแžถแž˜แž‰แŸ’แž‰;
  • แž€แžถแžšแž”แž„แŸ’แž€แžพแž pods แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™ Ceph (แž–แžธ ceph-monแž–แžทแž“แžทแžแŸ’แž™แžŸแŸ’แžแžถแž“แž—แžถแž–แž“แŸƒแž…แž„แŸ’แž€แŸ„แž˜; แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžผแžšแŸ‰แžปแž˜ แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแž—แžถแž‚แž…แŸ’แžšแžพแž“ แž…แŸ’แž”แžถแž”แŸ‹แž…แž˜แŸ’แž›แž„แž…แŸ†แž“แžฝแž“แž”แžธแžแŸ’แžšแžผแžœแž”แžถแž“แžŠแžถแž€แŸ‹แž–แž„แŸ’แžšแžถแž™ แž แžพแž™แž”แŸ’แžšแžŸแžทแž“แž”แžพแž˜แžถแž“แžŽแžถแž˜แžฝแž™แž’แŸ’แž›แžถแž€แŸ‹ แž“แŸ„แŸ‡แžแŸ’แž˜แžธแž˜แžฝแž™แž“แžนแž„แž€แžพแž“แžกแžพแž„);
  • แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„ CRDs (แž“แžทแž™แž˜แž“แŸแž™แž’แž“แž’แžถแž“แž•แŸ’แž‘แžถแž›แŸ‹แžแŸ’แž›แžฝแž“) แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ’แž›แžฝแž“แž‚แžถแžแŸ‹ แž…แž„แŸ’แž€แŸ„แž˜, แžขแžถแž„แžŸแŸ’แžแžปแž€แž‘แžปแž€, แž แžถแž„แž›แž€แŸ‹แžœแžแŸ’แžแžป (แžŸแŸ†แžŽแžปแŸ†แž“แŸƒแž’แž“แž’แžถแž“ แž“แžทแž„แžŸแŸแžœแžถแž€แž˜แŸ’แž˜แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž˜แŸ’แžšแžพแžŸแŸ†แžŽแžพ HTTP แžŠแŸ‚แž›แžขแž“แžปแžœแžแŸ’แž PUT/GET แž›แžพแžœแžแŸ’แžแžป - แž–แžฝแž€แžœแžถแžแŸ’แžšแžผแžœแž‚แŸ’แž“แžถแž‡แžถแž˜แžฝแž™ S3 แž“แžทแž„ Swift API), แž€แŸแžŠแžผแž…แž‡แžถ แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžฏแž€แžŸแžถแžš;
  • แž€แžถแžšแž…แžถแž”แŸ‹แž•แŸ’แžŠแžพแž˜ pods แžŠแžพแž˜แŸ’แž”แžธแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžŸแŸแžœแžถแž€แž˜แŸ’แž˜แž…แžถแŸ†แž”แžถแž…แŸ‹แž‘แžถแŸ†แž„แžขแžŸแŸ‹;
  • แž€แžถแžšแž”แž„แŸ’แž€แžพแžแž—แŸ’แž“แžถแž€แŸ‹แž„แžถแžš Rook แŸ”

แž—แŸ’แž“แžถแž€แŸ‹แž„แžถแžšแžšแž”แžŸแŸ‹ Rook แžแŸ’แžšแžผแžœแž”แžถแž“แžแŸ†แžŽแžถแž„แžŠแŸ„แž™แž•แžแžƒแŸ‚แžšแžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แžŠแžถแž€แŸ‹แž–แž„แŸ’แžšแžถแž™แž“แŸ…แž›แžพแžแŸ’แž“แžถแŸ†แž„ Kubernetes แž“แžธแž˜แžฝแž™แŸ—แŸ” แž‚แŸ„แž›แž”แŸ†แžŽแž„แžšแž”แžŸแŸ‹แž—แŸ’แž“แžถแž€แŸ‹แž„แžถแžšแž‚แžบแž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‡แŸ†แž“แžฝแž™ FlexVolumeแžŠแŸ‚แž›แž•แŸ’แžแž›แŸ‹แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‘แŸ†แž แŸ†แž•แŸ’แž‘แžปแž€แž“แŸ…แž€แŸ’แž“แžปแž„ Kubernetes แŸ” แž—แŸ’แž“แžถแž€แŸ‹แž„แžถแžšแžขแž“แžปแžœแžแŸ’แžแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž“แŸƒแž€แžถแžšแž•แŸ’แž‘แžปแž€แŸ– แž—แŸ’แž‡แžถแž”แŸ‹แžงแž”แž€แžšแžŽแŸแž•แŸ’แž‘แžปแž€แž”แžŽแŸ’แžแžถแž‰ แž˜แŸ‰แŸ„แž“แž”แžšแžทแž˜แžถแžŽ แž’แŸ’แžœแžพแž‘แŸ’แžšแž„แŸ‹แž‘แŸ’แžšแžถแž™แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžฏแž€แžŸแžถแžšแŸ”แž›แŸ”

Rook - แžƒแŸ’แž›แžถแŸ†แž„แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŸแŸแžœแžถแž€แž˜แŸ’แž˜แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Kubernetes
แž‘แžธแž€แž“แŸ’แž›แŸ‚แž„ แž“แžทแž„แžแžฝแž“แžถแž‘แžธแž“แŸƒแžŸแž˜แžถแžŸแž’แžถแžแžป Rook แž“แŸ…แž€แŸ’แž“แžปแž„แž‚แž˜แŸ’แžšแŸ„แž„แž…แž„แŸ’แž€แŸ„แž˜ Kubernetes แž‘แžถแŸ†แž„แž˜แžผแž›

Rook แž•แŸ’แžแž›แŸ‹แž“แžผแžœแž€แžถแžšแž•แŸ’แž‘แžปแž€แž”แžธแž”แŸ’แžšแž—แŸแž‘แŸ–

  1. แž”แŸ’แž›แžปแž€ (แž”แŸ’แž›แžปแž€, StorageClass) - แž˜แŸ‰แŸ„แž“แž€แž“แŸ’แž›แŸ‚แž„แž•แŸ’แž‘แžปแž€แž‘แŸ…แž…แž„แŸ’แž€แŸ’แžšแžถแž“แžแŸ‚แž˜แžฝแž™;
  2. แžœแžแŸ’แžแžป (แžœแžแŸ’แžแžป, ObjectStore) - แž˜แžถแž“แž‘แžถแŸ†แž„แžแžถแž„แž€แŸ’แž“แžปแž„ แž“แžทแž„แžแžถแž„แž€แŸ’แžšแŸ…แž…แž„แŸ’แž€แŸ„แž˜ Kubernetes (แžแžถแž˜แžšแž™แŸˆ S3 API);
  3. แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž”แžถแž“แž…แŸ‚แž€แžšแŸ†แž›แŸ‚แž€ (แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž”แžถแž“แž…แŸ‚แž€แžšแŸ†แž›แŸ‚แž€, Filesystem) แž‚แžบแž‡แžถแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž˜แŸ‰แŸ„แž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžขแžถแž“ แž“แžทแž„แžŸแžšแžŸแŸแžšแž–แžธแž•แžแžแž›แž…แŸ’แžšแžพแž“แŸ”

แž•แŸ’แž“แŸ‚แž€แžแžถแž„แž€แŸ’แž“แžปแž„แž“แŸƒ Rook แžšแžฝแž˜แž˜แžถแž“:

  • Mons - แž‚แŸ’แžšแžถแž”แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™ Ceph (แž‡แžถแž˜แžฝแž™ ceph-mon แžŠแŸ‚แž›แž”แžถแž“แžšแŸ€แž”แžšแžถแž”แŸ‹แžšแžฝแž…แž แžพแž™);
  • OSDs - แž•แžแž‡แžถแž˜แžฝแž™แžŠแŸแž˜แžทแž“ ceph-osd (แžŠแŸแž˜แžทแž“แž•แŸ’แž‘แžปแž€แžœแžแŸ’แžแžป);
  • แžขแžนแž˜แž‡แžธแžขแžš - pods แž‡แžถแž˜แžฝแž™แž”แžทแžŸแžถแž…แž˜แžฝแž™แŸ” ceph-mgr (Ceph Manager) แžŠแŸ‚แž›แž•แŸ’แžแž›แŸ‹แž“แžผแžœแžŸแž˜แžแŸ’แžแž—แžถแž–แžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™แž”แž“แŸ’แžแŸ‚แž˜ แž“แžทแž„แž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžแžถแž„แž€แŸ’แžšแŸ… (แž€แžถแžšแžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™/แžแŸ’แžšแžฝแžแž–แžทแž“แžทแžแŸ’แž™);
  • RGW (แžŸแŸ’แžšแŸแž…แž…แžทแžแŸ’แž) - แž•แžแžแž›แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž•แŸ’แž‘แžปแž€แžœแžแŸ’แžแžป;
  • MDS (แžŸแŸ’แžšแŸแž…แž…แžทแžแŸ’แž) - pods แž‡แžถแž˜แžฝแž™แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžฏแž€แžŸแžถแžšแž…แŸ‚แž€แžšแŸ†แž›แŸ‚แž€แŸ”

Rook - แžƒแŸ’แž›แžถแŸ†แž„แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŸแŸแžœแžถแž€แž˜แŸ’แž˜แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Kubernetes

แžŠแŸแž˜แžทแž“ Rook แž‘แžถแŸ†แž„แžขแžŸแŸ‹ (Mons, OSDs, MGR, RGW, MDS) แžแŸ’แžšแžผแžœแž”แžถแž“แž…แž„แž€แŸ’แžšแž„แž‡แžถแž”แŸ’แžšแž–แŸแž“แŸ’แž’แž‚แŸ„แž›แž–แžธแžšแžแŸ‚แž˜แžฝแž™ (rook) แžšแžแŸ‹แž€แŸ’แž“แžปแž„แž’แžปแž„แŸ”

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แžแŸ’แž›แžธแŸ—แžขแŸ†แž–แžธแž‚แž˜แŸ’แžšแŸ„แž„ Rook แžแŸ’แž›แžธแŸ—แž“แŸแŸ‡ (แžŸแŸ’แž›แžถแž™แž…แŸ†แž“แžฝแž“ 12) แž€แŸแžขแžถแž…แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž•แž„แžŠแŸ‚แžšแŸ” แž”แž‘แž”แž„แŸ’แž แžถแž‰ แž–แžธ 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 แž“แžทแž„แž”แžพแž€แžŠแŸ†แžŽแžพแžšแž€แžถแžš 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แžแž˜แŸ’แž›แŸƒแžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœแžŠแŸ‚แž›แž…แžถแŸ†แž”แžถแž…แŸ‹แžŠแžพแž˜แŸ’แž”แžธแžšแž€แŸ’แžŸแžถแž‘แžปแž€แž…แž„แŸ’แž€แŸ„แž˜แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž€แžถแžšแž…แžถแž”แŸ‹แž•แŸ’แžŠแžพแž˜แžกแžพแž„แžœแžทแž‰แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžšแžŽแžธแžŠแŸ‚แž›แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž‡แžถแž‘แžธแžแžถแŸ†แž„แž•แŸ’แž‘แžปแž€แžขแž…แžทแž“แŸ’แžแŸ’แžšแŸƒแž™แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‘แžทแž“แŸ’แž“แž“แŸแž™ Rook แž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“ Kubernetes แžขแŸ’แž“แž€แž“แžทแž–แž“แŸ’แž’แžŽแŸ‚แž“แžถแŸ†แžฑแŸ’แž™แž˜แžถแž“แž™แŸ‰แžถแž„แž แŸ„แž…แžŽแžถแžŸแŸ‹ 5 GB แž“แŸƒแž‘แŸ†แž แŸ†แžแžถแžŸแžฅแžแž‚แžทแžแžแŸ’แž›แŸƒแž“แŸ…แž€แŸ’แž“แžปแž„แžแžแž“แŸแŸ‡แŸ”

แžขแŸ’แžœแžธแžŠแŸ‚แž›แž“แŸ…แžŸแŸแžŸแžŸแž›แŸ‹แž‚แžบแžแŸ’แžšแžผแžœแž”แž„แŸ’แž€แžพแžแž…แž„แŸ’แž€แŸ„แž˜แž–แžธแž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แž แžพแž™แžแŸ’แžšแžผแžœแž”แŸ’แžšแžถแž€แžŠแžแžถแž•แžแžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแž“แŸ…แž€แŸ’แž“แžปแž„แž…แž„แŸ’แž€แŸ„แž˜ (แž€แŸ’แž“แžปแž„แž…แž“แŸ’แž›แŸ„แŸ‡แžˆแŸ’แž˜แŸ„แŸ‡ 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 (แžšแž แžผแžแžŠแž›แŸ‹แž€แŸ†แžŽแŸ‚แžแŸ’แž˜แžธ) แž‚แžบแž‡แžถแž“แžธแžแžทแžœแžทแž’แžธแžŠแŸ‚แž›แž“แŸ…แžŠแŸ†แžŽแžถแž€แŸ‹แž€แžถแž›แž“แŸแŸ‡แžแž˜แŸ’แžšแžผแžœแžฑแŸ’แž™แž˜แžถแž“แž€แžถแžšแž’แŸ’แžœแžพแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž—แžถแž–แž‡แžถแž”แž“แŸ’แžแž”แž“แŸ’แž‘แžถแž”แŸ‹แž“แŸƒแžŸแž˜แžถแžŸแž’แžถแžแžปแž‘แžถแŸ†แž„แžขแžŸแŸ‹แžšแž”แžŸแŸ‹แžœแžถแž“แŸ…แž€แŸ’แž“แžปแž„แž›แŸ†แžŠแžถแž”แŸ‹แž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แž˜แžฝแž™ แž แžพแž™แžขแŸ’แž“แž€แžขแžถแž…แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžœแžถแž”แžถแž“แž›แžปแŸ‡แžแŸ’แžšแžถแžแŸ‚แžขแŸ’แž“แž€แž”แžถแž“แž’แžถแž“แžถแžแžถแž€แžถแžšแžŠแŸ†แžกแžพแž„ Rook แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž‚แžบแž“แŸ…แž€แŸ’แž“แžปแž„ "แž˜แžถแž“แžŸแžปแžแž—แžถแž–แž›แŸ’แžข" แž‘แžถแŸ†แž„แžŸแŸ’แžšแžปแž„แŸ” แžšแžŠแŸ’แž‹แŸ” แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แž‡แžถแž‡แŸ†แž แžถแž“ แŸ— แž›แž˜แŸ’แžขแžทแžแžŠแŸ„แž™แž”แŸ’แžšแžพแžงแž‘แžถแž แžšแžŽแŸแž“แŸƒแž€แžถแžšแž’แŸ’แžœแžพแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž—แžถแž– Rook แž€แŸ†แžŽแŸ‚ 0.5.0 แžŠแž›แŸ‹ 0.5.1 แžขแžถแž…แžšแž€แž”แžถแž“แž“แŸ…แž€แŸ’แž“แžปแž„ แžฏแž€แžŸแžถแžšแž‚แž˜แŸ’แžšแŸ„แž„.

แž€แžถแž›แž–แžธแžแŸ‚แžœแžทแž…แŸ’แž†แžทแž€แžถแž€แž“แŸ’แž›แž„แž‘แŸ…แž“แŸ…แž›แžพแž”แŸ’แž›แžปแž€ Rook แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แž•แŸ’แžŸแžถแž™ แž€แžถแžšแž”แŸ’แžšแŸ€แž”แž’แŸ€แž” แž•แž›แžทแžแž—แžถแž– แž‡แžถแž˜แžฝแž™ EBS แŸ” แž›แž‘แŸ’แž’แž•แž›โ€‹แžšแž”แžŸแŸ‹โ€‹แžœแžถโ€‹แž‚แžฝแžšโ€‹แžฒแŸ’แž™โ€‹แž…แžถแž”แŸ‹โ€‹แžขแžถแžšแž˜แŸ’แž˜แžŽแŸ แž แžพแž™โ€‹แžŠแŸ„แž™โ€‹แžŸแž„แŸ’แžแŸแž”โ€‹แž‚แžบโ€‹แž˜แžถแž“โ€‹แžŠแžผแž…โ€‹แžแžถแž„โ€‹แž€แŸ’แžšแŸ„แž˜แŸ–

Rook - แžƒแŸ’แž›แžถแŸ†แž„แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŸแŸแžœแžถแž€แž˜แŸ’แž˜แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Kubernetes
Rook - แžƒแŸ’แž›แžถแŸ†แž„แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŸแŸแžœแžถแž€แž˜แŸ’แž˜แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Kubernetes

แž‘แžŸแŸ’แžŸแž“แžœแžทแžŸแŸแž™

แžŸแŸ’แžแžถแž“แž—แžถแž–แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แžšแž”แžŸแŸ‹ Rook แž‚แžบแžขแžถแž›แŸ‹แž แŸ’แžœแžถ แž แžพแž™แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แžŠแŸแžŸแŸ†แžแžถแž“แŸ‹แž…แžปแž„แž€แŸ’แžšแŸ„แž™แž”แŸ†แž•แžปแžแžšแž แžผแžแž˜แž€แžŠแž›แŸ‹แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž‚แžบ แž€แŸ†แžŽแŸ‚ แŸฃ.แŸข.แŸคแž…แŸแž‰แž•แŸ’แžŸแžถแž™แž€แŸ’แž“แžปแž„แžแŸ‚แžœแžทแž…แŸ’แž†แžทแž€แžถ แž†แŸ’แž“แžถแŸ† 2017 (แž€แžถแžšแž€แŸ‚แžแž˜แŸ’แžšแžผแžœแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“ - v0.6.2 - แž…แŸแž‰แž“แŸ…แžแŸ’แž„แŸƒแž‘แžธ แŸกแŸค แžแŸ‚แž’แŸ’แž“แžผ) แŸ” แžšแžฝแž…แž แžพแž™แž“แŸ…แž€แŸ’แž“แžปแž„แž†แž˜แžถแžŸแž‘แžธแž˜แžฝแž™แž“แŸƒแž†แŸ’แž“แžถแŸ† 14 แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แž€แŸ†แžŽแŸ‚แž…แžถแžŸแŸ‹แž‘แžปแŸ†แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ€แžแžแŸ’แžšแžผแžœแž”แžถแž“แžšแŸ†แž–แžนแž„แž‘แžปแž€แŸ– แž”แŸ‚แžแžถ แž“แžทแž„แžŸแŸ’แžแŸแžšแž—แžถแž– (แžšแžฝแž…แžšแžถแž›แŸ‹แž‡แžถแž•แŸ’แž›แžผแžœแž€แžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž€แŸ’แž“แžปแž„แž•แž›แžทแžแž€แž˜แŸ’แž˜)แŸ”

แž“แŸแŸ‡แž”แžพแž™แŸ„แž„แžแžถแž˜ แž•แŸ‚แž“แž‘แžธแž”แž„แŸ’แž แžถแž‰แž•แŸ’แž›แžผแžœ แž‚แž˜แŸ’แžšแŸ„แž„ แžขแŸ’แž“แž€แžขแž—แžทแžœแžŒแŸ’แžแž“แŸแž˜แžถแž“แž…แž€แŸ’แžแžปแžœแžทแžŸแŸแž™แž›แž˜แŸ’แžขแžทแžแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸ Rook แž™แŸ‰แžถแž„แž แŸ„แž…แžŽแžถแžŸแŸ‹แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แž–แžธแžšแž”แž“แŸ’แž‘แžถแž”แŸ‹แŸ– 0.7 (แž€แžถแžšแžแŸ’แžšแŸ€แž˜แžแŸ’แž›แžฝแž“แžšแž”แžŸแŸ‹แžœแžถแžŸแŸ’แžแžทแžแž“แŸ…แž€แŸ’แž“แžปแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแžถแž˜แžŠแžถแž“ GitHub แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ‰แžถแž“แŸ‹แžŸแŸ’แž˜แžถแž“ 60%) แž“แžทแž„ 0.8 แŸ” แž€แŸ’แž“แžปแž„แž…แŸ†แžŽแŸ„แž˜แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžŠแŸ‚แž›แžšแŸ†แž–แžนแž„แž‘แžปแž€แž‚แžบแž€แžถแžšแž•แŸ’แž‘แŸแžšแž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹ Ceph Block แž“แžทแž„ Ceph Object แž‘แŸ…แž‡แžถแžŸแŸ’แžแžถแž“แž—แžถแž–แž€แŸ†แžŽแŸ‚แž”แŸ‚แžแžถ แž€แžถแžšแž•แŸ’แžแž›แŸ‹แžแžถแž˜แžœแž“แŸ’แžแž“แŸƒแž”แžšแžทแž˜แžถแžŽแžŸแž˜แŸ’แžšแžถแž”แŸ‹ CephFS แž”แŸ’แžšแž–แŸแž“แŸ’แž’แž€แžแŸ‹แžแŸ’แžšแžถแž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹ แž€แžถแžšแž’แŸ’แžœแžพแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž—แžถแž–แž…แž„แŸ’แž€แŸ„แž˜แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžท แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžšแžผแž”แžแžแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž—แžถแž‚แŸ”

แž™แž€ Rook แž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„แž›แŸแž แž‚แž˜แŸ’แžšแŸ„แž„ CNCF (แžšแž แžผแžแž˜แž€แžŠแž›แŸ‹แž–แŸแž›แž“แŸแŸ‡แž“แŸ…แžŠแŸ†แžŽแžถแž€แŸ‹แž€แžถแž›แžŠแŸ†แž”แžผแž„ - "แž€แž˜แŸ’แžšแžทแžแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜" - แžŸแŸ’แž˜แžพแž‚แŸ’แž“แžถ แžขแŸ’แž“แž€แž—แŸ’แž‡แžถแž”แŸ‹ ะธ CoreDNS) แž‚แžบแž‡แžถแž”แŸ’แžšแž—แŸแž‘แž“แŸƒแž€แžถแžšแž’แžถแž“แžถแž“แŸƒแž€แžถแžšแž…แžถแž”แŸ‹แžขแžถแžšแž˜แŸ’แž˜แžŽแŸแž›แžพแž•แž›แžทแžแž•แž›แŸ” แžšแž”แŸ€แž”แžŠแŸ‚แž›แžœแžถแž“แžนแž„แž‘แž‘แžฝแž›แž”แžถแž“แž€แžถแžšแž…แžถแž”แŸ‹แžขแžถแžšแž˜แŸ’แž˜แžŽแŸแž“แŸ…แž€แŸ’แž“แžปแž„แž–แžทแž—แž–แž“แŸƒแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž–แž–แž€แž“แžนแž„แž€แžถแž“แŸ‹แžแŸ‚แž…แŸ’แž”แžถแžŸแŸ‹แž“แŸ…แž–แŸแž›แžŠแŸ‚แž›แž€แŸ†แžŽแŸ‚แžŠแŸ‚แž›แž˜แžถแž“แžŸแŸ’แžแŸแžšแž—แžถแž–แžแŸ’แžšแžผแžœแž”แžถแž“แž…แŸแž‰แž•แŸ’แžŸแžถแž™ แžŠแŸ‚แž›แž–แžทแžแž‡แžถแž“แžนแž„แž“แžถแŸ†แžขแŸ’แž“แž€แžŸแžถแž€แž›แŸ’แž”แž„ แž“แžทแž„แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžแŸ’แž˜แžธแž‘แŸ…แž€แžถแž“แŸ‹ Rook แŸ”

PS

แžŸแžผแž˜แžขแžถแž“แž•แž„แžŠแŸ‚แžšแž“แŸ…แž›แžพแž”แŸ’แž›แž€แŸ‹แžšแž”แžŸแŸ‹แž™แžพแž„แŸ–

แž”แŸ’แžšแž—แž–: www.habr.com

แž‘แžทแž‰แž€แžถแžšแž”แž„แŸ’แž แŸ„แŸ‡แžŠแŸ‚แž›แžขแžถแž…แž‘แžปแž€แž…แžทแžแŸ’แžแž”แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แŸแž แž‘แŸ†แž–แŸแžšแžŠแŸ‚แž›แž˜แžถแž“แž€แžถแžšแž€แžถแžšแž–แžถแžš DDoS, แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ VPS VDS ๐Ÿ”ฅ แž‘แžทแž‰แžŸแŸแžœแžถแž”แž„แŸ’แž แŸ„แŸ‡แž‚แŸแž แž‘แŸ†แž–แŸแžšแžŠแŸ‚แž›แžขแžถแž…แž‘แžปแž€แž…แžทแžแŸ’แžแž”แžถแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž€แžถแžšแž–แžถแžš DDoS แž“แžทแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ VPS VDS | ProHoster