{"id":55467,"date":"2020-01-21T00:00:00","date_gmt":"2020-01-20T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/postgres-vtornik-5-postgresql-i-kubernetes-ci-cd-avtomatizatsiya-testirovaniya"},"modified":"2020-02-18T14:03:35","modified_gmt":"2020-02-18T11:03:35","slug":"postgres-vtornik-5-postgresql-i-kubernetes-ci-cd-avtomatizatsiya-testirovaniya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgres-vtornik-5-postgresql-i-kubernetes-ci-cd-avtomatizatsiya-testirovaniya","title":{"rendered":"Postgres-teisip\u00e4ev nr 5: \"PostgreSQL ja Kubernetes. CI\/CD. Testimise automatiseerimine\"","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Postgres-teisip\u00e4ev nr 5: &quot;PostgreSQL ja Kubernetes. CI\/CD. Testimise automatiseerimine&quot;\" src=\"\/wp-content\/uploads\/2020\/01\/5eb8dd2afa4cab58a7359b305814d77f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00f6\u00f6dunud aasta l\u00f5pus toimus j\u00e4rgmine otse\u00fclekanne Venemaa PostgreSQLi kogukonnalt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.meetup.com\/postgresqlrussia\/\">#RuPostgres<\/a><\/noindex>, mille k\u00e4igus r\u00e4\u00e4kis selle kaasasutaja Nikolai Samokhvalov \"Flanta\" tehnilise direktori Dmitri Stolyaroviga sellest andmebaasis\u00fcsteemist Kubernetes kontekstis.<\/p>\n<p>Avaldame selle arutelu p\u00f5hiosa stenogrammi, ning <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/channel\/UC0SBGSNmBLrTZIkbN-lJHnw\">kogukonna YouTube'i kanalil<\/a><\/noindex> on avaldatud t\u00e4ielik videosalvestus:<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"qXc9VTr4TFc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/qXc9VTr4TFc\/hqdefault.jpg\" alt=\"Vaata videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h2>Andmebaasid ja Kubernetes<\/h2>\n<p>\n<i><b>NS<\/b>: \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u043e VACUUM \u0438 CHECKPOINT&#8217;\u044b. \u0425\u043e\u0442\u0438\u043c \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e Kubernetes. \u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0443 \u0442\u0435\u0431\u044f \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043e\u043f\u044b\u0442\u0430. \u0421\u043c\u043e\u0442\u0440\u0435\u043b \u0442\u0432\u043e\u0438 \u0432\u0438\u0434\u0435\u043e \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u0436\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u2026 \u0414\u0430\u0432\u0430\u0439 \u0441\u0440\u0430\u0437\u0443 \u0441 \u043c\u0435\u0441\u0442\u0430 \u0432 \u043a\u0430\u0440\u044c\u0435\u0440: \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 Postgres \u0438\u043b\u0438 MySQL \u0432 K8s?<\/i><\/p>\n<p><b>DS<\/b>: Sellele k\u00fcsimusele ei ole \u00fchtegi kindlat vastust, ega saagi olla. Aga \u00fcldiselt on see lihtsus ja mugavus\u2026 potentsiaalselt. K\u00f5igile meeldiks ju manageeritud teenused.<\/p>\n<p><i><b>NS<\/b>: Nii nagu <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/rds\/\">RDS<\/a><\/noindex>, ainult, et endal?<\/i><\/p>\n<p><b>DS<\/b>: Jah: et nagu RDS, ainult kus iganes.<\/p>\n<p><i><b>NS<\/b>: \u201eIgasugustes kohtades\u201c on hea t\u00e4helepanek. Suurtes ettev\u00f5tetes on k\u00f5ik erinevates kohtades. Miks siis, kui tegemist on suure ettev\u00f5ttega, mitte kasutada valmis lahendust? N\u00e4iteks Nutanixil on oma arendus, teistel ettev\u00f5tetel (VMware\u2026) \u2014 sama \u201eRDS, aga enda oma\u201c.<\/i><\/p>\n<p><b>DS<\/b>: Aga see, millest me r\u00e4\u00e4gime, on konkreetne teostus, mis t\u00f6\u00f6tab ainult teatud tingimustes. Kui r\u00e4\u00e4kida Kubernetesest, siis siin on tohutu infrastruktuuri mitmekesisus (mis v\u00f5ib olla K8s-is). Sisuliselt on see API standard pilve jaoks\u2026<\/p>\n<p><i><b>NS<\/b>: Veel tasuta!<\/i><\/p>\n<p><b>DS<\/b>: See pole nii oluline. Tasuta on oluline mitte v\u00e4ga suurele turusegmendile. Oluline on midagi muud\u2026 Sa ilmselt m\u00e4letad ettekannet \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/431500\/\">Andmebaasid ja Kubernetes<\/a><\/noindex>\u00bb?<\/p>\n<p><i><b>NS<\/b>: Jah.<\/i><\/p>\n<p><b>DS<\/b>: \u042f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0435\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e. \u0427\u0430\u0441\u0442\u044c \u043b\u044e\u0434\u0435\u0439 \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u044f \u0433\u043e\u0432\u043e\u0440\u044e: \u00ab\u0420\u0435\u0431\u044f\u0442\u0430, \u043f\u043e\u0435\u0445\u0430\u043b\u0438 \u0432\u0441\u0435\u043c\u0438 \u0411\u0414 \u0432 Kubernetes!\u00bb, \u2014 \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0441\u0451 \u0436\u0443\u0442\u043a\u0438\u0435 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b. \u0410 \u044f-\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435 \u043e \u0434\u0440\u0443\u0433\u043e\u043c: \u00ab\u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u043a\u0430\u043a \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c. \u0421\u0435\u0439\u0447\u0430\u0441 \u0435\u0445\u0430\u0442\u044c \u0431\u0430\u0437\u0430\u043c\u0438 \u0432 Kubernetes? Production&#8217;\u043e\u043c? \u041d\u0443, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043b\u044e\u0431\u0438\u0442\u0435\u2026 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438. \u0410 \u0432\u043e\u0442 \u0434\u043b\u044f dev&#8217;\u0430 \u2014 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e. \u0414\u043b\u044f dev&#8217;\u0430 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439\u00bb.<\/p>\n<p><i>\u041d\u0421: \u041f\u043e\u0434 dev&#8217;\u043e\u043c \u0442\u044b \u0438\u043c\u0435\u0435\u0448\u044c \u0432 \u0432\u0438\u0434\u0443 \u0432\u0441\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 prod? Staging, QA\u2026<\/i><\/p>\n<p><b>DS<\/b>: Kui r\u00e4\u00e4gime perf-seisakutest, siis ilmselt mitte, sest seal on n\u00f5uded spetsiifilised. Kui r\u00e4\u00e4gime erijuhtudest, kus staging'ul on vaja v\u00e4ga suurt andmebaasi, siis ka t\u00f5en\u00e4oliselt mitte\u2026 Kui see on staatiline keskkond, mis peab pikalt kestma, siis mis kasu on andmebaasist, mis asub K8s-is?<\/p>\n<p><i><b>NS<\/b>: Ei mingit. Aga kus me n\u00e4eme staatilisi keskkondi? Staatiline keskkond on juba homme aegunud.<\/i><\/p>\n<p><b>DS<\/b>: Staging v\u00f5ib olla staatiline. Meil on kliente\u2026<\/p>\n<p><i><b>NS<\/b>: Jah, mul on ka. Suur probleem, kui sul on 10 TB andmebaas ja staging on 200 GB\u2026<\/i><\/p>\n<p><b>DS<\/b>: \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e\u0439 \u043a\u0435\u0439\u0441! \u041d\u0430 staging \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f prod&#8217;\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u043d\u043e\u0441\u044f\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0418 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430: \u00ab\u0432\u044b\u043a\u0430\u0442\u0438\u0442\u044c \u0432 production\u00bb. \u042d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u2014 \u0434\u0435\u043b\u044c\u0442\u044b \u2014 \u0434\u043e\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f (\u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e API&#8217;\u0448\u043a\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f) \u0432 production. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<p><i><b>NS<\/b>: \u042f \u0432\u0438\u0434\u0435\u043b \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u044b \u0432 \u0414\u043e\u043b\u0438\u043d\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0438\u0434\u044f\u0442 \u0432 RDS&#8217;\u0435 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432 Heroku \u0435\u0449\u0451 \u2014 \u044d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 2-3-\u043b\u0435\u0442\u043d\u0435\u0439 \u0434\u0430\u0432\u043d\u043e\u0441\u0442\u0438, \u2014 \u0438 \u043e\u043d\u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0434\u0430\u043c\u043f \u0441\u0435\u0431\u0435 \u043d\u0430 \u043b\u0430\u043f\u0442\u043e\u043f. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u0430\u0437\u0430 \u043f\u043e\u043a\u0430 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c 80 \u0413\u0431, \u0430 \u043d\u0430 \u043b\u0430\u043f\u0442\u043e\u043f\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e. \u041f\u043e\u0442\u043e\u043c \u043e\u043d\u0438 \u0434\u043e\u043a\u0443\u043f\u0430\u044e\u0442 \u0434\u0438\u0441\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e 3 \u0431\u0430\u0437\u044b \u0438\u043c\u0435\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0441\u0442\u0438. \u0412\u043e\u0442 \u0442\u0430\u043a \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u0436\u0435. \u0422\u0430\u043a\u0436\u0435 \u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u043d\u0435 \u0431\u043e\u044f\u0442\u0441\u044f prod \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 staging \u2014 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u041d\u043e \u0432\u0438\u0434\u0435\u043b \u0438 \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u044f\u0442\u0441\u044f, \u0438 \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0440\u0443\u043a. \u041d\u043e \u043f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u043f\u0440\u043e Kubernetes. \u042f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0432 prod&#8217;\u0435 \u043f\u043e\u043a\u0430 \u043d\u0438 \u0443 \u043a\u043e\u0433\u043e?<\/i><\/p>\n<p><b>DS<\/b>: \u0423 \u043d\u0430\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0431\u0430\u0437\u044b \u0435\u0441\u0442\u044c \u0432 prod&#8217;\u0435. \u0420\u0435\u0447\u044c \u043f\u0440\u043e \u043e\u0431\u044a\u0435\u043c\u044b \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u0438 \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043b\u0435\u043d\u044c \u0431\u044b\u043b\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 (\u0434\u0430 \u0438 \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438). \u0418 \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043f\u043e\u0434 Kubernetes&#8217;\u043e\u043c \u0435\u0441\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u042d\u0442\u0430 \u0431\u0430\u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u2014 \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0432 VMware, \u043f\u043e\u0432\u0435\u0440\u0445 \u0421\u0425\u0414. \u041c\u044b \u0435\u0451 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u0438 \u0432 <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/persistent-volumes\/\">PV<\/a><\/noindex> ja n\u00fc\u00fcd saame seda \u00fchest masinast teise \u00fcle viia.<\/p>\n<p><i><b>NS<\/b>: Sellise suurusega andmebaasid, kuni 100 GB, headel ketastel ja hea v\u00f5rgu korral, saab paigaldada paarik\u00fcmne minuti jooksul, eks? Kiirus 1 GB sekundis \u2014 see ei ole enam eksootika.<\/i><\/p>\n<p><b>DS<\/b>: Jah, lineaarse operatsiooni puhul ei ole see probleem.<\/p>\n<p><i><b>NS<\/b>: Okei, prod'ist peame vaid m\u00f5tlema. Aga kui me kaalume Kuberneteset mitte-prod'i keskkondade jaoks \u2014 kuidas tegutseda? Ma n\u00e4en, et Zalando <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/zalando\/postgres-operator\">teeb operaatorit<\/a><\/noindex>, Crunchy <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CrunchyData\/postgres-operator\">arendab<\/a><\/noindex>, on veel m\u00f5ned variandid. Ja on <noindex><a rel=\"nofollow\" href=\"https:\/\/ongres.com\/\">OnGres<\/a><\/noindex> \u2014 meie hea tuttav Alvaro Hispaaniast: nad teevad sisuliselt mitte lihtsalt <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/326414\/\">operaator<\/a><\/noindex>, vaid kogu distributsiooni (<noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/ongresinc\/stackgres\">StackGres<\/a><\/noindex>), \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u0438\u043c\u043e \u0441\u0430\u043c\u043e\u0433\u043e Postgres&#8217;\u0430 \u0435\u0449\u0451 \u0438 \u0431\u044d\u043a\u0430\u043f \u0440\u0435\u0448\u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0445\u0430\u0442\u044c, \u043f\u0440\u043e\u043a\u0441\u0438 Envoy\u2026<\/i><\/p>\n<p><b>DS<\/b>: Envoy milleks? Just Postgres'i liikluse tasakaalustamiseks?<\/p>\n<p><i><b>NS<\/b>: Jah. See t\u00e4hendab, et nad n\u00e4evad seda nii: kui v\u00f5tta Linuxi jaotamine ja tuum, siis tavaline PostgreSQL on tuum, kuid nad tahavad luua jaotuse, mis on pilves\u00f5bralik ja t\u00f6\u00f6tab Kuberneteses. Nad \u00fchendavad komponente (varukoopiad jne) ja kohandavad, et need h\u00e4sti t\u00f6\u00f6taksid.<\/i><\/p>\n<p><b>DS<\/b>: T\u00f5eliselt \u00e4ge! Sisuliselt on see tarkvara, et teha oma hallatud Postgres.<\/p>\n<p><i><b>NS<\/b>: Linuxi jaotustel on pidevalt probleeme: kuidas teha draivereid, et kogu riistvara toetataks. Neil on idee, et nad t\u00f6\u00f6tavad Kuberneteses. Ma tean, et operaatorel Zalando puhul n\u00e4gime hiljuti s\u00f5ltuvust AWS-st ja see pole enam eriti hea. Ei peaks olema s\u00f5ltuvust konkreetsest infrastruktuurist \u2014 mis siis on selle m\u00f5te?<\/i><\/p>\n<p><b>DS<\/b>: Ei tea, millises konkreetses olukorras Zalando s\u00f5ltus, aga Kuberneteses on praegu salvestus tehtud nii, et ei saa \u00fcldiselt ketta varukoopiat teha. Hiljuti lisati standardisse \u2014 viimases versioonis <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465417\/\">CSI spetsifikatsioonid<\/a><\/noindex> \u2014 tehti v\u00f5imalus hetkepilte, aga kus see on rakendatud? Ausalt, see on endiselt nii toores\u2026 Me proovime CSI-d AWS, GCE, Azure, vSphere peal, aga kui hakkad kasutama, siis on kohe n\u00e4ha, et see pole veel valmis.<\/p>\n<p><i><b>NS<\/b>: \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u0437\u0430\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u0414\u0443\u043c\u0430\u044e, \u044d\u0442\u043e \u0435\u0449\u0451 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u043d\u044f\u044f \u0441\u0442\u0430\u0434\u0438\u044f \u2014 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0440\u043e\u0441\u0442\u0430. \u0412\u043e\u043f\u0440\u043e\u0441: \u0447\u0442\u043e \u0431\u044b \u0442\u044b \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c PgSQL \u0432 K8s? \u041a\u0430\u043a\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c?<\/i><\/p>\n<p><b>DS<\/b>: \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Postgres \u0434\u043b\u044f \u043d\u0430\u0441 \u2014 \u044d\u0442\u043e 3%. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430 \u0432 Kubernetes, \u043d\u0435 \u0431\u0443\u0434\u0443 \u0434\u0430\u0436\u0435 \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Elasticsearch. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u2014 \u043a\u0443\u0447\u0430: \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e, \u0434\u0440\u0443\u0433\u0438\u0435 \u2014 \u043d\u0435\u0442. \u041c\u044b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0438 \u0435\u0433\u043e \u0432\u0441\u0435\u0440\u044c\u0451\u0437. \u0412 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f Kubernetes \u2014 \u043d\u0435 \u0432 \u00ab\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 Amazon&#8217;\u0430\u00bb\u2026 \u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0430\u0441\u0441\u043e\u0432\u043e (= \u043f\u043e\u0447\u0442\u0438 \u0443 \u0432\u0441\u0435\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/spotahome\/redis-operator\">\u0434\u043b\u044f Redis<\/a><\/noindex> <i>(\u0441\u043a\u043e\u0440\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u043e \u043d\u0451\u043c)<\/i>.<\/p>\n<p><i><b>NS<\/b>: \u0410 \u0434\u043b\u044f MySQL \u0442\u043e\u0436\u0435 \u043d\u0435\u0442? \u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e Percona\u2026 \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0438 MySQL, \u0438 MongoDB, \u0438 Postgres, \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0438\u043b\u0438\u0442\u044c: \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0431\u0430\u0437, \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432.<\/i><\/p>\n<p><b>DS<\/b>: \u041c\u044b \u043d\u0435 \u0443\u0441\u043f\u0435\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0434\u043b\u044f MySQL. \u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0444\u043e\u043a\u0443\u0441. MySQL \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 standalone. \u0417\u0430\u0447\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u0435\u0448\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0411\u0414\u2026 \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 Postrges, \u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e-\u043f\u0440\u043e\u0441\u0442\u043e\u043c\u0443.<\/p>\n<p><i><b>NS<\/b>: \u041e\u0431 \u044d\u0442\u043e\u043c \u0442\u043e\u0436\u0435 \u0431\u044b\u043b \u0432\u043e\u043f\u0440\u043e\u0441. \u0412\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430?<\/i><\/p>\n<p><b>DS<\/b>: \u0414\u0430, \u0432 100% \u0443 \u043d\u0430\u0441 PostgreSQL \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0431\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u0442\u0430\u043a. \u041c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043b\u044f Prometheus, \u0434\u043b\u044f Redis. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432 \u043f\u043b\u0430\u043d\u0430\u0445 \u043d\u0430\u0439\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043b\u044f Elasticsearch \u2014 \u043e\u043d \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u00ab\u0433\u043e\u0440\u0438\u0442\u00bb, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u0435\u0433\u043e \u0432 100% \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 Kubernetes. \u0422\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0438\u0439\u0442\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b MongoDB \u0442\u043e\u0436\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 Kubernetes. \u0422\u0443\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0445\u043e\u0442\u0435\u043b\u043a\u0438 \u2014 \u0435\u0441\u0442\u044c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u044d\u0442\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0410 \u043f\u0440\u043e Postgres \u043c\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0443 \u043d\u0430\u0441 standalone.<\/p>\n<h2>\u0411\u0414 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Kubernetes<\/h2>\n<p>\n<i><b>NS<\/b>: \u0414\u0430\u0432\u0430\u0439 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0442\u0435\u043c\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u0430\u043a \u0440\u0430\u0441\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0430\u0437\u0435 \u2014 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f DevOps-\u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b. \u0415\u0441\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u043c\u043d\u043e\u0433\u043e \u0431\u0430\u0437, \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0433\u0434\u0435-\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u041a\u0430\u043a \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 CI\/CD, \u0447\u0442\u043e\u0431\u044b \u0441 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0421\u0423\u0411\u0414 \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041a\u0430\u043a\u043e\u0439 \u0443 \u0442\u0435\u0431\u044f \u043f\u043e\u0434\u0445\u043e\u0434?<\/i><\/p>\n<p><b>DS<\/b>: \u00dchte vastust ei saa olla. On mitu parameetrit. Esimene on andmebaasi suurus, mille me tahame avada. Sa mainisid, et erinevad ettev\u00f5tted suhtuvad erinevalt sellesse, et prod-andmebaasi koopia oleks dev- ja stage-vkes.<\/p>\n<p><i><b>NS<\/b>: GDPR-i tingimustes arvan, et nad k\u00e4ituvad \u00fcha ettevaatlikumalt... V\u00f5in \u00f6elda, et Euroopas on juba hakatud trahve m\u00e4\u00e4rama.<\/i><\/p>\n<p><b>DS<\/b>: \u041d\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0444\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u0430\u043c\u043f \u0441 production&#8217;\u0430 \u0438 \u0435\u0433\u043e \u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u0443\u0435\u0442. \u041f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f prod&#8217;\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0441\u043d\u0430\u043f\u0448\u043e\u0442, \u0434\u0430\u043c\u043f, \u0431\u0438\u043d\u0430\u0440\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f\u2026), \u043d\u043e \u043e\u043d\u0438 \u0430\u043d\u043e\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438: \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0444\u0438\u043a\u0441\u0442\u0443\u0440\u044b \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0431\u0430\u0437\u0443. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430-\u0442\u043e \u043a\u0430\u043a\u0430\u044f: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437? \u0418 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043d\u0443\u0436\u043d\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438?<\/p>\n<p>Oleme j\u00f5udnud skeemi: kui kliendil on fikstuurikomplekt (minimum andmebaasi versioon), siis kasutame neid vaikimisi. Kui r\u00e4\u00e4gime review-keskkondadest, kui oleme loonud haru ja meil on rakendus k\u00e4ivitatud \u2014 t\u00f5stame sinna v\u00e4ikese andmebaasi. Aga see \u00f5nnestus h\u00e4sti ja <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/417509\/\">variant<\/a><\/noindex>, \u043a\u043e\u0433\u0434\u0430 \u0441 production&#8217;\u0430 \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 (\u043d\u043e\u0447\u044c\u044e) \u0441\u043d\u0438\u043c\u0430\u0435\u043c \u0434\u0430\u043c\u043f \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 PostgreSQL \u0438 MySQL \u0441 \u044d\u0442\u0438\u043c\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u043d\u0430\u0434\u043e 50 \u0440\u0430\u0437 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u0430\u0437\u0443, \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0431\u044b\u0441\u0442\u0440\u043e.<\/p>\n<p><i><b>NS<\/b>: Lihtsa kopeerimisega?<\/i><\/p>\n<p><b>DS<\/b>: Andmed on otse Docker'i pildis. St meil on valmis pilt, olgu see 100 GB. T\u00e4nu Docker'i kihtidele saame seda pilti kiiresti vajaliku arvu kordi \u00fcles seada. Meetod on v\u00f5ib-olla lihtne, aga t\u00f6\u00f6tab h\u00e4sti.<\/p>\n<p><i><b>NS<\/b>: \u0414\u0430\u043b\u044c\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0435, \u043e\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u0438 Docker&#8217;\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0434\u0430? Copy-on-write \u0432\u043d\u0443\u0442\u0440\u0438 Docker&#8217;\u0430 \u2014 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0438 \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u043e\u0435\u0445\u0430\u043b\u0438, \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e. \u041a\u043b\u0430\u0441\u0441! \u0418 \u0432\u044b \u044d\u0442\u043e \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u043e\u0432\u0441\u044e?<\/i><\/p>\n<p><b>DS<\/b>: Ammu.<\/p>\n<p><i><b>NS<\/b>: \u041c\u044b \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f. \u0422\u043e\u043b\u044c\u043a\u043e \u043c\u044b \u043d\u0435 Docker&#8217;\u043e\u0432\u0441\u043a\u0438\u0439 copy-on-write \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c, \u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0435\u0449\u0451.<\/i><\/p>\n<p><b>DS<\/b>: \u041e\u043d \u043d\u0435 generic. \u0410 Docker&#8217;\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e.<\/p>\n<p><i><b>NS<\/b>: \u041f\u043e \u0438\u0434\u0435\u0435, \u0434\u0430. \u041d\u043e \u0443 \u043d\u0430\u0441 \u0442\u043e\u0436\u0435 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0438, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438. \u0417\u0434\u0435\u0441\u044c \u043a\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041c\u044b \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b Postgres&#8217;\u0430 \u043d\u0430 \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0441\u043c\u043e\u0442\u0440\u0438\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b Docker&#8217;\u0430 \u0438 \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u043e \u0435\u0441\u043b\u0438 \u0431\u0430\u0437\u0430 \u2014 \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 1 \u0422\u0431, \u0442\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u0441\u0451 \u0434\u043e\u043b\u0433\u043e: \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u043e\u0447\u044c\u044e, \u0438 \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0432 Docker\u2026 \u0410 \u0435\u0441\u043b\u0438 5 \u0422\u0431 \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0442\u044c \u0432 Docker\u2026 \u0418\u043b\u0438 \u0432\u0441\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e?<\/i><\/p>\n<p><b>DS<\/b>: Mis vahet seal on: need on ju blobid, lihtsalt bitid ja baitid.<\/p>\n<p><i><b>NS<\/b>: Kas vahe on selles, et teete seda dump'i ja restore'iga?<\/i><\/p>\n<p><b>DS<\/b>: Sugugi mitte vajalik. Selle pildi genereerimise meetodid v\u00f5ivad olla erinevad.<\/p>\n<p><i><b>NS<\/b>: \u0414\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u0430\u043a, \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u043c\u044b \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041e\u043d \u043f\u043e \u0441\u0443\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u043e\u0439, \u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u0435 \u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0430 \u0447\u0435\u0440\u0435\u0437 \u0430\u0440\u0445\u0438\u0432. \u0411\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432, \u043a\u0443\u0434\u0430 WAL&#8217;\u044b \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c, \u0442\u0430\u043c \u0436\u0435 \u0431\u044d\u043a\u0430\u043f\u044b \u0441\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f\u2026 \u042d\u0442\u0438 WAL&#8217;\u044b \u043f\u043e\u0442\u043e\u043c \u0434\u043e\u043b\u0435\u0442\u0430\u044e\u0442 \u2014 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 (\u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e 1-2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b) \u2014 \u0434\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430. \u0421 \u043d\u0435\u0433\u043e \u043c\u044b \u043b\u044e\u0431\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u2014 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443 \u043d\u0430\u0441 ZFS.<\/i><\/p>\n<p><b>DS<\/b>: Kuid ZFS-iga olete piiratud \u00fche s\u00f5lme kasutamisega.<\/p>\n<p><i><b>NS<\/b>: Jah. Kuid ZFS-l on veel \u00fcks maagia <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.oracle.com\/cd\/E18752_01\/html\/819-5461\/gbchx.html\">send<\/a><\/noindex>: selle abil saab saata snapshot'i ja isegi (ma ei ole seda veel eriti testinud, aga...) saab saata delta kahte erineva vahel <code>PGDATA<\/code>. Tegelikult on meil veel \u00fcks t\u00f6\u00f6riist, mida me selliste \u00fclesannete jaoks ei ole eriti uurinud. PostgreSQL-s on <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/12\/app-pgrewind.html\">pg_rewind<\/a><\/noindex>, mis t\u00f6\u00f6tab nagu 'nutikas' rsync, vahele j\u00e4ttes palju sellist, millele ei pea t\u00e4helepanu p\u00f6\u00f6rama, sest seal ei ole midagi muutunud. Me saame kiire senkroniseerimise teha kahel serveril ja tagasi rullida t\u00e4pselt samamoodi.<\/i><\/p>\n<p><i>\u0422\u0430\u043a \u0432\u043e\u0442, \u043c\u044b \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u044d\u0442\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 DBA&#8217;\u043d\u043e\u0439, \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043e \u0447\u0451\u043c \u0442\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b: \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0431\u0430\u0437\u0430, \u043d\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c 50 \u0440\u0430\u0437 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0443\u0442\u044c \u043b\u0438 \u043d\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<\/i><\/p>\n<p><b>DS<\/b>: 50 \u0440\u0430\u0437 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043a\u0430\u0437\u0430\u0442\u044c 50 Spot&#8217;\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432.<\/p>\n<p><i><b>NS<\/b>: Ei, teeme k\u00f5ik \u00fchel masinal.<\/i><\/p>\n<p><b>DS<\/b>: Aga kuidas te paigutate 50 korda, kui see \u00fcks andmebaas on, \u00fctleme, terabaidine. T\u00f5en\u00e4oliselt vajab see tinglikult 256 GB RAM-i?<\/p>\n<p><i><b>NS<\/b>: Jah, m\u00f5nikord on m\u00e4lu t\u00f5esti palju \u2014 see on normaalne. Aga selline n\u00e4ide elust. Toote masinal on 96 tuuma ja 600 GB. Samas kasutatakse andmebaasi jaoks 32 tuuma (isegi 16 tuuma vahel on n\u00fc\u00fcd m\u00f5nikord) ja m\u00e4lu 100-120 GB.<\/i><\/p>\n<p><b>DS<\/b>: Ja sinna mahub 50 koopiat?<\/p>\n<p><i><b>NS<\/b>: \u0422\u0430\u043a \u043a\u043e\u043f\u0438\u044f-\u0442\u043e \u043e\u0434\u043d\u0430, \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 copy-on-write (ZFS&#8217;\u043d\u044b\u0439)\u2026 \u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/i><\/p>\n<p><i>Meil on n\u00e4iteks 10 TB andmebaas. Selle jaoks tehtud kett, ZFS surus selle suurust veel 30-40% v\u00f5rra kokku. Kuna me ei teosta koormustestimist, ei ole meile t\u00e4pne reageerimisaeg oluline: olgu see ka kahe korda aeglasem \u2014 see on okei.<\/i><\/p>\n<p><i>\u041c\u044b \u0434\u0430\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c, QA, DBA \u0438 \u0442.\u043f. \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 1-2 \u043f\u043e\u0442\u043e\u043a\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e. \u041e\u043d\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 10 \u044f\u0434\u0435\u0440 \u2014 \u0435\u0439 \u043d\u0443\u0436\u0435\u043d 1 \u0431\u044d\u043a\u0435\u043d\u0434 Postgres&#8217;\u0430, 1 \u044f\u0434\u0440\u043e. \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u2014 \u043c\u043e\u0436\u0435\u0442, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/12\/routine-vacuuming.html#AUTOVACUUM\">autovacuum<\/a><\/noindex> veel k\u00e4ivitub, siis kasutatakse teist tuuma. Meil on eraldatud 16-32 tuuma, nii et 10 inimest saavad samal ajal t\u00f6\u00f6tada, probleeme ei ole.<\/i><\/p>\n<p><i>Kuna f\u00fc\u00fcsiliselt <code>PGDATA<\/code> \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e \u043c\u044b \u043e\u0431\u043c\u0430\u043d\u044b\u0432\u0430\u0435\u043c Postgres \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435. \u0424\u0438\u0448\u043a\u0430 \u0432 \u0447\u0435\u043c: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 10 Postgres&#8217;\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043a\u0430\u043a\u0430\u044f? \u0421\u0442\u0430\u0432\u044f\u0442 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/runtime-config-resource.html\">shared_buffers<\/a><\/noindex>, oletame, 25%. Vastavalt sellele on see 200 GB. Rohkem kui kolm sellist ei saa enam k\u00e4ivitada, kuna m\u00e4lu saab otsa.<\/i><\/p>\n<p><i>Aga mingil hetkel m\u00f5istsime, et see pole vajalik: seadistame shared_buffers 2 GB. PostgreSQL-l on <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/runtime-config-query.html#GUC-EFFECTIVE-CACHE-SIZE\">effective_cache_size<\/a><\/noindex>, ja tegelikult m\u00f5jutab see ainult <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Query_plan\">plaane.<\/a><\/noindex>. Me paigaldame selle 0,5 TB. Ja isegi ei ole oluline, et neid tegelikult ei ole: ta koostab plaane, nagu oleks need olemas.<\/i><\/p>\n<p><i>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u043b\u0430\u043d\u044b \u2014 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 production. \u0421\u0435\u043a\u0443\u043d\u0434\u044b \u0442\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 (\u0442\u043e\u0440\u043c\u043e\u0437\u043d\u0435\u0435), \u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c, \u0438 \u0441\u0430\u043c\u0438 \u043f\u043b\u0430\u043d\u044b (\u043a\u0430\u043a\u0438\u0435 \u0442\u0430\u043c JOIN&#8217;\u044b \u0438 \u0442.\u043f.) \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u043c\u0438 \u0436\u0435, \u043a\u0430\u043a \u043d\u0430 production. \u0418 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435.<\/i><\/p>\n<p><b>DS<\/b>: Kas sa ei arva, et siin on mitu probleemi? Esiteks \u2014 see lahendus t\u00f6\u00f6tab ainult PostgreSQL-is. Selline l\u00e4henemine on v\u00e4ga spetsiifiline, see ei ole generiline. Teiseks \u2014 Kubernetes (ja k\u00f5ik, kuhu n\u00fc\u00fcd pilvetehnoloogiad l\u00e4hevad) eeldab mitmeid s\u00f5lme, ja need s\u00f5lmed on efemeersed. Aga sinu puhul on see stateful, p\u00fcsiv s\u00f5lm. Need asjad tekitavad minus vastuolusid.<\/p>\n<p><i><b>NS<\/b>: \u041f\u0435\u0440\u0432\u043e\u0435 \u2014 \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d, \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e Postgres&#8217;\u043e\u0432\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u0414\u0443\u043c\u0430\u044e, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c direct IO \u0438 \u0431\u0443\u0444\u0435\u0440\u043d\u044b\u0439 \u043f\u0443\u043b \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434 \u0432\u0441\u044e \u043f\u0430\u043c\u044f\u0442\u044c, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u2014 \u043f\u043b\u0430\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435. \u041d\u043e \u043c\u044b \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 Postgres&#8217;\u043e\u043c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c, \u043f\u0440\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0435 \u0434\u0443\u043c\u0430\u0435\u043c.<\/i><\/p>\n<p><i>Kubernetesest. Sa ju r\u00e4\u00e4gid igal pool, et meie andmebaas on p\u00fcsiv. Kui instants kukkus kokku, on peamine \u2014 s\u00e4ilitada ketas. Meie kogu platvorm on samuti Kuberneteses, ning Postgres'i komponent on eraldi (kuigi ka see kunagi seal olema hakkab). Seega on asi nii: instants kukkus kokku, aga me s\u00e4ilitasime selle PV ja \u00fchendasime lihtsalt uue instantsi k\u00fclge, nagu polekski midagi juhtunud.<\/i><\/p>\n<p><b>DS<\/b>: \u0421 \u043c\u043e\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c pod&#8217;\u044b \u0432 Kubernetes. K8s \u2014 \u044d\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439: \u0443\u0437\u043b\u044b \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0417\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c pod \u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e X \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 K8s \u0441\u0430\u043c \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u0442\u0441\u044f. \u041d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0432 Kubernetes \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430: \u0432 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/467477\/\">1.16<\/a><\/noindex>, in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/476998\/\">1.17<\/a><\/noindex> (see v\u00e4ljaanne ilmus <i>n\u00e4dalat<\/i> tagasi) need funktsioonid on alles beetaversioonis.<\/p>\n<p>\u041f\u0440\u043e\u0439\u0434\u0435\u0442 \u043f\u043e\u043b\u0433\u043e\u0434\u0430-\u0433\u043e\u0434 \u2014 \u043e\u043d\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c, \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043e \u0442\u0430\u043a\u043e\u0432\u044b\u043c. \u0422\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u043e\u0432 \u0438 resize&#8217;\u0430 \u0443\u0436\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0430\u0448\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u0430\u0437\u0430. \u0414\u0430, \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e\u0439, \u043d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u00ab\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00bb, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u043c\u0435\u044e\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 copy-on-write \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p><i><b>NS<\/b>: Siin on veel asjaolu, et k\u00f5ik mootorid (Amazon, Google\u2026) peavad selle versiooni toetamisega tegelema \u2014 see v\u00f5tab samuti aega.<\/i><\/p>\n<p><b>DS<\/b>: Praegu me neid ei kasuta. Me kasutame oma lahendust.<\/p>\n<h2>Kohalik arendus Kubernetes'ile<\/h2>\n<p>\n<i><b>NS<\/b>: \u0421\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f \u043b\u0438 \u0442\u044b \u0441 \u0442\u0430\u043a\u043e\u0439 \u0445\u043e\u0442\u0435\u043b\u043a\u043e\u0439, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0432\u0441\u0435 pod&#8217;\u044b \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0427\u0442\u043e\u0431\u044b \u043f\u043e-\u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c proof of concept, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Kubernetes, \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u044f \u043f\u043e\u0434 \u044d\u0442\u043e \u043a\u0443\u0447\u0443 \u043c\u0430\u0448\u0438\u043d. \u0415\u0441\u0442\u044c Minikube, \u0434\u0430?<\/i><\/p>\n<p><b>DS<\/b>: Minu arvates on see juhtum \u2014 \u00fchel s\u00f5lmel \u00fcles seadmine \u2014 puhtalt kohaliku arenduse teema. V\u00f5i mingid selle mustri ilmingud. On <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/333470\/\">Minikube<\/a><\/noindex>, on <noindex><a rel=\"nofollow\" href=\"https:\/\/k3s.io\/\">k3s<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/kind\">KIND<\/a><\/noindex>. Me oleme suundumas selle poole, et hakkame Kubernetes'i Docker'i sees kasutama. Oleme hakanud sellega katsetama.<\/p>\n<p><i><b>NS<\/b>: \u042f \u0440\u0430\u043d\u044c\u0448\u0435 \u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0435 pod&#8217;\u044b \u0432 \u043e\u0434\u0438\u043d Docker-\u043e\u0431\u0440\u0430\u0437. \u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043e \u0434\u0440\u0443\u0433\u043e\u043c. \u0412\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0442\u0430\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 pod&#8217;\u044b \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 Docker&#8217;\u0435.<\/i><\/p>\n<p><b>DS<\/b>: Jah. Ja seal on \u00fcsna naljakas imitatsioon tehtud, aga m\u00f5te on selline... Meil on t\u00f6\u00f6riist, et rakendusi \u00fcles seada \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/\">werf<\/a><\/noindex>. Me tahame sellesse teha re\u017eiimi \u2014 tinglikult <code>werf up<\/code>: \u201eK\u00e4ivita mulle kohalik Kubernetes\u201c. Ja seej\u00e4rel k\u00e4ivitada seal tinglik <code>werf follow<\/code>. Siis saab arendaja IDE-s redigeerida, samal ajal kui s\u00fcsteemis on t\u00f6\u00f6protsess, mis n\u00e4eb muudatusi ja uuesti koostab pildid, deponeerib need kohalikku K8s-s\u00fcsteemi. Just nii p\u00fc\u00fcame lahendada kohaliku arenduse probleemi.<\/p>\n<h2>Snapshots ja andmebaasi kloonimine K8s-i kontekstis<\/h2>\n<p>\n<i><b>NS<\/b>: \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a copy-on-write. \u042f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u0443 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u044b. \u041e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 GCP: \u0443 \u0442\u0435\u0431\u044f \u043d\u0430 \u0432\u043e\u0441\u0442\u043e\u0447\u043d\u043e\u043c \u043f\u043e\u0431\u0435\u0440\u0435\u0436\u044c\u0435 \u0421\u0428\u0410 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441. \u0414\u0435\u043b\u0430\u0435\u0448\u044c \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u044b. \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0448\u044c \u0438\u0437 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430 \u043a\u043e\u043f\u0438\u044e \u0434\u0438\u0441\u043a\u0430 \u043d\u0430 \u0437\u0430\u043f\u0430\u0434\u043d\u043e\u043c \u043f\u043e\u0431\u0435\u0440\u0435\u0436\u044c\u0435 \u2014 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u0443\u0436\u0435 \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u044d\u0448 \u043d\u0430\u0434\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u043e \u044d\u0442\u0438 \u043a\u043b\u043e\u043d\u044b (\u0441\u043d\u0430\u043f\u0448\u043e\u0442\u044b) \u2014 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430&#8217;provision&#8217;\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043c. \u042d\u0442\u043e \u043a\u0440\u0443\u0442\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0442\u044c.<\/i><\/p>\n<p><i>\u0410 \u0432\u043e\u0442 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432, \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u044b, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0448\u044c \u0432 Docker&#8217;\u0435 \u0438\u043b\u0438 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0432 ZFS, btrfs \u0438 \u0434\u0430\u0436\u0435 LVM\u2026 \u2014 \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0412 \u043e\u0431\u043b\u0430\u043a\u0435 \u0442\u044b \u0435\u0449\u0451 \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430 \u043d\u0438\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0448\u044c \u0438 \u0436\u0434\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u043c\u0438\u043d\u0443\u0442\u044b (\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2019\/11\/amazon-ebs-fast-snapshot-restore-eliminates-need-for-prewarming-data-into-volumes-created-snapshots\/\">lazy load&#8217;\u0430<\/a><\/noindex>, v\u00f5ib-olla isegi tunde).<\/i><\/p>\n<p><i>Selle asemel saab need andmed sekunditega k\u00e4tte, testi l\u00e4bi viia ja k\u00f5rvaldada. Need kiir\u00fclevaated lahendavad erinevaid \u00fclesandeid. Esimeses olukorras \u2014 et skaleerida ja uusi koopiaid saada, teises \u2014 testide jaoks.<\/i><\/p>\n<p><b>DS<\/b>: Ma ei n\u00f5ustu. Korraliku mahutite kloonimise tegemine on pilve \u00fclesanne. Ma ei ole nende teostust vaadanud, aga tean, kuidas me seda riistvaral teeme. Meil on Ceph, kus on v\u00f5imalik igale f\u00fc\u00fcsilisele mahutile (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ceph.com\/docs\/master\/rbd\/\">RBD<\/a><\/noindex>) \u00f6elda <i>clone<\/i> ja saada juba k\u00fcmnete millisekunditega teine mahuti, millel on samad omadused, <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/IOPS\">IOPS<\/a><\/noindex>&#8216;\u0430\u043c\u0438 \u0438 \u0442.\u043f. \u041d\u0430\u0434\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0445\u0438\u0442\u0440\u044b\u0439 copy-on-write. \u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0431\u043b\u0430\u043a\u0443 \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435? \u0423\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043e\u043d\u0438 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0441\u0442\u0430\u0440\u0430\u044e\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p><i><b>NS<\/b>: Kuid neil kulub ikkagi sekundeid, k\u00fcmneid sekundeid, et instantsi \u00fcles t\u00f5sta, Docker sinna tuua jne.<\/i><\/p>\n<p><b>DS<\/b>: Miks peaks kohe terve instantsi t\u00f5stma? Meil on ju instants 32 s\u00fcdamikuga, 16\u2026 ja sinna mahub mitmeid \u2014 n\u00e4iteks neli. Kui tellime viienda, t\u00f5useb juba instants, mis siis kaotatakse.<\/p>\n<p><i><b>NS<\/b>: Jah, huvitav, et Kuberneteses on hoopis teine lugu. Meie andmebaas ei ole K8s-is ja on \u00fcks instants. K\u00fcll aga l\u00e4heb mitme terabaidi andmebaasi kloonimiseks maksimaalselt kaks sekundit.<\/i><\/p>\n<p><b>DS<\/b>: See on \u00e4ge. Aga minu algne m\u00f5te oli, et see ei ole \u00fcldine lahendus. Jah, see on lahe, aga sobib ainult Postgresile ja ainult \u00fchel s\u00f5lmel.<\/p>\n<p><i><b>NS<\/b>: See sobib mitte ainult Postgresile: nagu ma kirjeldasin, t\u00f6\u00f6tavad need plaanid ainult selles. Aga kui me ei muretse plaanide p\u00e4rast ja vajame lihtsalt k\u00f5iki andmeid funktsionaalseteks testideks, siis sobib see igasuguste andmebaaside jaoks.<\/i><\/p>\n<p><b>DS<\/b>: Palju aastaid tagasi tegime me sarnast LVM-snapshottide peal. See on klassika. Sellist l\u00e4henemist kasutati v\u00e4ga aktiivselt. Stateful-s\u00f5lmed on lihtsalt valus. Sest neid ei tohi kukutada, neist tuleb alati meeles pidada...<\/p>\n<p><i><b>NS<\/b>: Kas sa ei n\u00e4e siin mingisugust h\u00fcbriidi v\u00f5imalust? Oletame, et stateful on mingi pod, mis t\u00f6\u00f6tab mitme inimese peal (palju testijate). Meil on \u00fcks maht, aga t\u00e4nu failis\u00fcsteemile on kloonid kohalikud. Kui pod kukub, j\u00e4\u00e4b ketas alles \u2014 pod t\u00f5useb tagasi, loeb kogu teabest kloonide kohta, t\u00f5stab k\u00f5ik tagasi \u00fcles ja \u00fctleb: \u00abSiin on teie kloonid nende portide peal, j\u00e4tkake nendega t\u00f6\u00f6d\u00bb.<\/i><\/p>\n<p><b>DS<\/b>: \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Kubernetes \u044d\u0442\u043e \u043e\u0434\u0438\u043d pod, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043c\u043d\u043e\u0433\u043e Postgres&#8217;\u043e\u0432.<\/p>\n<p><i><b>NS<\/b>: Jah. Tal on piirm\u00e4\u00e4r: oletame, et samal ajal saab selle juures t\u00f6\u00f6tada mitte rohkem kui 10 inimest. Kui on vaja 20 \u2014 k\u00e4ivitame teise sellise pod\u2019i. T\u00e4iesti reaalne on seda kopeerida, saades teise t\u00e4is mahtu, millel on sama 10 \u201e\u00f5hukest\u201c klooni. Kas sa ei n\u00e4e sellist v\u00f5imalust?<\/i><\/p>\n<p><b>DS<\/b>: \u041d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0443 \u044d\u0442\u043e\u0433\u043e pod&#8217;\u0430 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 (capabilities), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439\u2026 \u041d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c: \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u0432 Kubernetes \u043f\u043e\u0447\u0438\u043d\u044f\u0442 storage, \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445 \u043f\u043e\u0447\u0438\u043d\u044f\u0442 \u0432\u0441\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441 \u0442\u043e\u043c\u0430\u043c\u0438 \u00ad\u2014 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u00ab\u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c\u00bb. \u0411\u0443\u0434\u0435\u0442 resize, \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u2026 \u0415\u0441\u0442\u044c \u0442\u043e\u043c \u2014 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c: \u00ab\u0421\u043e\u0437\u0434\u0430\u0439 \u043d\u043e\u0432\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u0433\u043e\u00bb, \u2014 \u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0442\u043e\u0440\u044b \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0447\u0442\u043e \u043d\u0430\u0434\u043e.<\/p>\n<p><i><b>NS<\/b>: Ma ei usu poolteise sekundi saavutamisse paljude terabyte'ide jaoks. Ceph'is teed ise, aga r\u00e4\u00e4gid pilvedest. Mine pilve, tee EC2-s kloon terabyte'ide EBS mahust ja vaata, milline j\u00f5udlus tuleb. See ei v\u00f5ta paar sekundit. Mind huvitab v\u00e4ga, millal nad selleni j\u00f5uavad. Ma saan aru, millest sa r\u00e4\u00e4gid, aga luba endal mitte n\u00f5ustuda.<\/i><\/p>\n<p><b>DS<\/b>: Okei, aga ma \u00fctlesin, et keskpikas perspektiivis, mitte l\u00fchikeses. Aastaid kestvaks.<\/p>\n<h2>PostgreSQL operaatorist Zalando poolt<\/h2>\n<p>\nKohtumise keskel liitus temaga ka Aleksei Kliukin, endine arendaja firmast Zalando, kes r\u00e4\u00e4kis PostgreSQL operaatori ajaloost:<\/p>\n<blockquote><p>Hea, et see teema \u00fcldse t\u00f5statati: nii Postgres kui Kubernetes. Kui me hakkasime Zalandos seda 2017. aastal tegema, oli see teema, mida k\u00f5ik tahtsid teha, aga keegi ei teinud. K\u00f5igil hakkas juba Kubernetes olemas olema, aga kui k\u00fcsiti, kuidas andmebaasidega olla, siis isegi sellised inimesed nagu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kelseyhightower\">Kelsey Hightower<\/a><\/noindex>, kes propageerisid K8s, \u00fctlesid umbes niimoodi:<\/p>\n<p><i>\u201eMinge halduskeskkondadesse ja kasutage neid, \u00e4rge k\u00e4itage andmebaase Kuberneteses. Muul juhul otsustab teie K8s n\u00e4iteks uuendada, sulgeb k\u00f5ik s\u00f5lmed ja teie andmed kaovad kaugele kaugele.\u201d<\/i><\/p>\n<p>Me otsustasime teha operaatori, mis k\u00e4ivitab Postgresi andmebaasi Kuberneteses, sellele n\u00f5uandele vaatamata. Ja meil oli selleks hea alus \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/zalando\/patroni\">Patroni<\/a><\/noindex>. \u042d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 failover \u0434\u043b\u044f PostgreSQL, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442.\u0435. \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 etcd, consul \u0438\u043b\u0438 ZooKeeper \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u0422\u0430\u043a\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a\u043e\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u043b\u0438\u0434\u0435\u0440, \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u2014 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435, \u2014 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e split brain&#8217;\u0430. \u041f\u043b\u044e\u0441, \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/zalando\/patroni\/tree\/master\/docker\">Docker-image<\/a><\/noindex> selle jaoks.<\/p>\n<p>\u0412\u043e\u043e\u0431\u0449\u0435, \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 auto failover \u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0438\u0437 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e. \u041e\u0431\u043b\u0430\u043a\u043e \u0431\u044b\u043b\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 PaaS (Platform-as-a-Service). \u041e\u043d\u043e Open Source&#8217;\u043d\u043e\u0435, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u0440\u0443\u0434\u0438\u0442\u044c\u0441\u044f. \u041d\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c <noindex><a rel=\"nofollow\" href=\"https:\/\/stups.io\/\">STUPS<\/a><\/noindex>.<\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e Kubernetes&#8217;\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e. \u0422\u043e\u0447\u043d\u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, K8s \u0443\u0436\u0435 \u0431\u044b\u043b, \u043d\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u044b\u0440\u044b\u043c, \u0447\u0442\u043e \u0434\u043b\u044f production \u043d\u0435 \u0433\u043e\u0434\u0438\u043b\u0441\u044f. \u042d\u0442\u043e \u0431\u044b\u043b, \u043f\u043e-\u043c\u043e\u0435\u043c\u0443, 2015 \u0438\u043b\u0438 2016 \u0433\u043e\u0434. \u041a 2017-\u043c\u0443 \u0433\u043e\u0434\u0443 Kubernetes \u0441\u0442\u0430\u043b \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0437\u0440\u0435\u043b\u044b\u043c \u2014 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0442\u0443\u0434\u0430.<\/p>\n<p>Ja meil oli juba Docker-konteiner. Oli PaaS, mis kasutas Dockerit. Miks mitte proovida K8s-i? Miks mitte kirjutada oma operaator? Murat Kabilov, kes tuli meile Avitost, alustas seda projektina oma algatusel \u2014 \"looma m\u00e4ngida\" \u2014 ja projekt \"t\u00f5usis\".<\/p>\n<p>Aga \u00fcldiselt tahtsin r\u00e4\u00e4kida AWS-ist. Miks seal oli ajalooliselt kood, mis oli seotud AWS-iga\u2026<\/p>\n<p>Kui k\u00e4ivitate midagi Kuberneteses, tuleb aru saada, et K8s on pidevas arengus. See areneb pidevalt, paraneb ja perioodiliselt isegi rikneb. Tuleb hoolikalt j\u00e4lgida k\u00f5iki muudatusi Kuberneteses, olema valmis vajadusel s\u00fcvenema sellesse ja \u00f5ppima, kuidas k\u00f5ik detailid t\u00f6\u00f6tavad \u2014 v\u00f5ib-olla rohkem, kui sooviksite. See kehtib p\u00f5him\u00f5tteliselt iga platvormi kohta, millel te oma andmebaase k\u00e4ivitate...<\/p>\n<p>N\u00fc\u00fcd, kui me tegime operaatorit, oli meil Postgres, mis t\u00f6\u00f6tas v\u00e4lise mahuga (antud juhul EBS, kuna t\u00f6\u00f6tasime AWS-is). Andmebaas kasvas ja mingil hetkel tuli teha muudatused: n\u00e4iteks, algne EBS-i suurus oli 100 TB, andmebaas ulatus sellele, n\u00fc\u00fcd soovime EBS-i suurust muuta 200 TB-ks. Kuidas? Eeldame, et v\u00f5iks teha dump\/restore uuele instantsile, kuid see on aeglane ja toob kaasa seisaku.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0442\u0430\u043a\u043e\u0439 resize, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b EBS&#8217;\u0430 \u0438 \u043f\u043e\u0442\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e. \u0418 \u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u043d\u043e \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0443 Kubernetes&#8217;\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e API \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 resize&#8217;\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u0430 AWS, \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043a\u043e\u0434 \u0434\u043b\u044f \u0435\u0433\u043e API.<\/p>\n<p>Keegi ei takista teha sama ka teiste platvormide jaoks. Operaator ei ole seotud ainult AWS-iga, see t\u00f6\u00f6tab ka teistel platvormidel. See on avatud l\u00e4htekoodiga projekt: kui keegi soovib kiirendada uue API kasutuselev\u00f5ttu \u2014 olete teretulnud. On <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/zalando\/postgres-operator\">GitHub<\/a><\/noindex>, pull-p\u00e4ringuid \u2014 Zalando meeskond p\u00fc\u00fcab neile \u00fcsna kiiresti reageerida ja operaatorit edendada. Niipalju kui tean, projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/summerofcode.withgoogle.com\/archive\/2019\/organizations\/6187982082539520\/\">osales<\/a><\/noindex> Google Summer of Code'i ja teiste sarnaste algatuste kohta. Zalando t\u00f6\u00f6tab selle nimel v\u00e4ga aktiivselt.\n<\/p><\/blockquote>\n<p><\/p>\n<h2>P.S. Boonus!<\/h2>\n<p>\nKui teid huvitab PostgreSQL ja Kubernetes, tasub m\u00e4rkida, et eelmisel n\u00e4dalal toimus j\u00e4rgmine Postgres-teisip\u00e4ev, kus Nikolai kohtus <b>Alexander Kukushkiniga Zalando's<\/b>. Video on saadaval <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=FE0xi7SBqsg\">siit<\/a><\/noindex>.<\/p>\n<h2>P.P.S.<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/431500\/\">Andmebaasid ja Kubernetes (\u00fclevaade ja video ettekandest)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/475036\/\">Cassandra migreerimine Kubernetesesse: erip\u00e4rad ja lahendused<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/461149\/\">Ilma t\u00f5rgeteta MongoDB migratsioon Kubernetesesse.<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/450662\/\">Ainulaadne RabbitMQ migreerimine Kubernetesesse<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/479438\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043c\u0438\u043d\u0443\u0432\u0448\u0435\u0433\u043e \u0433\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439 \u044d\u0444\u0438\u0440 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e PostgreSQL-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 #RuPostgres, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0433\u043e \u0441\u043e\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u00ab\u0424\u043b\u0430\u043d\u0442\u0430\u00bb \u0414\u043c\u0438\u0442\u0440\u0438\u0435\u043c \u0421\u0442\u043e\u043b\u044f\u0440\u043e\u0432\u044b\u043c \u043f\u0440\u043e \u044d\u0442\u0443 \u0421\u0423\u0411\u0414 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Kubernetes. \u041c\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0441\u0442\u0435\u043d\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0442\u043e\u0439 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438, \u0430 \u043d\u0430 YouTube-\u043a\u0430\u043d\u0430\u043b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u044c: \u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 Kubernetes \u041d\u0421: \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":55468,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043a\u043e\u043d\u0446\u0435 \u043c\u0438\u043d\u0443\u0432\u0448\u0435\u0433\u043e \u0433\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439 \u044d\u0444\u0438\u0440 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e PostgreSQL-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 #RuPostgres, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0433\u043e \u0441\u043e\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u00ab\u0424\u043b\u0430\u043d\u0442\u0430\u00bb \u0414\u043c\u0438\u0442\u0440\u0438\u0435\u043c \u0421\u0442\u043e\u043b\u044f\u0440\u043e\u0432\u044b\u043c \u043f\u0440\u043e \u044d\u0442\u0443 \u0421\u0423\u0411\u0414 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Kubernetes. \u041c\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0441\u0442\u0435\u043d\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0442\u043e\u0439 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438, \u0430 \u043d\u0430 YouTube-\u043a\u0430\u043d\u0430\u043b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u044c: \u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 Kubernetes \u041d\u0421: \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u043e\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgres-vtornik-5-postgresql-i-kubernetes-ci-cd-avtomatizatsiya-testirovaniya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Postgres-\u0432\u0442\u043e\u0440\u043d\u0438\u043a \u21165: \u00abPostgreSQL \u0438 Kubernetes. CI\/CD. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043a\u043e\u043d\u0446\u0435 \u043c\u0438\u043d\u0443\u0432\u0448\u0435\u0433\u043e \u0433\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439 \u044d\u0444\u0438\u0440 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e PostgreSQL-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 #RuPostgres, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0433\u043e \u0441\u043e\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u00ab\u0424\u043b\u0430\u043d\u0442\u0430\u00bb \u0414\u043c\u0438\u0442\u0440\u0438\u0435\u043c \u0421\u0442\u043e\u043b\u044f\u0440\u043e\u0432\u044b\u043c \u043f\u0440\u043e \u044d\u0442\u0443 \u0421\u0423\u0411\u0414 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Kubernetes. \u041c\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0441\u0442\u0435\u043d\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0442\u043e\u0439 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438, \u0430 \u043d\u0430 YouTube-\u043a\u0430\u043d\u0430\u043b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u044c: \u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 Kubernetes \u041d\u0421: \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u043e\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgres-vtornik-5-postgresql-i-kubernetes-ci-cd-avtomatizatsiya-testirovaniya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-20T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Postgres-teisip\u00e4ev #5: \u00abPostgreSQL ja Kubernetes. CI\/CD. Testimise automatiseerimine\u00bb | ProHoster","description":"M\u00f6\u00f6dunud aasta l\u00f5pus toimus taas otse\u00fclekanne Venemaa PostgreSQL kogukonnast #RuPostgres, kus selle kaasasutaja Nikolai Samohvalov r\u00e4\u00e4kis \"Flanta\" tehnilise direktori Dmitri Stoljaroviga selle andmebaasi kontekstis Kubernetes'i kohta. Avaldame p\u00f5hiosa sellest arutelust, p\u00f5him\u00f5ttelise stenogrammi, ja kogukonna YouTube'i kanalil on saadaval t\u00e4ispikk videoklipi: Andmebaasid ja Kubernetes.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgres-vtornik-5-postgresql-i-kubernetes-ci-cd-avtomatizatsiya-testirovaniya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Postgres-\u0432\u0442\u043e\u0440\u043d\u0438\u043a \u21165: \u00abPostgreSQL \u0438 Kubernetes. CI\/CD. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb | ProHoster","og:description":"\u0412 \u043a\u043e\u043d\u0446\u0435 \u043c\u0438\u043d\u0443\u0432\u0448\u0435\u0433\u043e \u0433\u043e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439 \u044d\u0444\u0438\u0440 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e PostgreSQL-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 #RuPostgres, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0433\u043e \u0441\u043e\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u00ab\u0424\u043b\u0430\u043d\u0442\u0430\u00bb \u0414\u043c\u0438\u0442\u0440\u0438\u0435\u043c \u0421\u0442\u043e\u043b\u044f\u0440\u043e\u0432\u044b\u043c \u043f\u0440\u043e \u044d\u0442\u0443 \u0421\u0423\u0411\u0414 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Kubernetes. \u041c\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0441\u0442\u0435\u043d\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0442\u043e\u0439 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438, \u0430 \u043d\u0430 YouTube-\u043a\u0430\u043d\u0430\u043b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u043b\u043d\u0430\u044f \u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u044c: \u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 Kubernetes \u041d\u0421: \u041c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u043e","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/postgres-vtornik-5-postgresql-i-kubernetes-ci-cd-avtomatizatsiya-testirovaniya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-20T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55467","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:43:31","updated":"2022-10-06 02:34:09"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=55467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/55468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=55467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=55467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=55467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}