Condividi tramite


Distribuire un'applicazione dall'origine ad Azure Red Hat OpenShift

In questo articolo è possibile distribuire un'applicazione in un cluster Azure Red Hat OpenShift dal codice sorgente usando una compilazione da origine a immagine (S2I). Da origine a immagine (S2I) è un processo di compilazione per la creazione di immagini del contenitore riproducibili dal codice sorgente. S2I produce immagini pronte per l'esecuzione inserendo il codice sorgente in un'immagine del contenitore e consentendo al contenitore di preparare il codice sorgente per l'esecuzione. OpenShift può creare un'applicazione dall'origine per distribuirla, in modo da non dover creare un contenitore manualmente ad ogni modifica. OpenShift può quindi creare e distribuire automaticamente nuove versioni quando viene notificata la modifica del codice sorgente.

Operazioni preliminari

Nota

Questo articolo presuppone che sia stato configurato un segreto pull. Se non si dispone di un segreto pull per il cluster, è possibile seguire la documentazione per Aggiungere o aggiornare il segreto pull di Red Hat.

Creare un cluster

Segui l'esercitazione per creare un cluster Azure Red Hat OpenShift. Se si sceglie di installare e usare l'interfaccia della riga di comando (CLI) in locale, questa esercitazione richiede l'uso dell'interfaccia della riga di comando di Azure versione 2.6.0 o successiva. Eseguire az --version per trovare la versione corrente. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Stabilire la connessione al cluster

Per gestire un cluster Azure Red Hat OpenShift, è necessario usare oc, il client della riga di comando OpenShift.

Nota

È consigliabile installare la riga di comando di OpenShift in Azure Cloud Shell e usarla per tutte le operazioni della riga di comando in questo articolo. Aprire la shell da shell.azure.com o selezionare il collegamento:

Pulsante per avviare Azure Cloud Shell

Seguire l'esercitazione per installare l'interfaccia della riga di comando, recuperare le credenziali del cluster e connettersi al cluster con la console Web e l'interfaccia della riga di comando di OpenShift.

Dopo aver eseguito l'accesso, si dovrebbe visualizzare un messaggio che informa che si sta usando il progetto di 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".

Creare un progetto

Per creare un nuovo progetto denominato demoproject, eseguire il comando :

oc new-project demoproject

L'output visualizzato dovrebbe essere simile al seguente:

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

Avviare la console Web

Individuare l'URL della console Web del cluster eseguendo:

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

L'URL visualizzato dovrebbe essere simile a questo.

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

Avviare l'URL della console in un browser e accedere usando le credenziali kubeadmin.

Schermata di accesso ad Azure Red Hat OpenShift

Passare alla prospettiva Sviluppatore anziché alla prospettiva Amministratore nel menu a sinistra e selezionare demoproject nell'elenco dei progetti. Ci si dovrebbe quindi trovare nella pagina topologia per il progetto.

Topologia del progetto Azure Red Hat OpenShift

Poiché il progetto è vuoto, non si dovrebbero trovare carichi di lavoro e verranno presentate varie opzioni per la distribuzione di un'applicazione.

Distribuzione tramite la console Web

Nelle opzioni presentate per la distribuzione di un'applicazione selezionare Da Git. Verrà visualizzata la pagina Importa da Git. Usare https://github.com/sclorg/django-ex.git come URL del repository Git. L'applicazione Web di esempio viene implementata usando il linguaggio di programmazione Python.

Progetto Azure Red Hat OpenShift da Git

Nota

OpenShift rileva che si tratta di un progetto Python e seleziona l'immagine del generatore appropriata.

Scorrere verso il basso fino a Opzioni avanzate e assicurarsi che sia selezionata Crea una route per l'applicazione. Questa azione creerà una route OpenShift, un modo per esporre un servizio assegnandogli un nome host raggiungibile esternamente.

Progetto Azure Red Hat OpenShift da Git - Configurazione della route

Quando si è pronti, nella parte inferiore della pagina fare clic su Crea. Verranno create risorse per gestire la compilazione e la distribuzione dell'applicazione. Si verrà quindi reindirizzati alla panoramica della topologia per il progetto.

Progetto Azure Red Hat OpenShift da Git - Topologia

La panoramica della topologia fornisce una rappresentazione visiva dell'applicazione distribuita. Con questa visualizzazione è possibile visualizzare la struttura generale dell'applicazione.

È possibile fare clic sull'icona Git per passare al repository Git da cui è stato compilato il codice sorgente per l'applicazione. L'icona visualizzata in basso a sinistra mostra lo stato di compilazione dell'applicazione. Facendo clic su questa icona si accede alla sezione dei dettagli della build. Se l'applicazione ha esposto route, è possibile fare clic sull'icona in alto a destra per aprire l'URL per la route dell'applicazione creata.

Durante il ridimensionamento dell'applicazione, l'avvio delle implementazioni e la ricreazione dei pod, la rappresentazione dell'applicazione nella vista topologia verrà animata per offrire una visualizzazione in tempo reale delle attività in corso.

Facendo clic sull'icona dell'applicazione verranno visualizzati altri dettagli, come illustrato di seguito.

Progetto Azure Red Hat OpenShift da Git - Dettagli

Visualizzazione dei log del generatore

Dopo l'avvio della compilazione, fare clic sul collegamento Visualizza log mostrato nel pannello Risorse.

Progetto Azure Red Hat OpenShift da Git - Log di compilazione

In questo modo sarà possibile monitorare lo stato di avanzamento della build durante l'esecuzione. L'immagine del generatore, Python in questo caso, inserirà il codice sorgente dell'applicazione nell'immagine finale prima di eseguirne il push nel registro delle immagini interne di OpenShift. La build verrà completata correttamente quando viene visualizzato un messaggio finale "Push completato correttamente".

Accesso all'applicazione

Una volta completata la compilazione dell'immagine dell'applicazione, verrà distribuita.

Fare clic su Topologia nella barra dei menu a sinistra per tornare alla visualizzazione topologia per il progetto. Quando l'applicazione è stata creata usando la console Web, viene creata automaticamente una Route per l'applicazione e verrà esposta all'esterno del cluster. L'URL che può essere usato per accedere all'applicazione da un Web browser era visibile nella scheda Risorse per l'applicazione visualizzata in precedenza.

Dalla vista topologia è possibile accedere all'URL dell'applicazione distribuita facendo clic sull'icona in alto a destra dell'anello. Al termine della distribuzione, fare clic sull'icona e verrà visualizzata l'applicazione distribuita.

Progetto Azure Red Hat OpenShift da Git - Esplorare l'app

Distribuzione tramite la riga di comando

Si è appreso come distribuire un'applicazione usando la console Web, ora è possibile distribuire la stessa applicazione Web, ma questa volta usando lo strumento da riga di comando oc.

Eseguire il comando seguente per eliminare il progetto e ricominciare da capo:

oc delete project demoproject

Dovrebbe essere visualizzato un messaggio di conferma che demoproject è stato eliminato.

project.project.openshift.io "demoproject" deleted

Creare di nuovo demoproject eseguendo:

oc new-project demoproject

All'interno del progetto creare una nuova applicazione dall'origine in GitHub, specificando il generatore S2I per la versione più recente di Python fornita.

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

L'output dovrebbe essere simile al seguente:

--> 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.

OpenShift userà il nome del repository Git come nome per l'applicazione. Esaminare lo stato della compilazione e della distribuzione eseguendo:

oc status

Al termine della compilazione e distribuzione, verrà visualizzato un output simile 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.

Per esporre l'applicazione all'esterno del cluster OpenShift, è necessario creare una route eseguendo:

oc expose service/django-ex

Si dovrebbe ottenere una conferma.

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

Recuperare l'URL eseguendo:

oc get route django-ex

Dovrebbe essere restituito il nome host assegnato alla route che è possibile usare per passare all'applicazione distribuita.

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

Attivazione di una nuova build binaria

Quando si lavora sull'applicazione, è probabile che si vogliano apportare modifiche e vederle distribuite. È possibile configurare facilmente un webhook che attiverà una nuova build e una nuova distribuzione con ogni commit di codice. Tuttavia, ciò potrebbe non essere auspicabile perché a volte si desidera vedere le modifiche senza dover eseguire il push di ogni modifica del codice nel repository.

Nei casi in cui si stia eseguendo rapidamente l'iterazione delle modifiche, è possibile usare la cosiddetta build binaria. Per illustrare questo scenario, clonare in locale il repository Git per l'applicazione eseguendo:

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

In questo modo verrà creata una sottodirectory django-ex contenente il codice sorgente per l'applicazione:

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.

Passare alla sottodirectory:

cd django-ex

Aprire l'editor integrato di Azure Cloud Shell:

code welcome/templates/welcome/index.html

Scorrere verso il basso e modificare la riga Welcome to your Django application on OpenShift per dire Welcome to Azure Red Hat OpenShift. Salvare il file e chiudere l'editor tramite il menu ... in alto a destra.

Progetto Azure Red Hat OpenShift da Git - Modificare l'applicazione nell'editor di Azure Cloud Shell

Avviare una nuova build eseguendo il comando:

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

Passando il flag --from-dir=., la riga di comando di OpenShift caricherà il codice sorgente dalla directory specificata e quindi avvierà il processo di compilazione e distribuzione. Si dovrebbe visualizzare un output simile al seguente e, dopo alcuni minuti, la build dovrebbe essere completata.

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

Se si aggiorna il browser con l'applicazione, verrà visualizzato il titolo aggiornato.

Progetto Azure Red Hat OpenShift da Git - Esplorare l'app aggiornata

Pulire le risorse

Quando si è terminato con l'applicazione, sarà possibile eseguire il comando seguente per eliminare il progetto:

oc delete project demoproject

È anche possibile eliminare il cluster seguendo le istruzioni riportate in Esercitazione: eliminare un cluster Azure Red Hat OpenShift 4.

Passaggi successivi

In questa guida si è appreso come:

  • Creare un progetto
  • Distribuire un'applicazione dal codice sorgente usando la console Web
  • Distribuire un'applicazione dal codice sorgente usando la riga di comando OpenShift
  • Attivare una build binaria usando la riga di comando OpenShift

Altre informazioni su come creare e distribuire applicazioni usando l'origine per l'immagine e altre strategie di compilazione.