Fazendo deploy de uma aplicação Quarkus no Red Hat OpenShift.

Filipe Xavier
Linux & World Open-Source
5 min readApr 29, 2020

Deploying a Quarkus application on Red Hat OpenShift.

O que é o Red Hat OpenShift?

Openshift é uma plataforma de containers Kubernetes (Distribuição k8s) para orquestração e gerenciamento de aplicações baseadas em containers, com operações automatizadas em todo o stack para gerenciar implantações de cloud híbrida e multicloud. O Red Hat OpenShift é otimizado para aprimorar a produtividade do desenvolvedor e promover a inovação.

O que é Quarkus?

Quarkus é um framework Java nativo em Kubernetes e de stack completo que foi desenvolvido para máquinas virtuais Java (JVMs) e compilação nativa. Ele otimiza essa linguagem especificamente para containers, fazendo com que essa tecnologia seja uma plataforma eficaz para ambientes serverless, nuvem e Kubernetes.

CodeReady Containers

CodeReady Containers (CRC) traz um cluster OpenShift 4.1 ou mais recente, pré-configurado, para o laptop ou computador de mesa local para fins de desenvolvimento e teste. É possivel utilizar CRC no Linux, macOS e Windows. Nesse tutorial, instalaremos no Fedora Linux.

Pré-requisitos

Para instalarmos o CodeReady Containers é necessário no mínimo:

  • 4 CPUs virtuais (vCPUs)
  • 8 GB de memória
  • 35 GB de espaço de armazenamento

Instalando o CRC

Baixe o Binário/Secret do CRC aqui.

Apos o download, é preciso extrair o arquivo:

tar xvf crc-linux-amd64.tar.xz

Adicione o binário do CRC a PATH variável de ambiente:

sudo mv crc /usr/local/bin/

Configure seu ambiente host com:

crc setup

Se tudo ocorrer como esperado, vamos iniciar o cluster:

crc start

Isso vai levar um tempo.. mas ao finalizar, poderá ver as instruções para acessar o cluster:

INFO To access the cluster using 'oc', run 'eval $(crc oc-env) && oc login -u kubeadmin -p ********* https://api.crc.testing:6443'INFO Access the OpenShift web-console here: https://console-openshift-console.apps-crc.testingINFO Login to the console with user: kubeadmin, password: *********CodeReady Containers instance is running

Depois disso, exporte as variáveis de acesso ao OpenShift e faça login:

eval $(crc oc-env)oc login -u kubeadmin -p *senha*

Para acessarmos a interface do OpenShift, execute:

crc console
OpenShift 4 Web Console.

Caso precise parar/excluir o cluster:

crc stop
crc delete

Aplicação Quarkus

Para instalar o Quarkus, siga essas instruções.

Disponibilizei uma aplicação em Quarkus no github, para podermos ter um ponto de partida.

Clone esse repositório e acesse a raiz do projeto:

git clone https://github.com/felipeagger/quarkus-hello-world.git && cd quarkus-hello-world

Ou caso queira fazer com uma aplicação Quarkus já existente, precisaremos adicionar a extensão do Openshift ao projeto:

./mvnw quarkus:add-extension -Dextensions="openshift"

e adicionar esses parâmetros no arquivo application.properties:

quarkus.kubernetes-client.trust-certs=true
quarkus.openshift.expose=true
quarkus.s2i.base-jvm-image=registry.access.redhat.com/openjdk/openjdk-11-rhel7
application.properties

Continuando, para rodarmos a aplicação local, execute:

./mvnw quarkus:dev

Se acessar agora no navegador, na porta 8085:

http://localhost:8085/

Disponibilizando a Aplicação no OpenShift

Crie um projeto no OpenShift:

oc new-project quarkus

Para fazer o deploy da aplicação, execute:

./mvnw clean package -Dquarkus.kubernetes.deploy=true

Pode demorar um pouco, pois nesse momento ira fazer o Build do Projeto, Criar uma imagem do Container e fazer o Push para o Registry do Openshift.

Mas podemos acompanhar o deploy em Builds -> Nome da aplicação

Clique Nome da aplicação novamente, e em seguida na aba Builds

e finalmente, acesse a aba Logs

Ao finalizar, a saída sera semelhante a essa:

Quarkus Build Success.

Para visualizar os detalhes da nossa aplicação, acesse Topology no painel esquerdo.

Topology.

O OpenShift criou uma rota automaticamente para nossa aplicação, então podemos acessa-la em http://java-quarkus-helloworld-quarkus.apps-crc.testing/

http://java-quarkus-helloworld-quarkus.apps-crc.testing/

Escalando nossa aplicação

Podemos escalar nossa aplicação acessando a aba Overview, e clicando nas setas para cima ou para baixo, respectivamente.

Scaling the application.

Se fazermos algumas requisições para nossa aplicação, podemos ver que já está sendo feito o balanceamento de carga entre os Pods existentes.

Vou ficando por aqui, ate a próxima galera!

Quarkus + OpenShift

Links uteis:

--

--