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

Najczęstsze błędy przy wdrażaniu kontenerów w produkcji
Organizacje często niedoszacowują wysiłku potrzebnego do eksploatacji kontenerów w produkcji. kilka powszechnych błędów w scenariuszach klientów przy wdrażaniu 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 pojawił się nawet specjalny termin – DevSecOps. Organizacje muszą planować w trakcie całego cyklu życia rozwoju, który obejmuje procesy budowy i rozwoju, wdrażania oraz uruchamiania aplikacji.
:
- 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.
- Popraw konfigurację za pomocą testów Center for Internet Security (), które są dostępne zarówno dla Dockera, jak i Kubernetes.
- 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.
- Unikaj kontenerów z podwyższonymi uprawnieniami, stosując zarządzanie politykami bezpieczeństwa, co zmniejszy potencjalne zagrożenia włamań.
- 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.
:
- 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.
- 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.
- 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 — podczas wdrażania klastrów Kubernetes. Programiści zawsze bardziej skupiają się na funkcjach aplikacji, które rozwijają, niż na aspektach .
:
- Staraj się monitorować stan kontenerów lub usług w nich wspólnie z monitorowaniem systemów hostowych.
- 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 przy użyciu analityki i/lub uczenia maszynowego.
:
- Używać narzędzi do automatycznego odkrywania i śledzenia metryk kontenera, korelacji metryk wydajnościowych, takich jak CPU, pamięć i czas pracy bezawaryjnej.
- Zapewnić optymalne planowanie pojemności poprzez prognozowanie terminów wyczerpania pojemności na podstawie wskaźników monitorowania kontenerów.
- 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ą.
- Zautomatyzować procesy robocze, zapewniając wsparcie w zarządzaniu i skalowaniu dla kontenerów i ich środowisk uruchomieniowych.
- Zautomatyzować kontrolę dostępu, aby śledzić bazę użytkowników, dezaktywować przestarzałe i gościnne konta oraz usuwać zbędne uprawnienia.
- 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 , 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%).
:
- 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 przez API, mają rozproszoną architekturę, wspierają lokalne wdrożenie i wdrożenie w chmurze publicznej.
- 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 ogólne zasady, których powinna przestrzegać implementacja rozwiązania sieciowo-klastrowego:
- 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).
- 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.
- Pody korzystające z 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ść.
:
- 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.
- 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.
- 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 „”). 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ć .
:
- Ustanów standardy podstawowych obrazów kontenerów, uwzględniając rozmiar, licencjonowanie i elastyczność w dodawaniu komponentów przez deweloperów.
- 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.
- 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.
:
- 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.
- Na podstawie tych wymagań wybierz narzędzie, które najlepiej odpowiada twoim wymaganiom i scenariuszom użycia.
- Korzystaj z badań Gartnera (zob. „”), aby zrozumieć zalety i wady różnych modeli wdrożenia Kubernetes i wybrać najbardziej odpowiedni dla twojego zadania.
- 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
, ż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 , 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.
:
- 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.
- Starannie wybieraj oprogramowanie, korzystaj z open source tam, gdzie to możliwe.
- 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.
:
- 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.
- Aby zapewnić mobilność środowisk Kubernetes, najlepiej wybierać dostawców chmurowych, którzy wspierają szeroki zakres modeli wdrażania: od lokalnych po hybrydowe i wielochmurowe.
- 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.
- 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.
- 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 na temat infrastruktury, operacji i strategii chmurowych (IOCS) w grudniu 2018 roku:

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