Despliegue canario de OKE
Cree un pipeline de despliegue con la estrategia de versiones de canario para Kubernetes Engine (OKE).
Requisitos
Los requisitos previos son los siguientes:
- Tiene un pipeline de despliegue, un entorno de cluster de Kubernetes en el que realizar el despliegue y artefactos. Los artefactos pueden estar definidos en línea o localizados en Artifact Registry.
- Dado que el cluster de OKE no tiene un controlador de entrada por defecto, se debe configurar un controlador de entrada de NGINX para la estrategia de despliegue canario. Un controlador de entrada es una aplicación de Kubernetes que enruta el tráfico según la especificación de entrada. El controlador de entrada de NGINX controla los recursos de entrada para el equilibrio de carga. El tráfico se cambia de una ubicación temporal al entorno de producción mediante la actualización del recurso de entrada. Para obtener más información, consulte Configuración de un controlador de entrada en un cluster.
Para crear grupos dinámicos y políticas para pipelines de despliegue, consulte Políticas de pipeline de despliegue. Para obtener más información, consulte Políticas de IAM de DevOps.
Para acceder a DevOps mediante la consola de Oracle Cloud, la API de REST y la CLI, consulte Acceso a DevOps.
- Abra el menú de navegación y haga clic en Servicios para desarrolladores. En DevOps, haga clic en Proyectos.
- Seleccione un proyecto y un pipeline de despliegue.
- Para agregar una etapa al pipeline, haga clic en el icono + y seleccione Agregar etapa.
- Para el tipo de etapa, seleccione Estrategia de prueba de canario y, a continuación, haga clic en Siguiente.
- Seleccione OKE para el tipo de despliegue.
- Introduzca un nombre y una descripción para la etapa. La adición de una descripción es opcional.
- Para Entorno, seleccione un entorno de cluster existente en el que se cambie el tráfico de canario.
- Introduzca el espacio de nombres de canario. Por ejemplo,
canary-env
.El espacio de nombres se utiliza para definir el entorno de despliegue canario en el cluster de OKE.
- Haga clic en Seleccionar artefacto y, a continuación, seleccione uno o más recursos de artefacto del proyecto de DevOps.
El servicio DevOps realiza una aplicación del servidor de Kubernetes de los artefactos de manifiesto de Kubernetes en el orden en que aparecen en la consola. También puede eliminar artefactos para seleccionar otro o reordenar la lista de artefactos. La eliminación de un artefacto en la etapa de pipeline no suprime el recurso de artefacto del proyecto. Para obtener más información sobre la aplicación del servidor de Kubernetes, consulte Aplicación del servidor.
- Introduzca el Nombre de entrada de GNINX. Por ejemplo,
ingress-nginx
.Este es el nombre del recurso de entrada de la aplicación. El servicio DevOps modifica la anotación en este recurso de entrada para llevar a cabo la estrategia de despliegue.
- Haga clic en Siguiente.
- Puede optar por validar la ejecución de despliegue o elegir que no se realice la validación seleccionando Ninguno.
Para validar la aplicación, se agrega una función personalizada al pipeline. Seleccione Ejecutar una lógica personalizada mediante una función. Introduzca los siguientes valores:
- Introduzca un nombre y una descripción para la etapa. La adición de una descripción es opcional.
- En Entorno, seleccione una función existente a la que llamar.
El campo Nombre de función de solo lectura muestra la función que se llama en el pipeline.
- (Opcional) Para seleccionar y agregar artefactos a la etapa, haga clic en Seleccionar artefacto.
Seleccione un recurso de artefacto existente del proyecto de DevOps. El artefacto debe ser un tipo de archivo genérico (universal). Los parámetros del artefacto deben tener formato JSON y pueden tener marcadores de posición. Debe seleccionar la casilla de control Allow parameterization al configurar el recurso de artefacto DevOps para sustituir los marcadores de posición por el valor de argumento durante el despliegue. Para obtener más información, consulte Configuración de parámetros.
A continuación, se muestra un ejemplo del contenido del artefacto genérico para transferir dos parámetros definidos por el usuario y sus valores:- Parámetros:
test_name
,app_version
- Valores:
{"test_name":"verify_production", "app_version":"${app_version}"}
- Parámetros:
- En Modo de ejecución de etapa, seleccione esta opción para ejecutar de forma asíncrona o síncrona.
Si selecciona Ejecutar de forma asíncrona, el servicio llama a la función, pero no espera a que se complete la función. Al seleccionar Ejecutar de forma síncrona, el servicio llama a la función y espera a que se complete la función.
- Seleccione esta opción para desactivar o activar la validación.
Si la validación está activada, el servicio verifica el valor de retorno de la función. El valor de retorno es un literal de cadena UTF-8,
true
ofalse
. Si el valor de retorno estrue
, la etapa se marca como Finalizada correctamente; de lo contrario, la etapa se marca como Con fallos.Si la validación está desactivada, el servicio no verifica el valor de retorno.
La validación solo se produce si ha seleccionado la opción "Ejecutar de forma sincronizada" para el modo de ejecución temporal.
- (Opcional) Para agregar etiquetas al pipeline, haga clic en Mostrar opciones de etiquetado. El etiquetado es un sistema de metadatos que permite organizar los recursos de su arrendamiento y realizar su seguimiento.
Puede seleccionar un espacio de nombres de etiqueta o agregar una etiqueta de formato libre. Introduzca la clave de etiqueta y el valor de etiqueta correspondientes. Puede agregar varias etiquetas.
- Haga clic en Siguiente.
- Introduzca un nombre y una descripción opcional para la etapa Cambiar tráfico para cambiar parte del tráfico al entorno de canario.
- Introduzca el Límite de rampas en porcentaje para especificar el tráfico máximo que se va a cambiar. El valor debe estar comprendido entre 1 y 25.
Por ejemplo, si el límite de rampas es 20, se cambiará el 20 % del tráfico al entorno de canario.
- Haga clic en Siguiente.
- Introduzca un nombre y una descripción para la etapa de Aprobación manual. La adición de una descripción es opcional.
- Introduzca el número de aprobadores y haga clic en Siguiente.
- Introduzca un nombre y una descripción para la etapa Canario de producción. La adición de una descripción es opcional.
- Para Entorno de producción, seleccione un entorno de cluster existente que se utilice para desplegar la aplicación validada en el entorno de canario.
- Introduzca el Espacio de nombres de producción.
- Para realizar un rollback automático del despliegue hasta la última versión correcta si falla la etapa, seleccione la casilla de control Realizar automáticamente un rollback.
- (Opcional) Para agregar etiquetas al pipeline, haga clic en Mostrar opciones de etiquetado. El etiquetado es un sistema de metadatos que permite organizar los recursos de su arrendamiento y realizar su seguimiento.
Para obtener más información, consulte Etiquetas de recurso.
- Para agregar la etapa al pipeline, haga clic en Agregar.
Se abrirá una ventana modal que muestra el estado de varias configuraciones de etapa que forman parte de la estrategia de despliegue canario de OKE. Entre ellas se incluyen las etapas de despliegue canario, cambio de tráfico, aprobación y despliegue de producción. Si la validación no se realiza correctamente, puede comprobar el mensaje de error específico de cada etapa fallida y realizar una acción correctiva.
Si la validación se realiza correctamente, puede ejecutar el pipeline de despliegue o agregar más etapas secuencialmente o en paralelo al pipeline, según sea necesario.
Nota
Para el primer despliegue canario de OKE, aparecerá el mensaje de error "Servicio no disponible temporalmente" durante la ejecución del despliegue, después de que se haya desplegado la aplicación en el entorno de canario. Este es un comportamiento esperado, ya que el recurso de entrada del entorno de producción aún no existe. Puede ignorar este mensaje y continuar con el despliegue ya que el error se resuelve en la etapa de producción.Para crear una etapa de canario de OKE, ejecute el comando
create-deploy-oke-canary-stage
:oci devops deploy-stage create-deploy-oke-canary-stage
Parámetros requeridos:
--canary-strategy
--kubernetes-manifest-artifact-ids
--oke-cluster-environment-id
--pipeline-id
--stage-predecessor-collection
Para obtener ayuda para este comando:
oci devops deploy-stage create-oke-canary-stage -h
Para crear una etapa de llamada a función, ejecute el comando
create-invoke-function-stage
:oci devops deploy-stage create-invoke-function-stage
Parámetros requeridos:
--function-environment-id
--is-async
--is-validation-enabled
--pipeline-id
--stage-predecessor-collection
Para obtener ayuda para este comando:
oci devops deploy-stage create-invoke-function-stage -h
Para crear una etapa de aprobación manual, ejecute el comando
create-manual-approval-stage
:oci devops deploy-stage create-manual-approval-stage
Parámetros requeridos:
--approval-policy
--pipeline-id
--stage-predecessor-collection
Para obtener ayuda para este comando:
oci devops deploy-stage create-manual-approval-stage -h
Para crear una etapa de aprobación de canario de OKE, ejecute el comando
create-oke-canary-approval-stage
:oci devops deploy-stage create-oke-canary-approval-stage
Parámetros requeridos:
--oke-canary-traffic-shift-stage-id
--approval-policy
--pipeline-id
--stage-predecessor-collection
Para obtener ayuda para este comando:
oci devops deploy-stage create-oke-canary-approval-stage -h
Para obtener todos los comandos para
deploy-stage
:oci devops deploy-stage -h
Para crear una etapa, utilice la operación
CreateDeployStage
. En función de las etapas que desee agregar al pipeline, seleccione los siguientes valores para el tipo de etapa:- Etapa de despliegue canario de Kubernetes Engine (OKE):
OKE_CANARY_DEPLOYMENT
- Etapa de llamada a función:
INVOKE_FUNCTION
- Etapa de cambio de tráfico de canario de OKE:
OKE_CANARY_TRAFFIC_SHIFT
- Etapa de aprobación de canario de OKE:
OKE_CANARY_APPROVAL
- Etapa de despliegue canario de Kubernetes Engine (OKE):