Wdrażanie do Kubernetes za pomocą Actions
Skonfigurują Państwo Continuous Deployment do klastrów Kubernetes, zarządzając wdrożeniami i usługami bezpośrednio z GitHub Actions.
Wdrażanie do Kubernetes za pomocą Actions to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Wprowadzenie do CD w K8s za pomocą Actions
Witamy! W tej lekcji dowiedzą się Państwo, jak skonfigurować ciągłe wdrażanie (CD) do klastrów Kubernetes za pomocą GitHub Actions.
Automatyzacja wdrożeń pozwala szybko i niezawodnie udostępniać zmiany w aplikacji bez wykonywania ręcznych czynności.
Omówimy uwierzytelnianie, stosowanie manifestów Kubernetes oraz zarządzanie aktualizacjami.
Podstawy wdrażania w K8s
Zanim rozpoczniemy wdrażanie, krótko przypomnijmy sobie dwa podstawowe zasoby Kubernetes:
- Deployment: Zarządza podami aplikacji i zapewnia stałe działanie odpowiedniej liczby replik. Obsługuje aktualizacje i wycofywanie zmian.
- Service: Określa sposób uzyskiwania dostępu do aplikacji, na przykład wewnątrz klastra lub z zewnątrz za pośrednictwem LoadBalancer.
Naszym celem jest zastosowanie w klastrze, za pomocą GitHub Actions, plików YAML definiujących te zasoby.
Uwierzytelnianie Actions w K8s
Aby wdrożyć aplikację, workflow GitHub Actions musi komunikować się z serwerem API klastra Kubernetes.
Wymaga to uwierzytelniania. Standardowym sposobem uwierzytelniania w Kubernetes jest użycie pliku kubeconfig.
Musimy bezpiecznie przekazać zawartość tego pliku do runnera workflow.
Zabezpieczanie kubeconfig
Plik kubeconfig zawiera poufne informacje, takie jak adresy endpointów klastra i dane uwierzytelniające użytkownika. Należy zachować go w tajemnicy!
GitHub Actions udostępnia w tym celu funkcję Secrets. Zawartość pliku kubeconfig należy zapisać jako sekret repozytorium.
Jak uzyskać plik kubeconfig? Zależy to od dostawcy K8s, na przykład aws eks update-kubeconfig lub gcloud container clusters get-credentials.
Konfigurowanie kontekstu K8s
Gdy plik kubeconfig zostanie zapisany jako sekret, nazwijmy go KUBE_CONFIG_DATA, workflow będzie mógł go użyć.
Typową praktyką jest zapisanie zawartości sekretu w pliku tymczasowym na runnerze, a następnie ustawienie zmiennej środowiskowej KUBECONFIG, aby wskazywała ten plik.
Informuje to kubectl, gdzie znaleźć szczegóły połączenia z klastrem.
Używanie `kubectl` w workflow
kubectl to oficjalne narzędzie wiersza poleceń służące do pracy z klastrami Kubernetes. Runnery GitHub Actions mają już zainstalowane kubectl.
Po skonfigurowaniu kubeconfig można wykonywać dowolne polecenia kubectl w krokach workflow.
Zobaczmy podstawowy przykład:
name: K8s Setup Test
on: [workflow_dispatch]
jobs:
test-kubeconfig:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Verify kubectl access
run: kubectl version --clientProsty manifest wdrożenia K8s
Oto podstawowy manifest Kubernetes zawierający zasoby Deployment i Service dla aplikacji "hello-world". To właśnie taki zestaw zasobów zlecimy Kubernetesowi do uruchomienia.
W tym przykładzie użyto prostego obrazu Nginx, udostępnianego na porcie 80.
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
spec:
selector:
app: hello-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerPełny workflow wdrażania
Teraz zintegrujmy krok wdrażania z workflow. Po zbudowaniu i wypchnięciu obrazu kontenera, zgodnie z poprzednimi lekcjami, można go wdrożyć.
W tym workflow zakłada się, że sekret kubeconfig został skonfigurowany, a plik manifestu, na przykład k8s/deployment.yaml, znajduje się w repozytorium.
name: Deploy to Kubernetes
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Deploy application to K8s
run: kubectl apply -f k8s/deployment.yamlAktualizowanie aplikacji
Jedną z ważnych cech kubectl apply jest idempotentność. Jeśli zasoby zdefiniowane w pliku YAML już istnieją, kubectl apply zaktualizuje je zamiast tworzyć nowe.
Aby wdrożyć nową wersję aplikacji, wystarczy zaktualizować tag obrazu w pliku deployment.yaml i wypchnąć zmianę. GitHub Actions uruchomi wtedy workflow, a Kubernetes wykona aktualizację kroczącą, stopniowo zastępując stare pody nowymi i zapewniając minimalny czas niedostępności.
Szybkie sprawdzenie
Poznali już Państwo najważniejsze kroki wdrażania aplikacji w Kubernetes za pomocą GitHub Actions.
Jaka jest prawidłowa kolejność kroków workflow GitHub Actions służącego do wdrożenia manifestu Kubernetes?
Podsumowanie i dalsze kroki
Świetna praca! Nauczyli się Państwo konfigurować ciągłe wdrażanie w Kubernetes za pomocą GitHub Actions.
- Poufne dane
kubeconfigprzechowujemy w GitHub Secrets. - Workflow używa tego sekretu do skonfigurowania
kubectl. kubectl apply -fsłuży do wdrażania lub aktualizowania manifestów K8s.- Kubernetes obsługuje aktualizacje kroczące po zastosowaniu zmian.
To zaawansowane połączenie automatyzuje wdrożenia, usprawniając i przyspieszając proces tworzenia oprogramowania. Zachęcamy do poznawania kolejnych zaawansowanych funkcji K8s!
Często zadawane pytania
Czy lekcja „Wdrażanie do Kubernetes za pomocą Actions” jest bezpłatna?
Tak — pełny tekst „Wdrażanie do Kubernetes za pomocą Actions” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Wdrażanie do Kubernetes za pomocą Actions”?
Skonfigurują Państwo Continuous Deployment do klastrów Kubernetes, zarządzając wdrożeniami i usługami bezpośrednio z GitHub Actions. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Wdrażanie do Kubernetes za pomocą Actions”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Budowanie obrazów Docker za pomocą Actions
- Wysyłanie obrazów do rejestrów
- Wdrażanie do Kubernetes za pomocą Actions
- Wykresy Helm i manifesty Kubernetes w CI/CD