Automatyzacja Docker

Kontenery Docker zarządzane w sposób zautomatyzowany.

Automatyzacja Docker to implementacja strategii związanej z konteneryzacją często wzbudza wątpliwości co do tego jak bezpiecznie i w powtarzalny sposób zarządzać kontenerami w środowisku produkcyjnym. Rozwiązanie może być prostsze niż się wydaje.
Przeniesienie złożonych stosów IT do środowiska w pełni skonteneryzowanego, albo błyskawiczne stworzenie nowej infrastruktury opartej na kontenerach to spore wyzwanie, a w niektórych przypadkach nawet zupełnie niemożliwe.

Bardzo często potrzeba gwarancji, że kontenery zapewnią spójność, lekkość i izolację aplikacji, a dodatkowo elastyczność potrzebną do pracy w wielu środowiskach nie poddających się konteneryzacji. W niektórych środowiskach wykorzystanie kontenerów nie ma zatem sensu. Przykładowo mogą to być środowiska charakteryzujące się większymi wymaganiami związanymi z izolacją (dane wrażliwe, medyczne, billingowe), albo wymagające bezpośredniego dostępu do sprzętu (np. renderowanie na GPU).

Co daje automatyzacja kontenerów Docker?

  • Elastyczność. Playbooki (pliki z regułami konfiguracji) używane w Ansible są przenośne, co oznacza że można je uruchamiać na różnych systemach np. na Ubuntu i Red Hat. Kiedy kontener tworzony jest wyłącznie z wykorzystaniem Dockerfile (czyli natywnego narzędzia do budowania kontenerów Dockera), powtarzalność aplikacji może być zagwarantowana tylko poprzez kontener Docker. Gdybyśmy natomiast zdecydowali się na użycie Ansible, można środowisko powielić nie tylko w Dockerze, ale też na Vagrancie, instancji w chmurze lub instalacji fizycznej. Dodatkowo można budować kontenery za pomocą przygotowanych wcześniej ról.
  • Kontrola. Automatyzacja Docker pozwala uzyskać łatwość w śledzeniu potencjalnych wrażliwości na kłopoty. Mimo iż kontenery zapewniają pewien poziom izolacji, nie zdejmuje to z barków pracowników działu IT ciężaru związanego z kontrolowaniem tego gdzie ulokowane są ich kontenery, ani ze śledzenia wszystkich wrażliwości i zagwarantowaniu, że w razie potrzeby kontener można odtworzyć. W tej sytuacji pomocną dłoń wyciąga do nas automatyzacja, dzięki której łatwo jest monitorować niektóre procesy, jak na przykład utylizację zasobów (cpu/pamięć/sieć). Dzięki niektórym funkcjonalnościom (Ansible Tower czyli graficzny interfejs dodany do Ansible) można uzyskać dokładne informacje na temat tego kto uruchomił który kontener, jakim kodem gdzie i kiedy. Należy jednak pamiętać, że nie można oczekiwać, że będzie możliwe monitorowanie aplikacji na poziomie syscalli (odpowiednik auditd), czy samego konteneru na ewentualność wstrzyknięcia dodatkowych procesów. Użytkownicy Puppeta mogą być zaznajomieni z Foremanem, pluginem, z którego może skorzystać zarządzający infrastrukturą specjalista, aby uzyskać wgląd ale też budować kontenery.
  • Wszechstronność. Automatyzacja Docker sprawia, że zarządzanie kontenerami we wszystkich środowiskach staje się wykonalne. Możliwe jest zarządzanie nie tylko kontenerami, ale też środowiskami dookoła nich. Instancje Dockera muszą być regularnie uruchamiane, konfigurowane, łączone i zarządzane, bez względu na to, czy są maszynami fizycznymi, czy zwirtualizowanymi.
Zarządzanie kontenerami Docker z Puppet

Puppet oferuje moduł do zarządzania Dockerem, wspiera on instalację Dockera w okreslonej wersji, konfigurację sieciowych API za pomocą TCP, umożliwia zarządzanie ustawieniami DNS, ale też wybieranie wolumenu oraz wiele innych. Konfiguracja może zostać dokonana poprzez przekazanie parametrów do klasy Dockera albo przez Hierę, czyli zintegrowaną, hierarchiczną bazę konfiguracji (CMDB). Poza instalacją i wsparciem w zarządzaniu kontenerami, moduł oferuje też pobieranie obrazów z Docker Hub. Moduł wspiera również zarządzanie pracą poszczególnych kontenerów. Nie jest ona w stanie zastapić zaawansowanych funkcji procesu rozmieszczającego wyższego poziomu, jak Kubernetes, czy Mesos, daje zaś możliwość uniknięcia użycia dodatkowego języka. Moduł nadaje się też do zarządzania kontenerami działającymi już w istniejącej infrastrukturze. Kontenery mogą być uruchamiane i sterowane przez system operacyjny (przy użyciu systemd, czy sysvinit) albo poprzez wbudowany w Dockerze process manager.

Korzystając z narzędzi do automatyzacji IT można instalować, konfigurować i zarządzać kontenerami oraz ich obrazami, jak i hostami kontenerów i usługami działającymi na tych hostach. Wersje enterprise rozwiązań automatyzacyjnych zapewniają wsparcie dla kontenerów, dając pewność, że są one gotowe do pracy na produkcji. Bez względu na system operacyjny, lub model wdrożenia, czy to w środowisku fizycznym, wirtualnym, czy w chmurze, Docker wzbogacony o narzędzia automatyzacyjne pozwala na reprodukcję całego środowiska produkcyjnego w sposób bezpieczny, spójny i powtarzalny. Jednak wersja Enterprise nie jest jedynym rozwiązaniem, większość narzędzi jest dostępna w wersji otwartej i umożliwia dalszą integrację i rozwój.

Linux Polska jako partner firm Docker, Red Hat (Ansible) oraz Puppet, oferuje szkolenia i konsultacje związane z wdrożeniem konteneryzacji.