0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Урок

Развёртывание в Kubernetes с помощью Actions

Настройте непрерывное развёртывание в кластеры Kubernetes, управляя развёртываниями и сервисами непосредственно из GitHub Actions.

«Развёртывание в Kubernetes с помощью Actions» — бесплатный урок CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CI/CD with GitHub Actions & DevOps Pipelines, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.

Введение в непрерывное развертывание в Kubernetes с помощью GitHub Actions

Добро пожаловать! На этом уроке Вы узнаете, как настроить непрерывное развертывание (CD) в кластеры Kubernetes с помощью GitHub Actions.

Автоматизация развертывания позволяет быстро и надежно выпускать изменения приложения без ручных действий.

Мы рассмотрим аутентификацию, применение манифестов Kubernetes и управление обновлениями.

Основы развертываний в Kubernetes

Прежде чем приступить к развертыванию, давайте быстро вспомним два основных ресурса Kubernetes:

  • Развертывания: Они управляют подами приложения, обеспечивая постоянную работу нужного числа реплик. Они обрабатывают обновления и откаты.
  • Сервисы: Они определяют способы доступа к приложению, например изнутри кластера или извне через LoadBalancer.

Наша цель — применить файлы YAML, описывающие эти ресурсы, к кластеру из GitHub Actions.

Аутентификация GitHub Actions в Kubernetes

Чтобы выполнить развертывание, рабочему процессу GitHub Actions необходимо взаимодействовать с API-сервером кластера Kubernetes.

Для этого требуется аутентификация. Стандартный способ аутентификации в Kubernetes — использование файла kubeconfig.

Нам необходимо безопасно передать содержимое этого файла исполнителю рабочего процесса.

Защита файла конфигурации Kubernetes

Файл kubeconfig содержит конфиденциальные сведения, например конечные точки кластера и учетные данные пользователя. Его необходимо хранить в тайне!

GitHub Actions предоставляет для этого секреты. Вы сохраните содержимое файла kubeconfig как секрет репозитория.

Как получить свой kubeconfig? Это зависит от поставщика Kubernetes, например aws eks update-kubeconfig или gcloud container clusters get-credentials.

Настройка контекста Kubernetes

После сохранения kubeconfig как секрета, назовем его KUBE_CONFIG_DATA, рабочий процесс сможет его использовать.

Обычно содержимое секрета записывают во временный файл на исполнителе, а затем задают переменную окружения KUBECONFIG, указывающую на этот файл.

Такой подход сообщает kubectl, где найти сведения для подключения к кластеру.

Использование `kubectl` в рабочих процессах

kubectl — официальная утилита командной строки для взаимодействия с кластерами Kubernetes. На исполнителях GitHub Actions программа kubectl уже установлена.

После настройки kubeconfig Вы можете выполнять любую команду kubectl на шагах рабочего процесса.

Рассмотрим простой пример:

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

Простой манифест развертывания Kubernetes

Вот простой манифест развертывания Deployment и сервиса Service Kubernetes для приложения «привет-мир». Именно это мы попросим Kubernetes запустить.

В этом примере используется простой образ Nginx, доступный через порт 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

Полный рабочий процесс развертывания

Теперь добавим шаг развертывания в рабочий процесс. После сборки и отправки образа контейнера, описанных в предыдущих уроках, Вы сможете развернуть его.

В этом рабочем процессе предполагается, что секрет kubeconfig настроен, а файл манифеста, например k8s/deployment.yaml, находится в вашем репозитории.

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

Обновление приложения

Одно из важных преимуществ kubectl apply — идемпотентность. Если ресурсы, определенные в YAML, уже существуют, kubectl apply обновит их, а не создаст новые.

Чтобы развернуть новую версию приложения, просто обновите тег образа в файле deployment.yaml и отправьте изменения. После этого GitHub Actions запустит рабочий процесс, а Kubernetes выполнит постепенное обновление, постепенно заменяя старые поды новыми и обеспечивая минимальное время простоя.

Быстрая проверка

Вы изучили основные шаги развертывания приложения в Kubernetes с помощью GitHub Actions.

Какая из следующих последовательностей шагов является правильной для рабочего процесса GitHub Actions, развертывающего манифест Kubernetes?

Повторение и следующие шаги

Отличная работа! Вы научились настраивать непрерывное развертывание в Kubernetes с помощью GitHub Actions.

  • Мы храним конфиденциальные данные kubeconfig в секретах GitHub.
  • Рабочие процессы используют этот секрет для настройки kubectl.
  • kubectl apply -f используется для развертывания или обновления манифестов Kubernetes.
  • Kubernetes выполняет постепенные обновления при применении изменений.

Это мощное сочетание автоматизирует развертывания, делая процесс разработки более удобным и быстрым. Продолжайте изучать расширенные возможности Kubernetes!

Часто задаваемые вопросы

Урок «Развёртывание в Kubernetes с помощью Actions» бесплатный?

Да — полный текст урока «Развёртывание в Kubernetes с помощью Actions» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CI/CD with GitHub Actions & DevOps Pipelines, подпишись на CoddyKit PRO. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.

Чему я научусь в уроке «Развёртывание в Kubernetes с помощью Actions»?

Настройте непрерывное развёртывание в кластеры Kubernetes, управляя развёртываниями и сервисами непосредственно из GitHub Actions. Ты практикуешь CI/CD with GitHub Actions & DevOps Pipelines с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать CI/CD with GitHub Actions & DevOps Pipelines?

Предыдущий опыт не требуется. CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Развёртывание в Kubernetes с помощью Actions»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке CI/CD with GitHub Actions & DevOps Pipelines?

Да. Каждый урок CI/CD with GitHub Actions & DevOps Pipelines включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Сборка образов Docker с помощью Actions
  2. Отправка образов в реестры
  3. Развёртывание в Kubernetes с помощью Actions
  4. Чарты Helm и манифесты Kubernetes в CI/CD
← Назад к CI/CD with GitHub Actions & DevOps Pipelines