เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดนเดพเดฏเต! เด•เตเดฑเดšเตเดšเต เดฎเดพเดธเด™เตเด™เตพเด•เตเด•เต เดฎเตเดฎเตเดชเต, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดคเดฟเดฏ เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเต - เด•เตเดฏเต‚เดฌเตผเดจเต†เดฑเตเดฑเตเด•เดณเต† เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด—เตเดฐเดพเดซเดพเดจ เดชเตเดฒเด—เดฟเตป, เดžเด™เตเด™เตพ เด…เดคเดฟเดจเต† เดตเดฟเดณเดฟเดšเตเดšเต. DevOpsProdigy KubeGraf. เดชเตเดฒเด—เดฟเตป เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เด‡เดตเดฟเดŸเต† เดฒเดญเตเดฏเดฎเดพเดฃเต GitHub-เดฒเต† เดชเตŠเดคเต เดถเต‡เด–เดฐเด‚. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดชเตเดฒเด—เดฟเตป เดŽเด™เตเด™เดจเต† เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต, เดžเด™เตเด™เตพ เดŽเดจเตเดคเต เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดตเดฟเด•เดธเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดžเด™เตเด™เตพ เดจเต‡เดฐเดฟเดŸเตเดŸ เด…เดชเด•เดŸเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เดฅ เดจเดฟเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเด™เตเด•เดฟเดŸเดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เดชเต‡เดพเด•เดพเด‚!

เดญเดพเด—เด‚ 0 - เด†เดฎเตเด–เด‚: เดžเด™เตเด™เตพ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเต†เดคเตเดคเดฟเดฏเดคเต?

เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดชเตเดฒเด—เดฟเตป เด—เตเดฐเดพเดซเดพเตป เดŽเดดเตเดคเตเด• เดŽเดจเตเดจ เด†เดถเดฏเด‚ เดตเดณเดฐเต† เด†เด•เดธเตเดฎเดฟเด•เดฎเดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เดตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เด•เดฎเตเดชเดจเดฟ 10 เดตเตผเดทเดคเตเดคเดฟเดฒเต‡เดฑเต†เดฏเดพเดฏเดฟ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดคเดฏเตเดŸเต† เดตเดฟเดตเดฟเดง เดคเดฒเด™เตเด™เดณเดฟเดฒเตเดณเตเดณ เดตเต†เดฌเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดธเดฎเดฏเดคเตเดคเต, เดตเดฟเดตเดฟเดง เดจเดฟเดฐเต€เด•เตเดทเดฃ เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดžเด™เตเด™เตพ เดงเดพเดฐเดพเดณเด‚ เดตเตˆเดฆเด—เตเดงเตเดฏเด‚, เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เต‡เดธเตเด•เตพ, เด…เดจเตเดญเดตเด‚ เดŽเดจเตเดจเดฟเดต เดถเต‡เด–เดฐเดฟเดšเตเดšเต. เดšเดฟเดฒ เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เตพ เดธเตเดตเดฏเด‚ เดšเต‹เดฆเดฟเดšเตเดšเต: "เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเด•เดณเต† เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต เดฎเดพเดจเตเดคเตเดฐเดฟเด• เด‰เดชเด•เดฐเดฃเด‚ เด‰เดฃเตเดŸเต‹, เด…เดคเดฟเดจเดพเตฝ, "เด…เดคเต เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟ เดฎเดฑเด•เตเด•เตเด•" เดŽเดจเตเดจเต เด…เดตเตผ เดชเดฑเดฏเตเดจเตเดจเดคเตเดชเต‹เดฒเต†?".. k8- เด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเตเดฏเดตเดธเดพเดฏ เดจเดฟเดฒเดตเดพเดฐเด‚, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดตเดณเดฐเต†เด•เตเด•เดพเดฒเดฎเดพเดฏเดฟ เดชเตเดฐเตŠเดฎเดฟเดคเตเดฏเต‚เดธเต + เด—เตเดฐเดพเดซเดพเดจ เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเตป. เดˆ เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเดจเตเดณเตเดณ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดธเตŠเดฒเตเดฏเต‚เดทเดจเตเด•เตพ เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดตเดฟเดตเดฟเดง เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดŸเต‚เดณเตเด•เดณเตเดŸเต† เด’เดฐเต เดตเดฒเดฟเดฏ เดธเต†เดฑเตเดฑเต เด‰เดฃเตเดŸเต: เดชเตเดฐเต‹เดฎเดฟเดคเตเดฏเต‚เดธเต-เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ, เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ kubernetes-mixin เดกเดพเดทเตเดฌเต‹เตผเดกเตเด•เตพ, Grafana-kubernetes-app.

Grafana-kubernetes-app เดชเตเดฒเด—เดฟเตป เดžเด™เตเด™เตพเด•เตเด•เต เดเดฑเตเดฑเดตเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เด“เดชเตเดทเดจเดพเดฃเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เด’เดฐเต เดตเตผเดทเดคเตเดคเดฟเดฒเต‡เดฑเต†เดฏเดพเดฏเดฟ เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, node-exporter, kube-state-metrics เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เด’เดฐเต เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต: "เดจเดฎเตเดฎเตพ เดธเตเดตเดจเตเดคเด‚ เดคเต€เดฐเตเดฎเดพเดจเด‚ เดŽเดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเดฒเตเดฒเต‡?"

เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฒเด—เดฟเดจเดฟเตฝ เดŽเดจเตเดคเต เด†เดถเดฏเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต:

  • "เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฎเดพเดชเตเดชเดฟเดจเตเดฑเต†" เดฆเตƒเดถเตเดฏเดตเตฝเด•เตเด•เดฐเดฃเด‚: เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เด…เดตเดคเดฐเดฃเด‚, เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเตเด•เตพ, เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดต เดชเตเดฐเด•เดพเดฐเด‚ เด—เตเดฐเต‚เดชเตเดชเตเดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต...;
  • โ€œเดตเดฟเดจเตเดฏเดพเดธเด‚ - เดธเต‡เดตเดจเด‚ (+เดชเต‹เตผเดŸเตเดŸเตเด•เตพ)โ€ เดชเต‹เดฒเตเดณเตเดณ เด•เดฃเด•เตเดทเดจเตเด•เดณเตเดŸเต† เดฆเตƒเดถเตเดฏเดตเตฝเด•เตเด•เดฐเดฃเด‚.
  • เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เดตเดฟเดคเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดฆเตƒเดถเตเดฏเดตเตฝเด•เตเด•เดฐเดฃเด‚.
  • เดจเดฟเดฐเดตเดงเดฟ เดธเตเดฐเต‹เดคเดธเตเดธเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด…เดณเดตเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดตเดฟเดตเดฐเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดถเต‡เด–เดฐเด‚: เดชเตเดฐเต‹เดฎเดฟเดคเตเดฏเต‚เดธเตเด‚ k8s api เดธเต†เตผเดตเดฑเตเด‚.
  • เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เดญเดพเด—เด‚ (เดธเดฟเดชเดฟเดฏเต เดธเดฎเดฏเด‚, เดฎเต†เดฎเตเดฎเดฑเดฟ, เดกเดฟเดธเตเด•เต เดธเดฌเตเดธเดฟเดธเตเดฑเตเดฑเด‚, เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เด‰เดชเดฏเต‹เด—เด‚), เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฒเต‹เดœเดฟเด•เต - เดนเต†เตฝเดคเตเดคเต-เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เดชเต‹เดกเตเด•เตพ, เดฒเดญเตเดฏเดฎเดพเดฏ เดชเด•เตผเดชเตเดชเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚, เดฒเตˆเดตเตโ€Œเดจเดธเต / เดฑเต†เดกเดฟเดจเดธเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเดพเดธเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ.

เดญเดพเด—เด‚ 1: เดŽเดจเตเดคเดพเดฃเต "เด—เตเดฐเดพเดซเดพเดจ เดชเตเดฒเด—เดฟเตป"?

เด’เดฐเต เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ, เด—เตเดฐเดพเดซเดพเดจเดฏเตเด•เตเด•เตเดณเตเดณ เดชเตเดฒเด—เดฟเตป เด’เดฐเต เด•เต‹เดฃเต€เดฏ เด•เตบเดŸเตเดฐเต‹เดณเดฑเดพเดฃเต, เด…เดคเต เด—เตเดฐเดพเดซเดพเดจ เดกเดพเดฑเตเดฑ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเตฝ (/var/grafana/plugins/ /dist/module.js) เด•เต‚เดŸเดพเดคเต† SystemJS เดฎเตŠเดกเตเดฏเต‚เดณเดพเดฏเดฟ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต. เดˆ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฒเด—เดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดฎเต†เดฑเตเดฑเดพ เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เด…เดŸเด™เตเด™เดฟเดฏ เด’เดฐเต plugin.json เดซเดฏเตฝ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚: เดชเต‡เดฐเต, เดชเดคเดฟเดชเตเดชเต, เดชเตเดฒเด—เดฟเตป เดคเดฐเด‚, เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ/เดธเตˆเดฑเตเดฑเต/เดฒเตˆเดธเตปเดธเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ, เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เดคเตเดŸเด™เตเด™เดฟเดฏเดต.

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚
module.ts

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚
plugin.json

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเด•เตเดฐเต€เตปเดทเต‹เดŸเตเดŸเดฟเตฝ เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดžเด™เตเด™เตพ plugin.type = เด†เดชเตเดชเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟ. เด•เดพเดฐเดฃเด‚ เด—เตเดฐเดพเดซเดพเดจเดฏเตเด•เตเด•เตเดณเตเดณ เดชเตเดฒเด—เดฟเดจเตเด•เตพ เดฎเต‚เดจเตเดจเต เดคเดฐเดคเตเดคเดฟเดฒเดพเด•เดพเด‚:

เดชเดพเดจเตฝ: เดเดฑเตเดฑเดตเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เดคเดฐเด‚ เดชเตเดฒเด—เดฟเตป - เด‡เดคเต เดตเดฟเดตเดฟเดง เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เดฆเตƒเดถเตเดฏเดตเตฝเด•เตเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดชเดพเดจเดฒเดพเดฃเต.
เดตเดฟเดตเดฐ เด‰เดฑเดตเดฟเดŸเด‚: เดšเดฟเดฒ เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเตเดฒเด—เดฟเตป เด•เดฃเด•เตเดฑเตเดฑเตผ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, Prometheus-datasource, ClickHouse-datasource, ElasticSearch-datasource).
เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป: เด—เตเดฐเดพเดซเดพเดจเดฏเตเด•เตเด•เตเดณเตเดณเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดซเตเดฐเดฃเตเดŸเตโ€ŒเดŽเตปเดกเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ html เดชเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดจเตเด‚ เดตเดฟเดตเดฟเดง เดกเดพเดฑเตเดฑ เดฆเตƒเดถเตเดฏเดตเตฝเด•เตเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตโ€Œเดธเต เดธเตเดตเดฎเต‡เดงเดฏเดพ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเตเดฒเด—เดฟเตป. เด•เต‚เดŸเดพเดคเต†, เดฎเดฑเตเดฑเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เดณเตเด‚ (เดกเดพเดฑเตเดฑเดธเต‹เดดเตเดธเต, เดชเดพเดจเตฝ) เดตเดฟเดตเดฟเดง เดกเดพเดทเตเดฌเต‹เตผเดกเตเด•เดณเตเด‚ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เดณเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚
type=app เด‰เดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเตเดฒเด—เดฟเตป เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดœเดพเดตเดพเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด‚ เดŸเตˆเดชเตเดชเตเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด‚ เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเดฏเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ (เดžเด™เตเด™เตพ เด…เดคเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต). เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเดจเตเดจ เดเดคเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดนเดฒเต‹-เดตเต‡เตพเดกเต เดชเตเดฒเด—เดฟเดจเตเดจเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เดคเดฏเตเดฏเดพเดฑเต†เดŸเตเดชเตเดชเตเด•เตพ เดฒเดฟเด™เตเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเตเด•: เดˆ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดคเตเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดคเดคเตเดฎเดพเดฏ เดฌเดฟเตฝเดกเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดงเดพเดฐเดพเดณเด‚ เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเตผ-เดชเดพเด•เตเด•เตเด•เตพ (เดฑเดฟเดฏเดพเด•เตเดŸเดฟเตฝ เด’เดฐเต เดชเตเดฒเด—เดฟเดจเตเดฑเต† เดชเดฐเต€เด•เตเดทเดฃเดพเดคเตเดฎเด• เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเต‹เดฒเตเด‚ เด‰เดฃเตเดŸเต) เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดญเดพเด—เด‚ 2: เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เด’เดฐเตเด•เตเด•เตเด•

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

เดžเด™เตเด™เดณเตเดŸเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดเดฑเตเดฑเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดฎเดพเตผเด—เด‚ เดฎเดฟเดจเดฟเด•เตเดฏเต‚เดฌเต. เดชเตเดฐเต‹เดฎเดฟเดคเตเดฏเต‚เดธเต-เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเต‹เดฎเดฟเดคเตเดฏเต‚เดธเต + เด—เตเดฐเดพเดซเดพเดจ เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเตป เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเด‚. IN เดˆ เดฒเต‡เด–เดจเด‚ เดฎเดฟเดจเดฟเด•เตเดฏเต‚เดฌเดฟเตฝ prometheus-operator เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเต†เตผเดธเดฟเดธเตเดฑเตเดฑเตปเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดฃเด‚ เดธเตเดฅเดฟเดฐเต‹เดคเตเดธเดพเดนเด‚: เดธเดคเตเดฏเด‚ charts/grafana/values.yaml เดซเดฏเดฒเดฟเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ PV, PVC เดŽเดจเตเดจเดฟเดต เดšเต‡เตผเดคเตเดคเต persistence.existingClaim เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด•.

เดžเด™เตเด™เดณเตเดŸเต† เด…เดตเดธเดพเดจ เดฎเดฟเดจเดฟเด•เตเดฏเต‚เดฌเต เดฒเต‹เดžเตเดšเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฃเต:

minikube start --kubernetes-version=v1.13.4 --memory=4096 --bootstrapper=kubeadm --extra-config=scheduler.address=0.0.0.0 --extra-config=controller-manager.address=0.0.0.0
minikube mount 
/home/sergeisporyshev/Projects/Grafana:/var/grafana --gid=472 --uid=472 --9p-version=9p2000.L

เดญเดพเด—เด‚ 3: เดฏเดฅเดพเตผเดคเตเดฅ เดตเดฟเด•เดธเดจเด‚

เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดฎเต‹เดกเตฝ

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

import {Pod} from "./pod";
import {Service} from "./service";
import {BaseModel} from './traits/baseModel';

export class Deployment extends BaseModel{
   pods: Array<Pod>;
   services: Array<Service>;

   constructor(data: any){
       super(data);
       this.pods = [];
       this.services = [];
   }
}

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

get cpuAllocatableFormatted(){
   let cpu = this.data.status.allocatable.cpu;
   if(cpu.indexOf('m') > -1){
       cpu = parseInt(cpu)/1000;
   }
   return cpu;
}

เดชเต‡เดœเตเด•เตพ

เดžเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพ เดชเตเดฒเด—เดฟเตป เดชเต‡เดœเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดžเด™เตเด™เดณเตเดŸเต† pluing.json-เตฝ เดกเดฟเดชเตปเดกเตปเดธเดฟ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เด†เดฆเตเดฏเด‚ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด“เดฐเต‹ เดชเต‡เดœเดฟเดจเตเดฎเตเดณเตเดณ เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เดจเดฎเตเดฎเตพ PAGE NAME เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เดฃเด‚ (เด…เดคเต เดชเดฟเดจเตเดจเต€เดŸเต เดˆ เดชเต‡เดœเต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดธเตเดฒเด—เดพเดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚); เดˆ เดชเต‡เดœเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเด•เดณเดพเดฏ เด˜เดŸเด•เดคเตเดคเดฟเดจเตเดฑเต† เดชเต‡เดฐเต (เด˜เดŸเด•เด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต module.ts เดฒเต‡เด•เตเด•เต เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต); เดˆ เดชเต‡เดœเดฟเดจเตŠเดชเตเดชเด‚ เดเดคเต เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดฑเต‹เตพ เดฒเดญเตเดฏเดฎเดพเดฃเต†เดจเตเดจเตเด‚ เดธเตˆเดกเตโ€Œเดฌเดพเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดจเดพเดตเดฟเด—เต‡เดทเตป เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

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

  • backendSrv - เด—เตเดฐเดพเดซเดพเดจ API เดธเต†เตผเดตเดฑเตเดฎเดพเดฏเดฟ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดฐเต เดธเต‡เดตเดจเด‚;
  • datasourceSrv - เดจเดฟเด™เตเด™เดณเตเดŸเต† เด—เตเดฐเดพเดซเดพเดจเดฏเดฟเตฝ เด‡เตปเดธเตโ€Œเดฑเตเดฑเดพเตพ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดพ เดธเตเดฐเต‹เดคเดธเตเดธเตเด•เดณเตเดฎเดพเดฏเตเด‚ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด‡เดŸเดชเต†เดŸเตฝ เดจเตฝเด•เตเดจเตเดจ เด’เดฐเต เดธเต‡เดตเดจเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, .getAll() เดฐเต€เดคเดฟ - เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตเดธเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเตฝเด•เตเดจเตเดจเต; .get( ) - เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตโ€Œเดธเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เดจเตฝเด•เตเดจเตเดจเต.

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เดญเดพเด—เด‚ 4: เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด‚

เด—เตเดฐเดพเดซเดพเดจเดฏเตเดŸเต† เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต, เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตโ€Œเดธเต เดฎเดฑเตเดฑเต†เดฒเตเดฒเดพ เดชเตเดฒเด—เดฟเดจเตเด•เดณเตเด‚ เดชเต‹เดฒเต† เดคเดจเตเดจเต†เดฏเดพเดฃเต: เด…เดคเดฟเดจเต เด…เดคเดฟเดจเตเดฑเต‡เดคเดพเดฏ เดŽเตปเดŸเตเดฐเดฟ เดชเต‹เดฏเดฟเดจเตเดฑเต module.js เด‰เดฃเตเดŸเต, เดฎเต†เดฑเตเดฑเดพ เด‡เตปเดซเตผเดฎเต‡เดทเตป plugin.json เด‰เดณเตเดณ เด’เดฐเต เดซเดฏเตฝ เด‰เดฃเตเดŸเต. เดŸเตˆเดชเตเดชเต = เด†เดชเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตโ€Œเดธเตเดฎเดพเดฏเตเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเตเดฐเต‹เดฎเดฟเดคเตเดฏเต‚เดธเต-เดกเดพเดฑเตเดฑเดธเต‹เดดเตโ€Œเดธเต) เดจเดฎเตเดฎเตเดŸเต‡เดคเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดคเต เดจเดฎเตเด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเตเดฒเด—เดฟเตป เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ (dist/datasource/*) เดธเด‚เดญเดฐเดฟเด•เตเด•เดพเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดกเดฟเดชเตปเดกเตปเดธเดฟ เด†เดฏเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเด‚. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเด‚ เดชเตเดฒเด—เดฟเตป เด•เต‹เดกเดฟเดจเตŠเดชเตเดชเด‚ เดตเดฐเตเดจเตเดจเต. เด’เดฐเต config.html เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด‚ เด’เดฐเต ConfigCtrl เด•เตบเดŸเตเดฐเต‹เดณเดฑเตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเต เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตเดธเต เด‡เตปเดธเตเดฑเตเดฑเตปเดธเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดชเต‡เดœเดฟเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตเดธเดฟเดจเตเดฑเต† เดฒเต‹เดœเดฟเด•เต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตเดธเต เด•เตบเดŸเตเดฐเต‹เดณเดฑเดฟเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

KubeGraf เดชเตเดฒเด—เดฟเดจเดฟเตฝ, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด‡เดจเตเดฑเตผเดซเต‡เดธเต เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดดเดฟเดตเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต kubernetes เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฃเต เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตเดธเต (เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เดฒเดญเตเดฏเดฎเดพเดฃเต เดฌเดจเตเดงเด‚):

  • k8s api-เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเดจเตเดจเต (เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต...)
  • เดชเตเดฐเต‹เดฎเดฟเดคเตเดฏเต‚เดธเต-เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตโ€Œเดธเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เด•เตโ€Œเดธเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต (เด‡เดคเต เด“เดฐเต‹ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเด‚ เดชเตเดฒเด—เดฟเตป เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต) เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเต‡เดœเตเด•เดณเดฟเดฒเตเด‚ เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเตเด•เดณเดฟเดฒเตเด‚ เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเตเดฐเดคเดฟเด•เดฐเดฃเด™เตเด™เตพ เดซเต‹เตผเดฎเดพเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  • เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดชเตเดฒเด—เดฟเตป เดชเต‡เดœเตเด•เดณเดฟเดฒเต† เดกเดพเดฑเตเดฑ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต (เด’เดฐเต เดธเต†เดฑเตเดฑเต เดชเตเดคเตเด•เตเด•เตฝ เดจเดฟเดฐเด•เตเด•เดฟเดจเตŠเดชเตเดชเด‚).
  • เด—เตเดฐเดพเดซเดพเดจ-เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเตเด•เดณเดฟเตฝ เด’เดฐเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดทเต€เดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต (metriFindQuery() เดฐเต€เดคเดฟ)

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

  • เด…เดตเดธเดพเดจ k8s เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเดฎเดพเดฏเตเดณเตเดณ เด•เดฃเด•เตเดทเตป เดŸเต†เดธเตเดฑเตเดฑเต.
testDatasource(){
   let url = '/api/v1/namespaces';
   let _url = this.url;
   if(this.accessViaToken)
       _url += '/__proxy';
   _url += url;
   return this.backendSrv.datasourceRequest({
       url: _url,
       method: "GET",
       headers: {"Content-Type": 'application/json'}
   })
       .then(response => {
           if (response.status === 200) {
               return {status: "success", message: "Data source is OK", title: "Success"};
           }else{
               return {status: "error", message: "Data source is not OK", title: "Error"};
           }
       }, error => {
           return {status: "error", message: "Data source is not OK", title: "Error"};
       })
}

เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฐเดธเด•เดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด‚, เดžเด™เตเด™เดณเตเดŸเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตเดธเดฟเดจเดพเดฏเดฟ เด’เดฐเต เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค, เด…เด‚เด—เต€เด•เดพเดฐ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. เดธเดพเดงเดพเดฐเดฃเด—เดคเดฟเดฏเดฟเตฝ, เดฌเต‹เด•เตโ€Œเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต, เด…เดจเตเดคเดฟเดฎ เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เตพเด•เตเด•เต เด…เดจเตเดคเตผเดจเดฟเตผเดฎเตเดฎเดฟเดค เด—เตเดฐเดพเดซเดพเดจ เด˜เดŸเด•เด‚ เดกเดพเดฑเตเดฑเดธเต‹เดดเตโ€ŒเดธเตHttpSettings เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดˆ เด˜เดŸเด•เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, url, เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃเด‚/เด…เดงเดฟเด•เดพเดฐ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเด•เตเด•เตŠเดฃเตเดŸเต เดžเด™เตเด™เตพเด•เตเด•เต http เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเด‚: เดฒเต‹เด—เดฟเตป-เดชเดพเดธเตโ€Œเดตเต‡เดกเต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เตเดฒเดฏเดจเตเดฑเต-เดธเต‡เตผเดŸเตเดŸเต/เด•เตเดฒเดฏเดจเตเดฑเต-เด•เต€. เด’เดฐเต เดฌเต†เดฏเดฑเตผ เดŸเต‹เด•เตเด•เตบ (k8s-เดจเตเดณเตเดณ เดกเดฟ เดซเดพเด•เตเดฑเตเดฑเต‹ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต) เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เด•เตเดธเดธเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ, เดžเด™เตเด™เตพ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดŸเตเดตเต€เด•เตเด•เดฟเด‚เด—เต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดˆ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดจเตเดคเตผเดจเดฟเตผเดฎเตเดฎเดฟเดค เด—เตเดฐเดพเดซเดพเดจ "เดชเตเดฒเด—เดฟเตป เดฑเต‚เดŸเตเดŸเตเด•เตพ" เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ (เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด‡เดตเดฟเดŸเต† เด”เดฆเตเดฏเต‹เด—เดฟเด• เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดชเต‡เดœเต). เดžเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพเดธเต‹เดดเตเดธเดฟเดจเตเดฑเต† เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ, เด—เตเดฐเดพเดซเดพเดจ เดชเตเดฐเต‹เด•เตเดธเดฟ เดธเต†เตผเดตเตผ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดฑเต‚เดŸเตเดŸเดฟเด‚เด—เต เดจเดฟเดฏเดฎเด™เตเด™เตพ เดจเดฎเตเด•เตเด•เต เดชเตเดฐเด–เตเดฏเดพเดชเดฟเด•เตเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด“เดฐเต‹ เดตเตเดฏเด•เตเดคเดฟเด—เดค เดŽเตปเดกเตโ€Œเดชเต‹เดฏเดฟเดจเตเดฑเดฟเดจเตเด‚ เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ เดคเดฒเด•เตเด•เต†เดŸเตเดŸเตเด•เดณเต‹ urlเด•เดณเต‹ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดคเดฟเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ jsonData, SecurityJsonData เดซเต€เตฝเดกเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดŸเตเด•เตเด•เดพเด‚ (เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด•เดณเต‹ เดŸเต‹เด•เตเด•เดฃเตเด•เดณเต‹ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต). เดžเด™เตเด™เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ /__proxy/api/v1/namespaces เดซเต‹เดฎเดฟเดจเตเดฑเต† url-เดฒเต‡เด•เตเด•เต เดชเตเดฐเต‹เด•เตเดธเดฟ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚
/api/v8/namespaces with Authorization: Bearer header.

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เดธเตเดตเดพเดญเดพเดตเดฟเด•เดฎเดพเดฏเตเด‚, k8s api เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเดฎเตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เด‰เดณเตเดณ เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเดพเดจเดฟเดซเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเตเดฒเด—เดฟเตป เดธเต‹เดดเตเดธเต เด•เต‹เดกเต.

เดญเดพเด—เด‚ 5: เดฑเดฟเดฒเต€เดธเต

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เดจเดฟเด™เตเด™เดณเตเดŸเต‡เดคเดพเดฏ เด—เตเดฐเดพเดซเดพเดจ เดชเตเดฒเด—เดฟเตป เดŽเดดเตเดคเดฟเด•เตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดธเตเดตเดพเดญเดพเดตเดฟเด•เดฎเดพเดฏเตเด‚ เด…เดคเต เดชเตŠเดคเตเดตเดพเดฏเดฟ เดฒเดญเตเดฏเดฎเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเด‚. เด—เตเดฐเดพเดซเดพเดจเดฏเดฟเตฝ เด‡เดคเต เด‡เดตเดฟเดŸเต† เดฒเดญเตเดฏเดฎเดพเดฏ เดชเตเดฒเด—เดฟเดจเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดพเดฃเต grafana.com/grafana/plugins

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฒเด—เดฟเตป เด”เดฆเตเดฏเต‹เด—เดฟเด• เดธเตเดฑเตเดฑเต‹เดฑเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดชเดฟเด†เตผ เด‡เตป เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดˆ เดถเต‡เด–เดฐเด‚repo.json เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†:

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด‡เดตเดฟเดŸเต† เดชเดคเดฟเดชเตเดชเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฒเด—เดฟเดจเตเดฑเต† เดชเดคเดฟเดชเตเดชเดพเดฃเต, url เดŽเดจเตเดจเดคเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดฒเดฟเด™เตเด•เดพเดฃเต, เด•เต‚เดŸเดพเดคเต† เดชเตเดฒเด—เดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเดคเดฟเดชเตเดชเต เดฒเดญเตเดฏเดฎเดพเด•เตเดจเตเดจ เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดจเตเดฑเต† เดนเดพเดทเดพเดฃเต เด•เดฎเตเดฎเดฟเดฑเตเดฑเต.

เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดฟเตฝ เดจเดฟเด™เตเด™เตพ เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เด…เดคเตเดญเตเดคเด•เดฐเดฎเดพเดฏ เดšเดฟเดคเตเดฐเด‚ เด•เดพเดฃเตเด‚:

เด—เตเดฐเดพเดซเดพเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดจเด‚: เดตเดฒเดฟเดฏ เดทเต‹เดŸเตเดŸเตเด•เดณเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด…เดคเดฟเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดจเดฟเด™เตเด™เดณเตเดŸเต† Readme.md, Changelog.md เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดชเตเดฒเด—เดฟเตป เดตเดฟเดตเดฐเดฃเดคเตเดคเต‹เดŸเตเด•เต‚เดŸเดฟเดฏ plugin.json เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เดชเดฟเดŸเดฟเดšเตเดšเต†เดŸเตเด•เตเด•เตเด‚.

เดญเดพเด—เด‚ 6: เดจเดฟเด—เดฎเดจเด™เตเด™เตพเด•เตเด•เต เดชเด•เดฐเด‚

เดฑเดฟเดฒเต€เดธเดฟเดจเต เดถเต‡เดทเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดžเด™เตเด™เตพ เดจเดฟเตผเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ. เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เดณเตเดŸเต† เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดŸเต† เด‰เดชเดฏเต‹เด—เด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ UX เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด’เดชเตเดชเด‚ เดชเตเดฒเด—เดฟเตป เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดคเดฟเดจเต เดถเต‡เดทเด‚ เดžเด™เตเด™เดณเตเดŸเต† เด•เตเดฒเดฏเดจเตเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ GitHub-เดฒเต† เด†เดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดฎเตเดณเตเดณ เดตเดฒเดฟเดฏ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เดซเต€เดกเตโ€Œเดฌเดพเด•เตเด•เต เดถเต‡เด–เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดžเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต (เดจเดฟเด™เตเด™เตพ เดตเดฟเดŸเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดถเตเดจเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเตปเดตเดฒเดฟเด•เตเด•เตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดจ, เดžเดพเตป เดตเดณเดฐเต† เดธเดจเตเดคเต‹เดทเดตเดพเดจเดพเดฃเต :)

เด—เตเดฐเดพเดซเดพเดจ เดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เด…เดคเตเดญเตเดคเด•เดฐเดฎเดพเดฏ เด‰เดชเด•เดฐเดฃเด‚ เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚, เด’เดฐเตเดชเด•เตเดทเต‡, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดชเตเดฒเด—เดฟเตป เดŽเดดเตเดคเดพเดจเตเด‚ เดˆ เดฒเต‡เด–เดจเด‚ เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดจเตเดฆเดฟ!)

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

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