Вы можете выпустить новую версию приложения несколькими способами, необходимо выбрать ту, которая соответствует вашим потребностям.Я бы порекомендовал одно из следующего:
Ramped - медленное развертывание
Пакеты обновлений с ускоренным развертыванием в непрерывном обновлении вторичный ReplicaSet создается с новой версией приложения, затем количество реплик старой версии уменьшается, а новая версия увеличивается, пока не будет достигнуто правильное количество реплик.
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2 # how many pods we can add at a time
maxUnavailable: 0 # maxUnavailable define how many pods can be unavailable
# during the rolling update
Полный пример и шаги можно найти здесь .
Синий / Зеленый - лучше всего избегать проблем с версиями API
Синий /Зеленое развертывание отличается от ускоренного развертывания, поскольку «зеленая» версия приложения разворачивается вместе с «синей» версией.После проверки соответствия новой версии требованиям мы обновляем объект службы Kubernetes, который играет роль балансировщика нагрузки для отправки трафика в новую версию, заменяя метку версии в поле селектора.
apiVersion: v1
kind: Service
metadata:
name: my-app
labels:
app: my-app
spec:
type: NodePort
ports:
- name: http
port: 8080
targetPort: 8080
# Note here that we match both the app and the version.
# When switching traffic, we update the label “version” with
# the appropriate value, ie: v2.0.0
selector:
app: my-app
version: v1.0.0
Полный пример и шаги можно найти здесь .
Canary - для тестирования
Канарное развертывание состоит из маршрутизации подмножествапользователей на новый функционал.В Kubernetes канареечное развертывание может быть выполнено с использованием двух Deployments с общими метками pod.Одна реплика новой версии выпущена вместе со старой версией.Затем по прошествии некоторого времени и, если ошибки не обнаружены, увеличьте количество реплик новой версии и удалите старое развертывание.
Для использования этого метода ReplicaSet требуется развернуть столько пакетов, сколько необходимо для получения права.процент трафика.Тем не менее, если вы хотите отправить 1% трафика в версию B, вам нужно иметь один модуль, работающий с версией B, и 99 модулей, работающий с версией A. Это может быть довольно неудобно для управления, поэтому, если вы ищете более управляемыйраспределение трафика, посмотрите на балансировщики нагрузки, такие как HAProxy или сервисные сетки, такие как Linkerd , которые обеспечивают больший контроль над трафиком.
Манифест для версии A:
spec:
replicas: 3
Манифест для версии B:
spec:
replicas: 1
Полный пример и шаги можно найти здесь .
Вы также можете играть с Интерактивное учебное пособие - Обновление вашего приложения в Kubernetes.
Я рекомендую прочитать Развертывание, масштабирование и обновление приложения в Kubernetes с рулем .