ื›ื™ืฆื“ ืœื‘ื ื•ืช ืขื ืŸ ื”ื™ื‘ืจื™ื“ื™ ื‘ืืžืฆืขื•ืช Kubernetes ืฉื™ื›ื•ืœ ืœื”ื—ืœื™ืฃ DBaaS

ืฉืžื™ ืคื˜ืจ ื–ื™ื™ืฆื‘, ืื ื™ ื”ืžื ื›"ืœ, ืžื™ื™ืกื“ ืคืจืงื•ื ื” ื•ืื ื™ ืจื•ืฆื” ืœื”ื’ื™ื“ ืœืš:

  • ืื™ืš ื”ื’ืขื ื• ืžืคืชืจื•ื ื•ืช ืงื•ื“ ืคืชื•ื— ืœ-Database as a Service;
  • ืื™ืœื• ื’ื™ืฉื•ืช ืงื™ื™ืžื•ืช ืœืคืจื™ืกืช ืžืกื“ื™ ื ืชื•ื ื™ื ื‘ืขื ืŸ;
  • ื›ื™ืฆื“ Kubernetes ื™ื›ื•ืœ ืœื”ื—ืœื™ืฃ ืืช DBaaS, ืœื‘ื˜ืœ ืืช ื”ืชืœื•ืช ื‘ืกืคืงื™ื ื•ืœืฉืžื•ืจ ืขืœ ื”ืคืฉื˜ื•ืช ืฉืœ DBMS ื›ืฉื™ืจื•ืช.

ื”ืžืืžืจ ื”ื•ื›ืŸ ืขืœ ืกืžืš ื“ื•ื— ื‘-@Databases Meetup ืขืœ ื™ื“ื™ Mail.ru Cloud Solutions & Tarantool. ืื ืืชื” ืœื ืจื•ืฆื” ืœืงืจื•ื, ืืชื” ื™ื›ื•ืœ ืœืฆืคื•ืช:


ืื™ืš ื”ื’ืขื ื• ืžืงื•ื“ ืคืชื•ื— ืœ-Database as a Service ื‘ืขื ืŸ

ืื ื™ ืขื•ื‘ื“ ื‘ืงื•ื“ ืคืชื•ื— ืžืื– ืกื•ืฃ ืฉื ื•ืช ื”-90. ืœืคื ื™ XNUMX ืฉื ื”, ื”ืฉื™ืžื•ืฉ ื‘ืงื•ื“ ืคืชื•ื—, ื›ืžื• ืžืกื“ื™ ื ืชื•ื ื™ื, ืœื ื”ื™ื” ื›ืœ ื›ืš ืงืœ. ื”ื™ื” ืฆื•ืจืš ืœื”ื•ืจื™ื“ ืืช ืงื•ื“ ื”ืžืงื•ืจ, ืœืชืงืŸ ืื•ืชื•, ืœืงืžืคืœ ืื•ืชื• ื•ืจืง ืื– ืœื”ืฉืชืžืฉ ื‘ื•.

ื”ืงื•ื“ ื”ืคืชื•ื— ืขื‘ืจ ืื– ืกื“ืจื” ืฉืœ ื”ืคืฉื˜ื•ืช:

  • ืžืงื•ืจื•ืช Tar.gz ื•-INSTALL ืฉื”ื™ื• ืฆืจื™ื›ื™ื ืœื”ื™ื“ื•ืจ;
  • ื—ื‘ื™ืœื•ืช ืขื ืชืœื•ืช ื›ืžื• .deb ื•-.rpm, ืฉื‘ื”ืŸ ืืชื” ืจืง ืฆืจื™ืš ืœื”ืชืงื™ืŸ ืงื‘ื•ืฆื” ืฉืœ ื—ื‘ื™ืœื•ืช;
  • ืžืื’ืจื™ ื—ื‘ื™ืœื•ืช ื›ืžื• APT ื•-YUM, ืฉืื™ืชื ื”ื”ืชืงื ื” ื”ื™ื ืื•ื˜ื•ืžื˜ื™ืช;
  • ืคืชืจื•ื ื•ืช ื›ื’ื•ืŸ Docker ื•-Snap, ื”ืžืืคืฉืจื™ื ืœืงื‘ืœ ื—ื‘ื™ืœื•ืช ื‘ื”ืชืงื ื” ืœืœื ืชืœื•ืช ื—ื™ืฆื•ื ื™ืช.

ื›ืชื•ืฆืื” ืžื›ืš, ืงืœ ื™ื•ืชืจ ืœื”ืฉืชืžืฉ ื‘ืชื•ื›ื ืช ืงื•ื“ ืคืชื•ื— ื•ื’ื ืžื•ืจื™ื“ ืืช ืžื—ืกื•ื ื”ื›ื ื™ืกื” ืœืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ื ื›ืืœื”.

ื™ื—ื“ ืขื ื–ืืช, ื‘ื ื™ื’ื•ื“ ืœืžืฆื‘ ืœืคื ื™ 20 ืฉื ื”, ื›ืฉื›ื•ืœื ื”ื™ื• ืžื•ืžื—ื™ื ืœื”ืจื›ื‘ื”, ื›ื™ื•ื ืจื•ื‘ ื”ืžืคืชื—ื™ื ืœื ื™ื›ื•ืœื™ื ืœื‘ื ื•ืช ืืช ื”ื›ืœื™ื ืฉื”ื ืžืฉืชืžืฉื™ื ื‘ื”ื ืžื”ืžืงื•ืจ.

ืœืžืขืฉื”, ื–ื” ืœื ืจืข, ื›ื™:

  1. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ืชื•ื›ื ื” ืžื•ืจื›ื‘ืช ื™ื•ืชืจ ืืš ื™ื“ื™ื“ื•ืชื™ืช ื™ื•ืชืจ ืœืžืฉืชืžืฉ. ืœื“ื•ื’ืžื”, ื“ืคื“ืคืŸ ื ื•ื— ืœืฉื™ืžื•ืฉ, ืืš ื”ื•ื ื›ื•ืœืœ ืจื›ื™ื‘ื™ ืงื•ื“ ืคืชื•ื— ืจื‘ื™ื ื•ืื™ื ื• ื ื•ื— ืœื‘ื ื™ื™ื” ืžืืคืก.
  2. ื™ื•ืชืจ ืื ืฉื™ื ื™ื›ื•ืœื™ื ืœื”ืคื•ืš ืœืžืคืชื—ื™ ืงื•ื“ ืคืชื•ื— ื•ืชื•ื›ื ื•ืช ืื—ืจื•ืช, ื™ื•ืชืจ ืชื•ื›ื ื•ืช ืžืฉืžืฉื•ืช ืขืกืงื™ื, ื•ื”ืฆื•ืจืš ื‘ื” ื’ื“ื•ืœ ื™ื•ืชืจ.

ื”ื—ื™ืกืจื•ืŸ ื”ื•ื ืฉื”ืฉืœื‘ ื”ื‘ื ื‘ืคื™ืฉื•ื˜ ืงืฉื•ืจ ืœืฉื™ืžื•ืฉ ื‘ืคืชืจื•ื ื•ืช ืขื ืŸ, ื•ื–ื” ืžื•ื‘ื™ืœ ืœื ืขื™ืœื” ืžืกื•ื™ืžืช ืฉืœ ืกืคืงื™ื, ื›ืœื•ืžืจ ื”ืชื—ื™ื™ื‘ื•ืช ืœืกืคืง ืื—ื“. ืื ื• ืžืฉืชืžืฉื™ื ื‘ืคืชืจื•ื ื•ืช ืคืฉื•ื˜ื™ื ื•ืกืคืงื™ื ืžืฉืชืžืฉื™ื ื‘ืจื›ื™ื‘ื™ ืงื•ื“ ืคืชื•ื—, ืืš ืœืžืขืฉื” ื”ื ืžืžื•ืกืžืจื™ื ืœืื—ื“ ื”ืขื ื ื™ื ื”ื’ื“ื•ืœื™ื. ื›ืœื•ืžืจ, ื”ื“ืจืš ื”ืงืœื” ื•ื”ืžื”ื™ืจื” ื‘ื™ื•ืชืจ ืœืคืจื•ืก ืงื•ื“ ืคืชื•ื— (ื•ืชื•ื›ื ื•ืช ื”ืชื•ืืžื•ืช ืœื•) ื”ื™ื ื‘ืขื ื ื™ื, ื‘ืืžืฆืขื•ืช API ืงื ื™ื™ื ื™.

ื›ืฉื–ื” ืžื’ื™ืข ืœื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื‘ืขื ืŸ, ื™ืฉื ืŸ ืฉืชื™ ื’ื™ืฉื•ืช:

  1. ื”ืจื›ื™ื‘ื• ืืช ืชืฉืชื™ืช ืžืกื“ ื”ื ืชื•ื ื™ื, ื›ืžื• ื‘ืžืจื›ื– ื ืชื•ื ื™ื ืจื’ื™ืœ. ื›ืœื•ืžืจ, ืœืงื—ืช ืื‘ื ื™ ื‘ื ื™ื™ืŸ ืกื˜ื ื“ืจื˜ื™ื•ืช: ืžื—ืฉื•ื‘, ืื—ืกื•ืŸ ื•ื›ื“ื•ืžื”, ืœื”ืชืงื™ืŸ ืขืœื™ื”ื ืœื™ื ื•ืงืก ื•ืžืกื“ ื ืชื•ื ื™ื, ื•ืœื”ื’ื“ื™ืจ ืื•ืชื.
  2. ื”ืฉืชืžืฉ ื‘-Database as a Service, ื›ืืฉืจ ื”ืกืคืง ืžืฆื™ืข ืžืกื“ ื ืชื•ื ื™ื ืžื•ื›ืŸ ื‘ืชื•ืš ื”ืขื ืŸ.

DBaaS ื”ื•ื ืฉื•ืง ืฉืฆื•ืžื— ื‘ืžื”ื™ืจื•ืช ื›ืขืช ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืืคืฉืจ ืœืžืคืชื—ื™ื ืœืขื‘ื•ื“ ื™ืฉื™ืจื•ืช ืขื ืžืกื“ื™ ื ืชื•ื ื™ื ื•ืžืฆืžืฆื ืืช ื”ืขื‘ื•ื“ื” ื”ืฉื’ืจืชื™ืช. ื”ืกืคืง ืžืชื—ื™ื™ื‘ ืœื”ื‘ื˜ื™ื— ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื” ื•ืฉื™ื ื•ื™ ืงื ื” ืžื™ื“ื” ืงืœ, ืชื™ืงื•ืŸ ืžืกื“ ื ืชื•ื ื™ื, ื’ื™ื‘ื•ื™ื™ื ื•ื›ื•ื•ื ื•ืŸ ื‘ื™ืฆื•ืขื™ื.

ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ืžืกื“ ื ืชื•ื ื™ื ื›ืฉื™ืจื•ืช ื”ืžื‘ื•ืกืก ืขืœ ืงื•ื“ ืคืชื•ื— ื•ืืœื˜ืจื ื˜ื™ื‘ื” ื‘ืฆื•ืจื” ืฉืœ Kubernetes

ื™ืฉื ื ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ืžืกื“ ื ืชื•ื ื™ื ื›ืฉื™ืจื•ืช ืขื‘ื•ืจ ืžืกื“ื™ ื ืชื•ื ื™ื ืคืชื•ื—ื™ื:

  1. ืžื•ืฆืจ ืงื•ื“ ืคืชื•ื— ืกื˜ื ื“ืจื˜ื™ ืืจื•ื– ื‘-backend ืฉืœ ื ื™ื”ื•ืœ ืœืคืจื™ืกื” ื•ื ื™ื”ื•ืœ ืงืœื™ื.
  2. ืคืชืจื•ืŸ ืžืกื—ืจื™ ืžืชืงื“ื ืขื ืชื•ืกืคื•ืช ืฉื•ื ื•ืช, ืชื•ืื ืงื•ื“ ืคืชื•ื—.

ืฉืชื™ ื”ืืคืฉืจื•ื™ื•ืช ืžืคื—ื™ืชื•ืช ืืช ืืคืฉืจื•ืช ื”ื”ื’ื™ืจื” ื‘ื™ืŸ ื”ืขื ื ื™ื ื•ืžืฆืžืฆืžื•ืช ืืช ื ื™ื™ื“ื•ืช ื”ื ืชื•ื ื™ื ื•ื”ืืคืœื™ืงืฆื™ื•ืช. ืœืžืฉืœ, ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉืกื•ื’ื™ื ืฉื•ื ื™ื ืฉืœ ืขื ื ื™ื ืชื•ืžื›ื™ื ื‘ืขืฆื ื‘ืื•ืชื• MySQL ืกื˜ื ื“ืจื˜ื™, ื™ืฉื ื ื”ื‘ื“ืœื™ื ืžืฉืžืขื•ืชื™ื™ื ื‘ื™ื ื™ื”ื: ื‘ืชืคืขื•ืœ, ื‘ื‘ื™ืฆื•ืขื™ื, ื‘ื’ื™ื‘ื•ื™ ื•ื›ื“ื•ืžื”. ืžืขื‘ืจ ืžืขื ืŸ ืื—ื“ ืœืžืฉื ื”ื• ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืืชื’ืจ, ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ื ืžื•ืจื›ื‘ื™ื.

ื•ื›ืืŸ ื ืฉืืœืช ื”ืฉืืœื” - ื”ืื ื ื™ืชืŸ ืœืงื‘ืœ ืืช ื”ื ื•ื—ื•ืช ืฉืœ Database as a Service, ืืœื ื›ืคืชืจื•ืŸ ืคืฉื•ื˜ ื‘ืงื•ื“ ืคืชื•ื—?

ื”ื—ื“ืฉื•ืช ื”ืจืขื•ืช ื”ืŸ ืฉืœืžืจื‘ื” ื”ืฆืขืจ, ืขื“ื™ื™ืŸ ืื™ืŸ ืคืชืจื•ื ื•ืช ื›ืืœื” ื‘ืฉื•ืง. ื”ื—ื“ืฉื•ืช ื”ื˜ื•ื‘ื•ืช ื”ืŸ ืฉื™ืฉ Kubernetes, ืฉืžืืคืฉืจืช ืœื™ื™ืฉื ืคืชืจื•ื ื•ืช ื›ืืœื”.

Kubernetes ื”ื™ื ืžืขืจื›ืช ื”ืคืขืœื” ืœืขื ืŸ ืื• ืœืžืจื›ื– ื”ื ืชื•ื ื™ื ื”ืžืืคืฉืจืช ืœืš ืœืคืจื•ืก ื•ืœื ื”ืœ ืืคืœื™ืงืฆื™ื” ืขืœ ืคื ื™ ืžืกืคืจ ืฉืจืชื™ื ื‘ืืฉื›ื•ืœ ื•ืœื ืขืœ ืžืืจื— ื™ื—ื™ื“.

ื›ืขืช Kubernetes ื”ื™ื ื”ืžื•ื‘ื™ืœื” ื‘ืงื˜ื’ื•ืจื™ื™ืช ืชื•ื›ื ื•ืช ื›ืืœื”. ื”ื™ื• ื”ืจื‘ื” ืคืชืจื•ื ื•ืช ืฉื•ื ื™ื ืœื‘ืขื™ื•ืช ื›ืืœื”, ืื‘ืœ ื–ื” ื”ืคืš ืœืกื˜ื ื“ืจื˜. ื—ื‘ืจื•ืช ืจื‘ื•ืช ืฉื‘ืขื‘ืจ ื”ืชืžืงื“ื• ื‘ืคืชืจื•ื ื•ืช ื—ืœื•ืคื™ื™ื ืžืชืžืงื“ื•ืช ื›ืขืช ื‘ื”ืชืืžืช ื”ืžื•ืฆืจื™ื ืฉืœื”ืŸ ืœืชืžื™ื›ื” ื‘-Kubernetes.

ื‘ื ื•ืกืฃ, Kubernetes ื”ื•ื ืคืชืจื•ืŸ ืื•ื ื™ื‘ืจืกืœื™ ื”ื ืชืžืš ื‘ืขื ื ื™ื ืคืจื˜ื™ื™ื, ืฆื™ื‘ื•ืจื™ื™ื ื•ื”ื™ื‘ืจื™ื“ื™ื™ื ืฉืœ ืกืคืงื™ื ืจื‘ื™ื, ืœืžืฉืœ: AWS, Google Cloud, Microsoft Azure, ืคืชืจื•ื ื•ืช ืขื ืŸ ืฉืœ Mail.ru.

ืื™ืš Kubernetes ืขื•ื‘ื“ ืขื ืžืกื“ื™ ื ืชื•ื ื™ื

Kubernetes ืชื•ื›ื ืŸ ื‘ืžืงื•ืจ ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ื ื—ืกืจื™ ืžื“ื™ื ื” ื”ืžืขื‘ื“ื™ื ื ืชื•ื ื™ื ืืš ืื™ื ื ืžืื—ืกื ื™ื ื“ื‘ืจ, ื›ื’ื•ืŸ ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ืื• ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜. ืžืกื“ื™ ื ืชื•ื ื™ื ื ืžืฆืื™ื ื‘ืงืฆื” ื”ืฉื ื™ ืฉืœ ื”ืกืคืงื˜ืจื•ื, ื›ืœื•ืžืจ, ื”ื ื™ื™ืฉื•ืžื™ื ืกื˜ื˜ื™ืกื˜ื™ื™ื. ื•-Kubernetes ืœื ื ื•ืขื“ ื‘ืžืงื•ืจ ืœื™ื™ืฉื•ืžื™ื ื›ืืœื”.

ืขื ื–ืืช, ื™ืฉื ืŸ ืชื›ื•ื ื•ืช ืฉื”ื•ืคื™ืขื• ื‘-Kubernetes ืœืื—ืจื•ื ื” ื”ืžืืคืฉืจื•ืช ืฉื™ืžื•ืฉ ื‘ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื•ื™ื™ืฉื•ืžื™ื ืžืชืงื™ื ื™ื ืื—ืจื™ื:

  1. ื”ืงื•ื ืกืคื˜ ืฉืœ StatefulSet ื”ื•ื ืกื“ืจื” ืฉืœืžื” ืฉืœ ืคืจื™ืžื™ื˜ื™ื‘ื™ื ืœืขื™ื‘ื•ื“ ืื™ืจื•ืขื™ื ื‘ื ื•ืฉื ื”ืคืกืงืช ืขื‘ื•ื“ืช ื”ืคื•ื“ื™ื ื•ื”ื˜ืžืขืช Graceful Shutdown (ื›ื™ื‘ื•ื™ ืฆืคื•ื™ ืฉืœ ื”ืืคืœื™ืงืฆื™ื”).
  2. ื ืคื—ื™ื ืžืชืžืฉื›ื™ื ื”ื ืžืื’ืจื™ ื ืชื•ื ื™ื ื”ืžืฉื•ื™ื›ื™ื ืœ-pods, ืื•ื‘ื™ื™ืงื˜ื™ ื ื™ื”ื•ืœ Kubernetes.
  3. Operator Framework - ื›ืœื•ืžืจ, ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ืจื›ื™ื‘ื™ื ืœื ื™ื”ื•ืœ ืžืกื“ื™ ื ืชื•ื ื™ื ื•ื™ื™ืฉื•ืžื™ื ืžืฆื‘ื™ื™ื ืื—ืจื™ื ื”ืžื•ืคืฆื™ื ืขืœ ืคื ื™ ืฆืžืชื™ื ืจื‘ื™ื.

ื›ื‘ืจ ืขื›ืฉื™ื• ื‘ืขื ื ื™ื ืฆื™ื‘ื•ืจื™ื™ื ื™ืฉ ืžืกื“ื™ ื ืชื•ื ื™ื ื’ื“ื•ืœื™ื ื›ืฉื™ืจื•ืช, ืฉื”ืงืฆื” ื”ืื—ื•ืจื™ ืฉืœื”ื ื”ื•ื Kubernetes, ืœืžืฉืœ: CockroachCloud, InfluxDB, PlanetScale. ื›ืœื•ืžืจ, ืžืกื“ ื ืชื•ื ื™ื ืขืœ Kubernetes ื”ื•ื ืœื ืจืง ื“ื‘ืจ ืืคืฉืจื™ ืชื™ืื•ืจื˜ื™ืช, ืืœื ื’ื ืžืฉื”ื• ืฉืขื•ื‘ื“ ื‘ืคื•ืขืœ.

ืœืคืจืงื•ื ื” ื™ืฉ ืฉื ื™ ืคืชืจื•ื ื•ืช ืงื•ื“ ืคืชื•ื— ืขื‘ื•ืจ Kubernetes:

  1. ืžืคืขื™ืœ Kubernetes ืขื‘ื•ืจ Percona Server ืขื‘ื•ืจ MongoDB.
  2. Kubernetes Operator for XtraDB CLUSTER ื”ื•ื ืฉื™ืจื•ืช ื”ืชื•ืื ืœ-MySQL ื•ืžืกืคืง ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื” ื•ืขืงื‘ื™ื•ืช. ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืฉืชืžืฉ ื‘ืฆื•ืžืช ื‘ื•ื“ื“ ืื ืื™ืŸ ืฆื•ืจืš ื‘ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื”, ืœืžืฉืœ ืขื‘ื•ืจ ืžืกื“ ื ืชื•ื ื™ื ืฉืœ ืžืคืชื—ื™ื.

ื ื™ืชืŸ ืœื—ืœืง ืืช ืžืฉืชืžืฉื™ Kubernetes ืœืฉืชื™ ืงื‘ื•ืฆื•ืช. ื™ืฉ ืื ืฉื™ื ืฉืžืฉืชืžืฉื™ื ื™ืฉื™ืจื•ืช ื‘-Kubernetes Operators - ืืœื• ื”ื ื‘ืขื™ืงืจ ืžืฉืชืžืฉื™ื ืžืชืงื“ืžื™ื ืฉื™ืฉ ืœื”ื ื”ื‘ื ื” ื˜ื•ื‘ื” ืฉืœ ืื™ืš ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืขื•ื‘ื“ืช. ืื—ืจื™ื ืžืจื™ืฆื™ื ืืช ื–ื” ื‘-backend - ืžืฉืชืžืฉื™ื ื›ืืœื” ืžืขื•ื ื™ื™ื ื™ื ื‘ืžืฉื”ื• ื›ืžื• Database as a Service, ื”ื ืœื ืจื•ืฆื™ื ืœื”ืชืขืžืง ื‘ื ื™ื•ืื ืกื™ื ืฉืœ Kubernetes. ืœืงื‘ื•ืฆืช ื”ืžืฉืชืžืฉื™ื ื”ืฉื ื™ื™ื”, ื™ืฉ ืœื ื• ืคืชืจื•ืŸ ืงื•ื“ ืคืชื•ื— ื ื•ืกืฃ - Percona DBaaS CLI Tool. ื–ื”ื• ืคืชืจื•ืŸ ื ื™ืกื™ื•ื ื™ ืœืžื™ ืฉืจื•ืฆื” ืœืงื‘ืœ DBaaS ื‘ืงื•ื“ ืคืชื•ื— ื”ืžื‘ื•ืกืก ืขืœ Kubernetes ืœืœื ื”ื‘ื ื” ืžืขืžื™ืงื” ืฉืœ ื”ื˜ื›ื ื•ืœื•ื’ื™ื”.

ื›ื™ืฆื“ ืœื”ืคืขื™ืœ ืืช DBaaS ืฉืœ Percona ื‘ืžื ื•ืข Google Kubernetes

Google Kubernetes Engine, ืœื“ืขืชื™, ื”ื•ื ืื—ื“ ื”ืžื™ืžื•ืฉื™ื ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื ื‘ื™ื•ืชืจ ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Kubernetes. ื”ื•ื ื–ืžื™ืŸ ื‘ืื–ื•ืจื™ื ืจื‘ื™ื ื‘ืขื•ืœื ื•ื™ืฉ ืœื• ื›ืœื™ ืฉื•ืจืช ืคืงื•ื“ื” (SDK) ืคืฉื•ื˜ ื•ื ื•ื—, ื”ืžืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ืกืงืจื™ืคื˜ื™ื ื‘ืžืงื•ื ืœื ื”ืœ ืืช ื”ืคืœื˜ืคื•ืจืžื” ื‘ืื•ืคืŸ ื™ื“ื ื™.

ื›ื“ื™ ืฉ-DBaaS ืฉืœื ื• ื™ืขื‘ื•ื“, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืืช ื”ืจื›ื™ื‘ื™ื ื”ื‘ืื™ื:

  1. ืงื•ื‘ืงื˜ืœ.
  2. Google Cloud SDK.
  3. Percona DBaaS CLI.

ื”ืชืงืŸ ืืช kubectl

ืื ื• ืžืชืงื™ื ื™ื ืืช ื”ื—ื‘ื™ืœื” ืขื‘ื•ืจ ืžืขืจื›ืช ื”ื”ืคืขืœื” ืฉืœืš, ื ืกืชื›ืœ ืขืœ ื”ื“ื•ื’ืžื” ืฉืœ ืื•ื‘ื•ื ื˜ื•. ืคืจื˜ื™ื ื ื•ืกืคื™ื ื›ืืŸ.

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

ื”ืชืงื ืช Google Cloud SDK

ืื ื• ืžืชืงื™ื ื™ื ืืช ื—ื‘ื™ืœืช ื”ืชื•ื›ื ื” ื‘ืื•ืชื• ืื•ืคืŸ. ืคืจื˜ื™ื ื ื•ืกืคื™ื ื›ืืŸ.

# Add the Cloud SDK distribution URI as a package source
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] 
http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk

ื”ืชืงื ืช Percona DBaaS CLI

ื”ืชืงืŸ ืžืžืื’ืจื™ Percona. Percona DBaaS CLI Tool ื”ื•ื ืขื“ื™ื™ืŸ ืžื•ืฆืจ ื ื™ืกื™ื•ื ื™, ื•ืœื›ืŸ ื”ื•ื ืžืžื•ืงื ื‘ืžืื’ืจ ื”ื ื™ืกื™ื•ื ื™, ืื•ืชื• ื™ืฉ ืœื”ืคืขื™ืœ ื‘ื ืคืจื“, ื’ื ืื ื›ื‘ืจ ื”ืชืงื ืชื ืžืื’ืจื™ Percona.

ืงืจื ืขื•ื“ ื›ืืŸ.

ืืœื’ื•ืจื™ืชื ื”ืชืงื ื”:

  1. ื”ื’ื“ืจ ืžืื’ืจื™ Percona ื‘ืืžืฆืขื•ืช ื”ื›ืœื™ percona-release. ืจืืฉื™ืช ืขืœื™ืš ืœื”ื•ืจื™ื“ ื•ืœื”ืชืงื™ืŸ ืืช ื—ื‘ื™ืœืช ื”-percona-release ื”ืจืฉืžื™ืช ืž-Percona:
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. ื”ืคืขืœ ืืช ืจื›ื™ื‘ ืžืื’ืจ ื”ื›ืœื™ื ื”ื ื™ืกื™ื•ื ื™ ื‘ืื•ืคืŸ ื”ื‘ื:
    sudo percona-release enable tools experimental
    
  3. ื”ืชืงืŸ ืืช ื—ื‘ื™ืœืช percona-dbaas-cli:
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

ื”ื’ื“ืจืช ืคืขื•ืœืช ืจื›ื™ื‘ื™ื

ืขื•ื“ ืขืœ ื”ื’ื“ืจื•ืช ื›ืืŸ.

ืจืืฉื™ืช ืขืœื™ืš ืœื”ื™ื›ื ืก ืœื—ืฉื‘ื•ืŸ Google ืฉืœืš. ื™ืชืจ ืขืœ ื›ืŸ, Google Cloud ืžืืคืฉืจ ืœืžืฉืชืžืฉ ืื—ื“ ืœื”ื—ื–ื™ืง ืคืจื•ื™ืงื˜ื™ื ืขืฆืžืื™ื™ื ืจื‘ื™ื, ืœื›ืŸ ืขืœื™ืš ืœืฆื™ื™ืŸ ืคืจื•ื™ืงื˜ ืขื•ื‘ื“ ื‘ืืžืฆืขื•ืช ื”ืงื•ื“ ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ ื–ื”:

gcloud auth login
gcloud config set project hidden-brace-236921

ืœืื—ืจ ืžื›ืŸ, ืื ื• ื™ื•ืฆืจื™ื ืืฉื›ื•ืœ. ืœืฆื•ืจืš ื”ื”ื“ื’ืžื”, ื™ืฆืจืชื™ ืืฉื›ื•ืœ Kubernetes ืฉืœ ืฉืœื•ืฉื” ืฆืžืชื™ื ื‘ืœื‘ื“ - ื–ื” ื”ืžื™ื ื™ืžื•ื ื”ื ื“ืจืฉ ืœื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื”:

gcloud container clusters create --zone us-central1-a your-cluster-name --cluster-version 1.15 --num-nodes=3

ื”ืคืงื•ื“ื” ื”ื‘ืื” kubectl ื ื•ืชื ืช ืืช ื”ื”ืจืฉืื•ืช ื”ืจืฆื•ื™ื•ืช ืœืžืฉืชืžืฉ ื”ื ื•ื›ื—ื™ ืฉืœื ื•:

kubectl create clusterrolebinding cluster-admin-binding-$USER 
--clusterrole=cluster-admin --user=$(gcloud config get-value core/account)

ืœืื—ืจ ืžื›ืŸ ืื ื• ื™ื•ืฆืจื™ื ืžืจื—ื‘ ืฉืžื•ืช ื•ื”ื•ืคื›ื™ื ืื•ืชื• ืœืคืขื™ืœ. ืžืจื—ื‘ ื”ืฉืžื•ืช ื”ื•ื, ื‘ืื•ืคืŸ ื’ืก, ื’ื ื›ืžื• ืคืจื•ื™ืงื˜ ืื• ืกื‘ื™ื‘ื”, ืื‘ืœ ื›ื‘ืจ ื‘ืชื•ืš ืืฉื›ื•ืœ Kubernetes. ื–ื” ืœื ืชืœื•ื™ ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ Google Cloud:

kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace

ื”ืชื—ืœืช ื”ืืฉื›ื•ืœ

ืœืื—ืจ ืฉืขื‘ืจื ื• ืืช ืžืกืคืจ ื”ืฉืœื‘ื™ื ื”ืœืœื•, ื ื•ื›ืœ ืœื”ืคืขื™ืœ ืืฉื›ื•ืœ ื‘ืŸ ืฉืœื•ืฉื” ืฆืžืชื™ื ืขื ื”ืคืงื•ื“ื” ื”ืคืฉื•ื˜ื” ื”ื–ื•:

# percona-dbaas mysql create-db example
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     example
Resource Endpoint: example-proxysql.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              Nt9YZquajW7nfVXTTrP
Status:            ready

ื›ื™ืฆื“ ืœื”ืชื—ื‘ืจ ืœืืฉื›ื•ืœ

ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื”ื•ื ื–ืžื™ืŸ ืจืง ื‘ืชื•ืš Kubernetes. ื›ืœื•ืžืจ, ื–ื” ืœื ื ื’ื™ืฉ ืžื”ืฉืจืช ื”ื–ื” ืฉืžืžื ื• ื”ืคืขืœืช ืืช ื”ืคืงื•ื“ื” "ืฆื•ืจ". ื›ื“ื™ ืœื”ืคื•ืš ืื•ืชื• ืœื–ืžื™ืŸ, ืœืžืฉืœ, ืœื‘ื“ื™ืงื•ืช ืขื ืœืงื•ื—, ืขืœื™ืš ืœื”ืขื‘ื™ืจ ืืช ื”ื™ืฆื™ืื” ื“ืจืš ืžื™ืคื•ื™ ื™ืฆื™ืื•ืช:

kubectl port-forward svc/example-proxysql 3306:3306 $

ืœืื—ืจ ืžื›ืŸ ืื ื• ืžื—ื‘ืจื™ื ืืช ืœืงื•ื— MySQL ืฉืœืš:

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

ืคืงื•ื“ื•ืช ื ื™ื”ื•ืœ ืืฉื›ื•ืœื•ืช ืžืชืงื“ืžื•ืช

ืžืื’ืจ ืžื™ื“ืข ืขืœ IP ืฆื™ื‘ื•ืจื™

ืื ืืชื” ืจื•ืฆื” ืคืชืจื•ืŸ ืงื‘ื•ืข ื™ื•ืชืจ ืœื–ืžื™ื ื•ืช ื”ืืฉื›ื•ืœื•ืช, ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ื›ืชื•ื‘ืช IP ื—ื™ืฆื•ื ื™ืช. ื‘ืžืงืจื” ื–ื”, ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื™ื”ื™ื” ื ื’ื™ืฉ ืžื›ืœ ืžืงื•ื. ื–ื” ืคื—ื•ืช ื‘ื˜ื•ื—, ืื‘ืœ ืœืจื•ื‘ ื ื•ื— ื™ื•ืชืจ. ืขื‘ื•ืจ IP ื—ื™ืฆื•ื ื™ ืื ื• ืžืฉืชืžืฉื™ื ื‘ืคืงื•ื“ื” ื”ื‘ืื”:

# percona-dbaas mysql create-db exposed 
--options="proxysql.serviceType=LoadBalancer"
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     exposed
Resource Endpoint: 104.154.133.197
Port:              3306
User:              root
Pass:              k0QVxTr8EVfgyCLYse
Status:            ready

To access database please run the following command:
mysql -h 104.154.133.197 -P 3306 -uroot -pk0QVxTr8EVfgyCLYse

ื”ื’ื“ืจ ื‘ืžืคื•ืจืฉ ืืช ื”ืกื™ืกืžื”

ื‘ืžืงื•ื ืฉื”ืžืขืจื›ืช ืชื™ืฆื•ืจ ืกื™ืกืžื” ื‘ืื•ืคืŸ ืืงืจืื™, ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืืช ื”ืกื™ืกืžื” ื‘ืžืคื•ืจืฉ:

# percona-dbaas mysql create-db withpw --password=mypassword
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     withpw
Resource Endpoint: withpw-proxysql.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              mypassword
Status:            ready

ืื ื™ ืžืฆื™ื’ ืืช ื”ืคืœื˜ ืฉืœ ื”ืกืงืจื™ืคื˜ื™ื ื‘ืคื•ืจืžื˜ ืงืจื™ื ืื ื•ืฉื™, ืื‘ืœ ื’ื ืคื•ืจืžื˜ JSON ื ืชืžืš.

ื›ื™ื‘ื•ื™ ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื”

ื‘ืขื–ืจืช ื”ืคืงื•ื“ื” ื”ื‘ืื” ืชื•ื›ืœ ืœื”ืฉื‘ื™ืช ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื” ืœืคืจื™ืกืช ืฆื•ืžืช ื‘ื•ื“ื“:

# percona-dbaas mysql create-db singlenode 
--options="proxysql.enabled=false, allowUnsafeConfigurations=true,pxc.size=1"
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     singlenode
Resource Endpoint: singlenode-pxc.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              22VqFD96mvRnmPMGg
Status:            ready

ื–ื”ื• ืคืชืจื•ืŸ ืœื‘ื“ื™ืงืช ืžืฉื™ืžื•ืช ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช MySQL ื‘ืžื”ื™ืจื•ืช ื•ื‘ืงืœื•ืช ื›ื›ืœ ื”ืืคืฉืจ, ืœื‘ื“ื•ืง ืื•ืชื” ื•ืœืื—ืจ ืžื›ืŸ ืœื›ื‘ื•ืช ืื•ืชื” ืื• ืœื”ืฉืชืžืฉ ื‘ื” ืœืคื™ืชื•ื—.

ื›ืœื™ Percona DBaaS CLI ืขื•ื–ืจ ืœืš ืœื”ืฉื™ื’ ืคืชืจื•ืŸ ื“ืžื•ื™ DBaaS ื‘-Kubernetes. ื‘ืžืงื‘ื™ืœ, ืื ื• ืžืžืฉื™ื›ื™ื ืœืขื‘ื•ื“ ืขืœ ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื•ื”ืฉื™ืžื•ืฉื™ื•ืช ืฉืœื•.

ื“ื•ื— ื–ื” ื”ื•ืฆื’ ืœืจืืฉื•ื ื” ื‘ @Databases Meetup ืžืืช Mail.ru Cloud Solutions&Tarantool. ืชืจืื” ื•ื™ื“ืื• ื”ื•ืคืขื•ืช ืื—ืจื•ืช ื•ื”ื™ืจืฉื ืœื”ื•ื“ืขื•ืช ืขืœ ืื™ืจื•ืขื™ื ื‘ื˜ืœื’ืจื ืกื‘ื™ื‘ Kubernetes ื‘ืงื‘ื•ืฆืช Mail.ru.

ืžื” ืขื•ื“ ื›ื“ืื™ ืœืงืจื•ื ื‘ื ื•ืฉื:

  1. ืžืกื“ื™ ื ืชื•ื ื™ื ื‘ืคืœื˜ืคื•ืจืžืช IIoT ืžื•ื“ืจื ื™ืช.
  2. ื›ื™ืฆื“ ืœื‘ื—ื•ืจ ืžืกื“ ื ืชื•ื ื™ื ืœืคืจื•ื™ืงื˜ ื›ืš ืฉืœื ืชืฆื˜ืจืš ืœื‘ื—ื•ืจ ืฉื•ื‘.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”