Назад к вопросам
Aston
Middle+
5
Как вручную реализовать canary deployment в Kubernetes без дополнительных инструментов?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для ручной реализации canary deployment в Kubernetes без дополнительных инструментов можно использовать стратегию поэтапного обновления Deployment с контролем трафика через количество реплик.
Основная идея:
- Создать новый Deployment с новой версией приложения, но с небольшим количеством реплик (например, 1 из 5).
- Настроить Service так, чтобы он балансировал трафик между подами старой и новой версии (обычно Service выбирает все поды с нужным селектором).
- Наблюдать за поведением новой версии (логи, метрики, ошибки).
- Если всё хорошо — постепенно увеличивать количество реплик новой версии и уменьшать старой.
- В итоге заменить полностью старую версию новой.
Пример:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 4 # старая версия
selector:
matchLabels:
app: myapp
version: stable
template:
metadata:
labels:
app: myapp
version: stable
spec:
containers:
- name: myapp
image: myapp:stable
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-canary
spec:
replicas: 1 # canary
selector:
matchLabels:
app: myapp
version: canary
template:
metadata:
labels:
app: myapp
version: canary
spec:
containers:
- name: myapp
image: myapp:canary
---
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
В этом примере Service направляет трафик на все поды с меткой app: myapp, включая и stable, и canary версии. За счет разного количества реплик можно контролировать долю трафика на новую версию.
Таким образом, без сложных инструментов можно вручную управлять canary deployment, постепенно увеличивая нагрузку на новую версию и снижая на старую.