- Pobierz link
- X
- Inne aplikacje
- Pobierz link
- X
- Inne aplikacje
W tej części serii dev{ops} kontynuuj wprowadzenie do narzędzi związanych z zarządzaniem aplikacjami w kontenerach, ale tym razem skupimy się bardziej na praktycznej stronie użycia Rancher Desktop oraz Helm. Jeśli potrzebujesz bardziej szczegółowych informacji na temat Kubernetes i Helm, odsyłam Cię do moich wcześniejszych artykułów, które szczegółowo omawiają te narzędzia.
Dziś opiszę, jak zorganizowany jest projekt Helm, szczególnie struktura plików w chartach Helm. Pokaż również krok po kroku, jak wdrożyć aplikację za pomocą Helm.
Rancher Desktop – Twój lokalny Kubernetes
Rancher Desktop to narzędzie umożliwiające uruchamianie Kubernetes na lokalnym komputerze, co czyni je idealnym narzędziem dla programistów chcących testować i rozwijać aplikacje w Kubernetes bez potrzeby korzystania z zewnętrznej infrastruktury chmurowej. Wystarczy pobrać i zainstalować aplikację co pisałem w poprzednim artykule, a lokalny klaster Kubernetes zostanie skonfigurowany automatycznie.
Helm – Struktura Projektu
Helm to menedżer pakietów dla Kubernetes, który pozwala na automatyzację wdrażania aplikacji za pomocą tzw. chartów (pakietów zawierających pliki konfiguracyjne i szablony). Przyjrzyjmy się bliżej, jak wygląda struktura typowego projektu Helm i omówmy szczegółowo każdy plik, aby zrozumieć, jak działa Helm pod maską.
Przykładowa struktura projektu Helm (chartu):
my-helm-chart/ │ ├── charts/ ├── templates/ │ ├── deployment.yaml │ ├── service.yaml │ ├── ingress.yaml │ ├── _helpers.tpl │ └── NOTES.txt ├── Chart.yaml └── values.yaml
Szczegółowe omówienie plików:
1. Chart.yaml
To plik manifestu każdego chartu Helm. Zawiera informacje meta o projekcie, takie jak nazwa chartu, wersja i opis.
Przykład zawartości pliku Chart.yaml
:
apiVersion: v2
name: my-helm-chart
description: A Helm chart for my application
version: 1.0.0
appVersion: "1.16.0"
- apiVersion: Wersja API Helm, której używamy (obecnie v2 dla Helm 3).
- name: Nazwa chartu.
- description: Krótki opis, czym jest ten chart.
- version: Wersja samego chartu.
- appVersion: Wersja aplikacji, która będzie wdrożona przez ten chart.
2. values.yaml
Plik values.yaml
to centralne miejsce, w którym definiujesz wartości konfiguracyjne używane przez chart. Jest to potężna funkcja, która pozwala na elastyczne konfigurowanie aplikacji bez konieczności modyfikacji szablonów.
Przykład zawartości values.yaml
:
replicaCount: 3
image:
repository: nginx
tag: "1.16.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: false
- replicaCount: Liczba replik dla deploymentu.
- image: Definicja obrazu Docker, który zostanie użyty.
- service: Konfiguracja zasobu Service (np. rodzaj usługi, port).
- ingress: Flaga włączająca lub wyłączająca zasób Ingress.
3. templates/
Folder templates
zawiera wszystkie szablony YAML, które zostaną przetworzone przez Helm podczas wdrożenia. Szablony te mogą zawierać dynamiczne wartości zdefiniowane w values.yaml
.
deployment.yaml
: Szablon definiujący zasób Deployment dla Kubernetes.apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Values.name }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: app: {{ .Values.name }} template: metadata: labels: app: {{ .Values.name }} spec: containers: - name: {{ .Values.name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
W powyższym przykładzie wartości, takie jak liczba replik i obraz Docker, są dynamicznie pobierane z pliku
values.yaml
.service.yaml
: Szablon definiujący zasób Service dla aplikacji:apiVersion: v1 kind: Service metadata: name: {{ .Values.name }}-service spec: type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }} selector: app: {{ .Values.name }}
_helpers.tpl
: Plik zawierający pomocnicze funkcje i makra, które mogą być wielokrotnie wykorzystywane w innych szablonach. Jest to dobry sposób na unifikację logiki w różnych plikach YAML.NOTES.txt
: Informacyjny plik tekstowy, który jest wyświetlany po zakończeniu wdrażania. Można tu umieścić instrukcje dla użytkowników wdrażających aplikację.
4. charts/
Katalog charts/
służy do zagnieżdżania innych chartów jako zależności. Pozwala to na użycie innych chartów (np. bazy danych, systemów cache) w twoim projekcie. Dzięki temu można w łatwy sposób wdrożyć złożone aplikacje z wieloma komponentami.
Przykład zależności w Chart.yaml
:
dependencies:
- name: redis
version: "14.0.0"
repository: "https://charts.bitnami.com/bitnami"
Krok po kroku: Wdrożenie aplikacji za pomocą Helm i Rancher Desktop
Krok 1: Uruchomienie Rancher Desktop
- Uruchom Rancher Desktop i sprawdź, czy klaster Kubernetes działa:
kubectl get nodes
Krok 2: Zainstaluj Helm
- Zainstaluj Helm, jeśli jeszcze nie jest zainstalowany:
brew install helm
Krok 3: Stwórz własny chart
Użyj komendy Helm, aby stworzyć nowy chart:
helm create my-helm-chart
Zmodyfikuj pliki
Chart.yaml
,values.yaml
oraz szablony w folderzetemplates/
, aby dostosować je do swojej aplikacji.
Krok 4: Wdrożenie aplikacji
Wdróż chart na lokalnym klastrze Kubernetes:
helm install my-app ./my-helm-chart
Sprawdź stan wdrożenia:
kubectl get pods
Krok 5: Aktualizacja aplikacji
- Wprowadź zmiany w
values.yaml
lub innych plikach, a następnie zaktualizuj wdrożenie:helm upgrade my-app ./my-helm-chart
Krok 6: Usunięcie aplikacji
- Aby usunąć aplikację, użyj komendy:
helm uninstall my-app
Podsumowanie
Helm w połączeniu z Rancher Desktop to potężne narzędzie do zarządzania wdrożeniami aplikacji w środowisku Kubernetes. Rancher Desktop oferuje wygodny sposób na uruchomienie Kubernetes na lokalnym komputerze, co jest idealnym rozwiązaniem do testowania i rozwoju aplikacji bez potrzeby korzystania z zewnętrznej infrastruktury. Helm natomiast, dzięki swojej strukturze chartów, umożliwia łatwe i szybkie wdrażanie złożonych aplikacji, a także ich aktualizację i usuwanie.
Komentarze
Prześlij komentarz