"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Implantando uma função Java Azure em aplicativos de contêiner do Azure

Implantando uma função Java Azure em aplicativos de contêiner do Azure

Publicado em 01/11/2024
Navegar:701

Deploying a Java Azure Function on Azure Container Apps

O Azure Functions fornece suporte integrado para desenvolver, implantar e gerenciar aplicativos de funções conteinerizadas em aplicativos de contêiner do Azure. Isto torna mais fácil executar e gerir o Azure Functions utilizando o portal de gestão integrado do Azure, em comparação com a execução independente do Azure Functions em ambientes de contentores como o Azure Kubernetes Service (AKS). Além disso, ao aproveitar os recursos fornecidos pelos Azure Container Apps, você pode utilizar facilmente funcionalidades como KEDA, Dapr, Envoy, dimensionamento, monitoramento, segurança e controle de acesso para suas Funções do Azure.

[Referência]

Hospedagem de aplicativos de contêiner do Azure do Azure Functions

Crie suas primeiras funções em contêineres no Azure Container Apps

Configurando variáveis ​​de ambiente

Abaixo estão as variáveis ​​de ambiente relacionadas à criação de recursos do Azure Container Apps. Aqui, você especifica vários nomes e locais de instalação para os recursos que criará, bem como o nome e a tag da imagem do contêiner.

# Azure Container Apps resource names
export LOCATION=eastus
export RESOURCE_GROUP_NAME=yoshio-rg
export CONTAINER_REGISTRY_NAME=cajava2411
export CONTAINER_ENVIRONMENT=YoshioContainerEnvironment
export STORAGE_NAME=yoshiojavastorage
export AZURE_FUNCTION_NAME=yoshiojavafunc

# Container image name and tag
export C_IMAGE_NAME=tyoshio2002/java-function-on-aca
export C_IMAGE_TAG=1.0

Criando e testando um projeto de função Java Azure

1. Crie um projeto Azure Functions para Java Maven

Primeiro, crie um projeto Maven para Azure Functions para Java. Este projeto Maven foi projetado para criar Azure Functions usando Java 21. Use o comando mvn archetype:generate para criar o projeto, modificando os parâmetros conforme necessário.

mvn archetype:generate \
-DinteractiveMode=false \
-DarchetypeGroupId=com.microsoft.azure \
-DarchetypeArtifactId=azure-functions-archetype \
-DgroupId=com.yoshio3 \
-Dpackage=com.yoshio3 \
-DartifactId=yoshiojavafunc \
-DappName=Java-Azure-Functions \
-DappRegion=$LOCATION \
-DjavaVersion=21 \
-Dversion=1.0-SNAPSHOT \
-Ddocker

A execução do comando acima criará automaticamente uma estrutura de diretório e Function.java conterá código de exemplo para uma função do Azure com um gatilho HTTP. Também será criado um Dockerfile, que contém a configuração para execução do Azure Functions em um ambiente de contêiner Docker.

├── Dockerfile
├── host.json
├── local.settings.json
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── yoshio3
    │               └── Function.java
    └── test
        └── java
            └── com
                └── yoshio3
                    ├── FunctionTest.java
                    └── HttpResponseMessageMock.java

2. Execute a função Azure localmente

Crie o projeto Maven e execute o Azure Functions localmente. Execute os comandos a seguir para iniciar o Azure Functions com o gatilho HTTP.

mvn clean package
mvn azure-functions:run

Quando as Funções do Azure estiverem em execução, abra outro terminal e execute o comando a seguir para enviar uma solicitação ao gatilho HTTP. Você deverá receber uma resposta dizendo "Olá, mundo".

curl "http://localhost:7071/api/HttpExample?name=World"
# Output: 
Hello, World

Criando e testando a imagem do contêiner do Azure Functions

1. Construa e teste a imagem Docker

Use o Dockerfile gerado automaticamente para criar a imagem do contêiner do Azure Functions. Execute o seguinte comando para construir a imagem.

docker build -t $C_IMAGE_NAME:$C_IMAGE_TAG -f ./Dockerfile .

Após a conclusão da compilação, execute o seguinte comando para verificar se a imagem foi criada.

docker images | grep $C_IMAGE_NAME
# Output: 
tyoshio2002/java-function-on-aca    1.0    bcf471e6f774   9 hours ago     1.46GB

Depois que a imagem for criada, execute o comando a seguir para testar a imagem do contêiner do Azure Functions localmente. O contêiner do Azure Functions usa internamente a porta HTTP 80, portanto você irá mapeá-lo para a porta 8080 para acesso local. Depois que o contêiner for iniciado, execute o comando curl para enviar uma solicitação ao gatilho HTTP do Azure Functions. Se tudo estiver funcionando corretamente, você deverá receber "Hello, World".

docker run -p 8080:80 -it $C_IMAGE_NAME:$C_IMAGE_TAG
curl "http://localhost:8080/api/HttpExample?name=World"
# Output: 
Hello, World

Enviando a imagem do contêiner para o Registro de Contêiner do Azure

1. Faça login na CLI do Azure

Primeiro, faça login no Azure usando a CLI do Azure. Execute o seguinte comando para fazer login.

az login

2. Crie um grupo de recursos

Crie um grupo de recursos no Azure. Este grupo de recursos será usado para agrupar recursos relacionados ao Registro de Contêiner do Azure e aos Aplicativos de Contêiner do Azure.

az group create --name $RESOURCE_GROUP_NAME --location $LOCATION

3. Crie e faça login no Azure Container Registry

Crie um Registro de Contêiner do Azure e faça login. O Registro de Contêiner do Azure é um registro de contêiner privado para enviar imagens de contêiner.

az acr create --resource-group $RESOURCE_GROUP_NAME --name $CONTAINER_REGISTRY_NAME --sku Basic
az acr login --name $CONTAINER_REGISTRY_NAME

4. Recupere o nome do servidor de registro de contêiner do Azure

Recupere o nome do servidor do Azure Container Registry criado. O nome do servidor estará no formato $CONTAINER_REGISTRY_NAME.azurecr.io.

CONTAINER_REGISTRY_SERVER=$(az acr show --name $CONTAINER_REGISTRY_NAME --query loginServer --output tsv)

5. Envie a imagem para o Registro de Contêiner do Azure

Para enviar por push a imagem de contêiner criada localmente para o Registro de Contêiner do Azure, marque a imagem usando o comando tag. Após a marcação, use o comando push para enviar a imagem.

docker tag $C_IMAGE_NAME:$C_IMAGE_TAG $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG
docker push $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG

Criando aplicativos de contêiner do Azure e implantando a função Java Azure

1. Registre extensões e provedores de recursos na CLI do Azure

Para criar e gerenciar aplicativos de contêiner do Azure na CLI do Azure, registre as extensões e os provedores de recursos necessários.

az upgrade
az extension add --name containerapp --upgrade -y
az provider register --namespace Microsoft.Web
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

2. Criar ambiente de aplicativos de contêiner do Azure

Crie um ambiente para aplicativos de contêiner do Azure. Este comando define a configuração necessária para hospedar aplicativos de contêiner do Azure.

az containerapp env create --name $CONTAINER_ENVIRONMENT --enable-workload-profiles --resource-group $RESOURCE_GROUP_NAME --location $LOCATION

3. Criar conta de armazenamento para funções do Azure

O Azure Functions requer uma conta de armazenamento ao criar uma instância do Aplicativo de Funções. Portanto, crie uma conta de armazenamento de uso geral para Azure Functions.

az storage account create --name $STORAGE_NAME --location $LOCATION --resource-group $RESOURCE_GROUP_NAME --sku Standard_LRS

4. Crie uma instância da função Java Azure em aplicativos de contêiner do Azure

Crie uma instância da função Java Azure em aplicativos de contêiner do Azure. Execute o seguinte comando para criar a instância. Como a Função do Azure é criada usando Java 21, especifique --runtime java.

az functionapp create --name $AZURE_FUNCTION_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--environment $CONTAINER_ENVIRONMENT \
--storage-account $STORAGE_NAME \
--workload-profile-name "Consumption" \
--max-replicas 15 \
--min-replicas 1 \
--functions-version 4 \
--runtime java \
--image $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG \
--assign-identity

5. Atribuir função para a função Azure acessar o registro de contêiner do Azure

Finalmente, configure o acesso seguro do Azure Functions ao Azure Container Registry. Habilite a identidade gerenciada pelo sistema para Azure Functions e atribua a função ACRPull para acesso.

FUNCTION_APP_ID=$(az functionapp identity assign --name $AZURE_FUNCTION_NAME --resource-group $RESOURCE_GROUP_NAME --query principalId --output tsv)
ACR_ID=$(az acr show --name $CONTAINER_REGISTRY_NAME --query id --output tsv)
az role assignment create --assignee $FUNCTION_APP_ID --role AcrPull --scope $ACR_ID

6. Recupere a URL da Função Azure

Finalmente, recupere o URL da função de gatilho HTTP da Função Azure implementada. Utilize o comando az functionapp function show para obter os detalhes da função Azure Functions.

az functionapp function show --resource-group $RESOURCE_GROUP_NAME --name $AZURE_FUNCTION_NAME --function-name HttpExample --query invokeUrlTemplate
# Output: "https://yoshiojavafunc.niceocean-********.eastus.azurecontainerapps.io/api/httpexample"

Você pode então enviar uma solicitação para a URL recuperada usando o comando curl para confirmar se o Azure Functions está funcionando corretamente.

curl "https://yoshiojavafunc.niceocean-********.eastus.azurecontainerapps.io/api/httpexample?name=World"
# Expected Output: 
Hello, World

Se tudo estiver configurado corretamente, você receberá uma resposta dizendo "Olá, mundo", confirmando que sua Função do Azure está funcionando conforme o esperado.

Resumo

Neste guia, você aprendeu como:

  1. Configure variáveis ​​de ambiente para seus recursos do Azure.
  2. Crie um projeto Java Azure Function usando Maven.
  3. Execute o Azure Function localmente para teste.
  4. Crie uma imagem Docker para a Função Azure.
  5. Envie a imagem do Docker para o Azure Container Registry.
  6. Crie um ambiente de aplicativos de contêiner do Azure e implante a função Java Azure.
  7. Atribuir as funções necessárias para acesso seguro ao Azure Container Registry.
  8. Recupere e teste a URL da Função do Azure implantada.

Ao seguir estas etapas, você pode implantar com sucesso uma função Java Azure em aplicativos de contêiner do Azure, aproveitando os benefícios da conteinerização e dos recursos de gerenciamento integrado do Azure. Se você tiver mais dúvidas ou precisar de ajuda com etapas específicas, fique à vontade para perguntar!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/azure/deploying-a-java-azure-function-on-azure-container-apps-1oj?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3