Een toepassing implementeren van de bron naar Azure Red Hat OpenShift
In dit artikel implementeert u een toepassing in een Azure Red Hat OpenShift-cluster vanuit broncode met behulp van een S2I-build (source-to-image). Source-to-Image (S2I) is een buildproces voor het bouwen van reproduceerbare containerinstallatiekopieën uit broncode. S2I produceert kant-en-klare installatiekopieën door broncode in een containerinstallatiekopieën te injecteren en de container die broncode voor te bereiden voor uitvoering. U kunt OpenShift een toepassing laten bouwen vanuit de bron om deze te implementeren, zodat u bij elke wijziging niet handmatig een container hoeft te maken. OpenShift kan vervolgens automatisch nieuwe versies bouwen en implementeren wanneer er een melding wordt ontvangen van wijzigingen in de broncode.
Voordat u begint
Notitie
In dit artikel wordt ervan uitgegaan dat u een pull-geheim hebt ingesteld. Als u geen pull-geheim voor uw cluster hebt, kunt u de documentatie volgen om uw Red Hat-pull-geheim toe te voegen of bij te werken.
Een cluster maken
Volg de zelfstudie om een Azure Red Hat OpenShift-cluster te maken. Als u ervoor kiest om de opdrachtregelinterface (CLI) lokaal te installeren en te gebruiken, moet u voor deze zelfstudie Azure CLI versie 2.6.0 of hoger gebruiken. Voer az --version
uit om uw huidige versie te vinden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
Verbinding maken met het cluster
Als u een Azure Red Hat OpenShift-cluster wilt beheren, moet u oc gebruiken, de OpenShift-opdrachtregelclient.
Notitie
U wordt aangeraden OpenShift-opdrachtregel te installeren in Azure Cloud Shell en dat u deze gebruikt voor alle opdrachtregelbewerkingen in dit artikel. Open de shell vanuit shell.azure.com of selecteer de koppeling:
Volg de zelfstudie om uw CLI te installeren, uw clusterreferenties op te halen en verbinding te maken met het cluster met de webconsole en de OpenShift CLI.
Zodra u bent aangemeld, ziet u een bericht waarin staat dat u het default
project gebruikt.
Login successful.
You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
Een project maken
Voer de opdracht uit om een nieuw project te maken met de naam demoproject
:
oc new-project demoproject
Als het goed is, ziet u een uitvoer die vergelijkbaar is met:
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
De webconsole starten
Zoek de URL van de clusterwebconsole uit door het volgende uit te voeren:
az aro show \
--name <cluster name> \
--resource-group <resource group> \
--query "consoleProfile.url" -o tsv
U moet een URL krijgen die vergelijkbaar is met deze URL.
https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/
Start de console-URL in een browser en meld u aan met de referenties van kubeadmin
.
Schakel over naar het perspectief Ontwikkelaars in plaats van het perspectief Beheerder in het menu aan de linkerkant en selecteer demoproject
in de lijst met projecten. U moet vervolgens op de pagina Topologie voor het project staan.
Omdat het project leeg is, moeten er geen workloads worden gevonden en krijgt u verschillende opties te zien voor het implementeren van een toepassing.
Implementeren met behulp van de webconsole
Selecteer in de opties die worden weergegeven voor het implementeren van een toepassing de optie In Git. Hiermee komt u terecht op de pagina Importeren vanuit Git . Gebruik https://github.com/sclorg/django-ex.git
deze url als de URL van de Git-opslagplaats. De voorbeeldwebtoepassing wordt geïmplementeerd met behulp van de Python-programmeertaal.
Notitie
OpenShift detecteert dat dit een Python-project is en selecteert de juiste opbouwinstallatiekopieën.
Schuif omlaag naar Geavanceerde opties en zorg ervoor dat Een route naar de toepassing maken is ingeschakeld. Met deze actie wordt een OpenShift-route gemaakt, een manier om een service beschikbaar te maken door deze een extern bereikbaar hostnaam te geven.
Wanneer u klaar bent, klikt u onder aan de pagina op Maken. Hiermee worden resources gemaakt om de build en implementatie van de toepassing te beheren. Vervolgens wordt u omgeleid naar het topologieoverzicht voor het project.
Het overzicht van de topologie biedt een visuele weergave van de toepassing die u hebt geïmplementeerd. In deze weergave ziet u de algehele toepassingsstructuur.
U kunt op het Git-pictogram klikken om u naar de Git-opslagplaats te brengen waaruit de broncode voor de toepassing is gebouwd. Het pictogram linksonder toont de buildstatus van de toepassing. Als u op dit pictogram klikt, gaat u naar de sectie met builddetails. Als de toepassing routes bevat, kan op het pictogram rechtsboven worden geklikt om de URL te openen voor de toepassingsroute die is gemaakt.
Terwijl de toepassing omhoog of omlaag wordt geschaald, worden de implementaties en het opnieuw maken van pods gestart, de toepassingsweergave in de topologieweergave geanimeerd om u een realtime weergave te geven van wat er aan de hand is.
Als u op het toepassingspictogram klikt, worden meer details weergegeven, zoals hieronder wordt weergegeven.
De opbouwlogboeken weergeven
Zodra de build is gestart, klikt u op de koppeling Logboeken weergeven die wordt weergegeven in het deelvenster Resources .
Hiermee kunt u de voortgang van de build bijhouden terwijl deze wordt uitgevoerd. De installatiekopieën van de builder, Python in dit geval, injecteren de broncode van de toepassing in de uiteindelijke installatiekopieën voordat deze naar het interne register van de OpenShift-installatiekopieën wordt gepusht. De build is voltooid wanneer u het laatste bericht 'Push geslaagd' ziet.
Toegang tot de toepassing
Zodra de build van de toepassingsinstallatiekopie is voltooid, wordt deze geïmplementeerd.
Klik op Topologie in de linkermenubalk om terug te keren naar de topologieweergave voor het project. Wanneer u de toepassing hebt gemaakt met behulp van de webconsole, is er automatisch een route gemaakt voor de toepassing en wordt deze buiten het cluster weergegeven. De URL die kan worden gebruikt voor toegang tot de toepassing vanuit een webbrowser, is zichtbaar op het tabblad Resources voor de toepassing die u eerder hebt bekeken.
Vanuit de topologieweergave kunt u naar de URL voor de geïmplementeerde toepassing gaan door te klikken op het pictogram rechtsboven in de ring. Wanneer de implementatie is voltooid, klikt u op het pictogram en ziet u de toepassing die u hebt geïmplementeerd.
Implementeren met behulp van de opdrachtregel
U hebt geleerd hoe u een toepassing implementeert met behulp van de webconsole. Nu kunt u dezelfde webtoepassing implementeren, maar nu met behulp van het oc
opdrachtregelprogramma.
Voer de volgende opdracht uit om het project te verwijderen en opnieuw te beginnen:
oc delete project demoproject
U ontvangt een bevestigingsbericht dat het demoproject
is verwijderd.
project.project.openshift.io "demoproject" deleted
Maak het opnieuw door het demoproject
volgende uit te voeren:
oc new-project demoproject
Maak in het project een nieuwe toepassing op basis van de bron op GitHub, waarbij u de S2I-opbouwfunctie opgeeft voor de nieuwste versie van Python.
oc new-app python:latest~https://github.com/sclorg/django-ex.git
Dit moet uitvoer weergeven die vergelijkbaar is met:
--> 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 gebruikt de naam van de Git-opslagplaats als de naam voor de toepassing. Controleer de status van de build en implementatie door het volgende uit te voeren:
oc status
Wanneer de build en implementatie is voltooid, ziet u een vergelijkbare uitvoer.
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.
Als u de toepassing buiten het OpenShift-cluster beschikbaar wilt maken, moet u een route maken door het volgende uit te voeren:
oc expose service/django-ex
U moet een bevestiging krijgen.
route.route.openshift.io/django-ex exposed
Haal de URL op door het volgende uit te voeren:
oc get route django-ex
U moet de hostnaam terughalen die is toegewezen aan de route die u kunt gebruiken om naar de geïmplementeerde toepassing te bladeren.
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
django-ex django-ex-demoproject.apps.wzy5hg7x.eastus.aroapp.io django-ex 8080-tcp None
Een nieuwe binaire build activeren
Wanneer u aan de toepassing werkt, wilt u waarschijnlijk wijzigingen aanbrengen en deze implementeren. U kunt eenvoudig een webhook instellen die een nieuwe build en implementatie activeert bij elke codedoorvoering. Dit is echter mogelijk niet wenselijk, omdat u de wijzigingen soms wilt zien zonder dat u elke codewijziging naar de opslagplaats hoeft te pushen.
In gevallen waarin u snel wijzigingen doorgeeft, kunt u de zogenaamde binaire build gebruiken. Om dit scenario te demonstreren, kloont u de Git-opslagplaats voor de toepassing lokaal door het volgende uit te voeren:
git clone https://github.com/sclorg/django-ex.git
Hiermee maakt u een submap django-ex
met de broncode voor de toepassing:
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.
Ga naar de submap:
cd django-ex
Open de geïntegreerde Azure Cloud Shell-editor:
code welcome/templates/welcome/index.html
Schuif omlaag en wijzig de regel die Welcome to your Django application on OpenShift
u wilt zeggen Welcome to Azure Red Hat OpenShift
. Sla het bestand op en sluit de editor via het ...
menu rechtsboven.
Start een nieuwe build door de opdracht uit te voeren:
oc start-build django-ex --from-dir=. --wait
Door de --from-dir=.
vlag door te geven, uploadt de OpenShift-opdrachtregel de broncode uit de opgegeven map en start het build- en implementatieproces. U moet een uitvoer krijgen die vergelijkbaar is met de onderstaande, en na een paar minuten moet de build worden voltooid.
Uploading directory "." as binary input for the build ...
.
Uploading finished
build.build.openshift.io/django-ex-2 started
Als u de browser vernieuwt met de toepassing, ziet u de bijgewerkte titel.
Resources opschonen
Wanneer u klaar bent met de toepassing, kunt u de volgende opdracht uitvoeren om het project te verwijderen:
oc delete project demoproject
U kunt het cluster ook verwijderen door de instructies in zelfstudie te volgen: Een Azure Red Hat OpenShift 4-cluster verwijderen.
Volgende stappen
In deze handleiding hebt u het volgende geleerd:
- Een project maken
- Een toepassing implementeren vanuit broncode met behulp van de webconsole
- Een toepassing implementeren vanuit broncode met behulp van de OpenShift-opdrachtregel
- Een binaire build activeren met behulp van de OpenShift-opdrachtregel
Meer informatie over het bouwen en implementeren van toepassingen met behulp van bron-naar-installatiekopieën en andere buildstrategieën.