El modelo de implementación azul-verde utiliza dos hosts de Docker que implementa y configura de manera idéntica en un clúster de Kubernetes. Con el modelo de implementación azul-verde, se reduce el periodo de inactividad que puede producirse en el entorno cuando las canalizaciones de Code Stream implementan las aplicaciones.

Cada una de las instancias de azul y verde del modelo de implementación tiene un objetivo diferente. Solo una instancia a la vez acepta el tráfico activo que implementa la aplicación y cada instancia acepta ese tráfico en momentos específicos. La instancia azul recibe la primera versión de la aplicación y la instancia verde recibe la segunda.

El equilibrador de carga del entorno azul-verde determina la ruta que toma el tráfico activo al implementar la aplicación. Al utilizar el modelo azul-verde, el entorno permanece operativo, los usuarios no experimentan ningún periodo de inactividad y la canalización integra e implementa la aplicación en el entorno de producción de forma continua.

La canalización que crea en Code Stream representa el modelo de implementación azul-verde en dos etapas. Una etapa es para el desarrollo y la otra etapa para la producción.

El área de trabajo de canalización de Code Stream admite Docker y Kubernetes para tareas de integración continua y tareas personalizadas.

Para obtener información sobre la configuración del área de trabajo, consulte Configurar el área de trabajo de la canalización.

Tabla 1. Tareas de la etapa de desarrollo para una implementación azul-verde
Tipo de tarea Tarea
Kubernetes Cree un espacio de nombres para la implementación azul-verde.
Kubernetes Cree una clave secreta para Docker Hub.
Kubernetes Cree el servicio utilizado para implementar la aplicación.
Kubernetes Cree la implementación azul.
Sondeo Compruebe la implementación azul.
Kubernetes Elimine el espacio de nombres.
Tabla 2. Tareas de la etapa de producción para una implementación azul-verde
Tipo de tarea Tarea
Kubernetes La instancia verde obtiene los detalles del servicio de la azul.
Kubernetes Obtenga los detalles del conjunto de réplicas verde.
Kubernetes Cree la implementación verde y use la clave secreta para extraer la imagen del contenedor.
Kubernetes Actualice el servicio.
Sondeo Compruebe que la implementación se haya completado correctamente en la URL de producción.
Kubernetes Finalice la implementación azul.
Kubernetes Elimine la implementación azul.

Para implementar la aplicación en su propio modelo de implementación azul-verde, cree una canalización en Code Stream que incluya dos etapas. La primera etapa incluye las tareas azules que implementan la aplicación en la instancia azul, mientras que la segunda incluye tareas verdes que implementan la aplicación en la instancia verde.

Puede crear la canalización mediante la plantilla de canalización inteligente de CICD. La plantilla crea automáticamente las etapas y las tareas de la canalización e incluye las selecciones de implementación.

Si crea canalización de forma manual, debe planificar las etapas de la canalización. Para ver un ejemplo, consulte Planificar una compilación nativa de CICD en Code Stream antes de agregar tareas manualmente.

En este ejemplo, se utiliza la plantilla de canalización inteligente de CICD para crear la canalización azul-verde.

Requisitos previos

Procedimiento

  1. Haga clic en Canalizaciones > Nueva canalización > Plantillas inteligentes > Plantilla de CI/CD.
  2. Introduzca la información de la parte de CI de la plantilla de canalización inteligente de CICD y haga clic en Siguiente.
  3. Complete la parte de CD de la plantilla de canalización inteligente.
    1. Seleccione los entornos para la implementación de la aplicación. Por ejemplo, Dev y Prod.
    2. Seleccione el servicio que utilizará la canalización para la implementación.
    3. En el área Implementación, seleccione el endpoint del clúster para los entornos Dev y Prod.
    4. Para el modelo de implementación de producción, seleccione Azul-verde y haga clic en Crear.

    En la plantilla de canalización inteligente, seleccione el servicio, las implementaciones y haga clic en Azul-verde para el modelo de implementación de producción.

Resultados

Enhorabuena. Utilizó la plantilla de canalización inteligente para crear una canalización que implementa la aplicación en las instancias azul-verde en el clúster de producción de Kubernetes en AWS.

Ejemplo: Ejemplo de código de YAML para algunas tareas de implementación azul-verde

El código de YAML que aparece en las tareas de canalización de Kubernetes para la implementación azul-verde puede ser similar a los siguientes ejemplos que crean el Espacio de nombres, el Servicio y la Implementación. Si necesita descargar una imagen de un repositorio privado, el archivo YAML debe incluir una sección con el secreto de configuración de Docker. Consulte la parte de CD de Planificar una compilación nativa de CICD en Code Stream antes de usar la plantilla de canalización inteligente.

Después de que la plantilla de canalización inteligente cree la canalización, puede modificar las tareas según sea necesario para su propia implementación.

Código de YAML para crear un espacio de nombres de ejemplo:

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

Código de YAML para crear un servicio de ejemplo:

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

Código de YAML para crear una implementación de ejemplo:

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

Qué hacer a continuación

Para obtener más información sobre cómo puede usar Code Stream, consulte Tutoriales para usar Code Stream.

Para revertir una implementación, consulte Cómo revertir una implementación en Code Stream.

Para obtener más referencias, consulte Más recursos para desarrolladores y administradores de Code Stream.