Partilhar via


Implantar um aplicativo da origem no Azure Red Hat OpenShift

Neste artigo, você implanta um aplicativo em um cluster do Azure Red Hat OpenShift a partir do código-fonte usando uma compilação source-to-image (S2I). Source-to-Image (S2I) é um processo de compilação para construir imagens de contêiner reproduzíveis a partir do código-fonte. O S2I produz imagens prontas para execução injetando 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 construa um aplicativo a partir do código-fonte para implantá-lo, para que você não precise 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

Nota

Este artigo pressupõe que você tenha configurado um segredo de extração. Se você não tiver um segredo de pull para seu cluster, siga a documentação para Adicionar ou atualizar seu segredo de pull da Red Hat.

Criar um cluster

Siga o tutorial para criar um cluster do Azure Red Hat OpenShift. Se você optar por instalar e usar a interface de linha de comando (CLI) localmente, este tutorial exigirá que você use a CLI do Azure versão 2.6.0 ou posterior. Execute az --version para encontrar a versão atual. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Ligar ao cluster

Para gerenciar um cluster do Azure Red Hat OpenShift, você precisa usar oc, o cliente de linha de comando OpenShift.

Nota

Recomendamos que você instale a linha de comando OpenShift no Azure Cloud Shell e que a use para todas as operações de linha de comando neste artigo. Abra seu shell a partir de shell.azure.com ou selecione o link:

Botão para iniciar o Azure Cloud Shell

Siga o tutorial para instalar sua CLI, recuperar suas credenciais de cluster e conectar-se ao cluster com o console da Web e a CLI OpenShift.

Depois de iniciar sessão, deverá ver uma mensagem a dizer que está a utilizar o default projeto.

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ê deve ver uma saída semelhante a:

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 da Web

Descubra a URL do console da Web do cluster executando:

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

Você deve obter um URL semelhante a este.

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

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

Tela de login do Azure Red Hat OpenShift

Mude para a perspetiva Desenvolvedor em vez da perspetiva Administrador no menu do lado esquerdo e selecione demoproject na lista de projetos. Em seguida, você deve estar na página Topologia do projeto.

Topologia de projeto do Azure Red Hat OpenShift

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 da Web

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

Projeto Azure Red Hat OpenShift do Git

Nota

O OpenShift deteta que este é 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 dando-lhe um nome de host acessível externamente.

Azure Red Hat OpenShift project do Git - Configuração de rota

Quando estiver pronto, na parte inferior da página, clique em Criar. Isso criará 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.

Projeto Azure Red Hat OpenShift do Git - Topologia

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 do Git pode ser clicado para levá-lo ao repositório Git a partir do qual o código-fonte do aplicativo foi construído. O ícone mostrado no canto inferior esquerdo mostra o status de compilação do aplicativo. Ao clicar neste ícone, você será direcionado para a seção de detalhes da compilação. Se o aplicativo tiver rotas expostas, o ícone no canto superior direito poderá ser clicado para abrir a URL da rota do aplicativo que foi criada.

Enquanto o aplicativo está escalando para cima ou para baixo, iniciando distribuições e recriando pods, a representação do aplicativo na visualização de topologia será animada para fornecer uma visão em tempo real do que está acontecendo.

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

Azure Red Hat OpenShift project do Git - Detalhes

Visualizando os logs do construtor

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

Projeto Azure Red Hat OpenShift do Git - Logs de compilação

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

Acesso à aplicação

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

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

Na visualização da topologia, você pode acessar a URL do aplicativo implantado clicando no ícone no canto superior direito do anel. Quando a implantação estiver concluída, clique no ícone e você verá o aplicativo implantado.

Azure Red Hat OpenShift project do Git - Procurar aplicativo

Implantando usando a linha de comando

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

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

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 a partir do código-fonte no GitHub, especificando o construtor 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. Revise o status da compilação e da implantação executando:

oc status

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

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 OpenShift, você precisará criar uma rota executando:

oc expose service/django-ex

Deverá obter uma confirmação.

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

Recupere o URL executando:

oc get route django-ex

Você deve recuperar o nome do host atribuído à rota que você pode usar 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

Acionando uma nova compilação binária

À medida que você trabalha no aplicativo, provavelmente desejará fazer alterações e vê-las implantadas. Você pode facilmente configurar um webhook que acionará uma nova compilação e implantação a 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 ter que enviar 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 contendo 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.

Mude para o 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 através do ... menu no canto superior direito.

Projeto Azure Red Hat OpenShift do Git - Editar aplicativo no editor do Azure Cloud Shell

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 OpenShift carregará o código-fonte do diretório especificado e, em seguida, iniciará o processo de compilação e implantação. Você deve obter uma saída semelhante à abaixo e, após 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, você verá o título atualizado.

Azure Red Hat OpenShift project do Git - Procurar aplicativo atualizado

Clean up resources (Limpar recursos)

Quando terminar de usar o aplicativo, você pode executar o seguinte comando para excluir o projeto:

oc delete project demoproject

Você também pode excluir o cluster seguindo as instruções em Tutorial: Excluir um cluster do Azure Red Hat OpenShift 4.

Próximos passos

Neste guia, você aprendeu a:

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

Saiba mais sobre como criar e implantar aplicativos usando estratégias source-to-image e outras estratégias de compilação.