Blue-Green — это модель развертывания, которая подразумевает использование двух узлов Docker, идентичным образом развертываемых и настраиваемых в кластере Kubernetes. Использование модели Blue-Green позволяет уменьшить время простоев в среде, возникающих при развертывании приложений с помощью конвейеров Code Stream.

Экземпляры Blue и Green в модели развертывания выполняют разные функции. В каждый момент только один экземпляр принимает трафик в реальном времени, связанный с развертыванием приложения, при этом каждый из экземпляров принимает трафик в определенное время. Экземпляр Blue принимает первую версию приложения, экземпляр Green — вторую.

Подсистема балансировки нагрузки в среде Blue-Green определяет, по какому маршруту направляется трафик в реальном времени при развертывании приложения. При использовании развертывания Blue-Green сохраняется работоспособность среды, пользователи не сталкиваются с простоями, в то время как конвейер выполняет непрерывную интеграцию и развертывание приложения в производственную среду.

Конвейер, создаваемый в службе Code Stream, представляет собой развертывание Blue-Green, состоящее из двух этапов. Первый этап — разработка, второй — производство.

Рабочая область конвейера Code Stream поддерживает Docker и Kubernetes для выполнения задач непрерывной интеграции и настраиваемых задач.

Сведения о настройке рабочей области см. в разделе Настройка рабочей области конвейера.

Табл. 1. Задачи этапа разработки для развертывания Blue-Green
Тип задач Задача
Kubernetes Создайте пространство имен для развертывания Blue-Green.
Kubernetes Создайте секретный ключ для центра Docker.
Kubernetes Создайте службу, используемую для развертывания приложения.
Kubernetes Создайте развертывание Blue.
Опрос Проверьте развертывание Blue.
Kubernetes Удалите пространство имен.
Табл. 2. Задачи производственного этапа для развертывания Blue-Green
Тип задач Задача
Kubernetes Экземпляр Green получает служебные данные от экземпляра Blue.
Kubernetes Получите сведения о наборе реплик Green.
Kubernetes Создайте развертывание Green и используйте секретный ключ для получения образа контейнера.
Kubernetes Обновите службу.
Опрос Убедитесь, что развертывание успешно выполнено, открыв URL-адрес производственной среды.
Kubernetes Завершите развертывание Blue.
Kubernetes Удалите развертывание Blue.

Чтобы развернуть приложение в собственном развертывании Blue-Green, создайте в Code Stream конвейер из двух этапов. Первый этап включает в себя задачи, обеспечивающие развертывание приложения в экземпляре Blue, второй — задачи, обеспечивающие развертывание приложения в экземпляре Green.

Конвейер можно создать с помощью смарт-шаблона конвейера CICD. При использовании шаблона в конвейер автоматически добавляются этапы и задачи. Шаблон также включает в себя выбранные параметры развертывания.

Если конвейер создается вручную, нужно самостоятельно спланировать этапы работы конвейера. См. пример в разделе Планирование собственной сборки по модели непрерывной интеграции и предоставления в Code Stream перед добавлением задач вручную.

В этом примере для создания конвейера Blue-Green используется смарт-шаблон конвейера CICD.

Необходимые условия

Процедура

  1. Выберите пункт Конвейеры > Новый конвейер > Смарт-шаблон > Шаблон CI/CD.
  2. Введите сведения о непрерывной интеграции (CI) для смарт-шаблона конвейера CICD и нажмите Далее.
  3. Введите сведения о непрерывном предоставлении (CD) для смарт-шаблона конвейера.
    1. а. Выберите среды для развертывания приложения. Например: Разраб. и Произв..
    2. б. Выберите службу, которую конвейер будет использовать для развертывания.
    3. в. В области «Развертывание» выберите конечную точку кластера для среды разработки и производственной среды.
    4. г. В качестве модели производственного развертывания выберите Развертывание Blue-Green, затем нажмите Создать.

    В смарт-шаблоне конвейера выберите службу, развертывания и нажмите Blue-Green для модели производственного развертывания.

Результаты

Поздравляем! С использованием смарт-шаблона конвейера создан конвейер, выполняющий развертывание приложения в экземплярах Blue-Green производственного кластера Kubernetes в службе AWS.

Пример: Пример кода YAML для некоторых задач развертывания Blue-Green

Код YAML, присутствующий в задачах конвейера Kubernetes для развертывания Blue-Green, может выглядеть аналогично приведенным ниже примерам, которые создают пространство имен, службу и развертывание. Если необходимо загрузить образ из частного репозитория, файл YAML должен содержать раздел с секретом конфигурации Docker. См. подраздел о непрерывном предоставлении в разделе Планирование собственной сборки по модели непрерывной интеграции и непрерывной доставки в Code Stream перед использованием смарт-шаблона конвейера.

Создав конвейер на основе смарт-шаблона конвейера, можно модифицировать задачи в соответствии со спецификой конкретного развертывания.

Пример кода YAML для создания пространства имен:

apiVersion: v1
kind: Namespace
metadata:
  name: codestream-82855
  namespace: codestream-82855

Пример кода YAML для создания службы:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: codestream-demo
  name: codestream-demo
  namespace: bluegreen-799584
spec:
  minReadySeconds: 0
  ports:
  - port: 80
  selector:
    app: codestream-demo
    tier: frontend
  type: LoadBalancer

Пример кода YAML для создания развертывания:

apiVersion: extensions/v1
kind: Deployment
metadata:
  labels:
    app: codestream-demo
  name: codestream-demo
  namespace: bluegreen-799584
spec:
  minReadySeconds: 0
  replicas: 1
  selector:
    matchLabels:
      app: codestream-demo
      tier: frontend
  template:
    metadata:
      labels:
        app: codestream-demo
        tier: frontend
    spec:
      containers:
      - image: ${input.image}:${input.tag}
        name: codestream-demo
        ports:
        - containerPort: 80
          name: codestream-demo
      imagePullSecrets:
      - name: jfrog-2
      minReadySeconds: 0

Дальнейшие действия

Дополнительные сведения об использовании службы Code Stream см. в разделе Учебники по использованию Code Stream.

Чтобы выполнить откат развертывания, см. раздел Как откатить развертывание в Code Stream.

Ссылки на дополнительные ресурсы см. в разделе Дополнительные ресурсы для администраторов и разработчиков Code Stream.