Rosnąca złożoność ekosystemów IT w organizacjach IT staje się elementem, który może ograniczać efektywność budowy rozwiązań cyfrowych.

Technologie takie jak Kubernetes, mikroseriwisy oraz konteneryzacja pozwalają organizacjom na realizację transformacji ułatwiającej zwiększenie złożoności ekosystemów IT przy jednoczesnej poprawie efektywności ich działania oraz podniesieniu efektywności procesów ich tworzenia i utrzymywania.

Zanim jednak rozważy się taką transformację, warto zebrać podstawową wiedzę na temat wspomnianych technologii. W poniższym artykule zawarto podstawowe informacje na ten temat wraz z aspektami dotyczącymi bezpieczeństwa platform mikroserwisowych opartych o Kubernetes. Na końcu zawarto także krótkie podsumowanie z odniesieniem do celu biznesowego oraz wartości wnoszonej przez wdrożenia platform Kubernetes.

Czym jest konteneryzacja ?

Konteneryzacja jest wirtualizacją na poziomie aplikacji, w której kontener w formie obrazu jest uruchamiany w środowisku zwanym container runtimie.

Środowisko to działa w ramach systemu operacyjnego i umożliwia równoległe działanie wielu niezależnych kontenerów. Każdy z kontenerów posiada własne odseparowane otoczenie aplikacyjne i systemowe opisane obrazem (image) i współdzieli jądro systemu operacyjnego. Kontenery są bytami znacznie mniejszymi od maszyn wirtualnych.

Architektura konteneryzacji w kontekście systemu operacyjnego

Czym jest Kubernetes ?

Kubernetes to platforma umożliwiająca zarządzanie złożonym środowiskiem kontenerowym składającym się z wielu hostów, na których działa środowisko containter runtime, połączonych w jedno centralnie zarządzane środowisko. Kubernetes posiada własną rozproszoną architekturę komponentów udostępniających dodatkowe usługi służące m.in do wdrażania mikrousług opartych o konteneryzację, zarządzania ich skalowaniem, dystrybucją ruchu, utrzymaniem ciągłości działania. Wprowadza także dość złożoną własną nomenklaturę konfiguracji wdrożeniowej systemu w środowisku klastrowym opisaną przez pliki yaml i definiowane w nich obiekty platformy Kubernetes.

Kubernetes posiada architekturę, która może być dalej komponentowo rozbudowywana. Komponenty wdrażane na platformie Kubernetes mogą być nie tylko aplikacjami realizującymi usługi biznesowe, ale mogą także rozszerzać mechanizmy platformy Kubernetes o nowe funkcjonalności. Najbardziej popularne z tego typu rozszerzeń (w tym także sam Kubernetes) są budowane pod patronatem CNCF (Cloud Native Computing Foundation).

Architektura platformy Kubernetes

Czym jest mikroserwis ?

Mikroserwis to pojedynczy autonomiczny komponent tzw. architektury mikroserwisowej realizujący konkretną i opisaną interfejsem funkcjonalność. Autonomiczność oznacza, że jest on także niezależnie rozwijany i wdrażany w całym jego cyklu DevOps od implementacji do wdrożenia.

Pamiętajmy, że pojęcie mikroserwsiu to jednie paradygmat opisujący dekompozycje i komponentyzację systemu, natomiast konteneryzacja i platforma Kubernetes to technologie, które dostarczają mechanizmów ułatwiających budowę i wdrażanie systemów realizujących ten paradygmat niezależnie od języków programowania oraz innych technologii, z jakich mikroserwisy są budowane.

Co to jest platforma mikroserwisowa Kubernetes?

Platforma Kubernetes jest najczęściej rozbudowywana o zestaw dodatkowych komponentów technologicznych wspierających budowę systemów w architekturze mikroserwisowej, tworząc tym samym platformę mikroserwisową.

Te dodatkowe komponenty tworzące platformę mikrousługową mogą dotyczyć m.in standardowych komponentów architektury mikrousługowej, pozwalających szybko wdrażać wzorce architektury mikrousługowej (np. API Gatway, Service Mesh), automatyzacji procesów Dev/Ops (rejestry, narzędzia realizujące procesy CI/CD, monitoring), centralnej agregacji i analizy logów z wszystkich mikroserwisów na platformie, czy też aspektów związanych z bezpieczeństwem wdrażanych na platformie mikrousługowej.

Platforma mikroserwisowa ułatwia i standaryzuje tym samym rozwój architektury mikrousługowej w organizacji, umożliwiając zwiększenie złożoności całej architektury IT. Proces DevOps na platformie mikroserwisowej opartej o Kubernetes pozwala na osiągnięcie znacznie większej dojrzałości zwiększającej efektywność prac zespołów wytwórczych i utrzymaniowych w IT.

Architektura platformy mikroserwisowej opartej o Kubernetes

Jak zadbać o bezpieczeństwo na platformy Kubernetes ?

Bezpieczeństwo w Kubernetes to rozległy temat, o którym można napisać kilka książek. Zagadnienia bezpieczeństwa dotykają zarówno obszarów sieciowych, konfiguracji klastra oraz samych mikroserwisów. Kwestie ściśle związane z bezpieczeństwem zaczynają się już w momencie instalacji klastra Kubernetes począwszy m.in od odpowiedniego przygotowania systemu operacyjnego, na którym instalowany jest container runtime. Następnie należy odpowiednio zaplanować architekturę samego klastra tak, aby Kubernetes control-plane przechowujący stan klastra udostępniany przez Kubernetes API był odpowiednio zabezpieczony zarówno przed nieautoryzowanym dostępem, jak i przed awariami elementów klastra. Warto także zadbać o odpowiednie wydzielenie sieci na klastrze w zależności od możliwości takiej separacji, jakie daje konkretna implementacja K8S, którą wybraliśmy.

Kolejna warstwa dbałości o bezpieczeństwo obejmuje obiekty Kubernetes. Tutaj pojawiają się takie kwestie jak autentykacja i autoryzacja dostępu do klastrów Kubernetes, pozwalające na zdefiniowanie uprawnień, jakie mają posiadać zarówno użytkownicy jaki obiekty kubernetes do zasobów klastra czy też Kubernetes API. Do zarządzania polityką bezpieczeństwa Kubernetes udostępnia bazowe mechanizmy takie jak m.in.: Policy, RBAC ( Role Base Access Control), Secrets, które pozwalają na definiowanie reguł i zabezpieczanie dostępu. Odpowiednie posługiwanie się tymi mechanizmami wymaga jednak dobrej wiedzy na temat szczegółowej architektury i mechanizmów działania klastra Kubernetes. Rozwiązania takie jak np. Rancher umożliwiają m.in centralne zarządzanie polityką bezpieczeństwa w środowiskach wieloklajstrowych.

Mówiąc o bezpieczeństwie trzeba wspomnieć o aspektach związanych z procesem DEV/OPS na klastrze, w tym m.in wdrażaniu komponentów ( np. mikroserwisów) na klaster. Poszczególne mikrosierwisy powinny mieć wydzielone środowiska na klastrze wraz z określonymi uprawnieniami dostępu do innych usług i obszarów klastra. Powinny istnieć polityki zabezpieczające przed nieprawidłową definicją wdrożenia usługi przez developerów, która mogłaby zagrozić bezpieczeństwu działania klastra lub innych mikrousług.

Na platformach mikroserwisowych wdrażane są także dodatkowe komponenty udostępniające rozbudowane mechanizmy, które mogą być wykorzystywane do bardziej elastycznego zarządzania bezpieczeństwem na klastrze K8S. Wymienić tutaj można takie komponenty jak np.: Vault do scentralizowanego zarządzania certyfikatami i hasłami dostępu do zasobów, Service Mesh – pozwalający bardziej elastycznie zarządzać routingiem i filtrowaniem i szyfrowaniem ruchu pomiędzy usługami, czy też takie jak OPA (Open Policy Agent) lub NeuVector zapewniający rozbudowane mechanizmy do zarządzania bezpieczeństwem, takie jak np. skanowanie obrazów kontenerowych.

Podsumowanie

Odpowiednio wdrożona platforma mikroserwisowa oparta o Kubernetes pozwala organizacjom na zwiększenie cyfrowej efektywności m.in: poprzez wprowadzenie standaryzacji i automatyzacji procesów wytwarzania rozwiązań cyfrowych, możliwość wykorzystania technologii podnoszących efektywność zespołów wytwórczych oraz efektywniejszego wykorzystania infrastruktury IT.

W szczególności dotyczy to podmiotów, w których cyfryzacja odgrywa istotną role we wspieraniu biznesu. Mając jednak na uwadze, że proces cyfryzacji biznesu zaczyna być bardzo istotny dla większości organizacji na współczesnym rynku oraz to, że cyfryzacja obejmuje zasięgiem coraz więcej procesów w organizacjach, platformy mikroserwisowe oparte o Kubernetes zaczynają stawać się kluczowymi systemami IT.

Dodatkowa motywacja do wdrażania platform mikroserwisowych idzie już od dużych producentów rozwiązań cyfrowych do wsparcia biznesu. Z uwagi na to, że efektywność wytwarzania i rozwoju cyfrowych rozwiązań w architekturze mikroserwisowej jest znacznie większa, to producenci tych rozwiązań będą dostarczać je w komponentowej architekturze mikrousługowej wraz ze standardową konfiguracją procesu wdrożenia na platformie Kubernetes. Taki kierunek można już zaobserwować np. w przypadku rozwiązań SAS (patrz SAS Viya).

Wcześniej czy później platforma mikroserwisowa oparta o K8S pojawi się prawdopodobnie w ekosystemach IT większości organizacji. Te z nich, które zrobią to jednak zbyt późno będą musiały pogodzić się z faktem, iż konkurencja rynkowa, która zrobiła to wcześniej, może osiągnąć istotną przewagę w obszarze cyfrowej efektywności.

Aby wdrożenie platformy Kubernetes przebiegło sprawnie, warto je zrealizować z doświadczonym partnerem, który pomoże wybrać optymalne komponenty, pomoże uniknąć błędów wynikających z wdrożenia relatywnie złożonej i dla wielu organizacji nowej technologii zapewniając tym samym na efektywną realizację takiego wdrożenia.