Как стать автором
Поиск
Написать публикацию
Обновить
569.95
OTUS
Развиваем технологии, обучая их создателей

Основные инструменты для локальной разработки на Kubernetes

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.7K

Привет, Хабр!

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

В статье рассмотрим пять основных инструментов.

Minikube

Для начала работы с Minikube нужно установить саму утилиту. Это можно сделать с помощью любого менеджера пакетов.

После установки, запуск стандартной конфигурации Minikube осуществляется командой:

minikube start

Для более детальной настройки, например, увеличения выделенной памяти или количества CPU, команда дополняется:

minikube start --memory 4096 --cpus 2

После запуска кластера можно управлять им через kubectl. Например, для получения списка нод, которые находятся в кластере можно использовать:

kubectl get nodes

Для развертывания приложения с использованием файла конфигурации в формате YAML можно выполнить команду:

kubectl apply -f myapp.yaml

Также есть встроенный Dashboard, который предоставляет графический интерфейс для наблюдения за состоянием кластера:

minikube dashboard

Kind

Для начала работы с Kind нужно Docker и, при необходимости, Go. Kind можно установить напрямую через Go, используя команду:

go install sigs.k8s.io/kind@v0.22.0

Создание стандартного кластера происходит с помощью простой команды:

kind create cluster

Это создаст кластер с одним узлом, но Kind также поддерживает создание многонодовых кластеров. Для этого можно использовать YAML-конфигурацию, которая определяет структуру кластера. Например, для создания кластера с одним контрольным узлом и двумя рабочими узлами, файл конфигурации будет выглядеть так:

apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
nodes:
  - role: control-plane
  - role: worker
  - role: worker

Создаем кластер, используя этот файл конфигурации:

kind create cluster --config kind-config.yaml

После создания кластера можно управлять им с помощью kubectl:

kubectl get nodes

Кластер можно удалить с помощью команды:

kind delete cluster

Kind позволяет загружать локальные Docker-образы непосредственно в узлы кластера. Команда для загрузки образа:

kind load docker-image my-custom-image:tag

Для упрощения работы с образами можно настроить локальный Docker-реестр. Создание и настройка такого реестра включает запуск Docker-контейнера для реестра и конфигурацию Kind для работы с этим реестром:

# создание Docker-реестра
docker run -d --restart=always -p 5000:5000 --name kind-registry registry:2

# настройка Kind для использования этого реестра
kind create cluster --config kind-config-with-registry.yaml

Пример содержимого kind-config-with-registry.yaml:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
containerdConfigPatches:
- |-
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"]
    endpoint = ["http://kind-registry:5000"]

K3d

K3d представляет собой оболочку для запуска k3s в Docker.

Для начала работы с k3d, нужно, чтобы на вашей машине был установлен Docker, т.к k3d также использует контейнеры Docker для создания узлов кластера. Установить k3d можно с помощью простой команды через скрипт установки:

curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash

Или через менеджеры пакетов как Homebrew для macOS или Linux:

brew install k3d

Создание стандартного кластера происходит с помощью одной команды:

k3d cluster create mycluster

Для более сложных сценариев, например, создания многонодового кластера, можно юзать файл конфигурации YAML, который определяет все необходимые параметры:

apiVersion: k3d.io/v1alpha3
kind: Simple
name: mycluster
servers: 1
agents: 2

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

K3d также позволяет создавать локальные реестры Docker вместе с кластером:

k3d cluster create mycluster --registry-create

Это создаст кластер и реестр, автоматом настроив все необходимое для работы с образами в этом реестре.

После создания кластера можно управлять им с помощью kubectl:

kubectl get nodes

Для удаления кластера используйте:

k3d cluster delete mycluster

Gefyra

Gefyra позволяет запускать контейнеры на локальной машине так, как если бы они работали внутри Kubernetes кластера.

Инструмент позволяет заменить контейнер в Pod Kubernetes на локальный контейнер, который будет обрабатывать все запросы к этому Pod.

Установим:

curl -sSL https://raw.githubusercontent.com/gefyrahq/gefyra/main/install.sh | sh -

После установки можно запустить локальный контейнер и связать его с кластером Kubernetes:

gefyra run -i <имя_образа> -N <имя_контейнера> -n <k8s_пространство_имен>

Затем, создать мост:

gefyra bridge -N <имя_контейнера> -n <k8s_пространство_имен> --target deployment/<k8s_развертывание>/<контейнер_в_развертывании>

Okteto

Okteto позволяет использовать IDE для разработки напрямую на удаленных серверах, минимизируя необходимость настройки локальной среды.

Файл okteto.yml позволяет конфигурировать и управлять процессом разработки.

Процесс начинается с создания файла okteto.yml, который содержит инструкции для сборки, развертывания и настройки среды разработки. В этом файле можно определить команды, порты и пути синхронизации файлов:

name: my-app
build:
  my-app:
    image: okteto.dev/my-app:latest
    context: .
deploy:
  - kubectl apply -f k8s.yml
dev:
  my-app:
    command: bash
    sync:
      - .:/usr/src/app
    forward:
      - 9229:9229

Для активации разработочного контейнера используется команда:

okteto up

Команда запускает разработочную среду на Kubernetes, где код синхронизируется.


В конечном итоге, Okteto и подобные ему решения экономят время и ресурсы.

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

Теги:
Хабы:
Всего голосов 10: ↑7 и ↓3+8
Комментарии1

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS