Promocja: pl – 5 PLN/rok | eu – 5 PLN/rok | com – 40 PLN/rok
Sztuczna Inteligencja w wyszukiwarce domen Aktywuj
Certyfikat SSL z szyfrowaniem ECDSA -60% Zamów

Uruchom pierwszą aplikację Hello World, korzystając z Kubernetes w nazwa.pl

 

Korzystając z Kubernetes, można w bardzo prosty sposób tworzyć dowolne aplikacje. Stosuje się do tego gotowe obrazy kontenera (ang. Container Image), które zawierają wszystkie niezbędne elementy do uruchomienia aplikacji lub usługi w izolowanym środowisku kontenerowym. Obraz zawiera kod aplikacji, biblioteki, zależności oraz konfigurację środowiska uruchomieniowego.

Kubernetes wykorzystuje obrazy kontenerów jako podstawową jednostkę do uruchamiania aplikacji. Definiuje się je w obiektach, takich jak Deploymenty, StatefulSety, Joby itp. Każdy kontener wewnątrz tych obiektów jest budowany na podstawie określonego obrazu. Obrazy są zwykle przechowywane w rejestrach, skąd Kubernetes ściąga je, aby uruchomić wybrany kontener na węzłach klastra. Zazwyczaj obraz kontenera definiuje się w plikach YAML poprzez parametr „image” w sekcji „spec”.

Przykładem gotowego obrazu kontenera jest serwer HTTP Nginx. Korzystając z niego, można w bardzo prosty sposób zbudować aplikację, której wynikiem działania będzie wyświetlenie uprzednio przygotowanej strony HTML.

 

Przygotowanie strony WWW

W pierwszym etapie należy przygotować prostą stronę WWW. Będzie to strona typu „Hello World”, która ma być dostępna w przeglądarce WWW pod adresem URL Twojej usługi SaaS Kubernetes. W tym celu zaloguj się do swojej usługi Kubernetes i wykonaj poniższe polecenie:

echo '<html><head><title>Hello World</title></head><body>Hello World from Kubernetes nazwa.pl</body></html>
' > /tmp/index.html

Wykonanie powyższej komendy spowoduje utworzenie w lokalizacji /tmp pliku o nazwie index.html z zawartością prostej strony w HTML.

 

Wygenerowanie ConfigMap

ConfigMap w Kubernetes to obiekt używany do przechowywania konfiguracji aplikacji jako pary klucz-wartość. Pozwala na separację konfiguracji od kodu aplikacji, co ułatwia zarządzanie i dostosowywanie konfiguracji bez konieczności modyfikowania samej aplikacji. ConfigMapy mogą zawierać różne rodzaje danych konfiguracyjnych, takie jak ustawienia środowiskowe, pliki konfiguracyjne, parametry wywołania itp. Są wykorzystywane przez różne obiekty, takie jak Pody, Deploymenty, StatefulSety itp. Kontenery w tych obiektach mogą odwoływać się do ConfigMapów, aby uzyskać dostęp do konfiguracji, która jest im potrzebna do uruchomienia.

Dla budowanej aplikacji Hello World, ConfigMapę najłatwiej jest wygenerować na podstawie pliku strony internetowej, jaką przed chwilą stworzyłeś. W tym celu wykonaj polecenie:

kubectl create configmap hello --from-file=/tmp/index.html

Komunikat „configmap/hello created” oznacza, że została wygenerowana ConfigMapa o nazwie „hello” czerpiąca dane z pliku /tmp/index.html. Aby sprawdzić status ConfigMapy, użyj polecenia:

kubectl get configmap hello

W wyniku działania powyższego polecenia zostanie wyświetlona informacja prezentująca czas, jaki upłynął od wygenerowania ConfigMapy. Można także wyświetlić ConfigMapę w formie pliku YAML. W tym celu użyj polecenia:

kubectl get configmap hello -o yaml

 

Utworzenie Deploymentu

Deployment to obiekt Kubernetes, który definiuje, jak aplikacja powinna być wdrażana i zarządzana w klastrze. Jest to jeden z mechanizmów do zarządzania nią w sposób deklaratywny i elastyczny. Pozwala na kontrolowanie stanu wdrożenia aplikacji, zapewniając jej między innymi automatyczne replikacje, aktualizacje i rollbacki.

W celu utworzenia Deploymentu aplikacji „Hello World” przygotuj w dowolnym edytorze plik /tmp/hello.yaml z następującą zawartością, na podstawie której utworzysz Pod o nazwie „hello-world”:

apiVersion: apps/v1
kind: Deployment
metadata:
      name: hello-world
spec:
      selector:
          matchLabels:
                app: hello-world
      template:
          metadata:
                labels:
                   app: hello-world
          spec:
                containers:
                - name: hello
                   image: nginx:latest
                   volumeMounts:
                   - name: html
                     mountPath: /usr/share/nginx/html
                volumes:
                - name: html
                   configMap:
                     name: hello

Poniżej zaprezentowany jest plik /tmp/hello.yaml przygotowany w edytorze nano, który automatycznie dodaje odpowiednie kolory i właściwe tabulacje, aby poprawić jego czytelność.

 

Tworzenie zasobu hello z pliku YAML

Zastosowanie lub aktualizacja zasobów klastra, które zostały zdefiniowane w pliku YAML lub JSON, są możliwe z wykorzystaniem komendy kubectl apply. W celu utworzenia zasobu zgodnego z przygotowanym plikiem hello.yaml wykonaj poniższe polecenie:

kubectl apply -f /tmp/hello.yaml

Weryfikację tego, czy Pod poprawnie działa, możesz wykonać, korzystając z polecenia:

kubectl get pods

Dzięki tej komendzie zobaczysz informacje o utworzonym Podzie o nazwie „hello-world” wraz z czasem, jaki upłynął od jego utworzenia.

Przygotowany w ten sposób działający Pod można udostępnić dla każdego z poziomu przeglądarki WWW za pomocą komendy kubectl port-forward. W tym celu wykonaj polecenie:

kubectl port-forward deployment/hello-world 80:80 --address 0.0.0.0 &

Od teraz, wpisując w pasku adresu przeglądarki WWW URL strony w postaci nazwy Twojej usługi SaaS Kubernetes, na przykład http://kubernetes.nazwa.pl, zobaczysz swoją uruchomioną witrynę.

Aby przerwać port-forward, zweryfikuj za pomocą systemowego polecenia ps z odpowiednimi flagami, jaki proces systemowy odpowiada za przekazywanie portów dla Twojego WordPressa:

ps -f | grep 'kubectl' | grep 'port-forward'

Przy aktywnym przekazywaniu portów zobaczysz informację o procesie, który odpowiada za to działanie oraz informację o serwisie, który obsługiwany jest przez port-forward. Aby wyłączyć przekazywanie portów, skorzystaj z polecenia kill z flagą -9, podając numer procesu, który odpowiada za aktywne przekazywanie portów:

kill -9 [id procesu]

gdzie [id procesu] to identyfikator procesu podany jako liczba po nazwie użytkownika, w naszym przykładzie jest to 2387648:

Zakończenie przekazywania portów możliwe jest także z użyciem polecenia pkill z flagą: -f ”port-forward”:

pkill -f ”port-forward”

Table of Contents