2.7 - Binary Deployment

O Openshift permite que imagens docker sejam construídas automaticamente, informando somente o repositório do código-fonte por meio do Source-to-Image como você pode testar no Lab 2.1.5. Mas existem casos que você já tem o binário da sua aplicação compilado e pronto em um repositório como o Nexus. O Openshift também possibilita que possamos executar o processo do source-to-image utilizando esse binário.

Iremos criar um JBoss EAP 7 com um aplicação chamada contador.

Importando a Image Stream do EAP 7

Uma Image Stream e suas tags associadas fornecem uma abstração para fazer referência a imagens de containers dentro do OpenShift. A Image Stream permite que você veja quais imagens estão disponíveis e garante que você está usando a imagem específica que você precisa mesmo se a imagem no repositório for alterada.

Importe a definição de Image Stream do EAP 7.0:

oc create -f https://raw.githubusercontent.com/jboss-openshift/application-templates/master/eap/eap70-image-stream.json

Crie os secrets usados pelos templates do EAP 7.0

oc create -f https://raw.githubusercontent.com/jboss-openshift/application-templates/master/secrets/eap7-app-secret.json

Verifique se o Image Stream está presente em seu projeto/namespace

oc get is | grep eap7

Download da app de exemplo

Vamos criar agora uma pasta para trabahar nessa demonstração:

mkdir -p ~/binary-deployment/deployments && cd ~/binary-deployment

Para testar essa funcionalidade, vamos fazer o download de uma aplicação de exemplo já existente. Iremos baixar o arquivo de deployment (contador.war) e salvar na pasta deployments. Para isso execute o seguinte comando:

curl -L https://github.com/luszczynski/contador/blob/master/contador.war?raw=true \
 -o ~/binary-deployment/deployments/contador.war

Criando binary deployment no Openshift

Agora precisamos falar para o Openshift criar um novo build usando o JBoss EAP e dizendo para ele para não usar o código-fonte e sim o binário da aplicação.

oc new-build \
 --image-stream=jboss-eap70-openshift:1.7 \
 --binary=true \
 --name=binary-deployment

Esse comando irá criar um BuildConfig que nada mais é que um arquivo descritor explicando como o Openshift deve construir a imagem docker. O detalhe nesse caso é o parametro --binary=true. Ele instrui que o BuildConfig use o binário ao invés do código-fonte da aplicação.

Se olharmos os BuildConfig que acabamos de criar, podemos perceber que ele é do tipo binário. Para ver os buildconfigs executamos:

oc get bc

Nosso próximo passo é executar o build que acabamos de criar:

oc start-build binary-deployment --from-dir=.

Estamos passando nesse comando qual o diretório que queremos enviar para a imagem do JBoss EAP 7. Nesse caso, é o diretório atual. A imagem do JBoss EAP sabe que deve pegar os arquivos que estão dentro da pasta deployments e jogar na pasta do JBoss responsável pelo deployment.

Isso tudo acontece porque essa imagem do JBoss usa S2I e portanto sabe o que fazer quando recebe um binário. Você poderia criar uma imagem e adicionar esse comportamento caso desejado.

Após executar o comando acima, um novo build é iniciado. Para visualizar, acesse:

  1. No menu lateral, clique em Builds -> Builds

  2. Na tabela seguinte, clique em binary-deployment

Assim que o build concluir, ele irá apresentar o status como completed

Agora podemos criar nossa aplicação com base na nova imagem gerado por esse build.

Para isso, executamos:

oc new-app binary-deployment

Preciamos por último criar uma rota para que nossa aplicação possa ser acessada por fora do Openshift.

oc expose svc binary-deployment

Esse comando expõe o seu app, criando uma rota para o mesmo. A url gerada pode ser conferida em Applications > Routes

Acesse a url disponibilizada para acessar a aplicação. O contexto da aplicação é /contador. Para acessá-la, pegue a rota com o comando abaixo:

oc get route binary-deployment

Abra a url no browser e adicione no final o /contador.

Limpeza do lab

oc delete all -l app=binary-deployment

Mais informações:

Last updated