{"id":52688,"date":"2019-11-14T00:00:00","date_gmt":"2019-11-13T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie"},"modified":"2020-02-18T14:00:29","modified_gmt":"2020-02-18T11:00:29","slug":"strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","title":{"rendered":"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Megjegyz\u00e9s:<\/b> Ez a Weaveworks \u00e1ltal k\u00e9sz\u00fclt \u00e1ttekint\u0151 anyag bemutatja a legn\u00e9pszer\u0171bb alkalmaz\u00e1skiad\u00e1si strat\u00e9gi\u00e1kat, \u00e9s besz\u00e9l a legfejlettebbek megval\u00f3s\u00edt\u00e1s\u00e1nak lehet\u0151s\u00e9g\u00e9r\u0151l a Kubernetes Flagger oper\u00e1tor seg\u00edts\u00e9g\u00e9vel. Egyszer\u0171 nyelven \u00edr\u00f3dott, \u00e9s szeml\u00e9letes \u00e1br\u00e1kat tartalmaz, amelyek lehet\u0151v\u00e9 teszik, hogy m\u00e9g a kezd\u0151 m\u00e9rn\u00f6k\u00f6k is meg\u00e9rts\u00e9k a k\u00e9rd\u00e9s l\u00e9nyeg\u00e9t.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)\" src=\"\/wp-content\/uploads\/2019\/11\/8d32d63c9986e9f5b35ccca74a546d42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Az \u00e1bra innen sz\u00e1rmazik <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.container-solutions.com\/kubernetes-deployment-strategies\">egy m\u00e1sik \u00e1ttekint\u00e9sb\u0151l<\/a><\/noindex> a kiad\u00e1si strat\u00e9gi\u00e1kr\u00f3l, amelyet a Container Solutions k\u00e9sz\u00edtett<\/i><\/p>\n<p>Napjaink egyik legnagyobb probl\u00e9m\u00e1ja a felh\u0151alap\u00fa alkalmaz\u00e1sok fejleszt\u00e9s\u00e9ben a telep\u00edt\u00e9sek felgyors\u00edt\u00e1sa. Mikroszolg\u00e1ltat\u00e1s alap\u00fa megk\u00f6zel\u00edt\u00e9s eset\u00e9n a fejleszt\u0151k m\u00e1r teljesen modul\u00e1ris alkalmaz\u00e1sokkal dolgoznak, \u00e9s \u00fagy tervezik azokat, hogy k\u00fcl\u00f6nb\u00f6z\u0151 csapatok egyszerre \u00edrjanak k\u00f3dot \u00e9s v\u00e9gezzenek m\u00f3dos\u00edt\u00e1sokat az alkalmaz\u00e1son.<\/p>\n<p>A r\u00f6videbb \u00e9s gyakoribb telep\u00edt\u00e9sek a k\u00f6vetkez\u0151 el\u0151ny\u00f6kkel j\u00e1rnak:<\/p>\n<ul>\n<li> Cs\u00f6kken a piacra jut\u00e1s ideje.<\/li>\n<li> Az \u00faj funkci\u00f3k gyorsabban eljutnak a felhaszn\u00e1l\u00f3khoz.<\/li>\n<li> A felhaszn\u00e1l\u00f3i visszajelz\u00e9sek gyorsabban eljutnak a fejleszt\u0151csapathoz. Ez azt jelenti, hogy a csapat gyorsabban tudja b\u0151v\u00edteni a funkci\u00f3kat \u00e9s orvosolni a probl\u00e9m\u00e1kat.<\/li>\n<li> N\u0151 a fejleszt\u0151k mor\u00e1lja: a t\u00f6bb fejleszt\u00e9s miatt \u00e9rdekesebb dolgozni.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDe a kiad\u00e1si gyakoris\u00e1g n\u00f6veked\u00e9s\u00e9vel n\u0151 a kock\u00e1zata annak, hogy negat\u00edvan befoly\u00e1solja az alkalmaz\u00e1s megb\u00edzhat\u00f3s\u00e1g\u00e1t vagy a felhaszn\u00e1l\u00f3i \u00e9lm\u00e9nyt. \u00c9ppen ez\u00e9rt az \u00fczemeltet\u00e9si \u00e9s DevOps csapatoknak fontos, hogy olyan folyamatokat \u00e9s kiad\u00e1si strat\u00e9gi\u00e1kat \u00e9p\u00edtsenek ki, amelyek minimaliz\u00e1lj\u00e1k a term\u00e9kre \u00e9s a felhaszn\u00e1l\u00f3kra jelentkez\u0151 kock\u00e1zatokat. (Tudjon meg t\u00f6bbet a CI\/CD pipeline automatiz\u00e1l\u00e1s\u00e1r\u00f3l <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/assets\/images\/blta8084030436bce24\/CICD_eBook_Web.pdf\">itt<\/a><\/noindex>.)<\/p>\n<p>Ebben a publik\u00e1ci\u00f3ban k\u00fcl\u00f6nb\u00f6z\u0151 telep\u00edt\u00e9si strat\u00e9gi\u00e1kat fogunk megvitatni Kubernetesben, bele\u00e9rtve a rolling telep\u00edt\u00e9seket \u00e9s a fejlettebb m\u00f3dszereket, mint a canary kiad\u00e1sok \u00e9s azok v\u00e1ltozatai.<\/p>\n<h2>Telep\u00edt\u00e9si strat\u00e9gi\u00e1k<\/h2>\n<p>\nSz\u00e1mos k\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpus\u00fa telep\u00edt\u00e9si strat\u00e9gia \u00e1ll rendelkez\u00e9sre a c\u00e9loknak megfelel\u0151en. P\u00e9ld\u00e1ul sz\u00fcks\u00e9g lehet arra, hogy m\u00f3dos\u00edt\u00e1sokat v\u00e9gezzen egy adott k\u00f6rnyezetben tov\u00e1bbi tesztel\u00e9s c\u00e9lj\u00e1b\u00f3l, vagy egy felhaszn\u00e1l\u00f3i\/kliens halmazban, vagy elk\u00e9pzelhet\u0151, hogy korl\u00e1tozott tesztel\u00e9st kell v\u00e9gezni a felhaszn\u00e1l\u00f3kon, miel\u0151tt egy funkci\u00f3t <i>nyilv\u00e1noss\u00e1 tenn\u00e9nek<\/i>.<\/p>\n<h3>Rolling (fokozatos, 'lekerek\u00edtett' telep\u00edt\u00e9s)<\/h3>\n<p>\nEz a standard telep\u00edt\u00e9si strat\u00e9gia a Kubernetesben. Fokozatosan, egyes\u00e9vel cser\u00e9li le a r\u00e9gi verzi\u00f3j\u00fa alkalmaz\u00e1s podjait az \u00faj verzi\u00f3val \u2014 an\u00e9lk\u00fcl, hogy a klaszter le\u00e1llna.<\/p>\n<p><img decoding=\"async\" alt=\"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)\" src=\"\/wp-content\/uploads\/2019\/11\/cbd490f1ef8311ff4c242726e947248c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA Kubernetes megv\u00e1rja az \u00faj podok m\u0171k\u00f6d\u0151k\u00e9pess\u00e9g\u00e9t (ellen\u0151rizve \u0151ket <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes\">k\u00e9szlet-testekkel<\/a><\/noindex>), miel\u0151tt elkezden\u00e9 a r\u00e9giek visszah\u00faz\u00e1s\u00e1t. Ha probl\u00e9ma mer\u00fcl fel, az ilyen leh\u00fazhat\u00f3 friss\u00edt\u00e9st meg lehet szak\u00edtani an\u00e9lk\u00fcl, hogy az eg\u00e9sz klasztert le\u00e1ll\u00edtan\u00e1nk. A deployment t\u00edpus\u00e1nak YAML-f\u00e1jlj\u00e1ban az \u00faj k\u00e9p felv\u00e1ltja a r\u00e9git:<\/p>\n<pre><code class=\"plaintext\">apiVersion: apps\/v1beta1\nkind: Deployment\nmetadata:\n  name: awesomeapp\nspec:\n  replicas: 3\n  template:\n    metadata:\n      labels:\n        app: awesomeapp\n    spec:\n      containers:\n        - name: awesomeapp\n          image: imagerepo-user\/awesomeapp:new\n          ports:\n            - containerPort: 8080<\/code><\/pre>\n<p>\nA friss\u00edt\u00e9si param\u00e9tereket a manifest f\u00e1jlban lehet pontos\u00edtani:<\/p>\n<pre><code class=\"plaintext\">spec:\n  replicas: 3\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n       maxSurge: 25%\n       maxUnavailable: 25%\n  template:\n  ...\n<\/code><\/pre>\n<p><\/p>\n<h3>Recreate (\u00fajra l\u00e9trehoz\u00e1s)<\/h3>\n<p>\nEbben az alapvet\u0151 telep\u00edt\u00e9si t\u00edpusban a r\u00e9gi podok egyszerre megsz\u0171nnek, \u00e9s \u00fajakkal helyettes\u00edtik \u0151ket:<\/p>\n<p><img decoding=\"async\" alt=\"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)\" src=\"\/wp-content\/uploads\/2019\/11\/46168e36b7f44c76bcea40ab3a1a2cad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA megfelel\u0151 manifest k\u00f6r\u00fclbel\u00fcl \u00edgy n\u00e9z ki:<\/p>\n<pre><code class=\"plaintext\">spec:\n  replicas: 3\n  strategy:\n    type: Recreate\n  template:\n  ...<\/code><\/pre>\n<p><\/p>\n<h3>Blue\/Green (k\u00e9k\/z\u00f6ld telep\u00edt\u00e9sek)<\/h3>\n<p>\nA k\u00e9k\/z\u00f6ld telep\u00edt\u00e9si strat\u00e9gia (m\u00e1s n\u00e9ven piros\/fekete) lehet\u0151v\u00e9 teszi a r\u00e9gi (z\u00f6ld) \u00e9s az \u00faj (k\u00e9k) verzi\u00f3 egyidej\u0171 telep\u00edt\u00e9s\u00e9t. Miut\u00e1n mindk\u00e9t verzi\u00f3t telep\u00edtett\u00e9k, a norm\u00e1l felhaszn\u00e1l\u00f3k a z\u00f6ldh\u00f6z f\u00e9rnek hozz\u00e1, m\u00edg a k\u00e9k a QA csapat sz\u00e1m\u00e1ra el\u00e9rhet\u0151 automatiz\u00e1lt tesztekhez egy k\u00fcl\u00f6n szolg\u00e1ltat\u00e1son vagy k\u00f6zvetlen porttov\u00e1bb\u00edt\u00e1son kereszt\u00fcl:<\/p>\n<p><img decoding=\"async\" alt=\"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)\" src=\"\/wp-content\/uploads\/2019\/11\/6664b625c99e089acf01c92edce0b45a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<pre><code class=\"plaintext\">apiVersion: apps\/v1beta1\nkind: Deployment\nmetadata:\n  name: awesomeapp-02\nspec:\n  template:\n    metadata:\n      labels:\n        app: awesomeapp\n        version: \"02\"<\/code><\/pre>\n<p>\nMiut\u00e1n a k\u00e9k (\u00faj) verzi\u00f3t tesztelt\u00e9k \u00e9s j\u00f3v\u00e1hagyta a kiad\u00e1st, a szolg\u00e1ltat\u00e1s \u00e1tv\u00e1lt erre, m\u00edg a z\u00f6ld (r\u00e9gi) le\u00e1ll:<\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: Service\nmetadata:\n  name: awesomeapp\nspec:\n  selector:\n    app: awesomeapp\n    version: \"02\"\n...<\/code><\/pre>\n<p><\/p>\n<h3>Canary (kan\u00e1ri telep\u00edt\u00e9sek)<\/h3>\n<p>\nA kann\u00e1ri telep\u00edt\u00e9sek hasonl\u00f3ak a k\u00e9k\/z\u00f6ld telep\u00edt\u00e9sekhez, de jobban kezelhet\u0151ek \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/redmonk.com\/jgovernor\/2018\/08\/06\/towards-progressive-delivery\/\">progresz\u00edv<\/a><\/noindex> l\u00e9pcs\u0151s megk\u00f6zel\u00edt\u00e9st alkalmaznak. E t\u00edpusba k\u00fcl\u00f6nb\u00f6z\u0151 strat\u00e9gi\u00e1k tartoznak, bele\u00e9rtve a \"rejtett\" ind\u00edt\u00e1sokat \u00e9s az A\/B tesztel\u00e9st.<\/p>\n<p>Ez a strat\u00e9gia akkor alkalmazhat\u00f3, amikor \u00faj funkci\u00f3k tesztel\u00e9se sz\u00fcks\u00e9ges, jellemz\u0151en az alkalmaz\u00e1s h\u00e1tt\u00e9rf\u00fcggetlen\u00e9ben. A megk\u00f6zel\u00edt\u00e9s l\u00e9nyege, hogy gyakorlatilag k\u00e9t azonos szervert hozzunk l\u00e9tre: az egyik majdnem minden felhaszn\u00e1l\u00f3t kiszolg\u00e1l, m\u00edg a m\u00e1sik, \u00faj funkci\u00f3kkal rendelkez\u0151 kis csoport felhaszn\u00e1l\u00f3t, majd \u00f6sszehasonl\u00edtjuk a munk\u00e1juk eredm\u00e9nyeit. Ha minden probl\u00e9ma n\u00e9lk\u00fcl zajlik, az \u00faj verzi\u00f3 fokozatosan kiterjeszt\u00e9sre ker\u00fcl az eg\u00e9sz infrastrukt\u00far\u00e1ra.<\/p>\n<p>B\u00e1r ezt a strat\u00e9gi\u00e1t kiz\u00e1r\u00f3lag Kubernetes eszk\u00f6zeivel is meg lehet val\u00f3s\u00edtani, sokkal k\u00e9nyelmesebb \u00e9s egyszer\u0171bb olyan service mesh-t haszn\u00e1lni, mint az Istio.<\/p>\n<p>P\u00e9ld\u00e1ul lehet k\u00e9t k\u00fcl\u00f6nb\u00f6z\u0151 manifeszted a Git-ben: egy norm\u00e1l 0.1.0 c\u00edmk\u00e9vel \u00e9s egy \"kan\u00e1ri\" 0.2.0 c\u00edmk\u00e9vel. Az Istio virtu\u00e1lis \u00e1tj\u00e1r\u00f3ban a s\u00falyok m\u00f3dos\u00edt\u00e1s\u00e1val vez\u00e9relheted a forgalom eloszt\u00e1s\u00e1t e k\u00e9t deployment k\u00f6z\u00f6tt:<\/p>\n<p><img decoding=\"async\" alt=\"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)\" src=\"\/wp-content\/uploads\/2019\/11\/d75dc34fea187c4e67879d0f64f9251c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA kan\u00e1ri telep\u00edt\u00e9sek Istio seg\u00edts\u00e9g\u00e9vel t\u00f6rt\u00e9n\u0151 megval\u00f3s\u00edt\u00e1s\u00e1hoz l\u00e9p\u00e9sr\u0151l l\u00e9p\u00e9sre \u00fatmutat\u00f3t tal\u00e1lhat a k\u00f6vetkez\u0151 anyagban <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-workflows-for-istio-canary-deployments\">GitOps Workflows with Istio<\/a><\/noindex>. <i>(<b>Megjegyz\u00e9s ford\u00edt\u00e1s.<\/b>: Az Istio kan\u00e1ri telep\u00edt\u00e9sekr\u0151l sz\u00f3l\u00f3 anyagot is leford\u00edtottuk <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">itt<\/a><\/noindex>.)<\/i><\/p>\n<h4>Kan\u00e1ri telep\u00edt\u00e9sek Weaveworks Flagger-rel<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.flagger.app\/\">Weaveworks Flagger<\/a><\/noindex> egyszer\u0171v\u00e9 \u00e9s hat\u00e9konny\u00e1 teszi a kan\u00e1ri telep\u00edt\u00e9sek kezel\u00e9s\u00e9t.<\/p>\n<p>A Flagger automatiz\u00e1lja ezek m\u0171k\u00f6d\u00e9s\u00e9t. Istio-t vagy az AWS App Mesh-t haszn\u00e1lja a forgalom ir\u00e1ny\u00edt\u00e1s\u00e1hoz \u00e9s \u00e1tkapcsol\u00e1s\u00e1hoz, valamint a Prometheus metrik\u00e1kat az eredm\u00e9nyek elemz\u00e9s\u00e9hez. Tov\u00e1bb\u00e1, a kan\u00e1ri telep\u00edt\u00e9sek elemz\u00e9s\u00e9t webhooks seg\u00edts\u00e9g\u00e9vel is kieg\u00e9sz\u00edthetj\u00fck elfogad\u00e1si tesztek (acceptance), terhel\u00e9si \u00e9s m\u00e1s t\u00edpus\u00fa ellen\u0151rz\u00e9sek lefolytat\u00e1s\u00e1hoz.<\/p>\n<p>A Kubernetes deployment \u00e9s, ha sz\u00fcks\u00e9ges, a podok v\u00edzszintes sk\u00e1l\u00e1z\u00e1sa (HPA) alapj\u00e1n a Flagger egy objektumcsoportot hoz l\u00e9tre (Kubernetes deploymentek, ClusterIP szolg\u00e1ltat\u00e1sok \u00e9s Istio vagy App Mesh virtu\u00e1lis szolg\u00e1ltat\u00e1sok) a kan\u00e1ri telep\u00edt\u00e9sek elemz\u00e9s\u00e9re \u00e9s v\u00e9grehajt\u00e1s\u00e1ra:<\/p>\n<p><img decoding=\"async\" alt=\"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)\" src=\"\/wp-content\/uploads\/2019\/11\/99aa426bbcf59edcb70d5637e32d8ff7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA vez\u00e9rl\u00e9si k\u00f6rsor megval\u00f3s\u00edt\u00e1sa sor\u00e1n <i>(control loop)<\/i>, a Flagger fokozatosan ir\u00e1ny\u00edtja a forgalmat a kan\u00e1ri szerverre, k\u00f6zben m\u00e9rve a teljes\u00edtm\u00e9nykulcs mutat\u00f3it, mint p\u00e9ld\u00e1ul a sikeres HTTP k\u00e9r\u00e9sek ar\u00e1ny\u00e1t, a k\u00e9r\u00e9s \u00e1tlagos id\u0151tartam\u00e1t \u00e9s a podok eg\u00e9szs\u00e9g\u00e9t. A KPI (teljes\u00edtm\u00e9ny kulcs mutat\u00f3k) elemz\u00e9se alapj\u00e1n a kan\u00e1ri r\u00e9sz vagy n\u00f6vekszik, vagy cs\u00f6kken, \u00e9s az elemz\u00e9s eredm\u00e9nyeit Slack-en k\u00f6zz\u00e9teszik. A folyamat le\u00edr\u00e1s\u00e1t \u00e9s bemutat\u00e1s\u00e1t a r\u00e9szben tal\u00e1lod. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/progressive-delivery-for-aws-app-mesh\">Progressive Delivery for App Mesh<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)\" src=\"\/wp-content\/uploads\/2019\/11\/f9fa1ba66edecc2b3e971952a318ea40.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>S\u00f6t\u00e9t (rejtett) vagy A\/B-telep\u00edt\u00e9sek<\/h3>\n<p>\nA rejtett telep\u00edt\u00e9s egy \u00fajabb v\u00e1ltozata a kan\u00e1ri strat\u00e9gi\u00e1nak (amivel a Flagger is k\u00e9pes egy\u00fcttm\u0171k\u00f6dni, egy\u00e9bk\u00e9nt). A rejtett \u00e9s a kan\u00e1ri telep\u00edt\u00e9sek k\u00f6z\u00f6tti k\u00fcl\u00f6nbs\u00e9g az, hogy a rejtett telep\u00edt\u00e9sek a frontenddel foglalkoznak, nem pedig a backenddel, mint a kan\u00e1riak.<\/p>\n<p>Ezeket a telep\u00edt\u00e9seket m\u00e1s n\u00e9ven A\/B-tesztel\u00e9snek is h\u00edvj\u00e1k. Ahelyett, hogy minden felhaszn\u00e1l\u00f3nak hozz\u00e1f\u00e9r\u00e9st biztos\u00edtan\u00e1nak egy \u00faj funkci\u00f3hoz, azt csak egy korl\u00e1tozott csoportnak k\u00edn\u00e1lj\u00e1k. \u00c1ltal\u00e1ban ezek a felhaszn\u00e1l\u00f3k nem tudj\u00e1k, hogy tesztel\u0151k, \u00edgy sz\u00fcletett a \u201erejtett telep\u00edt\u00e9s\u201d kifejez\u00e9s.<\/p>\n<p>Funkcionalit\u00e1skapcsol\u00f3kkal <i>(feature toggles)<\/i> \u00e9s egy\u00e9b eszk\u00f6z\u00f6k r\u00e9v\u00e9n nyomon lehet k\u00f6vetni, hogy a felhaszn\u00e1l\u00f3k hogyan l\u00e9pnek interakci\u00f3ba az \u00faj funkci\u00f3val, lek\u00f6ti-e \u0151ket vagy zavarosnak tal\u00e1lj\u00e1k az \u00faj felhaszn\u00e1l\u00f3i fel\u00fcletet, \u00e9s tov\u00e1bbi m\u00e9r\u0151sz\u00e1mokat.<\/p>\n<p><img decoding=\"async\" alt=\"Telep\u00edt\u00e9si strat\u00e9gi\u00e1k Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B tesztel\u00e9s)\" src=\"\/wp-content\/uploads\/2019\/11\/037b5ccca2e1d99ac142d2ce734f954d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Flagger \u00e9s A\/B-telep\u00edt\u00e9sek<\/h4>\n<p>\nA s\u00falyozott ir\u00e1ny\u00edt\u00e1son k\u00edv\u00fcl a Flagger a kan\u00e1ri szerverre ir\u00e1ny\u00edthatja a forgalmat HTTP-param\u00e9terek alapj\u00e1n is. A\/B-tesztel\u00e9s sor\u00e1n HTTP-fejl\u00e9ceket vagy s\u00fctiket haszn\u00e1lhatunk a felhaszn\u00e1l\u00f3k bizonyos szegmenseinek \u00e1tir\u00e1ny\u00edt\u00e1s\u00e1ra. Ez k\u00fcl\u00f6n\u00f6sen hat\u00e9kony frontend-alkalmaz\u00e1sok eset\u00e9n, amelyek session affinity-t ig\u00e9nyelnek a szerverhez. <i>(session affinity)<\/i>. Tov\u00e1bbi inform\u00e1ci\u00f3k tal\u00e1lhat\u00f3k a Flagger dokument\u00e1ci\u00f3j\u00e1ban.<\/p>\n<p><i>A szerz\u0151 k\u00f6sz\u00f6net\u00e9t fejezi ki <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stefanprodan\">Stefan Prodan<\/a><\/noindex>, a Weaveworks m\u00e9rn\u00f6ke (\u00e9s a Flagger alkot\u00f3ja) \u00e1ltal k\u00e9sz\u00edtett csod\u00e1latos telep\u00edt\u00e9si diagramok\u00e9rt.<\/i><\/p>\n<h2>Fejleszt\u00e9si eszk\u00f6z\u00f6k, amelyek Kubernetesben futnak<\/h2>\n<p>\nOlvasson tov\u00e1bbi inform\u00e1ci\u00f3kat a blogunkban:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447180\/\">Az Ingress vez\u00e9rl\u0151k \u00e1ttekint\u00e9se \u00e9s \u00f6sszehasonl\u00edt\u00e1sa a Kuberneteshez<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 az eszk\u00f6z\u00fcnk CI\/CD-hez Kubernetes-ben (\u00e1ttekint\u00e9s \u00e9s a besz\u00e1mol\u00f3 vide\u00f3ja)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/469541\/\">Az egys\u00e9ges mikroszolg\u00e1ltat\u00e1sok fel\u00e9p\u00edt\u00e9se \u00e9s telep\u00edt\u00e9se werf \u00e9s GitLab CI seg\u00edts\u00e9g\u00e9vel<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/458878\/\">Mi az a GitOps?<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/471620\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u042d\u0442\u043e\u0442 \u043e\u0431\u0437\u043e\u0440\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0442 Weaveworks \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442 \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f\u043c\u0438 \u0432\u044b\u043a\u0430\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0438\u0437 \u043d\u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Kubernetes-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 Flagger. \u041e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0435 \u0434\u0430\u0436\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c. \u0421\u0445\u0435\u043c\u0430 \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u0432\u044b\u043a\u0430\u0442\u0430, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0433\u043e \u0432 Container Solutions \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-52688","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\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\/hu\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\udd47\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie\" \/>\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=\"2019-11-13T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:29+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\udd47Telep\u00edt\u00e9si strat\u00e9gi\u00e1k a Kubernetesben: rolling, recreate, blue\/green, canary, dark (A\/B-tesztel\u00e9s) | ProHoster","description":"Megj.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\udd47\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435) | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","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":"2019-11-13T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52688","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":"2026-01-24 04:27:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:03:32","updated":"2026-01-24 04:27:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/52688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=52688"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/52688\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=52688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=52688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=52688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}