Najlepsze praktyki i zalecenia dla uruchamiania kontenerów oraz Kubernetes w środowiskach produkcyjnych

Najlepsze praktyki i zalecenia dla uruchamiania kontenerów oraz Kubernetes w środowiskach produkcyjnych
Ekosystema technologii konteneryzacji szybko się rozwija i zmienia, dlatego w tej dziedzinie brakuje dobrych praktyk. Niemniej jednak Kubernetes i kontenery są coraz częściej wykorzystywane – zarówno do modernizacji starych aplikacji, jak i do tworzenia nowoczesnych aplikacji chmurowych. 

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

Jak zrozumieć, czy twoja firma jest gotowa do wdrażania kontenerów w środowisku produkcyjnym

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

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

W badaniu Portworx i Aqua Security 87% respondentów zadeklarowało, że obecnie stosuje technologie kontenerowe. Dla porównania – w 2017 roku takich respondentów było 55%. 

Pomimo rosnącego zainteresowania i wzrostu wdrożeń kontenerów, ich uruchomienie w produkcji wymaga szkolenia z powodu technologicznej niedojrzałości i braku know-how. Organizacje powinny realistycznie ocenić procesy biznesowe, które wymagają konteneryzacji aplikacji. Liderzy IT powinni ocenić, czy mają zestaw umiejętności niezbędny do postępu z uwagi na potrzebę szybkiego uczenia się. 

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

Najlepsze praktyki i zalecenia dla uruchamiania kontenerów oraz Kubernetes w środowiskach produkcyjnych

Najczęstsze błędy przy wdrażaniu kontenerów w produkcji

Organizacje często niedoszacowują wysiłku potrzebnego do eksploatacji kontenerów w produkcji. Gartner odkrył kilka powszechnych błędów w scenariuszach klientów przy wdrażaniu kontenerów w środowiskach produkcyjnych:

Najlepsze praktyki i zalecenia dla uruchamiania kontenerów oraz 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 pojawił się nawet specjalny termin – DevSecOps. Organizacje muszą planować ochronę środowiska kontenerowego w trakcie całego cyklu życia rozwoju, który obejmuje procesy budowy i rozwoju, wdrażania oraz uruchamiania aplikacji.

Zalecenia od Gartnera

  1. Zintegruj proces skanowania obrazów aplikacji w celu wykrywania luk w zabezpieczeniach w potoku ciągłej integracji/ciągłego dostarczania (CI/CD). Aplikacje są skanowane na etapie budowy oraz uruchamiania oprogramowania. Podkreśl znaczenie skanowania i identyfikacji komponentów z otwartym kodem źródłowym, bibliotek i struktur. Używanie przez deweloperó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 Dockera, jak i Kubernetes.
  3. Zastosuj kontrolę dostępu, zapewnij podział obowiązków i wdroż politykę zarządzania tajemnicami. Informacje poufne, takie jak klucze Secure Sockets Layer (SSL) lub dane logowania bazy danych, są szyfrowane przez orkiestratora lub zewnętrzne usługi zarządzania i dostarczane w czasie wykonywania.
  4. Unikaj kontenerów z podwyższonymi uprawnieniami, stosując zarządzanie politykami bezpieczeństwa, co zmniejszy potencjalne zagrożenia włamań.
  5. Skorzystaj z narzędzi bezpieczeństwa, które oferują białe listy, monitorowanie zachowań i 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, stosując role. Upewnij się, że nie przyznajesz niepotrzebnych uprawnień poszczególnym podmiotom, nawet jeśli może to zająć trochę czasu na przemyślenie minimalnie wymaganych uprawnień. Może wydawać się kuszące, aby dać administratorowi klastra szerokie uprawnienia, ponieważ oszczędza to czas na początkowym etapie. Jednak każdy kompromis lub błąd w koncie mogą prowadzić do katastrofalnych konsekwencji w przyszłości. 
  2. Unikaj dublowania uprawnień dostępu. Czasami warto, aby różne role się pokrywały, ale może to prowadzić do problemów z eksploatacją oraz stworzyć „martwe strefy” przy usuwaniu uprawnień. Ponadto ważne jest, aby usuwać nieużywane i nieaktywne role.
  3. Ustal polityki sieciowe: izoluj moduły, aby ograniczyć do nich dostęp; jednoznacznie zezwól na dostęp do Internetu tym modułom, które tego potrzebują, używając etykiet; jasno pozwól na komunikację między tymi modułami, które muszą ze sobą rozmawiać. 

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

Bezpieczeństwo i monitoring — główne problemy firm podczas wdrażania klastrów Kubernetes. Programiści zawsze bardziej skupiają się na funkcjach aplikacji, które rozwijają, niż na aspektach monitorowania tych aplikacji.

Zalecenia od Gartnera:

  1. Staraj się monitorować stan kontenerów lub usług w nich wspólnie z monitorowaniem systemów hostowych.
  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 przy użyciu analityki i/lub uczenia maszynowego.

Na blogu SolarWinds zaleca się:

  1. Używać narzędzi do automatycznego odkrywania i śledzenia metryk kontenera, korelacji metryk wydajnościowych, takich jak CPU, pamięć i czas pracy bezawaryjnej.
  2. Zapewnić optymalne planowanie pojemności poprzez prognozowanie terminów wyczerpania pojemności na podstawie wskaźników monitorowania kontenerów.
  3. Zorganizować monitoring aplikacji umieszczonych w kontenerach z uwzględnieniem wskaźników 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. Zautomatyzować procesy robocze, zapewniając wsparcie w zarządzaniu i skalowaniu dla kontenerów i ich środowisk uruchomieniowych.
  5. Zautomatyzować kontrolę dostępu, aby śledzić bazę użytkowników, dezaktywować przestarzałe i gościnne konta oraz usuwać zbędne uprawnienia.
  6. Upewnić się, że 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, sieciach, systemach i aplikacjach.

Jak przechowywać dane i zapewnić ich bezpieczeństwo

Wraz ze wzrostem liczby kontenerów roboczych z zachowaniem stanu, klienci muszą brać pod uwagę przechowywanie danych poza hostem oraz konieczność ochrony tych danych. 

Z danych sondowanie Portworx i Aqua Security, bezpieczeństwo danych zajmuje pierwsze miejsce na liście problemów bezpieczeństwa, wskazanych przez większość respondentów (61%). 

Szyfrowanie danych jest podstawową strategią bezpieczeństwa (64%), jednak respondenci korzystają również z monitoringu w czasie rzeczywistym

(49%), skanowania luk w rejestrach (49%), skanowania luk w potokach CI/CD (49%) oraz blokowania anomalii za pomocą ochrony w czasie rzeczywistym (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 przez API, mają rozproszoną architekturę, wspierają lokalne wdrożenie i wdrożenie w chmurze publicznej.
  2. Unikaj zamkniętych wtyczek i interfejsów. Wybieraj producentów, którzy zapewniają integrację z Kubernetes i wspierają standardowe interfejsy, takie jak CSI (Container Storage Interfaces).

Jak pracować z sieciami

Tradycyjny model sieci korporacyjnej, w którym specjaliści IT tworzą środowiska sieciowe dla rozwoju, testowania, zapewnienia jakości i produkcji dla każdego projektu, nie zawsze dobrze współpraca z procesem ciągłego rozwoju. Ponadto, sieci kontenerowe obejmują kilka poziomów.

W na blogu Magalix zebrano ogólne zasady, których powinna przestrzegać implementacja rozwiązania sieciowo-klastrowego:

  1. Pody zaplanowane na tym samym węźle powinny mieć możliwość wymiany danych z innymi modułami bez użycia NAT (translacja adresów sieciowych).
  2. Wszystkie demony systemowe (procesy w tle, takie jak kubelet), działające na danym węźle, mogą wchodzić w interakcje z podami działającymi na tym samym węźle.
  3. Pody korzystające z sieci hosta, powinny mieć możliwość komunikacji ze wszystkimi innymi podami na wszystkich innych węzłach bez użycia NAT. Należy zauważyć, że sieć hosta jest wspierana tylko na hostach Linux.

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

Zalecenia od Gartnera:

  1. Sprawdź, czy Twój CaaS (kontener jako usługa) lub sieć SDN (Software Defined Network) obsługuje sieci Kubernetes. Jeśli nie lub wsparcie jest niewystarczające, wykorzystaj interfejs sieciowy CNI (Container Network Interface) dla swoich kontenerów, który obsługuje wymaganą funkcjonalność i polityki.
  2. Upewnij się, że Twój CaaS lub PaaS (platforma jako usługa) wspiera tworzenie kontrolerów przychodzących i/lub równoważników obciążenia, które rozdzielają przychodzący ruch między węzłami klastra. Jeśli ta opcja nie jest dostępna, rozważ użycie zewnętrznych proxy lub mechanizmów service mesh.
  3. Przeszkol swoich inżynierów sieciowych w pracy z sieciami Linux i narzędziami automatyzacji sieci, aby zmniejszyć lukę w umiejętnościach i zwiększyć elastyczność.

Jak zarządzać cyklem życia aplikacji

Aby automatyzować i płynnie dostarczać aplikacje, należy uzupełnić orkiestrację kontenerów o inne narzędzia automatyzacji, takie jak produkty infrastruktury jako kod (IaC). Do nich należą Chef, Puppet, Ansible i Terraform. 

Wymagane są także narzędzia do automatyzacji budowy i wdrażania aplikacji (patrz „Magiczny kwadrat dla orkiestracji wydania aplikacji”). Kontenery zapewniają również możliwości skalowania, podobne do tych, które istniały przy wdrażaniu maszyn wirtualnych (VM). W związku z tym kierownicy IT powinni mieć narzędzia do zarządzania cyklem życia kontenerów.

Zalecenia od Gartnera:

  1. Ustanów standardy podstawowych obrazów kontenerów, uwzględniając rozmiar, licencjonowanie i elastyczność w dodawaniu komponentów przez deweloperów.
  2. Wykorzystuj systemy zarządzania konfiguracją do zarządzania cyklem życia kontenerów, które przechowują konfiguracje w warstwach opartych na podstawowych obrazach, znajdujących się w publicznych lub prywatnych repozytoriach.
  3. Zintegrować platformę CaaS z narzędziami automatyzacji, aby zautomatyzować cały przepływ pracy aplikacji.

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

Podstawowe funkcje do wdrażania kontenerów są dostępne na poziomach orkiestracji i planowania. Podczas 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, zachowywania danych, zarządzania siecią i cyklu życia kontenerów.
  2. Na podstawie tych wymagań wybierz narzędzie, które najlepiej odpowiada twoim wymaganiom i scenariuszom użycia.
  3. Korzystaj z badań Gartnera (zob. „Jak wybrać model wdrożenia Kubernetes”), aby zrozumieć zalety i wady różnych modeli wdrożenia Kubernetes i wybrać najbardziej odpowiedni dla twojego zadania.
  4. Wybierz dostawcę, który może zapewnić hybrydową orkiestrację dla aktywnych kontenerów w różnych środowiskach z ścisłą integracją z backendami, wspólnymi planami zarządzania i spójnymi modelami cenowymi.

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

W Gartnerze uważają, że zainteresowanie wdrożeniem kontenerów w publicznej chmurze IaaS rośnie z powodu dostępności gotowych ofert CaaS, a także ścisłej integracji tych ofert z innymi produktami oferowanymi przez dostawców chmur.

Chmury IaaS oferują korzystanie z zasobów na żądanie, szybką skalowalność i zarządzanie usługami, co pomoże uniknąć potrzeby posiadania głębokiej wiedzy na temat infrastruktury i jej utrzymania. Większość dostawców chmur oferuje usługę zarządzania kontenerami, a niektórzy oferują kilka opcji orkiestracji. 

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

Dostawca chmury
Typ usługi
Produkt/usługa

Alibaba
Native Cloud Service
Alibaba Cloud Container Service, Alibaba Cloud Container Service for Kubernetes

Amazon Web Services (AWS)
Native Cloud Service
Amazon Elastic Container Services (ECS), Amazon ECS for Kubernetes (EKS), AWS Fargate

Giant Swarm
MSP
Zarządzana infrastruktura Kubernetes Giant Swarm

Google
Native Cloud Service
Google Container Engine (GKE)

IBM
Native Cloud Service
IBM Cloud Kubernetes Service

Microsoft
Native Cloud Service
Azure Kubernetes Service, Azure Service Fabric

Oracle
Native Cloud Service
OCI Container Engine for Kubernetes

Platform9
MSP
Zarządzany Kubernetes

Red Hat
Usługa hostingowa
OpenShift Dedicated & Online

VMware
Usługa hostingowa
Cloud PKS (Beta)

Rozwiązania Chmurowe Mail.ru*
Native Cloud Service
Kontenery Chmurowe Mail.ru

* Nie będziemy ukrywać, sami się tu dodaliśmy podczas tłumaczenia 🙂

Dostawcy ogólnodostępnych chmur również dodają nowe możliwości i wprowadzają lokalne produkty. W najbliższej przyszłości dostawcy chmur będą rozwijać wsparcie dla chmur hybrydowych i środowisk wielochmurowych. 

Zalecenia Gartnera:

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

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

  1. Warto szukać dystrybucji, które natychmiast wspierają wysoką dostępność. Obejmuje to wsparcie dla wielu podstawowych architektur, wysoko dostępnych komponentów etcd, a także backup i przywracanie.
  2. Aby zapewnić mobilność środowisk Kubernetes, najlepiej wybierać dostawców chmurowych, którzy wspierają szeroki zakres modeli wdrażania: od lokalnych po hybrydowe i wielochmurowe. 
  3. Oferty dostawców również warto oceniać pod kątem łatwości konfiguracji, instalacji i tworzenia klastra, a także aktualizacji, monitorowania i rozwiązywania problemów. Podstawowym wymogiem jest wsparcie dla w pełni 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 jest ważne zarówno z punktu widzenia bezpieczeństwa, jak i zarządzania. Upewnij się, że wybrana dystrybucja Kubernetes wspiera integrację z systemami uwierzytelniania i autoryzacji używanymi w firmie. RBAC oraz szczegółowa kontrola dostępu to także istotne zestawy funkcji.
  5. Wybrany dystrybucja musi mieć własne rozwiązanie sieciowe, które jest definiowane przez oprogramowanie i obejmuje szeroki zakres wymagań stawianych przez różne aplikacje lub infrastrukturę, lub wspiera jedną z popularnych implementacji sieci opartych na CNI, w tym Flannel, Calico, kube-router lub OVN.

Wdrożenie kontenerów w produkcji staje się głównym kierunkiem, co potwierdzają wyniki ankiety przeprowadzonej na sesji Gartnera na temat infrastruktury, operacji i strategii chmurowych (IOCS) w grudniu 2018 roku:

Najlepsze praktyki i zalecenia dla uruchamiania kontenerów oraz Kubernetes w środowiskach produkcyjnych
Jak widać, 27% ankietowanych już korzysta z kontenerów w pracy, a 63% zamierza to zrobić.

W badaniu Portworx i Aqua Security 24% respondentów zgłosiło, że inwestują ponad pół miliona dolarów rocznie w technologie kontenerowe, a 17% respondentów wydaje na nie ponad milion dolarów rocznie. 

Artykuł przygotowany przez zespół platformy chmurowej Mail.ru Cloud Solutions.

Co jeszcze przeczytać na ten temat:

  1. Najlepsze praktyki DevOps: raport DORA.
  2. Kubernetes w duchu piratów z szablonem wdrożeniowym.
  3. 25 użytecznych narzędzi do wdrażania i implementacji Kubernetes.

Źródło: habr.com

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