Implantar um aplicativo da origem no Red Hat OpenShift no Azure

Neste artigo, você implanta um aplicativo em um cluster do Red Hat OpenShift no Azure a partir do código-fonte usando uma compilação de fonte-a-imagem (S2I). A Fonte-a-imagem (S2I) é um processo de compilação para criar imagens de contêiner reproduzíveis do código-fonte. O S2I produz imagens prontas para execução injetando o código-fonte em uma imagem de contêiner e permitindo que o contêiner prepare esse código-fonte para execução. Você pode fazer com que o OpenShift crie um aplicativo da fonte para implantá-lo, assim você não precisa construir um contêiner manualmente a cada alteração. O OpenShift pode então criar e implantar novas versões automaticamente quando notificado sobre alterações no código-fonte.

Antes de começar

Observação

Este artigo presume que você tenha definido um segredo de pull. Se você não tiver um segredo de pull para o cluster, poderá seguir a documentação para Adicionar ou atualizar o segredo de pull do Red Hat.

Criar um cluster

Siga o tutorial para criar um cluster do Red Hat OpenShift no Azure. Caso opte por instalar e usar a interface de linha de comando (CLI) local, este tutorial exigirá que você execute a CLI do Azure versão 2.6.0 ou posterior. Execute az --version para localizar a versão atual. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Conectar-se ao cluster

Para gerenciar um cluster do Red Hat OpenShift no Azure, use o oc, o cliente de linha de comando do OpenShift.

Observação

É recomendável instalar a linha de comando do OpenShift no Azure Cloud Shell e usá-la para todas as operações de linha de comando neste artigo. Inicie o shell de shell.azure.com ou selecione o link:

Button to launch Azure Cloud Shell

Siga o tutorial para instalar a CLI, recuperar as credenciais do cluster e conectar-se ao cluster pelo console Web e a CLI do OpenShift.

Quando estiver conectado, você deverá ver uma mensagem dizendo que está usando o projeto default.

Login successful.

You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".

Criar um projeto

Para criar um novo projeto chamado demoproject, execute o comando:

oc new-project demoproject

Você deverá ver uma saída semelhante a esta:

Now using project "demoproject" on server "https://api.wzy5hg7x.eastus.aroapp.io:6443".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app django-psql-example

to build a new example application in Python. Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node

Iniciar o console web

Descubra a URL do console web do cluster executando:

 az aro show \
    --name <cluster name> \
    --resource-group <resource group> \
    --query "consoleProfile.url" -o tsv

Você deverá receber uma URL semelhante a esta.

https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/

Inicie a URL do console em um navegador e faça logon usando as credenciais kubeadmin.

Azure Red Hat OpenShift login screen

Alterne para a perspectiva do desenvolvedor em vez da perspectiva do administrador no menu do lado esquerdo e selecione demoproject na lista de projetos. Em seguida, você deve estar na página de topologia do projeto.

Azure Red Hat OpenShift project topology

Como o projeto está vazio, nenhuma carga de trabalho deve ser encontrada e você verá várias opções de como implantar um aplicativo.

Implantando usando o console Web

Nas opções apresentadas para implantar um aplicativo, selecione Do Git. Isso o levará à página Importar do Git. Use https://github.com/sclorg/django-ex.git como a URL do repositório Git. O aplicativo web do exemplo é implementado usando a linguagem de programação Python.

Azure Red Hat OpenShift project from Git

Observação

O OpenShift detecta que se trata de um projeto Python e seleciona a imagem do construtor apropriada.

Role para baixo até Opções avançadas e verifique se a opção Criar uma rota para o aplicativo está marcada. Essa ação criará uma rota OpenShift, uma maneira de expor um serviço, fornecendo a ele um nome de host acessível externamente.

Azure Red Hat OpenShift project from Git - Route setup

Quando você estiver pronto, na parte inferior da página, clique em Criar. Isso criará os recursos para gerenciar a compilação e a implantação do aplicativo. Em seguida, você será redirecionado para a visão geral da topologia do projeto.

Azure Red Hat OpenShift project from Git - Topology

A visão geral da topologia fornece uma representação visual do aplicativo que você implantou. Com essa exibição, você pode ver a estrutura geral do aplicativo.

O ícone Git pode ser clicado para levá-lo para o repositório Git do qual o código-fonte do aplicativo foi criado. O ícone mostrado na parte inferior esquerda mostra o status da compilação do aplicativo. Ao clicar nesse ícone, você será levado para a seção detalhes da compilação. Se o aplicativo tiver rotas expostas, o ícone no canto superior direito poderá ser clicado para abrir a URL para a rota do aplicativo que foi criada.

Embora o aplicativo esteja aumentando ou reduzindo, iniciando as distribuições e recriando pods, a representação do aplicativo no modo de exibição de topologia será animada para fornecer uma visão em tempo real do que está acontecendo.

Clicar no ícone do aplicativo abrirá mais detalhes, conforme mostrado abaixo.

Azure Red Hat OpenShift project from Git - Details

Exibindo os logs do construtor

Depois que a compilação for iniciada, clique no link Exibir logs mostrado no painel Recursos.

Azure Red Hat OpenShift project from Git - Build logs

Isso permitirá que você monitore o progresso da compilação à medida que ela é executada. A imagem do construtor, Python, nesse caso, injetará o código-fonte do aplicativo na imagem final antes de enviá-lo para o registro de imagem interna do OpenShift. A compilação será concluída com êxito quando você vir uma mensagem final de "Push bem-sucedido".

Acessando o aplicativo

Depois que a compilação da imagem do aplicativo for concluída, ela será implantada.

Clique em Topologia na barra de menus à esquerda para retornar à exibição de topologia do projeto. Quando você criou o aplicativo usando o console Web, uma rota foi criada automaticamente para o aplicativo e será exposta fora do cluster. A URL que pode ser usada para acessar o aplicativo de um navegador da web estava visível na guia Recursos para o aplicativo que você exibiu anteriormente.

Na exibição de topologia, você pode obter a URL do aplicativo implantado clicando no ícone na parte superior direita do anel. Quando a implantação for concluída, clique no ícone e você deverá ver o aplicativo implantado.

Azure Red Hat OpenShift project from Git - Browse app

Implantação usando a linha de comando

Você aprendeu a implantar um aplicativo usando o console Web, agora vamos implantar o mesmo aplicativo web, mas desta vez usando a oc ferramenta de linha de comando.

Execute o seguinte comando para excluir o projeto e começar novamente:

oc delete project demoproject

Você deve receber uma mensagem de confirmação de que o demoproject foi excluído.

project.project.openshift.io "demoproject" deleted

Crie o demoproject novamente executando:

oc new-project demoproject

Dentro do projeto, crie um novo aplicativo da fonte no GitHub, especificando o construtor de S2I para a versão mais recente do Python fornecida.

oc new-app python:latest~https://github.com/sclorg/django-ex.git

Isso deve exibir uma saída semelhante a:

--> Found image 8ec6f0d (4 weeks old) in image stream "openshift/python" under tag "latest" for "python:latest"

    Python 3.8
    ----------
   [...]

    Tags: builder, python, python38, python-38, rh-python38

    * A source build using source code from https://github.com/sclorg/django-ex.git will be created
      * The resulting image will be pushed to image stream tag "django-ex:latest"
      * Use 'oc start-build' to trigger a new build
    * This image will be deployed in deployment config "django-ex"
    * Port 8080/tcp will be load balanced by service "django-ex"
      * Other containers can access this service through the hostname "django-ex"

--> Creating resources ...
    imagestream.image.openshift.io "django-ex" created
    buildconfig.build.openshift.io "django-ex" created
    deploymentconfig.apps.openshift.io "django-ex" created
    service "django-ex" created
--> Success
    Build scheduled, use 'oc logs -f bc/django-ex' to track its progress.
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/django-ex'
    Run 'oc status' to view your app.

O OpenShift usará o nome do repositório Git como o nome do aplicativo. Examine o status da compilação e da implantação executando:

oc status

Quando a compilação e a implantação forem concluídas, você deverá ver uma saída semelhante à.

In project demoproject on server https://api.wzy5hg7x.eastus.aroapp.io:6443

svc/django-ex - 172.30.200.50:8080
  dc/django-ex deploys istag/django-ex:latest <-
    bc/django-ex source builds https://github.com/sclorg/django-ex.git on openshift/python:latest
    deployment #1 deployed about a minute ago - 1 pod


2 infos identified, use 'oc status --suggest' to see details.

Para expor o aplicativo fora do cluster do OpenShift, você precisará criar uma rota executando:

oc expose service/django-ex

Você deve receber uma confirmação.

route.route.openshift.io/django-ex exposed

Recupere o URL executando:

oc get route django-ex

Você deve retornar o nome do host atribuído à rota que pode ser usada para navegar até o aplicativo implantado.

NAME        HOST/PORT                                              PATH   SERVICES    PORT       TERMINATION   WILDCARD
django-ex   django-ex-demoproject.apps.wzy5hg7x.eastus.aroapp.io          django-ex   8080-tcp                 None

Disparando uma nova compilação binária

Conforme você trabalha no aplicativo, provavelmente desejará fazer alterações e vê-las implantadas. Você pode configurar facilmente um webhook que irá disparar uma nova compilação e implantação com cada confirmação de código. No entanto, isso pode não ser desejável, pois às vezes você gostaria de ver as alterações sem precisar enviar por push todas as alterações de código para o repositório.

Nos casos em que você está iterando rapidamente as alterações, você pode usar o que é chamado de compilação binária. Para demonstrar esse cenário, clone o repositório Git para o aplicativo localmente executando:

git clone https://github.com/sclorg/django-ex.git

Isso criará um subdiretório django-ex que contém o código-fonte do aplicativo:

Cloning into 'django-ex'...
remote: Enumerating objects: 980, done.
remote: Total 980 (delta 0), reused 0 (delta 0), pack-reused 980
Receiving objects: 100% (980/980), 276.23 KiB | 4.85 MiB/s, done.
Resolving deltas: 100% (434/434), done.

Alteração no novo subdiretório:

cd django-ex

Abra o editor integrado do Azure Cloud Shell:

code welcome/templates/welcome/index.html

Role para baixo e altere a linha que diz Welcome to your Django application on OpenShift para dizer Welcome to Azure Red Hat OpenShift. Salve o arquivo e feche o editor por meio do ... menu no canto superior direito.

Azure Red Hat OpenShift project from Git - Edit application in Azure Cloud Shell editor

Inicie uma nova compilação executando o comando:

oc start-build django-ex --from-dir=. --wait

Ao passar o --from-dir=. sinalizador, a linha de comando do OpenShift carregará o código-fonte do diretório especificado, em seguida, iniciará o processo de compilação e implantação. Você deve obter uma saída semelhante à mostrada abaixo e, depois de alguns minutos, a compilação deve ser concluída.

Uploading directory "." as binary input for the build ...
.
Uploading finished
build.build.openshift.io/django-ex-2 started

Se você atualizar o navegador com o aplicativo, verá o título atualizado.

Azure Red Hat OpenShift project from Git - Browse updated app

Limpar os recursos

Quando terminar o aplicativo, você poderá executar o seguinte comando para excluir o projeto:

oc delete project demoproject

Você também pode excluir o cluster seguindo as etapas em Tutorial: excluir um cluster do Red Hat OpenShift 4 no Azure.

Próximas etapas

Neste guia, você aprendeu a:

  • Criar um projeto
  • Implantar um aplicativo do código-fonte usando o console web
  • Implantar um aplicativo do código-fonte usando a linha de comando do OpenShift
  • Disparar uma compilação binária usando a linha de comando do OpenShift

Saiba mais sobre como criar e implantar aplicativos usando a fonte-a-imagem e outras estratégias de compilação.