Blue-Green — это модель развертывания, которая подразумевает использование двух узлов Docker, идентичным образом развертываемых и настраиваемых в кластере Kubernetes. Использование модели Blue-Green позволяет уменьшить время простоев в среде, возникающих при развертывании приложений с помощью конвейеров Code Stream.
Экземпляры Blue и Green в модели развертывания выполняют разные функции. В каждый момент только один экземпляр принимает трафик в реальном времени, связанный с развертыванием приложения, при этом каждый из экземпляров принимает трафик в определенное время. Экземпляр Blue принимает первую версию приложения, экземпляр Green — вторую.
Подсистема балансировки нагрузки в среде Blue-Green определяет, по какому маршруту направляется трафик в реальном времени при развертывании приложения. При использовании развертывания Blue-Green сохраняется работоспособность среды, пользователи не сталкиваются с простоями, в то время как конвейер выполняет непрерывную интеграцию и развертывание приложения в производственную среду.
Конвейер, создаваемый в службе Code Stream, представляет собой развертывание Blue-Green, состоящее из двух этапов. Первый этап — разработка, второй — производство.
Рабочая область конвейера Code Stream поддерживает Docker и Kubernetes для выполнения задач непрерывной интеграции и настраиваемых задач.
Сведения о настройке рабочей области см. в разделе Настройка рабочей области конвейера.
Тип задач | Задача |
---|---|
Kubernetes | Создайте пространство имен для развертывания Blue-Green. |
Kubernetes | Создайте секретный ключ для центра Docker. |
Kubernetes | Создайте службу, используемую для развертывания приложения. |
Kubernetes | Создайте развертывание Blue. |
Опрос | Проверьте развертывание Blue. |
Kubernetes | Удалите пространство имен. |
Тип задач | Задача |
---|---|
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.
Необходимые условия
- Убедитесь в наличии доступа к работоспособному кластеру Kubernetes в службе AWS.
- Убедитесь в наличии настроенного развертывания Blue-Green и в том, что оба экземпляра (Blue и Green) идентичны.
- Создайте в Code Stream конечную точку Kubernetes, с помощью которой будет осуществляться развертывание образа приложения в кластере Kubernetes службы AWS.
- Ознакомьтесь с использованием смарт-шаблона конвейера CICD. См. раздел Планирование собственной сборки по модели непрерывной интеграции и непрерывной доставки в Code Stream перед использованием смарт-шаблона конвейера.
Процедура
Результаты
Поздравляем! С использованием смарт-шаблона конвейера создан конвейер, выполняющий развертывание приложения в экземплярах 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.