
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ół 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
, 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 , 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 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ę.
uważają, że pytania na poniższym rysunku pomogą zrozumieć, czy jesteś gotowy do wdrożenia kontenerów w produkcji:

Najczęstsze błędy przy zastosowaniu kontenerów w produkcji
Organizacje często niedoceniają wysiłków wymaganych do eksploatacji kontenerów w produkcji. kilka powszechnych błędów w scenariuszach klientów przy zastosowaniu kontenerów 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ć na całym etapie cyklu życia rozwoju, który obejmuje proces budowy, programowania, wdrażania i uruchamiania aplikacji.
:
- 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.
- Popraw konfigurację za pomocą testów Center for Internet Security (), które są dostępne zarówno dla Docker, jak i dla Kubernetes.
- 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.
- Unikaj kontenerów z podwyższonymi uprawnieniami przy pomocy zarządzania politykami bezpieczeństwa, co zmniejszy potencjalne ryzyko włamania.
- 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.
:
- 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.
- 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.
- 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 — przy wdrażaniu klastrów Kubernetes. Programiści często skupiają się bardziej na funkcjonalności aplikacji, które tworzą, niż na aspektach .
:
- Staraj się monitorować stan kontenerów lub usług w nich równolegle z monitoringiem systemów gospodarzy.
- Preferuj dostawców i narzędzia z głęboką integracją w orkiestrację kontenerów, szczególnie Kubernetes.
- 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.
:
- Używanie narzędzi do automatycznego odkrywania i śledzenia metryk kontenera, korelacji metryk wydajności, takich jak procesor, pamięć oraz czas działania bezawaryjnego.
- Zapewnienie optymalnego planowanie pojemności poprzez prognozowanie terminów wyczerpania pojemności na podstawie wskaźników monitorowania kontenerów.
- 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ą.
- Automatyzuj workflow, zapewniając wsparcie w zarządzaniu i skalowaniu kontenerów oraz ich środowisk.
- 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.
- 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 , 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%).
:
- Wybieraj rozwiązania do przechowywania danych, oparte na zasadach . 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.
- 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 ogólne zasady, którym powinna odpowiadać realizacja rozwiązania sieciowego opartego na klastrach:
- 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).
- 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.
- Pody korzystające z 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ść.
:
- 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.
- 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.
- 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. „“). 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ć .
:
- Ustal standardy podstawowych obrazów kontenerów z uwzględnieniem rozmiaru, licencjonowania i elastyczności w dodawaniu komponentów przez programistów.
- 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.
- 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.
:
- 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.
- Na podstawie tych wymagań wybierz narzędzie, które najlepiej odpowiada Twoim potrzebom i scenariuszom zastosowania.
- Korzystaj z badań Gartnera (patrz „”), aby zrozumieć zalety i wady różnych modeli wdrożenia Kubernetes i wybrać najbardziej odpowiedni dla swojego zadania.
- 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
, ż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 , 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.
:
- 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.
- Starannie wybieraj oprogramowanie, korzystaj z open source tam, gdzie jest to możliwe.
- 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.
:
- 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.
- Aby zapewnić mobilność środowisk Kubernetes, najlepiej wybierać dostawców chmurowych, którzy wspierają szeroki zakres modeli wdrożeniowych: od lokalnych po hybrydowe i wielochmurowe.
- 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.
- 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.
- 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 dotyczącej infrastruktury, operacji i strategii chmurowych (IOCS) w grudniu 2018 roku:

Jak widać, 27% respondentów już używa kontenerów w pracy, a 63% planuje to zrobić.
W 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 .
Co jeszcze przeczytać na ten temat:
- .
- .
- .
Źródło: habr.com
