Blog Post

Desenvolvedores BR
4 MIN READ

DAPR, KEDA on ARO (Azure RedHat OpenShift): passo a passo

DiegoCardoso's avatar
DiegoCardoso
Icon for Microsoft rankMicrosoft
Sep 02, 2024

 

Veja também o artigo AKS: Configurando DAPR, KEDA no AKS 

 

Neste artigo, teremos foco nas configurações necessárias para rodar DAPR, KEDA on ARO (Azure RedHat OpenShift).

Desta forma, aproveitei para montar este repositório no GitHub chamado "App-Plant-Tree" que cobre conceitos sobre Arquitetura Cloud-Native combinando as seguintes tecnologias:

 

  • Go - Producer/Consumer App
  • Distributed Application Runtime - DAPR
  • Kubernetes Event Driven Autoscaling - KEDA
  • Azure RedHat OpenShift (ARO)
  • Azure Container Registry (ACR)

Ferramentas para Desenvolvimento

Configurando a Infraestrutura

Login no Azure usando CLI:

az login
 

Defina os valores das variáveis conforme seu ambiente:

- $SubscriptionID = ''
- $Location = ''
- $ResourceGroupName = ''
- $ClusterName = ''
- $ContainerRegistryName = ''
- $ServiceBusNamespace = ''
 

Selecione sua assinatura azure:

az account set --subscription $SubscriptionID
 

Crie resource group:

az group create --name $ResourceGroupName --location $Location
 

Configurando a Rede

Crie a virtual network

az network vnet create --address-prefixes 10.0.0.0/22 --name "$ClusterName-vnet" --resource-group $ResourceGroupName
 

Crie a subnet para control plane

az network vnet subnet create --resource-group $ResourceGroupName --vnet-name "$ClusterName-vnet" --name "$ClusterName-control-plane-subnet" --address-prefixes 10.0.0.0/23
 

Crie a subnet para workers

az network vnet subnet create --resource-group $ResourceGroupName --vnet-name "$ClusterName-vnet" --name "$ClusterName-worker-subnet" --address-prefixes 10.0.2.0/23
 

Desligando configurações de network policies para Private Link Service

az network vnet subnet update --name "$ClusterName-control-plane-subnet" --resource-group $ResourceGroupName --vnet-name "$ClusterName-vnet" --disable-private-link-service-network-policies true
 

Criando seu cluster ARO e conectando ao ACR

Crie o cluster ARO:

az aro create --resource-group $ResourceGroupName --name $ClusterName --vnet "$ClusterName-vnet" --master-subnet "$ClusterName-control-plane-subnet" --worker-subnet "$ClusterName-worker-subnet"
 

Crie o Container Registry:

az acr create --name $ContainerRegistryName --resource-group $ResourceGroupName --sku basic
 

Conectando o Container Registry ao ARO:

az acr credential show -n $ContainerRegistryName

oc create secret docker-registry --docker-server=$ContainerRegistryName.azurecr.io --docker-username=<user name> --docker-password=<your password>--docker-email=unused acr-secret

oc secrets link default <pull_secret_name> --for=pull
 

Pegue a URL da console OpenShift

az aro show --name $ClusterName --resource-group $ResourceGroupName -o tsv --query consoleProfile
 

Pegue as credenciais OpenShift:

az aro list-credentials --name $ClusterName --resource-group $ResourceGroupName -o tsv
 

Valide a conexão com o cluster:

kubectl cluster-info
 

Configurando DAPR no ARO

Adicione as referências:

helm repo add dapr https://dapr.github.io/helm-charts/   
helm repo update
helm upgrade --install dapr dapr/dapr --namespace dapr-system --create-namespace
helm upgrade --install dapr-dashboard dapr/dapr-dashboard --namespace dapr-system --create-namespace
 

Validar se os pods estão rodando:

kubectl get pods -n dapr-system
 

DAPR Dashboard

para acessar DAPR dashboard, execute o seguinte comando

dapr dashboard -k
 

Resposta esperada:

DAPR dashboard found in namespace: dapr-system
DAPR dashboard available at http://localhost:8080
 

3. Configurando KEDA no ARO

Adicione as referências:

helm repo add kedacore https://kedacore.github.io/charts
helm repo update
helm upgrade --install keda kedacore/keda -n keda-system --create-namespace
helm upgrade --install keda-add-ons-http kedacore/keda-add-ons-http -n keda-system --create-namespace
 
 

Verifique se os pods estão rodando:

kubectl get pods -n keda-system
 

Configurando a camada de transporte com DAPR e KEDA

Neste projeto, temos 3 diferentes opções exemplificadas (escolha uma):

Fazendo deploy das aplicações

Criando as imagens

az acr login --name $ContainerRegistryName
docker build -t "$ContainerRegistryName.azurecr.io/consumer-app:1.0.0" -f cmd/consumer/dockerfile .
docker build -t "$ContainerRegistryName.azurecr.io/producer-app:1.0.0" -f cmd/producer/dockerfile .
 

Publicando as imagens no ACR

docker push "$ContainerRegistryName.azurecr.io/consumer-app:1.0.0" 
docker push "$ContainerRegistryName.azurecr.io/producer-app:1.0.0" 
 

Configurando as dependências DAPR and KEDA

helm upgrade --install app .helmcharts/app -n tree --create-namespace
 

Validar se os pods estão rodando:

kubectl get pods -n tree
 

Testando a aplicação

# validar Logs
kubectl logs -f -l app=consumer1 --all-containers=true -n tree

# configurar a porta para acesso local
kubectl port-forward pod/producer1 8081 8081 -n tree

# enviar post para a aplicação producer
- POST -> http://localhost:8081/plant
- Json Body: {"numberOfTrees":100}

# Validar status dos pods
kubectl get pod -l app=consumer1 -n tree
 

Excluindo os recursos (limpeza)

Após finalizar seus testes, os próximos comandos te ajudarão a desinstalar todos os componentes de aplicação além de também excluir todos os componentes na azure.

helm uninstall app -n tree
 
helm uninstall keda-add-ons-http -n keda-system
helm uninstall keda -n keda-system
helm uninstall dapr -n dapr-system
 

Delete all Azure resources:

az aro delete --resource-group $ResourceGroupName --name $ClusterName
az acr delete --resource-group $ResourceGroupName --name $ContainerRegistryName
az group delete --name $ResourceGroupName
 

Referências

Updated Sep 02, 2024
Version 1.0
No CommentsBe the first to comment