Как реализовать развертывание Canary в kubernetes с разными версиями, указанными в развертывании - PullRequest
0 голосов
/ 15 мая 2018

У меня есть два файла развертывания 1. развертывание-1.yaml apiVersion: apps/v1 kind: Deployment metadata: name: process labels: app: process spec: replicas: 3 selector: matchLabels: app: process template: metadata: labels: app: process version: v1 spec: containers: - name: pull image: parma/k8s-php:red ports: - containerPort: 80

2. развертывание-2.yaml apiVersion: apps/v1 kind: Deployment metadata: name: process labels: app: process spec: replicas: 3 selector: matchLabels: app: process template: metadata: labels: app: process version: v2 spec: containers: - name: pull image: parma/k8s-php:green ports: - containerPort: 80

Поскольку я указал две разные версии в spec.template.metadata, он не запускает 6 модулей для обоих наборов реплик, он только позволяет запускать и запускать самый последний набор реплик.

Существует ли какой-либо способ добиться канареечного развертывания, поддерживая оба набора репликации в одном развертывании и работая с 3 модулями v1 и 3 модулями v2

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Имя того, что вы хотите реализовать, - Canary Deployment.Это отличная функция для A / B-тестирования и помогает в непрерывной доставке и производственном тестировании, она не должна быть в том же секрете, что и в балансировщике нагрузки и на шлюзе.Для этого на рынке есть варианты (Spring Zuul или Istio Envoy), которые могут предоставить решение, отфильтровывающее контент от одного развертывания до определенного процента, а другого - до остальных ...

0 голосов
/ 15 мая 2018
  1. Вы не можете иметь несколько развертываний с одним и тем же именем.Переименуйте их в process-v1 и process-v2.
  2. У вас должны быть разные селекторы для каждого из них.Первый должен иметь matchLabels: {app: process, version: v1}, второй - matchLabels: {app: process, version: v2}.

Технически это будет два совершенно разных развертывания.Что делает их «базовыми» и «канарейками», так это то, как вы отправляете им трафик.Если вы укажете общий селектор (просто {app: process}) в своей службе, то оба развертывания будут видеть часть трафика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...