Лабораторная 2.3: Настройка вашей среды
Связанный урок: Урок 2.3: Настройка среды разработки
Навигация: ← Предыдущая лабораторная: Основы Kubebuilder | Обзор модуля | Следующая лабораторная: Первый оператор →
Цели
- Проверить, что все необходимые инструменты установлены
- Настроить полноценную среду разработки
- Создать и проверить кластер kind
- Протестировать полную настройку
Предварительные требования
- Завершение настройки Модуля 1
- Базовое понимание необходимых инструментов
Упражнение 1: проверка предварительных требований
Задача 1.1: проверьте установку Go
# Check Go version (need 1.21+)
go version
# Verify Go is working
go env
# Check GOPATH and GOROOT
echo $GOPATH
echo $GOROOT
Ожидается: Go 1.21 или выше
Задача 1.2: проверьте kubectl
# Check kubectl version
kubectl version --client
# Verify kubectl is working
kubectl cluster-info
Примечание: если кластер не настроен — это нормально, мы его создадим.
Задача 1.3: проверьте Docker/Podman
# Check Docker
docker --version
docker info
# OR check Podman
podman --version
podman info
Ожидается: запущенный Docker или Podman
Упражнение 2: установка недостающих инструментов
Задача 2.1: используйте скрипт настройки
# Run the setup script
./scripts/setup-dev-environment.sh
Обратите внимание:
- Какие инструменты уже установлены?
- Какие инструменты нужно установить?
- Что устанавливается автоматически?
Задача 2.2: ручная проверка
После запуска скрипта проверьте каждый инструмент:
# Go
go version
# kubectl
kubectl version --client
# kubebuilder
kubebuilder version
# kind
kind version
# Docker/Podman
docker --version # or podman --version
Упражнение 3: настройка кластера kind
Задача 3.1: используйте скрипт настройки
# Run kind cluster setup
./scripts/setup-kind-cluster.sh
Обратите внимание:
- Процесс создания кластера
- Что устанавливается?
- Сколько времени это занимает?
Задача 3.2: проверьте кластер
# Check cluster info
kubectl cluster-info
# List nodes
kubectl get nodes
# Check cluster context
kubectl config current-context
# Should show: kind-k8s-operators-course
Задача 3.3: протестируйте кластер
# Create a test pod
kubectl run test-pod --image=nginx:latest
# Wait for it to be ready
kubectl wait --for=condition=ready pod/test-pod --timeout=60s
# Verify it's running
kubectl get pods
# Clean up
kubectl delete pod test-pod
Упражнение 4: проверка kubebuilder
Задача 4.1: проверьте установку
# Check kubebuilder version
kubebuilder version
# Verify it's in PATH
which kubebuilder
# Test kubebuilder commands
kubebuilder --help
Задача 4.2: протестируйте kubebuilder init
# Create a test directory
mkdir -p /tmp/env-test
cd /tmp/env-test
# Test kubebuilder init
kubebuilder init --domain test.com --repo github.com/test/env-test
# Verify project was created
ls -la
# Check main.go exists
test -f main.go && echo "✅ main.go exists" || echo "❌ main.go missing"
# Clean up
cd ~
rm -rf /tmp/env-test
Упражнение 5: полный чек-лист среды
Задача 5.1: выполните чек-лист проверки
Проверьте каждый пункт:
# Go 1.21+
go version | grep -q "go1.2[1-9]\|go1.[3-9]" && echo "✅ Go version OK" || echo "❌ Go version too old"
# kubectl
kubectl version --client > /dev/null 2>&1 && echo "✅ kubectl OK" || echo "❌ kubectl missing"
# kubebuilder
kubebuilder version > /dev/null 2>&1 && echo "✅ kubebuilder OK" || echo "❌ kubebuilder missing"
# kind
kind version > /dev/null 2>&1 && echo "✅ kind OK" || echo "❌ kind missing"
# Docker/Podman
(docker info > /dev/null 2>&1 || podman info > /dev/null 2>&1) && echo "✅ Container runtime OK" || echo "❌ Container runtime missing"
# Kind cluster
kubectl cluster-info --context kind-k8s-operators-course > /dev/null 2>&1 && echo "✅ Kind cluster OK" || echo "❌ Kind cluster missing"
Задача 5.2: устраните любые проблемы
Если какие-либо проверки не прошли:
- Просмотрите сообщения об ошибках
- Перезапустите скрипты настройки
- Проверьте документацию
- При необходимости обратитесь за помощью
Упражнение 6: тестирование рабочего процесса разработки
Задача 6.1: создайте тестовый проект
# Create test project
mkdir -p /tmp/workflow-test
cd /tmp/workflow-test
# Initialize project
kubebuilder init --domain test.com --repo github.com/test/workflow-test
Задача 6.2: сгенерируйте и установите
# Generate code
make generate
# Generate manifests
make manifests
# Install CRD (this will fail if no cluster, that's OK for testing)
make install || echo "No cluster, skipping install"
Задача 6.3: проверьте рабочий процесс
# Check generated files
ls -la config/crd/bases/
ls -la config/rbac/
# Check Makefile targets
make help
Задача 6.4: очистка
cd ~
rm -rf /tmp/workflow-test
Упражнение 7: настройка IDE (опционально)
Задача 7.1: настройка VS Code
Если вы используете VS Code:
# Install Go extension
code --install-extension golang.go
# Install Kubernetes extension
code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools
Задача 7.2: настройка GoLand
Если вы используете GoLand:
- В GoLand есть встроенная поддержка Go и Kubernetes
- Дополнительная настройка не нужна
Сводка по проверке среды
В вашей среде должно быть:
- ✅ Go 1.21+
- ✅ kubectl
- ✅ kubebuilder
- ✅ kind
- ✅ Docker или Podman
- ✅ Запущенный кластер kind
- ✅ Контекст kubectl настроен на кластер kind
Устранение неполадок
Проблема: kubebuilder не найден
# Add to PATH
export PATH=$PATH:/usr/local/bin
# Or reinstall
Проблема: кластер kind недоступен
# Recreate cluster
kind delete cluster --name k8s-operators-course
./scripts/setup-kind-cluster.sh
Проблема: ошибки Go-модулей
# Enable Go modules
export GO111MODULE=on
Итоги лабораторной
В этой лабораторной вы:
- Проверили все необходимые инструменты
- Настроили полноценную среду разработки
- Создали и проверили кластер kind
- Протестировали рабочий процесс разработки
- Убедились, что всё работает вместе
Ключевые уроки
- Полноценная среда включает: Go, kubebuilder, kubectl, kind, Docker/Podman
- Скрипты настройки автоматизируют установку
- Кластер kind предоставляет локальный Kubernetes
- Все инструменты должны работать вместе
- Проверка важна перед началом разработки
Дальнейшие шаги
Ваша среда готова! Теперь давайте создадим ваш первый оператор.