{"id":10,"date":"2024-02-22T15:02:00","date_gmt":"2024-02-22T15:02:00","guid":{"rendered":"https:\/\/pickledvm.ovh\/?p=10"},"modified":"2025-01-10T09:06:04","modified_gmt":"2025-01-10T09:06:04","slug":"harbor-part2","status":"publish","type":"post","link":"https:\/\/pickledvm.ovh\/?p=10","title":{"rendered":"Harbor jako narz\u0119dzie do zarz\u0105dzania obrazami w \u015brodowisku vSphere Tanzu part2"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Harbor w architekturze z replikacj\u0105 obraz\u00f3w pomi\u0119dzy trzema Data Center<\/h3>\n\n\n\n<p>Wstep.<\/p>\n\n\n\n<p>W poprzednim artykule zosta\u0142 przedstawiony jeden z mo\u017cliwych scenariuszy jaki mo\u017cna  zastosowa\u0107 Postanowi\u0142em przedstawi\u0107 drugi wariant mo\u017cliwo\u015bci. W jednym z moich projekt\u00f3w wykorzysta\u0142em poni\u017cszy wariant:<br><br>   <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"892\" height=\"1024\" src=\"https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-892x1024.png\" alt=\"\" class=\"wp-image-41\" srcset=\"https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-892x1024.png 892w, https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-261x300.png 261w, https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-768x882.png 768w, https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-1338x1536.png 1338w, https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-1784x2048.png 1784w\" sizes=\"auto, (max-width: 892px) 100vw, 892px\" \/><\/figure>\n\n\n\n<p><strong>1. Opis architektury<\/strong><br>Przedstawiony model obejmuje trzy instancje Harbor zlokalizowane w r\u00f3\u017cnych Data Center (DC1, DC2, DC3), gdzie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Harbor 1<\/strong> w DC1 pe\u0142ni rol\u0119 aktywnego g\u0142\u00f3wnego w\u0119z\u0142a, kt\u00f3ry obs\u0142uguje \u017c\u0105dania i zarz\u0105dza g\u0142\u00f3wn\u0105 kopi\u0105 obraz\u00f3w.<\/li>\n\n\n\n<li><strong>Harbor 2<\/strong> i <strong>Harbor 3<\/strong> w DC2 oraz DC3 dzia\u0142aj\u0105 jako w\u0119z\u0142y standby, replikuj\u0105ce obrazy z Harbor 1.<\/li>\n\n\n\n<li>Mechanizm replikacji obraz\u00f3w umo\u017cliwia synchronizacj\u0119 danych mi\u0119dzy Data Center w celu zapewnienia dost\u0119pno\u015bci i konsystencji obraz\u00f3w w przypadku awarii lub potrzeby lokalnego dost\u0119pu.<\/li>\n<\/ul>\n\n\n\n<p>Ruch u\u017cytkownik\u00f3w i aplikacji jest kierowany przez <strong>VIP HA Proxy<\/strong>, kt\u00f3ry rozdziela \u017c\u0105dania i kieruje je do aktywnej instancji Harbor lub w\u0119z\u0142\u00f3w standby.<\/p>\n\n\n\n<p><strong>2. Kluczowe za\u0142o\u017cenia systemu<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Replikacja obraz\u00f3w<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Obrazy przesy\u0142ane mi\u0119dzy instancjami s\u0105 synchronizowane automatycznie, co zapewnia konsystencj\u0119 danych w r\u00f3\u017cnych lokalizacjach.<\/li>\n\n\n\n<li>Mechanizm oparty na harmonogramie lub zdarzeniach, np. publikacji nowego obrazu.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Wysoka dost\u0119pno\u015b\u0107<\/strong>:\n<ul class=\"wp-block-list\">\n<li>W przypadku awarii DC1 (Harbor 1 Active), w\u0119z\u0142y standby (Harbor 2 lub Harbor 3) mog\u0105 przej\u0105\u0107 ruch przy minimalnym czasie przestoju.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Globalna obs\u0142uga<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Dost\u0119pno\u015b\u0107 w wielu regionach umo\u017cliwia optymalizacj\u0119 wydajno\u015bci i skr\u00f3cenie czasu dost\u0119pu u\u017cytkownik\u00f3w do obraz\u00f3w.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Zarz\u0105dzanie VIP HA Proxy<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Decyduje o tym, kt\u00f3ra instancja jest aktywna i obs\u0142uguje ruch w zale\u017cno\u015bci od stanu infrastruktury.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><strong>3. Wymagania techniczne<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Replikacja obraz\u00f3w<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Wymaga stabilnych po\u0142\u0105cze\u0144 mi\u0119dzy Data Center (najlepiej z niskim op\u00f3\u017anieniem i wysok\u0105 przepustowo\u015bci\u0105).<\/li>\n\n\n\n<li>Mechanizmy autoryzacji i szyfrowania dla zabezpieczenia przesy\u0142anych danych (TLS, klucze API).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>HA Proxy<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Zarz\u0105dzanie adresem VIP (Virtual IP) w celu przekierowania ruchu do aktywnej instancji.<\/li>\n\n\n\n<li>Zintegrowany mechanizm monitorowania stanu instancji Harbor.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Zasoby dla ka\u017cdej instancji<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Baza danych (np. PostgreSQL) do przechowywania metadanych.<\/li>\n\n\n\n<li>Redis jako pami\u0119\u0107 podr\u0119czna dla zwi\u0119kszenia wydajno\u015bci.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Obs\u0142uga lokalnych obraz\u00f3w<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Harbor w DC2 i DC3 musi by\u0107 w stanie przechowywa\u0107 kopie lokalne dla minimalizacji op\u00f3\u017anie\u0144.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><strong>4. Korzy\u015bci z wdro\u017cenia takiej architektury<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Wysoka dost\u0119pno\u015b\u0107 i odporno\u015b\u0107 na awarie<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Dzi\u0119ki replikacji i standby, system zachowuje dost\u0119pno\u015b\u0107 nawet przy awarii g\u0142\u00f3wnego Data Center.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Globalny dost\u0119p<\/strong>:\n<ul class=\"wp-block-list\">\n<li>U\u017cytkownicy i aplikacje w r\u00f3\u017cnych regionach mog\u0105 korzysta\u0107 z najbli\u017cszego w\u0119z\u0142a, co zwi\u0119ksza wydajno\u015b\u0107.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Optymalizacja transfer\u00f3w danych<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Lokalna replikacja obraz\u00f3w zmniejsza konieczno\u015b\u0107 wielokrotnych transfer\u00f3w mi\u0119dzy regionami.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Zabezpieczenie danych<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Replikacja s\u0142u\u017cy jako mechanizm ochrony danych, zapewniaj\u0105c ich zachowanie nawet w przypadku awarii jednego z w\u0119z\u0142\u00f3w.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Elastyczno\u015b\u0107<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Mo\u017cliwo\u015b\u0107 dodawania kolejnych instancji w innych regionach w miar\u0119 rozwoju infrastruktury.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><strong>5. Przebieg dzia\u0142ania<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Publikacja nowego obrazu w Harbor 1 w DC1 automatycznie uruchamia mechanizm replikacji do Harbor 2 (DC2) i Harbor 3 (DC3).<\/li>\n\n\n\n<li>W przypadku zapyta\u0144 u\u017cytkownik\u00f3w, HA Proxy kieruje je do aktywnej instancji, zapewniaj\u0105c r\u00f3wnoczesny dost\u0119p do lokalnych kopii obraz\u00f3w.<\/li>\n\n\n\n<li>Je\u015bli DC1 (Harbor 1 Active) stanie si\u0119 niedost\u0119pny, HA Proxy automatycznie prze\u0142\u0105cza ruch na Harbor 2 lub Harbor 3, kt\u00f3re maj\u0105 aktualne repliki obraz\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p><strong>6. Zastosowanie w praktyce<\/strong><br>Taka architektura znajduje zastosowanie w du\u017cych organizacjach, kt\u00f3re potrzebuj\u0105 globalnej dost\u0119pno\u015bci i niezawodno\u015bci, np.:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mi\u0119dzynarodowe firmy technologiczne z zespo\u0142ami DevOps w wielu lokalizacjach.<\/li>\n\n\n\n<li>\u015arodowiska chmurowe i hybrydowe, gdzie obrazy s\u0105 wykorzystywane w wielu regionach.<\/li>\n\n\n\n<li>Produkcyjne klastry Kubernetes, kt\u00f3re korzystaj\u0105 z lokalnych rejestr\u00f3w obraz\u00f3w w r\u00f3\u017cnych regionach.<\/li>\n<\/ul>\n\n\n\n<p>Ten model zapewnia zar\u00f3wno elastyczno\u015b\u0107, jak i bezpiecze\u0144stwo w zarz\u0105dzaniu obrazami kontenerowymi, umo\u017cliwiaj\u0105c szybkie i bezpieczne wdro\u017cenia w skali globalnej. Mo\u017cna si\u0119 r\u00f3wnie\u017c pokusi\u0107 o zaimplementowanie rozwi\u0105zania z podpi\u0119ciem storage na zewn\u0119trz: . np do S3 jak pokazuje poni\u017cszy rysunek.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"1024\" src=\"https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-1-692x1024.png\" alt=\"\" class=\"wp-image-42\" srcset=\"https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-1-692x1024.png 692w, https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-1-203x300.png 203w, https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-1-768x1137.png 768w, https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-1-1037x1536.png 1037w, https:\/\/pickledvm.ovh\/wp-content\/uploads\/2024\/02\/image-1-1383x2048.png 1383w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/figure>\n\n\n\n<p>To tyle na temat HARBORa.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Harbor w architekturze z replikacj\u0105 obraz\u00f3w pomi\u0119dzy trzema Data Center Wstep. W poprzednim artykule zosta\u0142 przedstawiony jeden z mo\u017cliwych scenariuszy jaki mo\u017cna zastosowa\u0107 Postanowi\u0142em przedstawi\u0107 drugi wariant mo\u017cliwo\u015bci. W jednym z moich projekt\u00f3w wykorzysta\u0142em poni\u017cszy wariant: 1. Opis architekturyPrzedstawiony model obejmuje trzy instancje Harbor zlokalizowane w r\u00f3\u017cnych Data Center (DC1, DC2, DC3), gdzie: Ruch u\u017cytkownik\u00f3w [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-10","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10"}],"version-history":[{"count":5,"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":135,"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=\/wp\/v2\/posts\/10\/revisions\/135"}],"wp:attachment":[{"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pickledvm.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}