αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž„αŸ’αžαŸαž”αž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ PostgreSQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‡αž˜αŸ’αžšαžΎαžŸ αž“αž·αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž„αŸ’αžαŸαž”αž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ PostgreSQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‡αž˜αŸ’αžšαžΎαžŸ αž“αž·αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž›αžΆαŸ†αž„αž‘αžΎαž„ αž’αžαž·αžαž·αž‡αž“αž€αŸ†αž–αž»αž„αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ†αžŽαžΎαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ– "αž™αžΎαž„αž…αž„αŸ‹αž”αžΆαž“αžœαžΆαžŠαžΌαž…αž‡αžΆ Amazon RDS αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ„αž€αž‡αžΆαž„"; "αž™αžΎαž„αž…αž„αŸ‹αž”αžΆαž“αžœαžΆαžŠαžΌαž… RDS αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž‚αŸ’αžšαž”αŸ‹αž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„αž€αŸ’αž“αž»αž„αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŽαžΆαž˜αž½αž™αŸ”" αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž›αžΎ Kubernetes αž™αžΎαž„αž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž–αŸαž‰αž“αž·αž™αž˜αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PostgreSQL (Stolon αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž˜αž€αž–αžΈ Crunchy Data αž“αž·αž„ Zalando) αž αžΎαž™αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžŠαŸ‚αž›αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž‘αžΆαŸ†αž„αž–αžΈαž‘αžŸαŸ’αžŸαž“αŸˆαž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈ (αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™) αž“αž·αž„αž–αžΈαž•αŸ’αž“αŸ‚αž€αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ (αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž˜αž€αž–αžΈαžœαžΆ)αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž…αžΌαžšαž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‡αžΆαžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‘αžΌαž‘αŸ…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‡αŸ†αž“αž½αžŸαžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ RDS...

តើ RDS αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈ

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αž“αž»αžŸαŸ’αžŸαž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈ RDS αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αž–αž½αž€αž‚αŸαž˜αžΆαž“αž“αŸαž™αžαžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ DBMS αžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ‚αž›αŸ–

  1. αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’;
  2. αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžšαžΌαž”αžαžαž“αž·αž„αžŸαŸ’αžαžΆαžšαž‘αžΎαž„αžœαž·αž‰αž–αžΈαž–αž½αž€αž‚αŸ (αž“αž·αž™αž˜αž‡αžΆαž˜αž½αž™αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš PITR);
  3. αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαž master-slave topologies;
  4. αž˜αžΆαž“αž”αž‰αŸ’αž‡αžΈαž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜;
  5. αž•αŸ’αžαž›αŸ‹αžŸαžœαž“αž€αž˜αŸ’αž˜ αž“αž·αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹/αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαŸ”

αž“αž·αž™αžΆαž™αž‡αžΆαž‘αžΌαž‘αŸ… αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž·αž…αŸ’αž…αž€αžΆαžšαž“αŸ…αž“αžΉαž„αžŠαŸƒαž’αžΆαž…αž˜αžΆαž“αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžαŸ’αž›αžΆαŸ†αž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž•αŸ’αž›αžΌαžœαžŠαŸ‚αž›αž˜αžΆαž“αž›αž€αŸ’αžαžαžŽαŸ’αžŒ Ansible αž˜αž·αž“αž“αŸ…αž‡αž·αžαž™αžΎαž„αž‘αŸαŸ” (αžŸαž αžŸαŸαžœαž·αž€αž˜αž€αž–αžΈ 2GIS αž”αžΆαž“αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αŸ” αž”αž„αŸ’αž€αžΎαž "αž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αŸ’αžšαž»αž˜αž”αžšαžΆαž‡αŸαž™αžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎ Postgres αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαŸ”")

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž‚αžΊαž‡αžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΌαž‘αŸ…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αŸαž€αžΌ Kubernetes αŸ” αž“αžΆαž™αž€αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž“αŸƒ "Flanta" αž”αžΆαž“αž“αž·αž™αžΆαž™αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž’αŸ†αž–αžΈαž–αž½αž€αž‚αŸαžšαž½αž…αž αžΎαž™ αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ Kubernetes αŸ” αžŒαžΈαžŸαŸ’αžαž»αž›αž“αŸ… αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž˜αž½αž™αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αŸ”.

NBαŸ– αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαžΆαž˜αž‰αŸ’αž‰αž”αžΆαž“αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸ αž™αžΎαž„αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž…αŸ†αž–αŸ„αŸ‡αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαŸ‚αž›. αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαžΆ αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž’αŸ†αž–αžΈ Go αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαž“αŸ‹αžαŸ‚αžŸαŸŠαžΆαŸ†αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ– αž“αŸ…αž€αŸ’αž“αž»αž„ Bash, Python αž‡αžΆαžŠαžΎαž˜αŸ”

αž˜αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš K8s αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PostgreSQLαŸ–

  • αžŸαŸ’αžαžΌαž‘αž»αž„;
  • αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš PostgreSQL αž‘αž·αž“αŸ’αž“αž“αŸαž™ Crunchy;
  • αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš Zalando Postgres αŸ”

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž–αž½αž€αž‚αŸαž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αŸ”

αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš

αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž›αž€αŸ’αžαžŽαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαžΆαž„αž›αžΎ αž™αžΎαž„ - αž€αŸ’αž“αž»αž„αž“αžΆαž˜αž‡αžΆαžœαž·αžŸαŸ’αžœαž€αžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Kubernetes - αž€αŸαžšαŸ†αž–αžΉαž„αž‘αž»αž€αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž–αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž•αž„αžŠαŸ‚αžšαŸ–

  • αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž–αžΈ Git αž“αž·αž„αž‡αžΆαž˜αž½αž™ αž’αž“αž’αžΆαž“αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“;
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš pod αž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž—αžΆαž–αžŸαŸ’αž“αž·αž‘αŸ’αž’αžŸαŸ’αž“αžΆαž›;
  • αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ affinity node ឬ node selector;
  • αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αŸƒαž€αžΆαžšαž’αžαŸ‹αž’αŸ’αž˜αžαŸ‹;
  • αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž›αŸƒαžαž˜αŸ’αžšαžΌαžœ;
  • αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαžŠαŸ‚αž›αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“ αž“αž·αž„αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ”

αžŠαŸ„αž™αž˜αž·αž“αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž›αžΎαž…αŸ†αžŽαž»αž…αž“αžΈαž˜αž½αž™αŸ— (αžŸαž½αžšαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž“αŸ…αžαŸ‚αž˜αžΆαž“αžŸαŸ†αžŽαž½αžšαž’αŸ†αž–αžΈαž–αž½αž€αž‚αŸαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αžΆαž“αž’αžαŸ’αžαž”αž‘αž‘αžΆαŸ†αž„αž˜αžΌαž›) αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž‘αžΌαž‘αŸ…αžαžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž–αžŽαŸŒαž“αžΆαž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž’αŸ†αž–αžΈαž―αž€αž‘αŸαžŸαž“αŸƒαžαŸ’αž“αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜ αžŠαžΎαž˜αŸ’αž”αžΈ αž”αž‰αŸ’αž‡αžΆαž±αŸ’αž™αž–αž½αž€αž‚αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ” αžœαž·αž’αžΈαž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαžŸαž˜αžαž»αž›αŸ’αž™αžŠαŸαž›αŸ’αž’αž”αŸ’αžšαžŸαžΎαžšαž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž“αž·αž„αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž”αž“αŸ’αžαž‘αŸ…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš PostgreSQL αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ”

1. αžŸαŸ’αžαž»αž“

αžŸαŸ’αžαžΌαž‘αž»αž„ αž–αžΈαž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž’αŸŠαžΈαžαžΆαž›αžΈ Sorint.lab in αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αž›αžΎαž€αž‘αžΎαž„αžšαž½αž…αž αžΎαž™ αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž‡αžΆαž”αŸ’αžšαž—αŸαž‘αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ DBMS αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‚αž˜αŸ’αžšαŸ„αž„αž…αžΆαžŸαŸ‹αž‚αž½αžšαžŸαž˜αŸ– αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‡αžΆαžŸαžΆαž’αžΆαžšαžŽαŸˆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αžœαžΆαž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ‚αžœαž·αž…αŸ’αž†αž·αž€αžΆ αž†αŸ’αž“αžΆαŸ† 2015 (!) αž αžΎαž™αžƒαŸ’αž›αžΆαŸ†αž„ GitHub αž˜αžΆαž“αž•αŸ’αž€αžΆαž™αž‡αž·αž 3000 αž“αž·αž„αž’αŸ’αž“αž€αž…αžΌαž›αžšαž½αž˜ 40+ αŸ”

αž‡αžΆαž€αžΆαžšαž–αž·αž Stolon αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαžŠαŸαž›αŸ’αž’αž“αŸƒαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž‚αž·αžαž‚αžΌαžšαŸ–

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž„αŸ’αžαŸαž”αž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ PostgreSQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‡αž˜αŸ’αžšαžΎαžŸ αž“αž·αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
αž§αž”αž€αžšαžŽαŸαžšαž”αžŸαŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αž›αž˜αŸ’αž’αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž¬ αž―αž€αžŸαžΆαžšαž‚αž˜αŸ’αžšαŸ„αž„. αž‡αžΆαž‘αžΌαž‘αŸ… αžœαžΆαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž“αž·αž™αžΆαž™αžαžΆ αžœαžΆαž’αžΆαž…αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαŸ– αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™ αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžšαž”αžŸαŸ‹αž’αžαž·αžαž·αž‡αž“αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αžαž˜αŸ’αž›αžΆαž—αžΆαž– αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€... αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαžΆαž˜αžšαž™αŸˆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž”αž‰αŸ’αž…αž”αŸ‹αž˜αž½αž™ - αž˜αž·αž“αžŠαžΌαž…αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž–αžΈαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜ (αž–αž½αž€αžœαžΆαž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“) αŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆ Stolon αž‚αŸ’αž˜αžΆαž“αž’αž“αž’αžΆαž“αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αžœαžΆαž˜αž·αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž› αž“αž·αž„αžšαž αŸαžŸ - "αžŠαžΌαž…αž‡αžΆαž“αŸ†αž€αŸ’αžαŸ…" - αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž§αž‘αžΆαž αžšαžŽαŸ DBMS αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αŸ” αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αžšαž™αŸˆαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ stolonctlαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αžαžΆαž˜αžšαž™αŸˆαž‚αŸ†αž“αžΌαžŸαžαžΆαž„ Helm αž αžΎαž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹ αž“αž·αž„αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ ConfigMap αŸ”

αž“αŸ…αž›αžΎαžŠαŸƒαž˜αž½αž™αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž‘αŸ (αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžœαžΆαž˜αž·αž“αž”αŸ’αžšαžΎ CRD) αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αžœαžΆαž‚αžΊαž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž’αžΆαž…αž”αžαŸ‹αž”αŸ‚αž“αž”αžΆαž“αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αž“αž’αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ K8s αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αžƒαžΎαž‰αžŸαž˜αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž„αŸ’αžαŸαž” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž•αŸ’αž‘αžΆαž›αŸ‹ αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž˜αž·αž“αžŸαž˜αž αŸαžαž»αž•αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž‚αŸ†αž“αžΌαžŸαžαžΆαž„αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αžΈαž˜αž½αž™αŸ—αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž αžΎαž™ αž™αžΎαž„β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžŠαžΎαž˜β€‹αžŸαŸ’αžœαŸ‚αž„αžšαž€β€‹αž‡αž˜αŸ’αžšαžΎαžŸαŸ”

2. αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš PostgreSQL αž‘αž·αž“αŸ’αž“αž“αŸαž™ Crunchy

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž–αžΈ Crunchy DataαžŠαŸ‚αž›αž‡αžΆαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αžœαŸαž™αž€αŸ’αž˜αŸαž„αžšαž”αžŸαŸ‹αž’αžΆαž˜αŸαžšαž·αž€ αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸαžŸαž˜αž αŸαžαž»αž•αž›αž˜αž½αž™αŸ” αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžšαŸ’αžαžŸαžΆαž’αžΆαžšαžŽαŸˆαžšαž”αžŸαŸ‹αžœαžΆαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž›αžΎαž€αžŠαŸ†αž”αžΌαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ‚αž˜αžΈαž“αžΆ 2017 αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž–αŸαž›αž“αŸ„αŸ‡αž˜αž€ αžƒαŸ’αž›αžΆαŸ†αž„ GitHub αž”αžΆαž“αž‘αž‘αž½αž›αž•αŸ’αž€αžΆαž™αžαž·αž…αž‡αžΆαž„ 1300 αž“αž·αž„αž’αŸ’αž“αž€αžšαž½αž˜αž…αŸ†αžŽαŸ‚αž€ 50+ αŸ” αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž–αžΈαžαŸ‚αž€αž‰αŸ’αž‰αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Kubernetes 1.15-1.18, OpenShift 3.11+ αž“αž·αž„ 4.4+, GKE αž“αž·αž„ VMware Enterprise PKS 1.3+ αŸ”

αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž“αŸƒ Crunchy Data PostgreSQL Operator αž€αŸαž”αŸ†αž–αŸαž‰αžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž„αž•αž„αžŠαŸ‚αžšαŸ–

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž„αŸ’αžαŸαž”αž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ PostgreSQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‡αž˜αŸ’αžšαžΎαžŸ αž“αž·αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΎαžαž‘αžΎαž„αžαžΆαž˜αžšαž™αŸˆαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ pgoαž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžœαžΆαž”αž„αŸ’αž€αžΎαžαž’αž“αž’αžΆαž“αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž–αŸαž‰αž…αž·αžαŸ’αžαž™αžΎαž„αž‡αžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αŸ–

  • αž˜αžΆαž“αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαžΆαž˜αžšαž™αŸˆ CRD;
  • αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž„αžΆαž™αžŸαŸ’αžšαž½αž› (αžαžΆαž˜αžšαž™αŸˆ CRD);
  • αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž˜αž½αž™αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” Crunchy Data Container Suite - αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž―αž€αž‘αŸαžŸαž“αŸƒαžšαžΌαž”αž—αžΆαž–αž€αž»αž„αžαžΊαž“αŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PostgreSQL αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαžΆ (αžšαž½αž˜αž‘αžΆαŸ†αž„ pgBackRest, pgAudit, αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž€αžΆαžšαžšαž½αž˜αž…αŸ†αžŽαŸ‚αž€αŸ”αž›αŸ”)αŸ”

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž–αžΈ Crunchy Data αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž”αž‰αŸ’αž αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ–

  • αž˜αž·αž“αž˜αžΆαž“αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž’αžαŸ‹αž±αž“αž‘αŸ - αž˜αžΆαž“αžαŸ‚ nodeSelector αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αŸ”
  • αž•αžαžƒαŸ‚αžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‚αžΊαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž™αžΎαž„αž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžšαžŠαŸ’αž‹αž€αŸαžŠαŸ„αž™αŸ” αž˜αž·αž“αžŠαžΌαž… StatefulSets αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž˜αž·αž“αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαžαžΆαžŸαž”αžΆαž“αž‘αŸαŸ”

αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαž‚αž½αžšαž±αŸ’αž™αž’αžŸαŸ‹αžŸαŸ†αžŽαžΎαž…αŸ– αž“αŸ…αž›αžΎαž”αžšαž·αž™αžΆαž€αžΆαžŸαžŸαžΆαž€αž›αŸ’αž”αž„ αž™αžΎαž„αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž˜αŸ’αž›αž„ 3 αž‡αžΆαž˜αž½αž™αžαžΆαžŸαž˜αž½αž™ αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžšαžΆαž™αž€αžΆαžšαžŽαŸαžαžΆαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž…αŸ†αž“αž½αž“ 3 αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžœαžΆαž˜αž·αž“αž˜αžΆαž“αž€αŸαžŠαŸ„αž™) αŸ”

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™αž‘αŸ€αžαžšαž”αžŸαŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž“αŸαŸ‡αž‚αžΊαž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‡αŸ†αž“αž½αž™αž•αŸ’αžŸαŸαž„αŸ—αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ pgAdmin αž“αž·αž„ pgBounce αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„ αž―αž€αžŸαžΆαžš Grafana αž“αž·αž„ Prometheus αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αž»αž€αž‡αžΆαž˜αž»αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž…αžΆαžšαžŽαžΆαŸ” αž“αžΆαž–αŸαž›αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ αž…αŸαž‰αž•αŸ’αžŸαžΆαž™ 4.5.0-beta1 αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αžΆαž αžšαžŽαž€αž˜αŸ’αž˜αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž‡αžΆαž˜αž½αž™αž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαŸ” pgMonitorαž’αžšαž‚αž»αžŽαžŠαŸ‚αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž“αŸƒαž˜αŸ‰αŸ‚αžαŸ’αžš PgSQL αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αŸ”

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž‡αž˜αŸ’αžšαžΎαžŸαž…αž˜αŸ’αž›αŸ‚αž€αž“αŸƒαž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™ Kubernetes αž”αžΆαž“αž“αžΆαŸ†αž±αŸ’αž™αž™αžΎαž„αž‘αŸ…αžšαž€αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž•αŸ’αžŸαŸαž„αŸ”

3. αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš Zalando Postgres

αž™αžΎαž„αž”αžΆαž“αžŸαŸ’αž‚αžΆαž›αŸ‹αž•αž›αž·αžαž•αž› Zalando αž‡αžΆαž™αžΌαžšαž˜αž€αž αžΎαž™αŸ– αž™αžΎαž„αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Zalenium αž αžΎαž™αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž™αžΎαž„αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜ αž”αŸ‰αžΆαžαžΌαž“αžΈ αž‚αžΊαž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ HA αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PostgreSQL αŸ” αž’αŸ†αž–αžΈαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžšαž”αžŸαŸ‹αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš Postgres αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž˜αŸ’αž“αžΆαž€αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡ Alexey Klyukin αž”αžΆαž“αž“αž·αž™αžΆαž™αž“αŸ…αž›αžΎαž’αžΆαž€αžΆαžŸ Postgres-αžαŸ’αž„αŸƒαž’αž„αŸ’αž‚αžΆαžš #5αž αžΎαž™αž™αžΎαž„αž…αžΌαž›αž…αž·αžαŸ’αžαžœαžΆαŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸαž€αŸ’αž˜αŸαž„αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αŸ– αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž›αžΎαž€αžŠαŸ†αž”αžΌαž„αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ‚αžŸαžΈαž αžΆ αž†αŸ’αž“αžΆαŸ† 2018 αŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αžΆαž“αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž•αŸ’αž›αžΌαžœαž€αžΆαžšαžαž·αž…αžαž½αž…αž€αŸαžŠαŸ„αž™ αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž”αžΆαž“αžˆαžΆαž“αž‘αŸ…αžŠαž›αŸ‹αž•αŸ’αž›αžΌαžœαžŠαŸαžœαŸ‚αž„αž†αŸ’αž„αžΆαž™ αžŠαŸ‚αž›αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž–αžΈ Crunchy Data αžŠαŸ‚αž›αž˜αžΆαž“αžαžΆαžšαžΆ 1300+ αž“αŸ…αž›αžΎ GitHub αž“αž·αž„αž…αŸ†αž“αž½αž“αž’αŸ’αž“αž€αžšαž½αž˜αž…αŸ†αžŽαŸ‚αž€αž’αžαž·αž”αžšαž˜αžΆ (70+) αžšαž½αž…αž‘αŸ…αž αžΎαž™αŸ”

"αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αŸ’αžšαžŽαžΆαžαŸ‹" αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž“αŸαŸ‡αž”αŸ’αžšαžΎαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αž–αŸαž›αžœαŸαž›αžΆαŸ–

  • Patroni αž“αž·αž„ αžŸαŸ’αž–αžΌαž‘αžΌ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αžΎαž€αž”αžš,
  • WAL-E - αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€,
  • PgBouncer - αž‡αžΆαž’αžΆαž„αžαž—αŸ’αž‡αžΆαž”αŸ‹αŸ”

αž“αŸαŸ‡αž‡αžΆαžšαž”αŸ€αž”αžŠαŸ‚αž›αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž–αžΈ Zalando αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰:

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž„αŸ’αžαŸαž”αž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ PostgreSQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‡αž˜αŸ’αžšαžΎαžŸ αž“αž·αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž™αŸ‰αžΆαž„αž–αŸαž‰αž›αŸαž‰αžαžΆαž˜αžšαž™αŸˆ Custom Resources αž”αž„αŸ’αž€αžΎαž StatefulSet αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž–αžΈαž€αž»αž„αžαžΊαž“αŸαžš αžŠαŸ‚αž›αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜ sidecars αž•αŸ’αžŸαŸαž„αŸ—αž‘αŸ… pod αŸ” αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž–αžΈ Crunchy Data αŸ”

αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž–αžΈ Zalando αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΆαŸ†αž„ 3 αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž…αžΆαžšαžŽαžΆ αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž—αŸ’αž›αžΆαž˜αŸ— αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš Postgres αž–αžΈ Zalando

αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αŸ– αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‘αžΆαž‰αž™αž€αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž–αžΈ GitHub αž αžΎαž™αž’αž“αž»αžœαžαŸ’αžαž―αž€αžŸαžΆαžš YAML αž–αžΈαžαž αž”αž„αŸ’αž αžΆαž‰αžšαžΆαž„. αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž”αŸ’αžšαžΎαž•αž„αžŠαŸ‚αžšαŸ” αž˜αž‡αŸ’αžˆαž˜αžŽαŸ’αžŒαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš.

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„αžšαž½αž… αž’αŸ’αž“αž€αž‚αž½αžšαž–αŸ’αžšαž½αž™αž”αžΆαžšαž˜αŸ’αž—αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αž αŸαžαž» αž“αž·αž„αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€. αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžαžΆαž˜αžšαž™αŸˆ ConfigMap postgres-operator αž“αŸ…αž€αŸ’αž“αž»αž„ namespace αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„ operatorαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžƒαŸ’αž›αžΆαŸ†αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž’αŸ’αž“αž€αž’αžΆαž…αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αŸ’αžšαž»αž˜ PostgreSQL αžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
 name: staging-db
spec:
 numberOfInstances: 3
 patroni:
   synchronous_mode: true
 postgresql:
   version: "12"
 resources:
   limits:
     cpu: 100m
     memory: 1Gi
   requests:
     cpu: 100m
     memory: 1Gi
 sidecars:
 - env:
   - name: DATA_SOURCE_URI
     value: 127.0.0.1:5432
   - name: DATA_SOURCE_PASS
     valueFrom:
       secretKeyRef:
         key: password
         name: postgres.staging-db.credentials
   - name: DATA_SOURCE_USER
     value: postgres
   image: wrouesnel/postgres_exporter
   name: prometheus-exporter
   resources:
     limits:
       cpu: 500m
       memory: 100Mi
     requests:
       cpu: 100m
       memory: 100Mi
 teamId: staging
 volume:
   size: 2Gi

αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž“αŸαŸ‡αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž…αž„αŸ’αž€αŸ„αž˜αž“αŸƒαžœαžαŸ’αžαž»αž…αŸ†αž“αž½αž“ 3 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžšαžαž™αž“αŸ’αžαž…αŸ†αž αŸ€αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ postgres_αž’αŸ’αž“αž€αž“αžΆαŸ†αž…αŸαž‰αžŠαŸ‚αž›αž™αžΎαž„αž™αž€αž€αžΆαžšαžœαžΆαžŸαŸ‹αžœαŸ‚αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž…αž„αŸ’αž€αŸ„αž˜αž…αŸ†αž“αž½αž“αž‚αŸ’αž˜αžΆαž“αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αŸ”

αžœαžΆαž‚αž½αžšαž’αŸ„αž™αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹ αž•αŸ’αž‘αžΆαŸ†αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‚αŸαž αž‘αŸ†αž–αŸαžš - postgres-operator-ui. αžœαžΆαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš αž“αž·αž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž›αž»αž”αž…αž„αŸ’αž€αŸ„αž˜ αž€αŸαžŠαžΌαž…αž‡αžΆαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαŸ”

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž„αŸ’αžαŸαž”αž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ PostgreSQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‡αž˜αŸ’αžšαžΎαžŸ αž“αž·αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
αž”αž‰αŸ’αž‡αžΈαž“αŸƒαž€αŸ’αžšαž»αž˜ PostgreSQL

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž„αŸ’αžαŸαž”αž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ PostgreSQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‡αž˜αŸ’αžšαžΎαžŸ αž“αž·αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αž½αž™αž‘αŸ€αžαž‚αžΊαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš αž€αŸ’αžšαž»αž˜ API. αž™αž“αŸ’αžαž€αžΆαžšαž“αŸαŸ‡αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αžαž½αž“αžΆαž‘αžΈαž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQLαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž”αž‰αŸ’αž‡αžΈαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” API αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžαŸ’αžšαž‘αž”αŸ‹αž”αž‰αŸ’αž‡αžΈαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αžαž½αž“αžΆαž‘αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ”

αž”αž‰αŸ’αž αžΆ αž“αž·αž„αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž“αŸαŸ‡ αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αžΌαžœαž…αŸ†αžŽαž»αž…αžαŸ’αžœαŸ‡αžαžΆαžαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ–

  1. αž€αž„αŸ’αžœαŸ‡αž“αŸƒαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš nodeSelector;
  2. αž’αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž·αž‘αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€;
  3. αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαž”αž„αŸ’αž€αžΎαžαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŸαž·αž‘αŸ’αž’αž·αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž˜αž·αž“αž›αŸαž…αž‘αžΎαž„αž‘αŸαŸ”
  4. αž–αŸαž›αžαŸ’αž›αŸ‡αž―αž€αžŸαžΆαžšαž”αžΆαžαŸ‹ αž¬αž αž½αžŸαžŸαž˜αŸαž™αŸ”

αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’αž–αž½αž€αž‚αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αŸ” αž…αžΌαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹ - αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™ αž―αž€αžŸαžΆαžš.

αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αž’αŸ’αž“αž€αž“αžΉαž„αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžœαžΆαž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€ αž“αž·αž„αžšαž”αŸ€αž”αž—αŸ’αž‡αžΆαž”αŸ‹αž’αž»αž„αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž‘αŸ… UI αžšαž”αžŸαŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž“αŸ„αŸ‡αž‘αŸαŸ” αž―αž€αžŸαžΆαžšαž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžšαžΏαž„αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž€αžΆαžšαž†αŸ’αž›αž„αž€αžΆαžαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„ PR:

  1. αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„αž˜αž½αž™;
  2. αž”αž‰αŸ’αž‡αžΌαž“αžœαžΆαž‘αŸ…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš pod_environment_secret_name αž“αŸ…αž€αŸ’αž“αž»αž„ CRD αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš αž¬αž“αŸ…αž€αŸ’αž“αž»αž„ ConfigMap (αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš)αŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž“αŸαŸ‡αž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž“αžΆαž–αŸαž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸαŸ‡αŸ” αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžšαž˜αžΌαž›αž”αžΆαž“αŸ” αž€αŸ†αžŽαŸ‚αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαžœαžΆ αžŸαžΌαž˜αž˜αžΎαž›αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž‘αŸ…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš αž–αŸ„αž›αž‚αžΊ - wal_s3_bucket αž“αž·αž„αž…αžΌαž›αž”αŸ’αžšαžΎαž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž“αŸ…αž€αŸ’αž“αž»αž„ AWS S3 αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαŸ” αž“αžΉαž„αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αŸ– αž˜αž·αž“β€‹αžαŸ’αžšαžΉαž˜β€‹αžαŸ‚β€‹αž˜αžΆαž“β€‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž•αž›αž·αžβ€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž€αŸβ€‹αž˜αžΆαž“β€‹αž€αžΆαžšβ€‹αžšαŸ€αž”αž…αŸ†β€‹αž•αž„β€‹αžŠαŸ‚αžšαŸ” αž“αŸαŸ‡αž˜αž·αž“αžŸαž˜αž“αžΉαž„αž™αžΎαž„αž‘αŸαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Spilo αžŠαŸ‚αž›αž‡αžΆαž€αž‰αŸ’αž…αž”αŸ‹ Docker αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PgSQL αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžœαžΆαž”αžΆαž“αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αŸ– αž’αŸ’αž“αž€αž’αžΆαž…αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš WAL_S3_BUCKET αž‘αž‘αŸ αžŠαŸ„αž™αž αŸαžαž»αž“αŸαŸ‡αž”αž·αž‘αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αŸ” αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž—αžΆαž–αžšαžΈαž€αžšαžΆαž™αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™ PR αžšαž½αž…αžšαžΆαž›αŸ‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž‘αž‘αž½αž›β€‹αž™αž€β€‹αž—αŸ’αž›αžΆαž˜αŸ—β€‹αž‘αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αžŸαž˜β€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜ enableWALArchiving: false αž‘αŸ…αž€αžΆαž“αŸ‹αž’αž“αž’αžΆαž“αž…αž„αŸ’αž€αŸ„αž˜ PostgreSQL αŸ”

αž”αžΆαž‘ αž˜αžΆαž“αž±αž€αžΆαžŸαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžœαžΆαžαž»αžŸαž‚αŸ’αž“αžΆαžŠαŸ„αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž…αŸ†αž“αž½αž“ 2αŸ– αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› (αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€) αž“αž·αž„αž‘αžΈαž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αž›αž·αžαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαžœαžΆαž”αžΆαž“αž‡αžΆαž˜αž½αž™αž˜αž½αž™αŸ”

αž™αž›αŸ‹αž–αŸ’αžšαž˜ αž™αžΎαž„αž”αžΆαž“αžšαŸ€αž“αž–αžΈαžšαž”αŸ€αž”αž•αŸ’αž‘αŸαžšαžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ S3 αž αžΎαž™αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€αŸ” αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αž‘αŸ†αž–αŸαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Operator UI?

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αžŸαž„αŸ’αžαŸαž”αž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ PostgreSQL αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž‡αž˜αŸ’αžšαžΎαžŸ αž“αž·αž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αž’αžαŸαžš 3 αž‘αŸ… Operator UIαŸ–

  • SPILO_S3_BACKUP_BUCKET
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž“αžΉαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“ αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž„αžΆαžšαž˜αžΆαž“αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž…αŸ‚αž€αž…αžΆαž™αž”αŸ†αžŽαŸ‚αž€αž–αžΈαž•αž›αž·αžαž€αž˜αŸ’αž˜αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž˜αžΆαž“αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž”αž“αŸ’αžαŸ‚αž˜αŸ”

αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž‘αŸ€αžαž‚αžΊαž€αžΆαžšαž„αžΆαžšαž‡αžΆαž˜αž½αž™ Teams API αž“αž·αž„αž±αž€αžΆαžŸαž…αŸ’αžšαžΎαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αž·αž„αžαž½αž“αžΆαž‘αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αžαž½αž“αžΆαž‘αžΈαž˜αž·αž“αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž‘αŸαŸ”. αžŠαžΌαž…αŸ’αž“αŸ„αŸ‡αž αžΎαž™ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž’αžΆαž“αž˜αž·αž“αž’αžΆαž…αž’αžΆαž“αžαžΆαžšαžΆαž„αžαŸ’αž˜αžΈαž”αžΆαž“αž‘αŸαŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆβ€‹αž’αž‰αŸ’αž…αžΉαž„? αž”αžΎαž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ αž‚αžΊ αž…αžΆαŸ†αž”αžΆαž…αŸ‹ GRANTαž–αž½αž€αžœαžΆαž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž”αŸ’αžšαžΎαž‘αŸαŸ” αž˜αžΆαž“αžœαž·αž’αžΈ αŸ’αž™αŸ‰αžΆαž„αŸ– syncPreparedDatabases ΠΈ syncDatabasesαŸ” αž“αŸαŸ‡ syncPreparedDatabases - αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ preparedDatabases αž‚αžΊ αž˜αžΆαž“αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž˜αž½αž™αŸ” defaultRoles ΠΈ defaultUsers αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžαž½αž“αžΆαž‘αžΈ αžŸαž·αž‘αŸ’αž’αž·αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‘αŸαŸ” αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž”αŸ†αžŽαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžŸαž·αž‘αŸ’αž’αž·αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ”

αž αžΎαž™αž…αŸ†αžŽαž»αž…αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž™αžΎαž„ - αž”αŸ†αžŽαŸ‡αžŠαŸ‚αž›αž”αž“αŸ’αžαŸ‚αž˜ Node Affinity αž‘αŸ…αž€αŸ’αž“αž»αž„ StatefulSet αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ” αž’αžαž·αžαž·αž‡αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž…αŸ’αžšαžΎαž“αžαŸ‚αž…αžΌαž›αž…αž·αžαŸ’αžαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž“αŸ’αž›αŸ‚αž„αž€αž“αŸ’αž›αŸ‚αž„ αž αžΎαž™αž–αž½αž€αž‚αŸαž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž˜αž·αž“αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸαŸ” αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž’αžαŸ‹αž±αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹ Node Affinity αž•αŸ’αžαž›αŸ‹αž‘αŸ†αž“αž»αž€αž…αž·αžαŸ’αžαž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž›αžΆαŸ†αž„αŸ”

αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„?

αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžαžΆαž„αž›αžΎ αž™αžΎαž„αž”αžΆαž“αž”αŸ†αž”αŸ‚αž€αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ Postgres Operator αž–αžΈ Zalando αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„ αžƒαŸ’αž›αžΆαŸ†αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”αžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ†αžŽαŸ‡αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž”αŸ‚αž”αž“αŸαŸ‡αŸ” αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“ αž™αžΎαž„αž€αŸαž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αž„αžŠαŸ‚αžšαŸ” αžšαžΌαž”αžαžαžšαž”αžŸαŸ‹ Docker.

αž”αž‰αŸ’αž‡αžΈαž“αŸƒ PRs αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž™αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜:

αžœαžΆαž“αžΉαž„αž›αŸ’αž’αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαž αž‚αž˜αž“αŸαž‚αžΆαŸ†αž‘αŸ’αžš PRs αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž–αž½αž€αž‚αŸαž‘αž‘αž½αž›αž”αžΆαž“αž…αžšαž“αŸ’αžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ†αžŽαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš (1.6) αŸ”

αž”αŸ’αžšαžΆαž€αŸ‹αžšαž„αŸ’αžœαžΆαž“αŸ‹! αžšαžΏαž„αž‡αŸ„αž‚αž‡αŸαž™αž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž•αž›αž·αžαž€αž˜αŸ’αž˜

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎ Patroni αž€αžΆαžšαž•αž›αž·αžαž”αž“αŸ’αžαž•αŸ’αž‘αžΆαž›αŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŠαŸ„αž™αž˜αžΆαž“αž–αŸαž›αžœαŸαž›αžΆαžšαž„αž…αžΆαŸ†αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαŸ”

Spilo αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž”αžŽαŸ’αžαž»αŸ†αžšαž„αŸ‹αž…αžΆαŸ†αžαžΆαž˜αžšαž™αŸˆαž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€ S3 αž‡αžΆαž˜αž½αž™ Wal-Eαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš PgSQL αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‡αžΆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„αž“αŸ…αž€αŸ’αž“αž»αž„ S3 αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΌαž˜αž…αŸαž‰αžŠαŸ„αž™αž€αžΆαžšαž…αž˜αŸ’αž›αž„αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“ αž˜αž·αž“αž˜αžΆαž“ αž”αŸ’αžšαžΎαžŠαŸ„αž™ Wal-E αž›αžΎαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αžΆαžŸαŸ‹? αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž˜αžΆαž“αžšαž½αž…αž αžΎαž™ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ† αž“αŸ…αž›αžΎαž˜αž‡αŸ’αžˆαž˜αžŽαŸ’αžŒαž›αŸ”

αž€αžΆαžšαž…αž˜αŸ’αž›αž„αžαžΆαž˜αž‘αžΌαž‡αžΈαžαž› PostgreSQL αž˜αž€αž‡αž½αž™αžŸαž„αŸ’αž‚αŸ’αžšαŸ„αŸ‡αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™ αž“αž·αž„αž€αžΆαžšαž‡αžΆαžœαž‘αŸ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡... αž•αŸ‚αž“αž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαžαž»αžŸαŸ”

αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αžΆαž“αžαžΆαžšαžΆαž„αž•αŸ’αž‘αž»αž€αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž˜αžΆαž“αž‡αž½αžšαžšαžΆαž”αŸ‹αž›αžΆαž“ αžŠαŸ‚αž›αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜ αž“αž·αž„αž›αž»αž”αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ” αž€αžΆαžšαž‡αžΆαžœαžŸαžΆαž˜αž‰αŸ’αž‰ с copy_dataαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž…αž˜αŸ’αž›αž„αžαŸ’αž˜αžΈαž…αž˜αŸ’αž›αž„αž˜αžΆαžαž·αž€αžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž–αžΈαž˜αŸ αžœαžΆαž˜αž·αž“αž’αžΆαž…αž”αž“αŸ’αžαž‡αžΆαž˜αž½αž™αž˜αŸαž”αžΆαž“αž‘αŸαŸ” αž€αžΆαžšβ€‹αž…αž˜αŸ’αž›αž„β€‹αž˜αžΆαžαž·αž€αžΆβ€‹αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž˜αž½αž™β€‹αžŸαž”αŸ’αžαžΆαž αŸβ€‹αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž˜αž·αž“β€‹αžŠαŸ‚αž›β€‹αž…αžΆαž”αŸ‹β€‹αž”αžΆαž“β€‹αž‡αžΆαž˜αž½αž™β€‹αž˜αŸβ€‹αŸ” αž“αŸ…αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹αžœαžΆαž”αžΆαž“αž‡αž½αž™αžαŸ’αž‰αž»αŸ†αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆ αž’αžαŸ’αžαž”αž‘ αžŸαž αž€αžΆαžšαžΈαž–αžΈ AvitoαŸ– αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž‘αŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ pg_dump. αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αž’αŸ†αž–αžΈαž€αŸ†αžŽαŸ‚αžšαž”αžŸαŸ‹αž™αžΎαž„ (αž€αŸ‚αž”αŸ’αžšαŸ‚αž”αž“αŸ’αžαž·αž…) αž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αŸ”

αž‚αŸ†αž“αž·αžαž“αŸαŸ‡αž‚αžΊαžαžΆαž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαžœαžŠαŸ‚αž›αž”αžΆαž“αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž“αžΉαž„αžšαž“αŸ’αž’αž…αž˜αŸ’αž›αž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž›αŸαžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ” αž˜αžΆαž“αž€αžΆαžšαž…αž˜αŸ’αž›αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž„αžΆαžšαž•αž›αž·αžαž€αž˜αŸ’αž˜αŸ” αž“αŸαŸ‡αžŸαŸ†αžαžΆαž“αŸ‹αž–αŸ’αžšαŸ„αŸ‡αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž“αžΉαž„αž‡αž½αž™αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž”αŸ„αŸ‡αž…αŸ„αž›αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆ αž αžΎαž™αž”αž“αŸ’αžαž‘αž‘αž½αž›αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αžΈαž˜αŸαŸ”

αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆβ€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αžŠαŸ‚αž›β€‹αž–αžŽαŸŒαž“αžΆβ€‹αž’αŸ†αž–αžΈβ€‹αžŠαŸ†αžŽαžΎαžšβ€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌαžšβ€‹αž“αžΉαž„β€‹αž”αŸ’αžšαžΎβ€‹αžŸαž‰αŸ’αž‰αžΆαžŽβ€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“β€‹αžŠαžΌαž…β€‹αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž˜αŸ–

  1. មេ - αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž”αŸ’αžšαž—αž–;
  2. αž…αž˜αŸ’αž›αž„ ៨.៦៩០្៑ - αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž…αž˜αŸ’αž›αž„αž“αŸ…αž›αžΎαž•αž›αž·αžαž€αž˜αŸ’αž˜αž…αžΆαžŸαŸ‹;
  3. αž…αž˜αŸ’αž›αž„ ៨.៦៩០្៑ - αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž‘αžΌαž‡αžΈαžαž›αžαŸ’αž˜αžΈαŸ”

αž•αŸ‚αž“αž€αžΆαžšαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€

1. αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž‡αžΆαžœαž“αŸ…αž›αžΎαž˜αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαžΆαžšαžΆαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸ public αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ dbname:

psql -h master -d dbname -c "CREATE PUBLICATION dbname FOR ALL TABLES;"

2. αž”αž„αŸ’αž€αžΎαžαžšαž“αŸ’αž’αž…αž˜αŸ’αž›αž„αž“αŸ…αž›αžΎαž˜αŸαŸ–

psql -h master -c "select pg_create_logical_replication_slot('repl', 'pgoutput');"

3. αž”αž‰αŸ’αžˆαž”αŸ‹αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž›αžΎαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž…αžΆαžŸαŸ‹αŸ–

psql -h replica1 -c "select pg_wal_replay_pause();"

4. αž‘αž‘αž½αž›αž”αžΆαž“αž›αŸαžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž–αžΈαž˜αŸαŸ–

psql -h master -c "select replay_lsn from pg_stat_replication where client_addr = 'replica1';"

5. αž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž…αŸαž‰αž–αžΈαž€αž“αŸ’αž›αŸ‚αž„αž…αž˜αŸ’αž›αž„αž…αžΆαžŸαŸ‹αŸ” αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž’αŸ’αžœαžΎβ€‹αžœαžΆβ€‹αž‡αžΆβ€‹αžαŸ’αžŸαŸ‚β€‹αžŸαŸ’αžšαž‘αžΆαž™β€‹αž‡αžΆβ€‹αž…αŸ’αžšαžΎαž“ αžŠαŸ‚αž›β€‹αž“αžΉαž„β€‹αž‡αž½αž™β€‹αž–αž“αŸ’αž›αžΏαž“β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž“αŸαŸ‡αŸ–

pg_dump -h replica1 --no-publications --no-subscriptions -O -C -F d -j 8 -f dump/ dbname

6. αž•αŸ’αž‘αž»αž€αž―αž€αžŸαžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ’αž˜αžΈαŸ–

pg_restore -h replica2 -F d -j 8 -d dbname dump/

7. αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αž€αžΆαžšβ€‹αž‘αžΆαž‰β€‹αž™αž€β€‹αž€αžΆαžšβ€‹αž”αŸ„αŸ‡αž…αŸ„αž›β€‹αž“αŸ„αŸ‡ αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžαžΎβ€‹αž˜β€‹αž€αžΆαžšβ€‹αž…αž˜αŸ’αž›αž„β€‹αž“αŸ…β€‹αž›αžΎβ€‹αž€αžΆαžšβ€‹αž…αž˜αŸ’αž›αž„β€‹αžŸαŸ’αž‘αŸ’αžšαžΈαž˜β€‹:

psql -h replica1 -c "select pg_wal_replay_resume();"

7. αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž‡αžΆαžœαž“αŸ…αž›αžΎαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž‘αžΌαž‡αžΈαžαž›αžαŸ’αž˜αžΈαŸ–

psql -h replica2 -c "create subscription oldprod connection 'host=replica1 port=5432 user=postgres password=secret dbname=dbname' publication dbname with (enabled = false, create_slot = false, copy_data = false, slot_name='repl');"

8. αž…αžΌαžšαž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“ oid αž€αžΆαžšαž‡αžΆαžœαŸ–

psql -h replica2 -d dbname -c "select oid, * from pg_subscription;"

9. αž…αžΌαžšαž“αž·αž™αžΆαž™αžαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž› oid=1000. αžαŸ„αŸ‡αž’αž“αž»αžœαžαŸ’αžαž›αŸαžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αŸ…αž€αžΆαžšαž‡αžΆαžœαŸ–

psql -h replica2 -d dbname -c "select pg_replication_origin_advance('pg_1000', 'AA/AAAAAAAA');"

10. αžαŸ„αŸ‡αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž…αž˜αŸ’αž›αž„αŸ–

psql -h replica2 -d dbname -c "alter subscription oldprod enable;"

11. αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž‡αžΆαžœ αž€αžΆαžšαž…αž˜αŸ’αž›αž„αž‚αž½αžšαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ–

psql -h replica2 -d dbname -c "select * from pg_replication_origin_status;"
psql -h master -d dbname -c "select slot_name, restart_lsn, confirmed_flush_lsn from pg_replication_slots;"

12. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αž˜αŸ’αž›αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž αžΎαž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžαžΌαžšαž˜αŸ’αžαž„αž‘αŸ€αžαŸ”

13. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž·αž‘αž€αžΆαžšαž…αž˜αŸ’αž›αž„ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž›αŸ†αžŠαžΆαž”αŸ‹αŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž™αŸ‰αžΆαž„αž›αŸ’αž’ αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸ…αž›αžΎ wiki.postgresql.org.

αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αž•αŸ‚αž“αž€αžΆαžšαž“αŸαŸ‡ αž€αžΆαžšαž”αŸ’αžαžΌαžšαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš Kubernetes αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαž½αž›αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ„αž™αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž–αž½αž€αžœαžΆαž‘αŸ…αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž’αž“αž’αžΆαž“ K8s αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αžŠαŸ„αž™αž”αžΆαž“αžŸαŸ†αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αžŠαŸαž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‡αŸ†αž“αž½αž™αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αžœαžΆαž‚αžΊαž˜αžΆαž“αžαŸ†αž›αŸƒαž…αž„αž…αžΆαŸ†αžαžΆαžœαžΆαž€αŸαž’αžΆαž…αž“αžΆαŸ†αž˜αž€αž“αžΌαžœαž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžš nuances αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αžšαŸ†αž–αžΉαž„αž‘αž»αž€αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΆαž‡αŸ’αž‰αžΆαŸ”

αžŠαŸ„αž™αž”αžΆαž“αž–αž·αž…αžΆαžšαžŽαžΆαž›αžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš Kubernetes αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž”αŸ†αž•αž»αžαž…αŸ†αž“αž½αž“αž”αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ PostgreSQL αž™αžΎαž„αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‚αž˜αŸ’αžšαŸ„αž„αž–αžΈ Zalando αŸ” αž αžΎαž™αž™αžΎαž„αžαŸ’αžšαžΌαžœαž‡αž˜αŸ’αž“αŸ‡αž€αžΆαžšαž›αŸ†αž”αžΆαž€αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆαž˜αž½αž™αžœαžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž›αž‘αŸ’αž’αž•αž›αž–αž·αžαž‡αžΆαž–αŸαž‰αž…αž·αžαŸ’αž αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™αž™αžΎαž„αž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αž–αž„αŸ’αžšαžΈαž€αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž“αŸαŸ‡αž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ PgSQL αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž˜αžΎαž›αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹!

PS

αžŸαžΌαž˜αž’αžΆαž“αž•αž„αžŠαŸ‚αžšαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹