DAPR, KEDA on ARO (Azure RedHat OpenShift): passo a passo
Published Sep 02 2024 03:10 PM 765 Views
Microsoft

Designer (2).jpeg

 

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).

DiegoCardoso_1-1725285023335.png

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

Co-Authors
Version history
Last update:
‎Sep 02 2024 07:22 AM
Updated by: