Привет, Хабр!
С локальной разработкой можно экспериментировать и тестировать новые идеи, и такэе быстро вносить изменения без необходимости постоянной работы с удаленными серверами.
В статье рассмотрим пять основных инструментов.
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 и подобные ему решения экономят время и ресурсы.
Больше практических инструментов вы можете изучить в рамках онлайн-курсов от ведущих экспертов рынка. Переходите в каталог и выбирайте подходящее направление.