เดฑเต‚เด•เตเด•เต เดšเต†เดฏเตเดฏเดฃเต‹ เดตเต‡เดฃเตเดŸเดฏเต‹ - เด…เดคเดพเดฃเต เดšเต‹เดฆเตเดฏเด‚

เดฑเต‚เด•เตเด•เต เดšเต†เดฏเตเดฏเดฃเต‹ เดตเต‡เดฃเตเดŸเดฏเต‹ - เด…เดคเดพเดฃเต เดšเต‹เดฆเตเดฏเด‚

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

เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, เดฑเต‚เด•เตเด•เต เด’เดฐเต เดธเต†เดฑเตเดฑเดพเดฃเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผเดฎเดพเตผ Ceph, EdgeFS, Minio, Cassandra, CockroachDB เดคเตเดŸเด™เตเด™เดฟเดฏ เดกเดพเดฑเตเดฑเดพ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดธเตŠเดฒเตเดฏเต‚เดทเดจเตเด•เดณเตเดŸเต† เดตเดฟเดจเตเดฏเดพเดธเด‚, เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต, เด“เดŸเตเดŸเต‹เดฎเดพเดฑเตเดฑเดฟเด•เต เดฑเดฟเด•เตเด•เดตเดฑเดฟ เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดชเต‚เตผเดฃเตเดฃ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เดเดฑเตเดฑเต†เดŸเตเด•เตเด•เตเดจเตเดจ Kubernetes-เดจเต.

เด‡เดชเตเดชเต‹เตพ เดเดฑเตเดฑเดตเตเด‚ เดตเดฟเด•เดธเดฟเดค (เด’เดชเตเดชเด‚ เด’เดฐเต‡เดฏเต†เดพเดฐเต ะฒ เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณ เด˜เดŸเตเดŸเด‚) เด†เดฃเต เดชเดฐเดฟเดนเดพเดฐเด‚ เดฑเต‚เด•เตเด•เต-เดธเต†เดซเต-เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ.

เด…เดญเดฟเดชเดพเดฏเดชเตเดชเต†เดŸเตเด•: Ceph-เดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ Rook 1.0.0 เดชเดคเดฟเดชเตเดชเดฟเดฒเต† เดชเตเดฐเดงเดพเดจ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเดฟเตฝ, Ceph Nautilus-เดจเตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด‚ CephFS เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ RGW เดฌเด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ NFS เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเตเด‚ เดจเดฎเตเด•เตเด•เต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเด‚. เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฏเดฟเตฝ เดตเต‡เดฑเดฟเดŸเตเดŸเตเดจเดฟเตฝเด•เตเด•เตเดจเตเดจเดคเต เดฌเต€เดฑเตเดฑ เดฒเต†เดตเดฒเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ EdgeFS เดชเดฟเดจเตเดคเตเดฃเดฏเตเดŸเต† เดชเด•เตเดตเดคเดฏเดพเดฃเต.

เด…เดคเดฟเดจเดพเตฝ, เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ:

  • เด’เดฐเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดธเต†เดซเดฟเดจเต† เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เดฑเต‚เด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด—เตเดฃเด™เตเด™เตพ เดŽเดจเตเดคเตŠเด•เตเด•เต†เดฏเดพเดฃเต†เดจเตเดจ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดจเต เด‰เดคเตเดคเดฐเด‚ เดจเตฝเด•เดพเด‚;
  • เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเตฝ เดฑเต‚เด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด…เดจเตเดญเดตเดตเตเด‚ เด‡เด‚เดชเตเดฐเดทเดจเตเด•เดณเตเด‚ เดžเด™เตเด™เตพ เดชเด™เตเด•เดฟเดŸเตเด‚;
  • เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดžเด™เตเด™เตพ เดฑเต‚เด•เตเด•เดฟเดจเต‹เดŸเต โ€œเด…เดคเต†!โ€ เดŽเดจเตเดจเต เดชเดฑเดฏเตเดจเตเดจเดคเต†เดจเตเดจเตเด‚ เด…เดตเดจเตเดตเต‡เดฃเตเดŸเดฟเดฏเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เดชเดฆเตเดงเดคเดฟเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดชเดฑเดฏเดพเด‚.

เดชเตŠเดคเตเดตเดพเดฏ เด†เดถเดฏเด™เตเด™เดณเตเด‚ เดธเดฟเดฆเตเดงเดพเดจเตเดคเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚.

"เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เดฑเต‚เด•เตเด•เดฟเดจเตเดฑเต† เดชเตเดฐเดฏเต‹เดœเดจเดฎเตเดฃเตเดŸเต!" (เด…เดœเตเดžเดพเดค เดšเต†เดธเตเดธเต เด•เดณเดฟเด•เตเด•เดพเดฐเตป)

เดฑเต‚เด•เตเด•เต เดšเต†เดฏเตเดฏเดฃเต‹ เดตเต‡เดฃเตเดŸเดฏเต‹ - เด…เดคเดพเดฃเต เดšเต‹เดฆเตเดฏเด‚

เดฑเต‚เด•เตเด•เดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดจเต‡เดŸเตเดŸเด™เตเด™เดณเดฟเดฒเตŠเดจเตเดจเต, เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเต‹เดฑเตเด•เดณเตเดฎเดพเดฏเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด™เตเด™เดณเดฟเดฒเต‚เดŸเต†เดฏเดพเดฃเต เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚, เดทเต€เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต Ceph เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟ เด•เดฎเดพเตปเดกเตเด•เตพ เดชเด•เตผเดคเตเดคเต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ เดŽเดจเตเดจเดพเดฃเต.

โ€” เดจเดฟเด™เตเด™เตพเด•เตเด•เต CephFS เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดฃเต‹? เด’เดฐเต YAML เดซเดฏเตฝ เดŽเดดเตเดคเตเด•!
- เดŽเดจเตเดคเต? เดจเดฟเด™เตเด™เตพเด•เตเด•เต S3 API เด‰เดณเตเดณ เด’เดฐเต เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เดธเตเดฑเตเดฑเต‹เดฑเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดฃเต‹? เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† YAML เดซเดฏเตฝ เดŽเดดเตเดคเตเด•!

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

เด’เดฐเต เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดธเตเดฑเตเดฑเต‹เตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต เดชเตเดฐเดคเตเดฏเต‡เด•เดคเด•เตพ เดจเต‹เด•เตเด•เดพเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ - CephObjectStoreUser.

apiVersion: ceph.rook.io/v1
kind: CephObjectStore
metadata:
  name: {{ .Values.s3.crdName }}
  namespace: kube-rook
spec:
  metadataPool:
    failureDomain: host
    replicated:
      size: 3
  dataPool:
    failureDomain: host
    erasureCoded:
      dataChunks: 2
      codingChunks: 1
  gateway:
    type: s3
    sslCertificateRef:
    port: 80
    securePort:
    instances: 1
    allNodes: false
---
apiVersion: ceph.rook.io/v1
kind: CephObjectStoreUser
metadata:
  name: {{ .Values.s3.crdName }}
  namespace: kube-rook
spec:
  store: {{ .Values.s3.crdName }}
  displayName: {{ .Values.s3.username }}

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

เด’เดฐเต YAML เดซเดฏเดฒเดฟเดฒเต‚เดŸเต† เดžเด™เตเด™เตพ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ "เด“เตผเดกเตผ" เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดŽเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดฟเดฒเต‡เด•เตเด•เดพเดฃเต เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดชเตŠเดคเตเดตเดพเดฏ เดธเตเด•เต€เด‚ เดตเดฐเตเดจเตเดจเดคเต, เด…เดคเดฟเดจเดพเดฏเดฟ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด†เดตเดถเตเดฏเดฎเดพเดฏ เด•เดฎเดพเตปเดกเตเด•เตพ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต "เดฏเดฅเดพเตผเดคเตเดฅเดฎเดฒเตเดฒเดพเดคเตเดค" เดฐเดนเดธเตเดฏเด‚ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. (เดคเดพเดดเต† เดจเต‡เดพเด•เตเด•เตเด•). เดฎเตเด•เดณเดฟเตฝ เดฒเดฟเดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต, เด•เดฎเดพเตปเดกเตเด‚ เดฐเดนเดธเตเดฏ เดจเดพเดฎเดตเตเด‚ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚.

เด‡เดคเต เดเดคเตเดคเดฐเด‚ เดŸเต€เดฎเดพเดฃเต? เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเดพเดฏเดฟ เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดชเต‹เดกเดฟเดจเตเดณเตเดณเดฟเดฒเต† เดฑเต‚เด•เตเด•เต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต†เดฏเตเดฏเตเด‚:

radosgw-admin user create --uid="rook-user" --display-name="{{ .Values.s3.username }}"

เดˆ เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดซเดฒเด‚ เด’เดฐเต JSON เด˜เดŸเดจเดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚:

{
    "user_id": "rook-user",
    "display_name": "{{ .Values.s3.username }}",
    "keys": [
        {
           "user": "rook-user",
           "access_key": "NRWGT19TWMYOB1YDBV1Y",
           "secret_key": "gr1VEGIV7rxcP3xvXDFCo4UDwwl2YoNrmtRlIAty"
        }
    ],
    ...
}

Keys - S3 API เดตเดดเดฟ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เดญเดพเดตเดฟเดฏเดฟเตฝ เดŽเดจเตเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดฑเต‚เด•เตเด•เต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด…เดตเดฐเต† เดฆเดฏเดพเดชเต‚เตผเดตเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดชเต‡เดฐเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเต เดฐเดนเดธเตเดฏ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด…เดตเดจเตเดฑเต† เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเดฟเตฝ เด‡เดŸเตเดจเตเดจเต. rook-ceph-object-user-{{ $.Values.s3.crdName }}-{{ $.Values.s3.username }}.

เดˆ เดฐเดนเดธเตเดฏเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดพเดฏเดฟ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด•. เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดœเต‹เดฒเดฟเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดžเดพเตป เด’เดฐเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดจเตฝเด•เตเด‚, เด…เดคเดฟเตฝ เด“เดฐเต‹ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เตเด•เตเด‚ เดžเด™เตเด™เตพ เดธเตเดตเดฏเดฎเต‡เดต เดฌเด•เตเด•เดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต:

{{- range $bucket := $.Values.s3.bucketNames }}
apiVersion: batch/v1
kind: Job
metadata:
  name: create-{{ $bucket }}-bucket-job
  annotations:
    "helm.sh/hook": post-install
    "helm.sh/hook-weight": "2"
spec:
  template:
    metadata:
      name: create-{{ $bucket }}-bucket-job
    spec:
      restartPolicy: Never
      initContainers:
      - name: waitdns
        image: alpine:3.6
        command: ["/bin/sh", "-c", "while ! getent ahostsv4 rook-ceph-rgw-{{ $.Values.s3.crdName }}; do sleep 1; done" ]
      - name: config
        image: rook/ceph:v1.0.0
        command: ["/bin/sh", "-c"]
        args: ["s3cmd --configure --access_key=$(ACCESS-KEY) --secret_key=$(SECRET-KEY) -s --no-ssl --dump-config | tee /config/.s3cfg"]
        volumeMounts:
        - name: config
          mountPath: /config
        env:
        - name: ACCESS-KEY
          valueFrom:
            secretKeyRef:
              name: rook-ceph-object-user-{{ $.Values.s3.crdName }}-{{ $.Values.s3.username }}
              key: AccessKey
        - name: SECRET-KEY
          valueFrom:
            secretKeyRef:
              name: rook-ceph-object-user-{{ $.Values.s3.crdName }}-{{ $.Values.s3.username }}
              key: SecretKey
      containers:
      - name: create-bucket
        image: rook/ceph:v1.0.0
        command: 
        - "s3cmd"
        - "mb"
        - "--host=rook-ceph-rgw-{{ $.Values.s3.crdName }}"
        - "--host-bucket= "
        - "s3://{{ $bucket }}"
        ports:
        - name: s3-no-sll
          containerPort: 80
        volumeMounts:
        - name: config
          mountPath: /root
      volumes:
      - name: config
        emptyDir: {}
---
{{- end }}

เดˆ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดฒเดฟเดธเตโ€Œเดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตเดฑเต† เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดฟเดจเตเดณเตเดณเดฟเตฝ เดจเดŸเดคเตเดคเดฟเดฏเดคเดพเดฃเต. YAML เดซเดฏเดฒเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด˜เดŸเดจเด•เตพ เด’เดฐเต Git เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฒเดคเดตเดฃ เดตเต€เดฃเตเดŸเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. DevOps เดŽเดžเตเดšเดฟเดจเต€เดฏเตผเดฎเดพเตผเด•เตเด•เตเด‚ CI/CD เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเตเด‚ เดฎเตŠเดคเตเดคเดคเตเดคเดฟเตฝ เด‡เดคเต เด’เดฐเต เดตเดฒเดฟเดฏ เดชเตเดฒเดธเต เด†เดฏเดฟ เดžเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเต.

เดฑเต‚เด•เตเด•เตเด‚ เดฑเดพเดกเต‹เดธเตเดฎเดพเดฏเดฟ เดธเดจเตเดคเต‹เดทเดฎเตเดฃเตเดŸเต

Ceph + RBD เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดตเต‹เดณเดฟเดฏเด‚ เดฎเต—เดฃเตเดŸเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดšเดฟเดฒ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เดเตผเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต.

เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต, เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเตเดซเตเตพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเดฟเตฝ Ceph เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฐเดนเดธเตเดฏเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดตเดฐเตเดŸเต† เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเดฟเตฝ 2-3 เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เด•เตเดดเดชเตเดชเดฎเดฟเดฒเตเดฒ: เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเต‹เดฏเดฟ เดฐเดนเดธเตเดฏเด‚ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเด•เตผเดคเตเดคเดพเด‚. เดŽเดจเตเดจเดพเตฝ เด“เดฐเต‹ เดซเต€เดšเตเดšเดฑเดฟเดจเตเด‚ เด…เดคเดฟเดจเตเดฑเต‡เดคเดพเดฏ เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เดพเดฏเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดพเดฒเต‹?

เดžเด™เตเด™เตพ เดˆ เดชเตเดฐเดถเตเดจเด‚ เดธเตเดตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเต เดทเต†เตฝ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ, เดชเตเดคเดฟเดฏ เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฐเดนเดธเตเดฏเด™เตเด™เตพ เดธเตเดตเดฏเดฎเต‡เดต เดชเด•เตผเดคเตเดคเดฟ (เด…เดคเตเดคเดฐเด‚ เด’เดฐเต เดนเตเด•เตเด•เดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดˆ เดฒเต‡เด–เดจเด‚).

#! /bin/bash

if [[ $1 == โ€œ--configโ€ ]]; then
   cat <<EOF
{"onKubernetesEvent":[
 {"name": "OnNewNamespace",
  "kind": "namespace",
  "event": ["add"]
  }
]}
EOF
else
    NAMESPACE=$(kubectl get namespace -o json | jq '.items | max_by( .metadata.creationTimestamp ) | .metadata.name')
    kubectl -n ${CEPH_SECRET_NAMESPACE} get secret ${CEPH_SECRET_NAME} -o json | jq ".metadata.namespace="${NAMESPACE}"" | kubectl apply -f -
fi

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดฑเต‚เด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดˆ เดชเตเดฐเดถเตเดจเด‚ เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒ. เดฎเต—เดฃเตเดŸเดฟเด‚เด—เต เดชเตเดฐเด•เตเดฐเดฟเดฏ เด…เดคเดฟเดจเตเดฑเต† เดธเตเดตเดจเตเดคเด‚ เดกเตเดฐเตˆเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต เดซเตเดฒเต†เด•เตเดธเต เดตเต‹เดณเดฟเดฏเด‚ เด…เดฅเดตเดพ เดธเดฟเดŽเดธเตเด (เด‡เดชเตเดชเต‹เดดเตเด‚ เดฌเต€เดฑเตเดฑ เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเดพเดฃเต) เด…เดคเดฟเดจเดพเตฝ เดฐเดนเดธเตเดฏเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.

เดฑเต‚เด•เตเด•เต เดธเตเดตเดฏเดฎเต‡เดต เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดชเตเดคเดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเตฝ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดžเด™เตเด™เดณเต† เดชเตเดฐเต‹เดคเตเดธเดพเดนเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เดฑเต‚เด•เตเด•เดฟเดจเตเดฑเต† เด‰เดชเดฐเต‹เดงเด‚

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

$ helm fetch rook-master/rook-ceph --untar --version 1.0.0

เดซเดฏเดฒเดฟเตฝ rook-ceph/values.yaml เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เดตเตเดฏเดคเตเดฏเดธเตเดค เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเด‚. เดเดœเดจเตเดฑเตเดฎเดพเตผเด•เตเด•เตเด‚ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเด‚ เดŸเต‹เดณเดฑเต‡เดทเดจเตเด•เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด•เดพเดฐเตเดฏเด‚. เดŽเดจเตเดคเดฟเดจเตเดตเต‡เดฃเตเดŸเดฟเดฏเดพเดฃเต เด•เดณเด™เตเด•เด™เตเด™เตพ/เดธเดนเดฟเดทเตเดฃเตเดค เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดšเตเดšเต เดˆ เดฒเต‡เด–เดจเด‚.

เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดกเดฟเดธเตเด•เตเด•เดณเตเดŸเต† เด…เดคเต‡ เดจเต‹เดกเตเด•เดณเดฟเตฝ เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเต‹เดกเตเด•เตพ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด•เดพเดฐเดฃเด‚ เดฒเดณเดฟเดคเดฎเดพเดฃเต: เดˆ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดฑเต‚เด•เตเด•เต เดเดœเดจเตเดฑเตเดฎเดพเดฐเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เดคเดจเตเดจเต† เดฌเดพเดงเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เด…เดคเดฟเดจเดพเตฝ, เดซเดฏเตฝ เดคเตเดฑเด•เตเด•เตเด• rook-ceph/values.yaml เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เดŽเดกเดฟเดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดตเดธเดพเดจเด‚ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฌเตเดฒเต‹เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด•:

discover:
  toleration: NoExecute
  tolerationKey: node-role/storage
agent:
  toleration: NoExecute
  tolerationKey: node-role/storage
  mountSecurityMode: Any

เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเดพเดฏเดฟ เดฑเดฟเดธเตผเดตเต เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด“เดฐเต‹ เดจเต‹เดกเดฟเดจเตเด‚, เด…เดจเตเดฌเดจเตเดง เด•เดณเด™เตเด•เด‚ เดšเต‡เตผเด•เตเด•เตเด•:

$ kubectl taint node ${NODE_NAME} node-role/storage="":NoExecute

เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดนเต†เตฝเด‚ เดšเดพเตผเดŸเตเดŸเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:

$ helm install --namespace ${ROOK_NAMESPACE} ./rook-ceph

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพ เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต เดธเตเดฅเดฒเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต OSD:

apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  clusterName: "ceph"
  finalizers:
  - cephcluster.ceph.rook.io
  generation: 1
  name: rook-ceph
spec:
  cephVersion:
    image: ceph/ceph:v13
  dashboard:
    enabled: true
  dataDirHostPath: /var/lib/rook/osd
  mon:
    allowMultiplePerNode: false
    count: 3
  network:
    hostNetwork: true
  rbdMirroring:
    workers: 1
  placement:
    all:
      tolerations:
      - key: node-role/storage
        operator: Exists
  storage:
    useAllNodes: false
    useAllDevices: false
    config:
      osdsPerDevice: "1"
      storeType: filestore
    resources:
      limits:
        memory: "1024Mi"
      requests:
        memory: "1024Mi"
    nodes:
    - name: host-1
      directories:
      - path: "/mnt/osd"
    - name: host-2
      directories:
      - path: "/mnt/osd"
    - name: host-3
      directories:
      - path: "/mnt/osd"

Ceph เดจเดฟเดฒ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต - เด•เดพเดฃเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต HEALTH_OK:

$ kubectl -n ${ROOK_NAMESPACE} exec $(kubectl -n ${ROOK_NAMESPACE} get pod -l app=rook-ceph-operator -o name -o jsonpath='{.items[0].metadata.name}') -- ceph -s

เด…เดคเต‡ เดธเดฎเดฏเด‚, เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดณเตเดณ เดชเต‹เดกเตเด•เตพ Ceph-เดจเดพเดฏเดฟ เดฑเดฟเดธเตผเดตเต เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดจเต‹เดกเตเด•เดณเดฟเตฝ เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚:

$ kubectl -n ${APPLICATION_NAMESPACE} get pods -o custom-columns=NAME:.metadata.name,NODE:.spec.nodeName

เด•เต‚เดŸเดพเดคเต†, เด…เดงเดฟเด• เด˜เดŸเด•เด™เตเด™เตพ เด†เดตเดถเตเดฏเดพเดจเตเดธเดฐเดฃเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เด…เดตเดฐเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด…เดคเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚. เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดทเดจเดพเดฏเดฟ, เดกเดพเดทเตเดฌเต‹เตผเดกเตเด‚ เดŸเต‚เตพเดฌเต‹เด•เตเดธเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เดถเด•เตเดคเดฎเดพเดฏเดฟ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดฑเต‚เด•เตเด•เตเด‚ เด•เตŠเดณเตเดคเตเดคเตเด•เดณเตเด‚: เดŽเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเด‚ เดฑเต‚เด•เตเด•เต เดฎเดคเดฟเดฏเต‹?

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

  • เดฑเต‚เด•เตเด•เต เดกเตเดฐเตˆเดตเตผ เด‡เดฒเตเดฒ เด’เดจเตเดจเตเด‚ เด•เดดเดฟเดฏเดฟเดฒเตเดฒ เดฎเต—เดฃเตเดŸเดกเต เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเตเดŸเต† เด‰เดชเดฏเต‹เด—เดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเด•, เด‡เดคเต เดžเด™เตเด™เตพเด•เตเด•เต เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚ เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต.
  • เดซเตเดฒเต†เด•เตเดธเต เดตเต‹เดณเดฟเดฏเดตเตเด‚ เดธเดฟ.เดŽเดธเต.เด เดŽเด™เตเด™เดจเต†เดฏเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดฟเดฒเตเดฒ เดตเต‹เดณเตเดฏเด™เตเด™เดณเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ เดฎเดพเดฑเตเดฑเตเด• (เด’เดฐเต‡ RBD เดจเต เดตเดฟเดชเดฐเต€เดคเดฎเดพเดฏเดฟ), เด…เดคเดฟเดจเดพเตฝ เดฑเต‚เด•เตเด•เดฟเดจเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ (เดšเดฟเดฒเดชเตเดชเต‹เตพ เดตเดฟเดฎเตผเดถเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เด†เดตเดถเตเดฏเดฎเดพเดฃเต!) เด‰เดชเด•เดฐเดฃเด‚ เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเดŸเต.
  • เดฑเต‚เด•เตเด•เต เด‡เดชเตเดชเต‹เดดเตเด‚ เดธเดพเดงเดพเดฐเดฃ เดธเต†เดซเดฟเดจเต†เดชเตเดชเต‹เดฒเต† เดตเดดเด•เตเด•เดฎเตเดณเตเดณเดตเดจเดฒเตเดฒ. SSD-เดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจ CephFS เดฎเต†เดฑเตเดฑเดพเดกเดพเดฑเตเดฑเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดชเต‚เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดกเดพเดฑเตเดฑ เดคเดจเตเดจเต† HDD-เดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพ เด•เตเดฐเดทเต เดฎเดพเดชเตเดชเตเด•เดณเดฟเตฝ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดคเตเดฏเต‡เด• เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
  • Rook-ceph-operator เดธเตเดฅเดฟเดฐเดคเดฏเตเดณเตเดณเดคเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเดฒเตเด‚, Ceph เดชเดคเดฟเดชเตเดชเต 13-เตฝ เดจเดฟเดจเตเดจเต 14-เดฒเต‡เด•เตเด•เต เด…เดชเตเด—เตเดฐเต‡เดกเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดจเดฟเดฒเดตเดฟเตฝ เดšเดฟเดฒ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเตเดฃเตเดŸเต.

เด•เดฃเตเดŸเต†เดคเตเดคเดฒเตเด•เตพ

"เด‡เดชเตเดชเต‹เตพ เดฑเต‚เด•เตเด•เต เดชเดฃเดฏเด•เตเด•เดพเดฐเดพเตฝ เดชเตเดฑเด‚ เดฒเต‹เด•เดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด…เดŸเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด’เดฐเต เดฆเดฟเดตเดธเด‚ เด…เดตเตพ เด—เต†เดฏเดฟเดฎเดฟเตฝ เดจเดฟเตผเดฃเดพเดฏเด• เดชเด™เตเด•เต เดตเดนเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดจเตเดจเต!" (เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเต‡เด•เดฎเดพเดฏเดฟ เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเดšเตเดš เด‰เดฆเตเดงเดฐเดฃเดฟ)

เดฑเต‚เด•เตเด•เต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดจเดฟเดธเตเดธเด‚เดถเดฏเดฎเดพเดฏเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดนเตƒเดฆเดฏเด‚ เด•เต€เดดเดŸเด•เตเด•เดฟ - [เด…เดคเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เด—เตเดฃเดฆเต‹เดทเด™เตเด™เดณเต‹เดŸเตเด‚ เด•เต‚เดŸเดฟ] เด‡เดคเต เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดถเตเดฐเดฆเตเดง เด…เตผเดนเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเต เดžเด™เตเด™เตพ เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดจเตเดจเต.

เดžเด™เตเด™เดณเตเดŸเต† เดญเดพเดตเดฟ เดชเดฆเตเดงเดคเดฟเด•เตพ เดฑเต‚เด•เตเด•เต-เดธเต†เดซเดฟเดจเต† เด’เดฐเต เดฎเตŠเดกเตเดฏเต‚เดณเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต addon-operator, เด‡เดคเต เดžเด™เตเด™เดณเตเดŸเต† เดจเดฟเดฐเดตเดงเดฟ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เดณเดฟเตฝ เด…เดคเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด—เด‚ เด•เต‚เดŸเตเดคเตฝ เดฒเดณเดฟเดคเดตเตเด‚ เด•เต‚เดŸเตเดคเตฝ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเด•เตเด•เตเด‚.

เดชเดฟ.เดŽเดธเต

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

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

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