D
DiegoCardoso
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 dapr-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 Helm charts for KEDA
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
Continue reading...