EKS = Управляемый Kubernetes от Amazon Web Services
EKS предоставляет вам:
Управляющая плоскость **Kubernetes** (API-сервер, планировщик).
AWS управляет этим за вас.
Вам всё ещё необходимо:
Рабочие узлы (EC2) → для запуска подов
kubectl **→ для связи с кластером
**YAML → для указания Kubernetes, что нужно запустить.
Очень важная ментальная модель
_`Your laptop (kubectl)
|
v
EKS API Server (managed by AWS)
|
v
Worker Nodes (EC2) → Pods → Containers`_
Подключаться к узлам по SSH НИКОГДА нельзя.
Шаг 1 — Создайте EKS вручную (через консоль AWS, без использования инструментов).
1. Откройте консоль AWS → EKS
Выберите регион (например: us-east-1)
Нажмите «Создать кластер».
2. Конфигурация кластера
Заполнять только:
Имя *:bluegreen-demo
*Версия Kubernetes : по умолчанию
Роль кластерной службы *: Если AWS отображает её, выберите её. Если нет, нажмите *«Создать роль» (AWS создаст её автоматически).
Нажмите Далее
3. Сетевое взаимодействие
Использовать значения по умолчанию :
VPC по умолчанию
Как минимум 2 подсети
Доступ к общедоступной конечной точке
Нажмите «Создать».
⏳ Дождитесь активации
В этот момент:
Kubernetes существует
НО пока ничего не может бежать
Шаг 2 — Создание рабочих узлов (ЭТО создаст EC2)
Зачем нам это нужно
Kubernetes размещает поды на узлах .
Нет узлов = нет подов.
Создать группу узлов
Внутри вашего кластера:
Перейдите в раздел «Вычисления» → «Добавить группу узлов».
Наполнять:
Имя:bg-nodes
Роль IAM: создать/выбрать роль работника по умолчанию
Настройки узла:
Тип экземпляра:t3.medium
Желательно: 2
Мин.: 2
Макс.: 3
Создать группу узлов → дождаться активации
Теперь EC2 существует автоматически.
Шаг 3 — Подключите kubectl (так работает DevOps)
С вашего ноутбука:
aws eks update-kubeconfig \
--region us-east-1 \
--name bluegreen-demo
Проверять:
kubectl get nodes
Если вы видите узлы → значит, вы соединены.
Впредь:
Консоль AWS практически неактуальна.
Всё делается с помощью kubectl
Почему существуют стратегии развертывания (ОЧЕНЬ ВАЖНО)
До Kubernetes (старый мир)
- Остановить приложение
- Развернуть новую версию
- Запустите приложение снова.
- Пользователи видят время простоя
Откат происходит медленно.
Проблемы, с которыми сталкивался DevOpsПростои во время развертывания
Пользователи получают ошибки
Быстрый откат недоступен.
Страх перед развертыванием войск
Проблема с Kubernetes решена:
- - Капсулы
- - Услуги
- - Самоисцеление
- Однако стратегия развертывания определяет, как будет перемещаться трафик. Именно поэтому *существуют стратегии развертывания *.
Что такое сине-зеленая стратегия (в простом виде)?
Сине-зеленый = две версии, работающие одновременно.
- Синий → текущее производство
- Зеленый → новая версия, протестирована
- Транспортный поток резко меняет направление движения. Отсутствие частичного трафика. Отсутствие замедления развертывания.
Почему сине-зеленый цвет используется в DevOps
Преимущества
- Отсутствие простоев
- Мгновенный откат
- Безопасные релизы
- Легко понять
- Предсказуемое поведение
Когда DevOps выбирает сине-зеленый подход
- Критические приложения
- API
- Финансовые системы
- Внутренние платформы
- Когда неудача обходится дорого
Как работает принцип «сине-зеленого» взаимодействия в Kubernetes (простая истина)
Kubernetes уже предоставляет нам такой инструмент:
👉 Сервис
Решение принимает служба:
«Какие модули посещают пользователи?»
Сине-зеленый = *изменить селектор услуги
*
Вот и все.
Внедрение сине-зеленого подхода (с нуля)
1️⃣ Развертывание Blue (версия 1 – в рабочем режиме)
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-blue
spec:
replicas: 2
selector:
matchLabels:
app: demo
color: blue
template:
metadata:
labels:
app: demo
color: blue
spec:
containers:
- name: app
image: hashicorp/http-echo:0.2.3
args: ["-text=BLUE v1"]
ports:
- containerPort: 5678
2️⃣ Экологичное развертывание (версия 2 – не запущена)
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-green
spec:
replicas: 2
selector:
matchLabels:
app: demo
color: green
template:
metadata:
labels:
app: demo
color: green
spec:
containers:
- name: app
image: hashicorp/http-echo:0.2.3
args: ["-text=GREEN v2"]
ports:
- containerPort: 5678
3️⃣ Сервис (производственный трафик)
apiVersion: v1
kind: Service
metadata:
name: prod-svc
spec:
selector:
app: demo
color: blue # LIVE VERSION
ports:
- port: 80
targetPort: 5678
Это переключатель управления .
Разверните всё
kubectl apply -f blue.yaml
kubectl apply -f green.yaml
kubectl apply -f service.yaml
Трафик → СИНИЙ
Само развертывание (синий → зеленый)
Измените одну строку:
color: green
Подайте заявку снова:
kubectl apply -f service.yaml
Транспортный поток мгновенно переключается.
Перезагрузка Pod не требуется.
Простой отсутствует.
Откат (безопасность DevOps)
Вернитесь назад:
color: blue
Применить → откат завершен.
Top comments (0)