Pull to refresh
1179.26
OTUS
Цифровые навыки от ведущих экспертов

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

Level of difficultyEasy
Reading time4 min
Views5.2K

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

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

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

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 и подобные ему решения экономят время и ресурсы.

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

Tags:
Hubs:
Total votes 10: ↑7 and ↓3+8
Comments1

Articles

Information

Website
otus.ru
Registered
Founded
Employees
101–200 employees
Location
Россия
Representative
OTUS