w dniu
architecture
dev
devops
microservices
- 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 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 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ą.
my-helm-chart/ │ ├── charts/ ├── templates/ │ ├── deployment.yaml │ ├── service.yaml │ ├── ingress.yaml │ ├── _helpers.tpl │ └── NOTES.txt ├── Chart.yaml └── values.yaml
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"
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
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ę.
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"
kubectl get nodes
brew install helm
Użyj komendy Helm, aby stworzyć nowy chart:
helm create my-helm-chart
Zmodyfikuj pliki Chart.yaml
, values.yaml
oraz szablony w folderze templates/
, aby dostosować je do swojej aplikacji.
Wdróż chart na lokalnym klastrze Kubernetes:
helm install my-app ./my-helm-chart
Sprawdź stan wdrożenia:
kubectl get pods
values.yaml
lub innych plikach, a następnie zaktualizuj wdrożenie:helm upgrade my-app ./my-helm-chart
helm uninstall my-app
Komentarze
Prześlij komentarz