0Pricing
DevOps Bootcamp · Lekcja

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 --client

Prosty 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: LoadBalancer

Peł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.yaml

Aktualizowanie 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 kubeconfig przechowujemy w GitHub Secrets.
  • Workflow używa tego sekretu do skonfigurowania kubectl.
  • kubectl apply -f sł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

  1. Budowanie obrazów Docker za pomocą Actions
  2. Wysyłanie obrazów do rejestrów
  3. Wdrażanie do Kubernetes za pomocą Actions
  4. Wykresy Helm i manifesty Kubernetes w CI/CD
← Powrót do DevOps Bootcamp