Distribuera ett program från källan till Azure Red Hat OpenShift

I den här artikeln distribuerar du ett program till ett Azure Red Hat OpenShift-kluster från källkoden med hjälp av en S2I-version (source-to-image). Source-to-Image (S2I) är en byggprocess för att skapa reproducerbara containeravbildningar från källkod. S2I skapar färdiga avbildningar genom att mata in källkod i en containeravbildning och låta containern förbereda källkoden för körning. Du kan låta OpenShift skapa ett program från källan för att distribuera det, så du behöver inte skapa en container för hand med varje ändring. OpenShift kan sedan skapa och distribuera nya versioner automatiskt när de meddelas om ändringar i källkoden.

Innan du börjar

Kommentar

Den här artikeln förutsätter att du har konfigurerat en pull-hemlighet. Om du inte har någon pull-hemlighet för klustret kan du följa dokumentationen för att lägga till eller uppdatera din Red Hat-pullhemlighet.

Skapa ett kluster

Följ självstudien för att skapa ett Azure Red Hat OpenShift-kluster. Om du väljer att installera och använda kommandoradsgränssnittet (CLI) lokalt kräver den här självstudien att du använder Azure CLI version 2.6.0 eller senare. Kör az --version för att hitta din nuvarande version. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Anslut till klustret

För att hantera ett Azure Red Hat OpenShift-kluster måste du använda oc, OpenShift-kommandoradsklienten.

Kommentar

Vi rekommenderar att du installerar OpenShift-kommandoraden i Azure Cloud Shell och att du använder den för alla kommandoradsåtgärder i den här artikeln. Öppna gränssnittet från shell.azure.com eller välj länken:

Button to launch Azure Cloud Shell

Följ självstudien för att installera CLI, hämta dina klusterautentiseringsuppgifter och ansluta till klustret med webbkonsolen och OpenShift CLI.

När du har loggat in bör du se ett meddelande om att du använder default projektet.

Login successful.

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

Using project "default".

Skapa ett projekt

Om du vill skapa ett nytt projekt med namnet demoprojectkör du kommandot:

oc new-project demoproject

Du bör se utdata som liknar:

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

Starta webbkonsolen

Ta reda på url:en för klusterwebbkonsolen genom att köra:

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

Du bör få en URL som liknar den här.

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

Starta konsolens URL i en webbläsare och logga in med autentiseringsuppgifterna kubeadmin .

Azure Red Hat OpenShift login screen

Växla till utvecklarperspektivet i stället för administratörsperspektiveti menyn till vänster och välj demoproject i listan över projekt. Du bör sedan vara på sidan Topologi för projektet.

Azure Red Hat OpenShift project topology

Eftersom projektet är tomt bör inga arbetsbelastningar hittas och du får olika alternativ för hur du kan distribuera ett program.

Distribuera med webbkonsolen

Välj Från Git från de alternativ som visas för att distribuera ett program. Då hamnar du på sidan Importera från Git . Använd https://github.com/sclorg/django-ex.git som Git-lagringsplats-URL. Exempelwebbprogrammet implementeras med programmeringsspråket Python.

Azure Red Hat OpenShift project from Git

Kommentar

OpenShift identifierar att det här är ett Python-projekt och väljer lämplig builder-avbildning.

Rulla ned till Avancerade alternativ och kontrollera att Skapa en väg till programmet är markerad. Den här åtgärden skapar en OpenShift-väg, ett sätt att exponera en tjänst genom att ge den ett värdnamn som kan nås externt.

Azure Red Hat OpenShift project from Git - Route setup

När du är klar klickar du på Skapa längst ned på sidan. Detta skapar resurser för att hantera bygget och distributionen av programmet. Sedan omdirigeras du till topologiöversikten för projektet.

Azure Red Hat OpenShift project from Git - Topology

Topologiöversikten ger en visuell representation av det program som du har distribuerat. Med den här vyn kan du se den övergripande programstrukturen.

Git-ikonen kan klickas för att ta dig till Git-lagringsplatsen från vilken källkoden för programmet skapades. Ikonen som visas längst ned till vänster visar programmets byggstatus. Om du klickar på den här ikonen kommer du till avsnittet med bygginformation. Om programmet har exponerade vägar kan du klicka på ikonen längst upp till höger för att öppna URL:en för den programväg som skapades.

Medan programmet skalas upp eller ned, startar distributioner och återskapar poddar, kommer programrepresentationen i topologivyn att animeras för att ge dig en realtidsvy över vad som händer.

Om du klickar på programikonen visas mer information enligt nedan.

Azure Red Hat OpenShift project from Git - Details

Visa byggloggarna

När bygget har startat klickar du på länken Visa loggar som visas på panelen Resurser .

Azure Red Hat OpenShift project from Git - Build logs

På så sätt kan du övervaka förloppet för bygget när det körs. Builder-avbildningen, Python i det här fallet, matar in programkällkoden i den slutliga avbildningen innan den skickas till det interna Avbildningsregistret OpenShift. Bygget har slutförts när du ser ett slutligt meddelande om att push-överföringen lyckades.

Åtkomst till programmet

När programbilden har skapats distribueras den.

Klicka på Topologi i den vänstra menyraden för att återgå till topologivyn för projektet. När du skapade programmet med hjälp av webbkonsolen skapades automatiskt en väg för programmet och den kommer att exponeras utanför klustret. Den URL som kan användas för att komma åt programmet från en webbläsare var synlig på fliken Resurser för det program som du visade tidigare.

Från topologivyn kan du komma till URL:en för det distribuerade programmet genom att klicka på ikonen längst upp till höger i ringen. När distributionen är klar klickar du på ikonen så bör du se programmet som du distribuerade.

Azure Red Hat OpenShift project from Git - Browse app

Distribuera med hjälp av kommandoraden

Du har lärt dig hur du distribuerar ett program med hjälp av webbkonsolen, nu kan du distribuera samma webbprogram, men den oc här gången med kommandoradsverktyget.

Kör följande kommando för att ta bort projektet och börja om:

oc delete project demoproject

Du bör få ett bekräftelsemeddelande om att har demoproject tagits bort.

project.project.openshift.io "demoproject" deleted

Skapa igen genom att demoproject köra:

oc new-project demoproject

I projektet skapar du ett nytt program från källan på GitHub och anger S2I-byggaren för den senaste versionen av Python som tillhandahålls.

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

Detta bör visa utdata som liknar:

--> 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 använder namnet på Git-lagringsplatsen som namnet på programmet. Granska statusen för bygget och distributionen genom att köra:

oc status

När bygget och distributionen har slutförts bör du se utdata som liknar dem.

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.

Om du vill exponera programmet utanför OpenShift-klustret måste du skapa en väg genom att köra:

oc expose service/django-ex

Du bör få en bekräftelse.

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

Hämta URL:en genom att köra:

oc get route django-ex

Du bör få tillbaka värdnamnet som tilldelats den väg som du kan använda för att bläddra till det distribuerade programmet.

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

Utlösa en ny binär version

När du arbetar med programmet vill du förmodligen göra ändringar och se dem distribuerade. Du kan enkelt konfigurera en webhook som utlöser en ny version och distribution med varje kodincheckning. Detta kanske dock inte är önskvärt eftersom du ibland vill se ändringarna utan att behöva skicka varje kodändring till lagringsplatsen.

I de fall där du snabbt itererar ändringar kan du använda det som kallas binär version. Om du vill demonstrera det här scenariot klonar du Git-lagringsplatsen för programmet lokalt genom att köra:

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

Då skapas en underkatalog django-ex som innehåller källkoden för programmet:

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.

Ändra till underkatalogen:

cd django-ex

Öppna den integrerade Azure Cloud Shell-redigeraren:

code welcome/templates/welcome/index.html

Rulla nedåt och ändra den rad som säger Welcome to your Django application on OpenShift att säga Welcome to Azure Red Hat OpenShift. Spara filen och stäng redigeraren via ... menyn längst upp till höger.

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

Starta en ny version genom att köra kommandot:

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

Genom att skicka --from-dir=. flaggan laddar OpenShift-kommandoraden upp källkoden från den angivna katalogen och initierar sedan bygg- och distributionsprocessen. Du bör få utdata som liknar nedanstående, och efter några minuter bör bygget slutföras.

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

Om du uppdaterar webbläsaren med programmet bör du se den uppdaterade rubriken.

Azure Red Hat OpenShift project from Git - Browse updated app

Rensa resurser

När du är klar med programmet kan du köra följande kommando för att ta bort projektet:

oc delete project demoproject

Du kan också ta bort klustret genom att följa anvisningarna i Självstudie: Ta bort ett Azure Red Hat OpenShift 4-kluster.

Nästa steg

I den här guiden har du lärt dig att:

  • Skapa ett projekt
  • Distribuera ett program från källkoden med hjälp av webbkonsolen
  • Distribuera ett program från källkoden med hjälp av OpenShift-kommandoraden
  • Utlösa ett binärt bygge med hjälp av OpenShift-kommandoraden

Läs mer om hur du skapar och distribuerar program med käll-till-avbildning och andra byggstrategier.