Najlepsze praktyki i zalecenia dotyczące uruchamiania kontenerów i Kubernetes w środowiskach produkcyjnych

Najlepsze praktyki i zalecenia dotyczące uruchamiania kontenerów i Kubernetes w środowiskach produkcyjnych
Ekosystem technologii konteneryzacji szybko się rozwija i zmienia, dlatego brakuje dobrych praktyk zastosowania w tej dziedzinie. Niemniej jednak Kubernetes i kontenery są coraz częściej wykorzystywane — zarówno do modernizacji starszych aplikacji, jak i do tworzenia nowoczesnych aplikacji w chmurze. 

Zespół Kubernetes aaS od Mail.ru zebrało prognozy, porady i najlepsze praktyki dla liderów rynku od Gartner, 451 Research, StacxRoх i innych. Pomoże to zapewnić i przyspieszyć wdrażanie kontenerów w środowiskach produkcyjnych.

Jak ocenić, czy twoja firma jest gotowa do uruchamiania kontenerów w środowisku produkcyjnym

Według Gartnera, w 2022 roku ponad 75% organizacji będzie używać aplikacji konteneryzowanych w produkcji. To znacznie więcej niż obecnie, gdy takie aplikacje wykorzystuje mniej niż 30% firm. 

Zgodnie z 451 Research, przewidywany rynek dla zastosowania technologii kontenerowych w 2022 roku wyniesie 4,3 miliarda dolarów. To ponad dwukrotnie więcej niż szacowano w 2019 roku, a tempo wzrostu rynku wynosi 30%.

W w badaniu Portworx i Aqua Security 87% respondentów zadeklarowało, że obecnie korzysta z technologii kontenerowych. Dla porównania — w 2017 roku takich respondentów było 55%. 

Mimo rosnącego zainteresowania i wdrażania kontenerów, ich uruchomienie w produkcji wymaga nauki ze względu na technologiczne niedojrzałość i brak know-how. Organizacje muszą realistycznie ocenić procesy biznesowe, które wymagają konteneryzacji aplikacji. Liderzy IT powinni ocenić, czy mają zestaw umiejętności niezbędnych do działania w kontekście potrzeby szybkiego uczenia się. 

Eksperci Gartnera uważają, że pytania na poniższym rysunku pomogą zrozumieć, czy jesteś gotowy do wdrożenia kontenerów w produkcji:

Najlepsze praktyki i zalecenia dotyczące uruchamiania kontenerów i Kubernetes w środowiskach produkcyjnych

Najczęstsze błędy przy zastosowaniu kontenerów w produkcji

Organizacje często niedoceniają wysiłków wymaganych do eksploatacji kontenerów w produkcji. Gartner odkrył kilka powszechnych błędów w scenariuszach klientów przy zastosowaniu kontenerów w środowiskach produkcyjnych:

Najlepsze praktyki i zalecenia dotyczące uruchamiania kontenerów i Kubernetes w środowiskach produkcyjnych

Jak zapewnić bezpieczeństwo kontenerów

Bezpieczeństwem nie można zajmować się „później”. Musi być wbudowane w proces DevOps, dlatego powstał nawet specjalny termin — DevSecOps. Organizacje powinny planować ochronę środowiska kontenerowego na całym etapie cyklu życia rozwoju, który obejmuje proces budowy, programowania, wdrażania i uruchamiania aplikacji.

Zalecenia od Gartnera

  1. Zintegruj proces skanowania obrazów aplikacji w celu identyfikacji luk w zabezpieczeniach w ciągłym procesie integracji/dostawy (CI/CD). Aplikacje są skanowane na etapie budowy i uruchamiania oprogramowania. Podkreśl znaczenie skanowania i identyfikacji komponentów z otwartym kodem źródłowym, bibliotek i struktur. Używanie przez programistów starych, podatnych wersji jest jedną z głównych przyczyn luk w zabezpieczeniach kontenerów.
  2. Popraw konfigurację za pomocą testów Center for Internet Security (CIS), które są dostępne zarówno dla Docker, jak i dla Kubernetes.
  3. Zastosuj kontrolę dostępu, zapewnij podział obowiązków i wprowadź politykę zarządzania tajemnicami. Informacje poufne, takie jak klucze Secure Sockets Layer (SSL) lub dane logowania do bazy danych, są szyfrowane przez orkiestrator lub zewnętrzne usługi zarządzania i udostępniane w czasie wykonywania.
  4. Unikaj kontenerów z podwyższonymi uprawnieniami przy pomocy zarządzania politykami bezpieczeństwa, co zmniejszy potencjalne ryzyko włamania.
  5. Użyj narzędzi bezpieczeństwa, które oferują białe listy, monitorowanie zachowań oraz wykrywanie anomalii w celu zapobiegania złośliwym działaniom.

Zalecenia od StacxRox:

  1. Wykorzystaj wbudowane funkcje Kubernetes. Skonfiguruj dostęp dla użytkowników, korzystając z ról. Upewnij się, że nie przyznajesz zbędnych uprawnień poszczególnym podmiotom, nawet jeśli wymaga to jeszcze chwili zastanowienia nad minimalnie niezbędnymi uprawnieniami. Kuszące może być nadanie administratorowi klastra szerokich przywilejów, gdyż pozwala to zaoszczędzić czas na początku. Jednak wszelkie kompromisy lub błędy w kontach mogą mieć druzgocące konsekwencje w przyszłości. 
  2. Unikaj duplikowania uprawnień dostępu. Czasami przydatne jest, aby różne role się pokrywały, ale może to prowadzić do problemów operacyjnych oraz stworzyć "martwe strefy" podczas usuwania uprawnień. Ponadto istotne jest usuwanie nieużywanych i nieaktywnych ról.
  3. Ustal zasady sieciowe: izoluj moduły, aby ograniczyć do nich dostęp; wyraźnie zezwól na dostęp do internetu tym modułom, które go potrzebują, korzystając z etykiet; wyraźnie zezwól na komunikację między tymi modułami, które muszą się ze sobą kontaktować. 

Jak zorganizować monitoring kontenerów i usług w nich

Bezpieczeństwo i monitoring — główne problemy firm przy wdrażaniu klastrów Kubernetes. Programiści często skupiają się bardziej na funkcjonalności aplikacji, które tworzą, niż na aspektach monitorowania tych aplikacji

Zalecenia od Gartnera:

  1. Staraj się monitorować stan kontenerów lub usług w nich równolegle z monitoringiem systemów gospodarzy.
  2. Preferuj dostawców i narzędzia z głęboką integracją w orkiestrację kontenerów, szczególnie Kubernetes.
  3. Wybieraj narzędzia, które oferują szczegółowe logowanie, automatyczne odkrywanie usług oraz rekomendacje w czasie rzeczywistym z wykorzystaniem analityki i/lub uczenia maszynowego.

Na blogu SolarWinds sugerują:

  1. Używanie narzędzi do automatycznego odkrywania i śledzenia metryk kontenera, korelacji metryk wydajności, takich jak procesor, pamięć oraz czas działania bezawaryjnego.
  2. Zapewnienie optymalnego planowanie pojemności poprzez prognozowanie terminów wyczerpania pojemności na podstawie wskaźników monitorowania kontenerów.
  3. Zorganizuj monitorowanie aplikacji działających w kontenerach pod kątem dostępności i wydajności, co jest przydatne zarówno do planowania pojemności, jak i do rozwiązywania problemów z wydajnością.
  4. Automatyzuj workflow, zapewniając wsparcie w zarządzaniu i skalowaniu kontenerów oraz ich środowisk.
  5. Automatyzuj kontrolę dostępu, aby śledzić bazę użytkowników, wyłączać przestarzałe i gościnne konta, a także usuwać zbędne uprawnienia.
  6. Upewnij się, że Twój zestaw narzędzi może śledzić te kontenery i aplikacje w różnych środowiskach (chmurowych, lokalnych lub hybrydowych) w celu wizualizacji i porównania wydajności w infrastrukturze, sieci, systemach i aplikacjach.

Jak przechowywać dane i zapewnić ich bezpieczeństwo

W miarę wzrostu liczby działających kontenerów z zachowaniem stanu, klienci muszą brać pod uwagę przechowywanie danych poza hostem oraz konieczność ochrony tych danych. 

Na podstawie badania Portworx i Aqua Security, bezpieczeństwo danych jest najważniejszym problemem bezpieczeństwa, wskazywanym przez większość uczestników badania (61%). 

Szyfrowanie danych jest podstawową strategią zabezpieczeń (64%), jednak respondenci korzystają również z monitorowania wydajności (49%),

skanowania podatności w rejestrach (49%), skanowania podatności w potokach CI/CD (49%) oraz blokowania anomalii za pomocą ochrony czasu rzeczywistego (48%).

Zalecenia od Gartnera:

  1. Wybieraj rozwiązania do przechowywania danych, oparte na zasadach architektury mikroserwisowej. Lepiej postawić na te, które spełniają wymagania dotyczące przechowywania danych dla usług kontenerowych, są niezależne od sprzętu, zarządzane za pomocą API, mają architekturę rozproszoną, wspierają lokalne wdrażanie oraz wdrażanie w chmurze publicznej.
  2. Unikaj proprietary pluginów i interfejsów. Wybieraj dostawców, którzy zapewniają integrację z Kubernetes i wspierają standardowe interfejsy, takie jak CSI (Container Storage Interfaces).

Jak pracować z sieciami

Tradycyjny model korporacyjnej sieci, w którym specjaliści IT tworzą środowiska sieciowe do rozwoju, testowania, zapewniania jakości i produkcji dla każdego projektu, nie zawsze dobrze współdziała z procesem ciągłego rozwoju. Co więcej, sieci kontenerowe obejmują różne poziomy.

W na blogu Magalix zgromadziliśmy ogólne zasady, którym powinna odpowiadać realizacja rozwiązania sieciowego opartego na klastrach:

  1. Pody zaplanowane na tym samym węźle muszą mieć możliwość wymiany danych z innymi modułami bez użycia NAT (tłumaczenie adresów sieciowych).
  2. Wszystkie demony systemowe (procesy w tle, takie jak kubelet) działające na danym węźle mogą komunikować się z podami działającymi na tym samym węźle.
  3. Pody korzystające z sieci hosta, muszą mieć możliwość łączenia się ze wszystkimi innymi podami na wszystkich innych węzłach bez użycia NAT. Należy zauważyć, że sieć hostów jest obsługiwana tylko na hostach działających pod systemem Linux.

Rozwiązania sieciowe powinny być ściśle zintegrowane z elementami oraz politykami Kubernetes. Kierownicy IT powinni dążyć do wysokiego poziomu automatyzacji sieci, zapewniając programistom odpowiednie narzędzia i wystarczającą elastyczność.

Zalecenia od Gartnera:

  1. Sprawdź, czy Twój CaaS (kontener jako usługa) lub sieć SDN (sieć zdefiniowana programowo) wspiera Kubernetes. Jeśli nie lub wsparcie jest niewystarczające, użyj interfejsu CNI (Container Network Interface) dla swoich kontenerów, który obsługuje niezbędną funkcjonalność i polityki.
  2. Upewnij się, że Twój CaaS lub PaaS (platforma jako usługa) wspiera tworzenie kontrolerów wejściowych i/lub load balancerów, które rozdzielają przychodzący ruch między węzły klastra. Jeśli taka funkcjonalność nie istnieje, rozważ użycie zewnętrznych proxy lub mechanizmów service mesh.
  3. Przeszkol swoich inżynierów sieciowych w pracy z sieciami Linux oraz narzędziami do automatyzacji sieci, aby zmniejszyć różnicę w umiejętnościach i zwiększyć elastyczność.

Jak zarządzać cyklem życia aplikacji

Aby zapewnić zautomatyzowaną i nieprzerwaną dostawę aplikacji, konieczne jest uzupełnienie orkiestracji kontenerów innymi narzędziami automatyzacji, takimi jak rozwiązania infrastruktury jako kod (IaC). Należą do nich Chef, Puppet, Ansible i Terraform. 

Wymagane są również narzędzia do automatyzacji budowy i wdrażania aplikacji (zob. „Magiczny kwadrat dla orkiestracji wdrażania aplikacji“). Kontenery oferują również możliwości skalowania, podobne do tych, które istniały przy wdrażaniu maszyn wirtualnych (VM). W ten sposób liderzy IT powinni mieć narzędzia do zarządzania cyklem życia kontenerów..

Zalecenia od Gartnera:

  1. Ustal standardy podstawowych obrazów kontenerów z uwzględnieniem rozmiaru, licencjonowania i elastyczności w dodawaniu komponentów przez programistów.
  2. Używaj systemów zarządzania konfiguracją do zarządzania cyklem życia kontenerów, które przechowują konfigurację w warstwach na podstawie podstawowych obrazów, znajdujących się w publicznych lub prywatnych repozytoriach.
  3. Zintegruj platformę CaaS z narzędziami automatyzacji, aby zautomatyzować cały proces aplikacji.

Jak zarządzać kontenerami za pomocą orkiestratorów

Podstawowe funkcje do wdrażania kontenerów są dostępne na poziomach orkiestracji i planowania. W trakcie planowania kontenery są umieszczane na najbardziej optymalnych hostach w klastrze, zgodnie z wymaganiami poziomu orkiestracji. 

Kubernetes de facto stał się standardem orkiestracji kontenerów z aktywną społecznością, a jego wsparcie oferuje większość wiodących dostawców komercyjnych. 

Zalecenia od Gartnera:

  1. Określ podstawowe wymagania dotyczące elementów kontroli bezpieczeństwa, monitorowania, zarządzania politykami, przechowywania danych, zarządzania siecią i cyklu życia kontenerów.
  2. Na podstawie tych wymagań wybierz narzędzie, które najlepiej odpowiada Twoim potrzebom i scenariuszom zastosowania.
  3. Korzystaj z badań Gartnera (patrz „Jak wybrać model wdrożenia Kubernetes”), aby zrozumieć zalety i wady różnych modeli wdrożenia Kubernetes i wybrać najbardziej odpowiedni dla swojego zadania.
  4. Wybierz dostawcę, który może zapewnić hybrydową orkiestrację kontenerów w różnych środowiskach, z bliską integracją z backendami, wspólnymi planami zarządzania i spójnymi modelami cenowymi.

Jak wykorzystać możliwości dostawców chmury

W Gartnerze uważa się, że zainteresowanie wdrażaniem kontenerów w publicznej chmurze IaaS rośnie z powodu dostępności gotowych ofert CaaS, a także bliskiej integracji tych ofert z innymi produktami oferowanymi przez dostawców chmury.

Chmury IaaS oferują zużycie zasobów na żądanie, szybkie skalowanie oraz zarządzanie usługami, które pozwala uniknąć konieczności posiadania szczegółowej wiedzy na temat infrastruktury i jej utrzymania. Większość dostawców chmury oferuje usługi zarządzania kontenerami, a niektórzy oferują kilka opcji orkiestracji. 

Kluczowi dostawcy usług chmurowych przedstawieni są w tabeli: 

Dostawca chmury
Rodzaj usługi
Produkt/usługa

Alibaba
Usługa chmurowa natywna
Alibaba Cloud Container Service, Alibaba Cloud Container Service for Kubernetes

Amazon Web Services (AWS)
Usługa chmurowa natywna
Amazon Elastic Container Services (ECS), Amazon ECS dla Kubernetes (EKS), AWS Fargate

Giant Swarm
MSP
Zarządzana infrastruktura Kubernetes od Giant Swarm

Google
Usługa chmurowa natywna
Google Container Engine (GKE)

IBM
Usługa chmurowa natywna
IBM Cloud Kubernetes Service

Microsoft
Usługa chmurowa natywna
Azure Kubernetes Service, Azure Service Fabric

Oracle
Usługa chmurowa natywna
OCI Container Engine dla Kubernetes

Platform9
MSP
Zarządzany Kubernetes

Red Hat
Usługa hostowana
OpenShift Dedicated & Online

VMware
Usługa hostowana
Cloud PKS (Beta)

Mail.ru Cloud Solutions*
Usługa chmurowa natywna
Mail.ru Cloud Containers

* Nie ukrywajmy, sami się tu dodaliśmy podczas tłumaczenia 🙂

Dostawcy publicznych chmur również dodają nowe funkcje i wprowadzają lokalne produkty. W najbliższej przyszłości dostawcy chmur będą rozwijać wsparcie dla chmur hybrydowych i środowisk multi-cloud. 

Rekomendacje Gartnera:

  1. Obiektywnie oceń możliwości swojej organizacji w zakresie wdrażania i zarządzania odpowiednimi narzędziami oraz rozważ alternatywne usługi zarządzania kontenerami w chmurze.
  2. Starannie wybieraj oprogramowanie, korzystaj z open source tam, gdzie jest to możliwe.
  3. Wybieraj dostawców z jednolitymi modelami operacyjnymi w środowiskach hybrydowych, którzy oferują zarządzanie zintegrowanymi klastrami z jednej konsoli, a także dostawców, którzy upraszczają samodzielne korzystanie z IaaS.

Kilka wskazówek dotyczących wyboru dostawcy Kubernetes aaS z bloga Replex:

  1. Warto szukać dystrybucji, które wspierają wysoką dostępność „od ręki”. Obejmuje to wsparcie dla różnych architektur, wysoko dostępnych komponentów etcd oraz mechanizmów kopii zapasowej i przywracania.
  2. Aby zapewnić mobilność środowisk Kubernetes, najlepiej wybierać dostawców chmurowych, którzy wspierają szeroki zakres modeli wdrożeniowych: od lokalnych po hybrydowe i wielochmurowe. 
  3. Oferty dostawców warto oceniać pod kątem prostoty konfiguracji, instalacji i tworzenia klastra, a także aktualizacji, monitorowania i usuwania usterek. Podstawowym wymaganiem jest wsparcie dla całkowicie zautomatyzowanych aktualizacji klastra z zerowym czasem przestoju. Wybrane rozwiązanie powinno również umożliwiać ręczne uruchamianie aktualizacji. 
  4. Zarządzanie tożsamością i dostępem ma kluczowe znaczenie zarówno z perspektywy bezpieczeństwa, jak i zarządzania. Upewnij się, że wybrana dystrybucja Kubernetes obsługuje integrację z narzędziami autoryzacji i uwierzytelnienia stosowanymi w firmie. RBAC oraz szczegółowa kontrola dostępu są również istotnymi funkcjami.
  5. Wybierany dystrybucja musi mieć własne rozwiązanie sieciowe, określone przez oprogramowanie i obejmujące szeroki zakres wymagań stawianych przez różne aplikacje lub infrastrukturę, lub wspierać jedną z popularnych implementacji sieci bazujących na CNI, w tym Flannel, Calico, kube-router lub OVN.

Wprowadzenie kontenerów do produkcji staje się głównym kierunkiem, o czym świadczą wyniki badania przeprowadzonego na sesji Gartner dotyczącej infrastruktury, operacji i strategii chmurowych (IOCS) w grudniu 2018 roku:

Najlepsze praktyki i zalecenia dotyczące uruchamiania kontenerów i Kubernetes w środowiskach produkcyjnych
Jak widać, 27% respondentów już używa kontenerów w pracy, a 63% planuje to zrobić.

W w badaniu Portworx i Aqua Security 24% respondentów zadeklarowało, że inwestuje ponad pół miliona dolarów rocznie w technologie kontenerowe, a 17% respondentów wydaje na nie więcej niż milion dolarów rocznie. 

Artykuł przygotowała zespół platformy chmurowej Mail.ru Cloud Solutions.

Co jeszcze przeczytać na ten temat:

  1. Najlepsze praktyki DevOps: raport DORA.
  2. Kubernetes w stylu pirackim z szablonem wdrożenia.
  3. 25 przydatnych narzędzi do wdrażania i przyjęcia Kubernetes.

Źródło: habr.com

Kup solidny hosting dla stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting dla stron z ochroną przed DDoS, serwery VPS VDS | ProHoster