Compartilhar via


A experiência de implantação azul-verde nos Aplicativos de Contêiner do Azure

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano consumo e dedicado Standard será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica a:✅ Básico/Standard ✅ Enterprise

Este artigo descreve a implantação azul-verde com os Aplicativos de Contêiner do Azure.

Você pode habilitar a implantação azul-verde nos Aplicativos de Contêiner do Azure combinando revisões de aplicativos de contêiner, pesos de tráfego e rótulos de revisão.

Criar um aplicativo de contêiner com várias revisões ativas habilitadas

Para criar um novo aplicativo de contêiner com várias revisões ativas habilitadas, use o seguinte comando:

az containerapp create \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --environment <APP_ENVIRONMENT_NAME> \
    --image mcr.microsoft.com/k8se/samples/test-app:<BLUE_COMMIT_ID> \
    --revision-suffix <BLUE_SUFFIX> \
    --ingress external \
    --target-port 80 \
    --revisions-mode multiple

Como alternativa, você pode usar o seguinte comando para atualizar um aplicativo existente para habilitar várias revisões:

az containerapp revision set-mode \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --mode multiple

Implantar uma nova revisão e atribuir rótulos

Para implantar uma nova revisão, use o seguinte comando:

az containerapp update \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --image mcr.microsoft.com/k8se/samples/test-app:<GREEN_COMMIT_ID> \
    --revision-suffix <GREEN_SUFFIX>

Você pode adicionar rótulos a revisões específicas, conforme mostrado no exemplo a seguir:

az containerapp revision label add \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --label blue \
    --revision <APP_NAME>--<BLUE_SUFFIX>

az containerapp revision label add \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --label green \
    --revision <APP_NAME>--<GREEN_SUFFIX>

A revisão com a azulcommitId recebendo 100% do tráfego de produção, enquanto a revisão recém-implantada com verdecommitId não recebe nenhum tráfego de produção.

Nos Aplicativos Spring do Azure, você pode implantar no máximo duas revisões de um aplicativo: uma definida como Produção e outra como Preparo. No entanto, os Aplicativos de Contêiner do Azure dão suporte à implantação de várias revisões para um único aplicativo.

Adicionar uma nova revisão

Cada revisão nos Aplicativos de Contêiner do Azure tem sua própria URL, permitindo que você teste e verifique sua implantação na URL específica. Use os seguintes comandos para testar a revisão verde com um domínio específico, embora todo o tráfego de produção seja direcionado para a revisão azul:

export GREEN_DOMAIN=$(az containerapp revision show \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --revision <GREEN_REVISION_NAME> \
    --query "properties.fqdn" \
    --output tsv \
    | tr -d '\r\n')

curl -s http://$GREEN_DOMAIN

Use os comandos a seguir para testar com o nome de domínio totalmente qualificado (FQDN) específico do rótulo:

# Get the containerapp environment default ___domain
export APP_DOMAIN=$(az containerapp env show \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_ENVIRONMENT_NAME> \
    --query "properties.defaultDomain" \
    --output tsv \
    | tr -d '\r\n')

# Test the production FQDN
curl -s https://$APP_NAME.$APP_DOMAIN

# Test the blue label FQDN
curl -s https://$APP_NAME---blue.$APP_DOMAIN

# Test the green label FQDN
curl -s https://$APP_NAME---green.$APP_DOMAIN

Enviar tráfego de produção para a revisão verde

Para alternar o tráfego de produção para a revisão verde, use os seguintes comandos:

# switch based on revision name
az containerapp ingress traffic set \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --revision-weight <BLUE_REVISION_NAME>=0 <GREEN_REVISION_NAME>=100

# switch based on label
az containerapp ingress traffic set \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --label-weight blue=0 green=100

Verifique se o peso total do rótulo não excede 100.

Os Aplicativos de Contêiner do Azure não só permitem alternar o tráfego entre implantações azul-verde, mas também entre várias revisões. Você também pode redirecionar uma quantidade específica de tráfego de produção para a implantação verde.

Para obter mais informações sobre a implantação azul-verde nos Aplicativos de Contêiner do Azure, consulte Implantação Azul-Verde nos Aplicativos de Contêiner do Azure.

Limitação

O Servidor Eureka não é adequado para implantação azul-verde porque todas as revisões do aplicativo são registradas com o Servidor Eureka, impedindo a divisão efetiva do tráfego.

Para habilitar a divisão de tráfego ao usar o Gateway do Spring Cloud Gateway, você precisa definir a URL do aplicativo no campo URI da configuração do gateway. Você pode obter a URL do aplicativo usando o seguinte comando:

az containerapp show \
    --resource-group <RESOURCE_GROUP> \
    --name <APP_NAME> \
    --query "properties.configuration.ingress.fqdn" \
    --output tsv \
    | tr -d '\r\n'