Представь, что это твой первый день на позиции DevOps инженера. Тебе выдали ноутбук с чистой Ubuntu, и теперь нужно превратить его в мощную рабочую станцию, на которой можно развернуть локальный кластер Kubernetes, писать код, тестировать конфигурации и автоматизировать процессы. Давай разберем, как это сделать правильно.
В этой статье я покажу не просто установку программ, а создание целостной экосистемы для эффективной работы. Мы пройдем от базовой настройки системы до профессиональных инструментов мониторинга и оркестрации.
Подготовка Ubuntu к установке Workstation
Перед тем как начать установку основных инструментов, нужно подготовить систему. Это как подготовка строительной площадки перед возведением здания — фундамент должен быть прочным.
Обновление системы и установка базовых утилит
Первым делом обновим пакеты и установим инструменты, которые понадобятся на каждом шагу:
# Обновляем список пакетов и систему
sudo apt update && sudo apt upgrade -y
# Устанавливаем базовые утилиты
sudo apt install -y \
curl \
wget \
git \
vim \
htop \
net-tools \
build-essential \
software-properties-common \
apt-transport-https \
ca-certificates \
gnupg \
lsb-release
# Проверяем версию Ubuntu
lsb_release -a
lsb_release -a покажет точную версию Ubuntu — запомни её, она понадобится при установке некоторых инструментов.
Установка Docker и Docker Compose
Docker — это основа современной DevOps культуры. Он позволяет создавать изолированные среды для приложений. Установим его официальным способом:
Добавление Docker репозитория
# Добавляем GPG ключ Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Добавляем репозиторий Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Обновляем пакеты и устанавливаем Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Добавляем текущего пользователя в группу docker (чтобы не использовать sudo)
sudo usermod -aG docker $USER
newgrp docker
# Проверяем установку
docker --version
docker compose version
newgrp docker. Без этого придется использовать sudo для каждой docker команды.
Тестовый запуск Docker
# Запускаем тестовый контейнер
docker run hello-world
# Проверяем работу Docker Compose на примере
echo 'version: "3"
services:
nginx:
image: nginx:alpine
ports:
- "8080:80"' > docker-compose-test.yml
docker compose -f docker-compose-test.yml up -d
# Проверяем, что контейнер работает
docker ps
curl localhost:8080
Установка Kubernetes инструментов
Для работы с Kubernetes на рабочей станции нам понадобятся kubectl, minikube или kind. Давай установим всё необходимое.
Установка kubectl
# Скачиваем последнюю версию kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# Делаем файл исполняемым и перемещаем в PATH
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# Проверяем установку
kubectl version --client
Установка Minikube для локального кластера
# Скачиваем и устанавливаем Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Запускаем Minikube с драйвером Docker (самый простой вариант)
minikube start --driver=docker
# Проверяем статус
minikube status
kubectl get nodes
# Включаем дополнения (по желанию)
minikube addons enable dashboard
minikube addons enable metrics-server
Установка IDE и инструментов разработки
Хороший инструмент — половина успеха. Выбор IDE зависит от предпочтений, но я рекомендую VS Code как наиболее универсальный вариант.
Установка Visual Studio Code
# Добавляем репозиторий VS Code
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
# Добавляем репозиторий
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
# Устанавливаем VS Code
sudo apt update
sudo apt install -y code
# Устанавливаем полезные расширения для DevOps
code --install-extension ms-azuretools.vscode-docker
code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools
code --install-extension hashicorp.terraform
code --install-extension redhat.vscode-yaml
code --install-extension eamodio.gitlens
Установка инструментов для работы с инфраструктурой
Для современного DevOps нужны инструменты Infrastructure as Code:
# Установка Terraform
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
# Установка Ansible
sudo apt install -y ansible
# Установка Packer
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt update && sudo apt install packer
Мониторинг и отладка
Без мониторинга мы работаем вслепую. Установим инструменты для наблюдения за системой и приложениями.
Установка Prometheus и Grafana для локального использования
# Создаем директорию для конфигов мониторинга
mkdir -p ~/monitoring && cd ~/monitoring
# Создаем docker-compose файл для стека мониторинга
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
ports:
- "9090:9090"
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
ports:
- "3000:3000"
restart: unless-stopped
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
ports:
- "9100:9100"
restart: unless-stopped
volumes:
prometheus_data:
grafana_data:
EOF
# Создаем конфиг Prometheus
cat > prometheus.yml << 'EOF'
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
EOF
# Запускаем стек мониторинга
docker compose up -d
Настройка окружения и автоматизация
Настроим окружение так, чтобы работать было удобно и эффективно.
Настройка Bash и создание алиасов
# Добавляем полезные алиасы в ~/.bashrc
echo '
# Docker алиасы
alias d="docker"
alias dc="docker compose"
alias dcp="docker compose ps"
alias dcu="docker compose up -d"
alias dcd="docker compose down"
alias dcl="docker compose logs -f"
# Kubernetes алиасы
alias k="kubectl"
alias kgp="kubectl get pods"
alias kgn="kubectl get nodes"
alias kgs="kubectl get services"
alias kd="kubectl describe"
# Системные алиасы
alias ll="ls -la"
alias hg="history | grep"
alias ports="netstat -tulpn | grep LISTEN"
# Функция для быстрого перехода в директории проектов
proj() {
cd ~/projects/$1
}
# Автодополнение для kubectl
source <(kubectl completion bash)
complete -F __start_kubectl k
' >> ~/.bashrc
# Применяем изменения
source ~/.bashrc
Создание структуры рабочих директорий
# Создаем структуру для проектов
mkdir -p ~/projects/{
kubernetes,
docker,
terraform,
ansible,
scripts,
monitoring,
tmp
}
# Создаем директорию для конфигов
mkdir -p ~/.config/{
kubectl,
terraform,
docker
}
# Копируем конфиг kubectl если есть кластер
if [ -f ~/.kube/config ]; then
cp ~/.kube/config ~/.config/kubectl/
fi
Сравнение инструментов мониторинга
| Инструмент | Назначение | Сложность | Рекомендация для Workstation |
|---|---|---|---|
| Prometheus + Grafana | Метрики и дашборды | Средняя | ✅ Отлично подходит |
| Elastic Stack | Логи и поиск | Высокая | ⚠️ Только для специфичных задач |
| Loki + Grafana | Логи | Низкая | ✅ Хорошая альтернатива Elastic |
| Jaeger | Трейсинг | Средняя | ⚠️ Только для микросервисов |
Проверка работоспособности Workstation
После установки всех компонентов проверим, что всё работает корректно:
#!/bin/bash
echo "=== Проверка установленных инструментов ==="
# Проверяем Docker
echo -n "Docker: "
docker --version 2>/dev/null && echo "✅" || echo "❌"
# Проверяем Docker Compose
echo -n "Docker Compose: "
docker compose version 2>/dev/null && echo "✅" || echo "❌"
# Проверяем kubectl
echo -n "kubectl: "
kubectl version --client 2>/dev/null && echo "✅" || echo "❌"
# Проверяем Minikube
echo -n "Minikube: "
minikube version 2>/dev/null && echo "✅" || echo "❌"
# Проверяем Terraform
echo -n "Terraform: "
terraform version 2>/dev/null && echo "✅" || echo "❌"
# Проверяем Ansible
echo -n "Ansible: "
ansible --version 2>/dev/null && echo "✅" || echo "❌"
# Проверяем VS Code
echo -n "VS Code: "
code --version 2>/dev/null && echo "✅" || echo "❌"
# Проверяем запущенные сервисы
echo "\n=== Запущенные сервисы на портах ==="
ss -tulpn | grep -E ':(9090|3000|9100|8080)' | while read line; do
echo "✅ $line"
done
echo "\n=== Проверка завершена ==="
Часто задаваемые вопросы (FAQ)
Какой дистрибутив Ubuntu лучше выбрать для Workstation?
Для рабочей станции я рекомендую Ubuntu LTS (Long Term Support) версии — 22.04 или 24.04. Они стабильны, хорошо документированы и имеют длительную поддержку. Избегай не-LTS версий для production-подобных окружений.
Нужно ли устанавливать все перечисленные инструменты?
Нет, это полный стек. Начни с Docker, kubectl и IDE. Остальные инструменты устанавливай по мере необходимости. Мониторинг, например, нужен не всем, а только тем, кто работает с production-подобными средами.
Как освободить место после работы с Docker?
Используй команды очистки: docker system prune -a удалит неиспользуемые образы, контейнеры и volumes. docker volume prune удалит неиспользуемые volumes. Будь осторожен — эти команды удаляют данные безвозвратно.
Можно ли использовать Podman вместо Docker?
Да, Podman — хорошая альтернатива Docker, особенно если важна безопасность (работает без демона root). Но учти, что не все инструменты (особенно старые) могут с ним корректно работать. Docker пока остается стандартом де-факто.
Как перенести настройки Workstation на другой компьютер?
Создай скрипт установки (как в этой статье) и сохрани его в Git. Конфиги IDE, bash-алиасы и dot-файлы тоже храни в репозитории. Используй Ansible для автоматической настройки новых машин.
Итог: что мы получили
После выполнения всех шагов у тебя готова полноценная DevOps Workstation на Ubuntu с:
- Контейнеризацией (Docker) и оркестрацией (Kubernetes/Minikube)
- Инструментами Infrastructure as Code (Terraform, Ansible)
- Мощной IDE с расширениями для DevOps
- Локальным стеком мониторинга (Prometheus + Grafana)
- Удобным окружением с алиасами и структурированными директориями
Такая рабочая станция позволит тебе разрабатывать, тестировать и отлаживать сложные системы локально, перед их развертыванием в production. Помни: хороший инструмент не заменяет знания, но делает их применение эффективнее.