Applicazione web scalabile su Red Hat OpenShift on IBM Cloud
Questa esercitazione può comportare degli addebiti. Utilizza lo stimatore costi per generare una stima dei costi basata sul tuo utilizzo previsto.
Questa esercitazione ti guida attraverso come distribuire un'applicazione a un cluster Red Hat OpenShift on IBM Cloud da un repository Git remoto, esporre l'applicazione su un instradamento, monitorare l'integrità dell'ambiente e ridimensionare l'applicazione. Inoltre, imparerai come utilizzare un registro del contenitore privato, distribuire un'applicazione da un repository Git privato e associare un dominio personalizzato all'applicazione.
Con Red Hat OpenShift on IBM Cloud, puoi creare cluster Kubernetes con nodi di lavoro forniti installati con OpenShift Container Platform. Per ulteriori informazioni sull'architettura di OpenShift Container Platform, consultare i documenti di Red Hat OpenShift. Ottieni tutti i vantaggi di un servizio gestito per il tuo cluster.
Obiettivi
- Distribuisci un'applicazione Web al cluster Red Hat OpenShift on IBM Cloud.
- Eseguire il bind di un dominio personalizzato.
- Monitorare i log e l'integrità del cluster.
- Ridimensionare i pod Red Hat OpenShift on IBM Cloud.
- Lo sviluppatore distribuisce una applicazione web utilizzando il codice da un repository Git remoto. Facoltativamente, lo sviluppatore può anche eseguire il push del codice a un repository Git privato su IBM Cloud.
- Dal codice viene creata un'immagine del contenitore.
- Viene eseguito il push dell'immagine a un registro del contenitore locale fornito con il cluster o a uno spazio dei nomi in IBM Cloud Container Registry.
- L'applicazione viene distribuita su un cluster Red Hat OpenShift on IBM Cloud estraendo l'immagine.
- Gli utenti accedono all'applicazione tramite una rotta pubblica.
Prima di iniziare
Questa esercitazione richiede:
- la CLI IBM Cloud,
- il plugin IBM Cloud Kubernetes Service (
kubernetes-service), - (facoltativo) Plugin Container Registry (
container-registry)
- il plugin IBM Cloud Kubernetes Service (
- Docker motore,
ocper interagire con Red Hat OpenShift on IBM Cloud,gitper clonare il repository del codice sorgente,- (opzionale) IBM Cloud GitLab configurato con la chiave SSH. Consultare le istruzioni nelle sezioni
Generate an SSH key paireAdd an SSH key to your GitLab accountdella documentazione qui
Troverai le istruzioni per scaricare e installare questi strumenti per il tuo ambiente operativo nella guida Introduzione alle esercitazioni.
Per evitare l'installazione di questi strumenti, si può usare il comando Cloud Shell dalla console IBM Cloud. Utilizza oc version per garantire che la versione della CLI Red Hat OpenShift on IBM Cloud corrisponda
alla versione del tuo cluster (4.13.x). Se non corrispondono, installare la versione corrispondente seguendo queste istruzioni.
Inoltre, assicurati di configurare uno spazio dei nomi del registro.
Creare un cluster Red Hat OpenShift on IBM Cloud
Con Red Hat OpenShift on IBM Cloud, hai un modo rapido e sicuro per inserire in un contenitore e distribuire i workload aziendali sui cluster Kubernetes. I cluster Red Hat OpenShift on IBM Cloud si sviluppano sull'orchestrazione del contenitore Kubernetes che offre coerenza e flessibilità per le operazioni del ciclo di vita di sviluppo.
In questa sezione, eseguirai il provisioning di un cluster Red Hat OpenShift on IBM Cloud in una (1) zona con due (2) nodi di lavoro:
- Crea un cluster Red Hat OpenShift on IBM Cloud dal catalogo IBM Cloud®.
- In Infrastructure scegli VPC o Classic,
- Per Red Hat OpenShift on IBM Cloud su infrastruttura VPC, è necessario creare una VPC e una subnet prima di creare il cluster. Crea o utilizza un VPC esistente tenendo presente i seguenti requisiti:
- Una sottorete che può essere utilizzata per questa esercitazione; prendere nota della zona e del nome della sottorete.
- Un gateway pubblico è collegato alla sottorete, per ulteriori dettagli, vedi Creazione di cluster VPC.
- Per Red Hat OpenShift on IBM Cloud su infrastruttura VPC, è necessario creare una VPC e una subnet prima di creare il cluster. Crea o utilizza un VPC esistente tenendo presente i seguenti requisiti:
- In Location:
- Per Red Hat OpenShift on IBM Cloud sull'infrastruttura VPC
- Deselezionare le sottoreti e le zone non applicabili.
- Nella zona desiderata verifica il nome della sottorete desiderata e se non è presente, fai clic sull'icona a forma di matita di modifica per selezionare il nome della sottorete desiderata
- Per Red Hat OpenShift on IBM Cloud sull'infrastruttura Classic:
- Seleziona un gruppo di risorse (Resource group).
- Seleziona un'area geografica (Geography).
- Seleziona Single zone per l'impostazione Availability.
- Scegliere una zona di lavoro.
- Per ulteriori dettagli, vedi le istruzioni Creazione di cluster classici.
- Per Red Hat OpenShift on IBM Cloud sull'infrastruttura VPC
- Imposta la versione OpenShift su 4.13.x (Nota: se scegli di utilizzare una versione di 4.15.xx e successive, devi disattivare la Protezione del traffico in uscita).
- Seleziona la tua OpenShift Container Platform.
- In Worker pool,
- Selezionare 4 vCPUs 16GB Memory come aroma.
- Per questa esercitazione, selezionare 2 nodi worker per centro dati (se si è selezionata l'infrastruttura classica: lasciare Crittografare il disco locale ).
- In Dettagli cluster:
- Impostare il nome del cluster su
myopenshiftcluster. - Seleziona un Gruppo di risorse (se hai selezionato l'infrastruttura VPC).
- Impostare il nome del cluster su
- Fai clic su Create per eseguire il provisioning di un cluster Red Hat OpenShift on IBM Cloud.
Prendi nota del gruppo di risorse selezionato in precedenza. Questo stesso gruppo di risorse verrà utilizzato per tutte le risorse in questo lab.
Configura la CLI
In questo passo, configurerai oc per puntare al tuo cluster appena creato. La CLI della piattaforma container Red Hat OpenShift on IBM Cloud espone comandi per la gestione delle applicazioni, nonché strumenti di livello inferiore per interagire con ciascun componente del sistema. La CLI è disponibile utilizzando il comando oc.
- Quando il cluster è pronto, fai clic su Console webOpenShift per aprirla.
- Sulla console web, dal menu a discesa in alto a destra nella pagina, fai clic su Copy Login Command e poi sul link Display Token.
- Copiare il testo che si trova in Log in with this token.
- Una volta effettuato l'accesso con il comando
oc login, eseguire il comando seguente per visualizzare tutti i namespace del cluster.oc get ns
Crea una nuova applicazione Red Hat OpenShift on IBM Cloud
In questa sezione, creerai un progetto Red Hat OpenShift on IBM Cloud e distribuirai quindi un'applicazione da un repositoryGitHub. Il codice per questa applicazione è una semplice pagina di destinazione Node.js e due endpoint API per iniziare. È sempre possibile estendere questa applicazione in base ai propri requisiti di esplorazione.
Crea un progetto
Uno spazio dei nomi Kubernetes fornisce un meccanismo per delimitare l'ambito delle risorse in un cluster. In Red Hat OpenShift on IBM Cloud, un progetto è uno spazio dei nomi Kubernetes con annotazioni aggiuntive.
- Definire una variabile di ambiente denominata
MYPROJECTe impostare il nome dell'applicazione sostituendo<your-initials>con le proprie iniziali:export MYPROJECT=<your-initials>-openshiftapp - Crea un nuovo progetto.
Dopo aver creato un progetto utilizzando il precedente comando, si passa automaticamente a tale progetto e tutti i comandi che seguono vengono eseguiti nel contesto di tale progetto. Se è necessario commutare i progetti o tornare a tale progetto in un secondo momento, utilizzare il comandooc new-project $MYPROJECToc project $MYPROJECT.
Distribuisce un'applicazione
Con il comando oc new-app è possibile creare applicazioni dal codice sorgente in un repository Git locale o remoto.
-
Crea un'applicazione utilizzando la strategia di build
dockerper creare un'immagine del contenitore da un Dockerfile nel repository. Si sta impostando il nome dell'applicazione sul nome del progetto per semplicità.oc new-app https://github.com/IBM-Cloud/openshift-node-app --name=$MYPROJECT --strategy=docker --as-deployment-configSe un file Jenkins esiste nella directory root o nella directory di contesto specificata del repository di origine durante la creazione di una nuova applicazione, Red Hat OpenShift on IBM Cloud genera una strategia di build
pipeline. Altrimenti, genera una strategia di buildsource. È sempre possibile sovrascrivere la strategia di build impostando l'indicatore--strategy. -
Per controllare la creazione dell'immagine del contenitore del builder ed eseguire il push alla Red Hat OpenShift on IBM Cloud Container Registry (OCR) interna, eseguire il seguente comando.
oc logs -f buildconfig/$MYPROJECTIl cluster è configurato con il sito interno Red Hat OpenShift on IBM Cloud Container Registry in modo che Red Hat OpenShift on IBM Cloud possa costruire, distribuire e gestire automaticamente il ciclo di vita dell'applicazione dall'interno del cluster.
-
Attendere che la compilazione abbia successo e che l'immagine venga inviata. È possibile controllare lo stato della distribuzione e del servizio eseguendo il comando riportato di seguito.
oc status
Accedere all'applicazione tramite il dominio fornito da IBM
Per accedere all'applicazione, è necessario creare un percorso. Un instradamento annuncia il tuo servizio al mondo.
-
Creare una rotta eseguendo il comando seguente in un terminale.
oc expose service/$MYPROJECT -
È possibile accedere all'applicazione tramite un dominio fornito da IBM. Eseguire il comando seguente per ottenere l' URL.
oc get route/$MYPROJECT -
Copiate il valore dell'hostname sotto il valore HOST/PORT e incollate URL in un browser per vedere la vostra applicazione in azione su
http://<hostname>. Assicuratevi di utilizzarehttpnell' URL. -
Impostare una variabile di ambiente che punti al nome host.
export HOST=<hostname>
Proteggi l'instradamento del dominio fornito da IBM predefinito
- Per creare un instradamento HTTPS protetto crittografato con il certificato predefinito per Red Hat OpenShift on IBM Cloud, puoi utilizzare il comando
create route.oc create route edge $MYPROJECT-https --service=$MYPROJECT --port=3000 - Per l'URL HOST HTTPS, esegui
oc get routes. Copiare e incollare URL con HTTPS (https://<HOST>) accanto alla rotta $MYPROJECT-https in un browser. Questa volta è possibile utilizzarehttpsnell' URL.
Monitora l'applicazione
In questa sezione, imparerai a monitorare l'integrità e le prestazioni della tua applicazione. OpenShift Container Platform viene fornito con uno stack di avvisi e di monitoraggio preconfigurato e di aggiornamento automatico.
- Da un terminale, eseguire il comando con l' URL del percorso per generare un carico. Il comando invierà senza fine richieste all'applicazione.
while sleep 1; do curl --max-time 2 -s http://$HOST/load/50; done - Nella console webOpenShift, passa alla vista Amministratore.
- In Observe, selezionare Metrics.
- Nella casella dell'espressione, immetti l'espressione di seguito, sostituisci
<MYPROJECT>con il nome del progetto e fai clic su Esegui query per vedere l'utilizzo della CPU del contenitore totale in secondi in un grafico.sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="<MYPROJECT>"}) by (container) - In Osservare, selezionare Dashboard.
- Fai clic sull'elenco a discesa Dashboard e seleziona Kubernetes / Compute Resources / Namespace (Workloads).
- Modifica Namespace nel tuo progetto.
- Impostare Intervallo di tempo su Ultimi 5 minuti.
- Controlla l'utilizzo della CPU e della memoria.
- Arrestare lo script precedente utilizzando
control+C. - Per la registrazione, puoi utilizzare il comando
oc logsincorporato. Controlla visualizzazione dei log per una risorsa per informazioni sull'utilizzo dioc logs.
Puoi anche eseguire il provisioning e utilizzare i servizi IBM Cloud Logs e IBM Cloud Monitoring per la registrazione e il monitoraggio della tua applicazione Red Hat OpenShift on IBM Cloud. Seguire le istruzioni indicate in questo link per impostare i componenti aggiuntivi di registrazione e monitoraggio per controllare lo stato del cluster.
Ridimensiona l'applicazione
In questa sezione si apprende come scalare manualmente e automaticamente l'applicazione.
Ridimensionamento manuale
- Puoi ottenere il ridimensionamento manuale dei tuoi pod con il comando
oc scale. Il comando imposta una nuova dimensione per una configurazione di distribuzione o un controller di replicaoc scale dc/$MYPROJECT --replicas=2 - Puoi visualizzare il provisioning di un nuovo pod eseguendo il comando
oc get pods. - Rieseguire il passo Monitoraggio per vedere le metriche aggiornate.
Ridimensionamento automatico
Puoi utilizzare un HPA (horizontal pod autoscaler - autoscaler di pod orizzontale) per specificare come Red Hat OpenShift on IBM Cloud dovrebbe aumentare o diminuire automaticamente la dimensione di una configurazione di distribuzione (dc)
o del controller della replica (rc), in base alle metriche raccolte dai pod che appartengono a tale dc o rc.
- Prima di poter configurare il ridimensionamento automatico dei tuoi pod, devi prima configurare dei limiti di risorse sui pod in esecuzione nel cluster. I limiti ti consentono di scegliere l'utilizzo di memoria e CPU minimo e massimo di
un pod. Puoi configurare i limiti e le richieste su un contenitore utilizzando il comando
oc set resources.Per verificare, eseguioc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mioc describe dc/$MYPROJECTe cercaLimitseRequests. - Per creare un autoscaler, devi eseguire il comando
oc autoscalecon i limiti inferiore (min) e superiore (max) per il numero di pod che possono essere impostati dall'autoscaler e l'utilizzo di CPU media di destinazione (rappresentato da una percentuale di CPU richiesta) su tutti i pod. Per i test, impostiamo--cpu-percental 5%.oc autoscale dc/$MYPROJECT \ --min=1 \ --max=5 \ --cpu-percent=5 - Rieseguire il passo Monitoraggio per generare il carico sull'applicazione.
- Puoi vedere i nuovi pod di cui viene eseguito il provisioning eseguendo il comando
oc get pods --watcho esaminando l'applicazione nella console web. - Rimuovi il scaler automatico:
oc delete hpa/$MYPROJECT
(Facoltativo) Crea e distribuisci l'immagine del contenitore in Container Registry
In questa sezione, imparerai come utilizzare un Container Registry per memorizzare le immagini del contenitore create.
IBM Cloud Container Registry fornisce un registro delle immagini privato a più tenant, altamente disponibile, scalabile e crittografato che viene ospitato e gestito da IBM. Puoi utilizzare IBM Cloud Container Registry configurando il tuo spazio dei nomi di immagini ed eseguendo il push delle immagini contenitore al tuo spazio dei nomi.
-
Per identificare il sito Container Registry URL, eseguire:
ibmcloud cr region -
Definite una variabile d'ambiente denominata
MYREGISTRYche punta al registro, come ad esempio:export MYREGISTRY=us.icr.io -
Scegli uno dei tuoi spazi dei nomi di registro esistenti o creane uno nuovo. Per elencare gli spazi dei nomi esistenti, utilizza:
ibmcloud cr namespacesPer creare un nuovo spazio dei nomi:
ibmcloud cr namespace-add <REGISTRY_NAMESPACE> -
Definisci una variabile di ambiente denominata
MYNAMESPACEche punta allo spazio dei nomi del registro:export MYNAMESPACE=<REGISTRY_NAMESPACE> -
Definire il nome di una variabile d'ambiente
API_KEYche punta a una chiave API IAM IBM Cloud:export API_KEY=<YOUR_API_KEY>Per creare una chiave API, fai riferimento al collegamento.
-
Per automatizzare l'accesso agli spazi dei nomi del tuo registro ed eseguire il push dell'immagine di contenitore builder generata a Container Registry, crea un segreto:
oc create secret docker-registry push-secret --docker-username=iamapikey --docker-password=$API_KEY --docker-server=$MYREGISTRY -
Copia e correggi il segreto di pull dell'immagine dal progetto
defaultal progetto:oc get secret all-icr-io -n default -o yaml | sed 's/default/'$MYPROJECT'/g' | oc -n $MYPROJECT create -f - -
Affinché il segreto di estrazione dell'immagine abbia effetto, è necessario aggiungerlo nell'account del servizio
default:oc secrets link serviceaccount/default secrets/all-icr-io --for=pull
Clona un'applicazione di esempio
In questa sezione, clonerai un repository GitHub che viene fornito con un file template e uno script shell per generare un file yaml dalle tue variabili di ambiente precedentemente create. Il file generato viene utilizzato per
creare un'immagine del contenitore, eseguire il push dell'immagine al registro del contenitore privato e distribuire una nuova applicazione.
- In un terminale, immetti il seguente comando per clonare il repository GitHub sulla tua macchina:
git clone https://github.com/IBM-Cloud/openshift-node-app - Passare alla directory dell'applicazione:
cd openshift-node-app
Aggiorna il file BuildConfig ed esegui il push dell'immagine del builder a Container Registry
In questo passo, esegui uno script per aggiornare le sezioni del file openshift.template.yaml e generare un nuovo file yaml che punta al tuo spazio dei nomi Container Registry.
-
Eseguire lo script bash riportato di seguito per aggiornare i segnaposto nel file
openshift.template.yamle generare il file openshift_private_registry.yaml../generate_yaml.sh use_private_registry -
Eseguire il comando di esportazione dall'output per impostare la variabile di ambiente
MYPROJECTesistente con il nuovo nome applicazione. Eseguireecho $MYPROJECTper visualizzare il nuovo nome applicazione. -
Facoltativamente, controllare il file
openshift_private_registry.yamlgenerato per vedere se tutti i segnaposto sono aggiornati con le rispettive variabili di ambiente. I seguenti sono 3 posti per fare un rapido controllo. È possibile passare alla sezione successiva. -
Facoltativo Individuare l'oggetto ImageStream con l'attributo name impostato sul progetto (
$MYPROJECT) e verificare se i segnaposto$MYREGISTRY,$MYNAMESPACEe$MYPROJECTnella definizionedockerImageRepositorydispecsono aggiornati- apiVersion: image.openshift.io/v1 kind: ImageStream metadata: annotations: openshift.io/generated-by: OpenShiftNewApp creationTimestamp: null labels: app: $MYPROJECT app.kubernetes.io/component: $MYPROJECT app.kubernetes.io/instance: $MYPROJECT name: $MYPROJECT spec: dockerImageRepository: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT lookupPolicy: local: false status: dockerImageRepository: ""Un flusso di immagini e le sue tag associate forniscono un'astrazione per fare riferimento alle immagini del contenitore all'interno di Red Hat OpenShift on IBM Cloud Container Platform
-
Facoltativo Controllare la sezione
specsottoBuildConfigper la serie di output da immettereDockerImagee i segnaposto innameaggiornati.spec: nodeSelector: null output: to: kind: DockerImage name: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest pushSecret: name: push-secretUna build è il processo di trasformazione dei parametri di input in un oggetto risultante. Molto spesso, il processo viene utilizzato per trasformare i parametri di input o il codice sorgente in un'immagine eseguibile. Un oggetto
BuildConfigè la definizione dell'intero processo di build. -
Facoltativo Ricercare
containers, controllareimageenamecontainers: - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest name: $MYPROJECT -
Se aggiornato, salva il file YAML.
Distribuisci l'applicazione utilizzando IBM Cloud Container Registry
In questa sezione, si distribuirà l'applicazione nel cluster utilizzando il file generato openshift_private_registry.yaml generato. Una volta distribuita, accederai all'applicazione creando un instradamento.
-
Creare una nuova applicazione OpenShift con un buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) usando lo yaml aggiornato.
oc apply -f openshift_private_registry.yaml -
Per verificare la creazione dell'immagine del contenitore del costruttore e il suo invio a Container Registry, eseguire il comando seguente.
oc logs -f bc/$PRIVREGNei log, dovresti vedere il seguente messaggio se l'immagine del contenitore viene inviata al registro del contenitore privato.
Pushing image us.icr.io/mods15/vmac-openshift-app-registry:latest ... Getting image source signatures Copying blob sha256:9d038e1c7afbe92c29313557c02110e8fb796818ebb78441c68929381103a94b Copying blob sha256:61c671f49591a059c9b6728a9f84c16f5b00126470112ee9c9f9e01dbbfcc3ea Copying blob sha256:e2787650308235c87eff7d2b88c3ab217e84b74a3fa9696103bd46bb99068c7a Copying blob sha256:dcef409117430ed9906a59ad0a3ea0752061fbf8a9e544f4edd77667a25d85ae Copying blob sha256:a1f889dd610c6510c7fc091a51c247463f3cc9a7c67bdc397c9632168808f7d2 Copying blob sha256:bd278801acd18ada10f43b732113a6fffc163011862ea6cde729f8dc59e64222 Copying blob sha256:2d6c03ed5d15be86cdef7d9c0c9fea40a3f6b89662bca59680d037074f52bb38 Copying blob sha256:fa2ef7f80d6fc9543f6eb472846931ed1cec2b5f776d1b67bcb1b9942e1a947e Copying blob sha256:ff5a4e4d3690ccc931900b63714d326cc53a58e644f8d0a4f06bf8c62f11c5c7 Copying config sha256:01aa1ebb7be74529867106100c4e699ca2ae87f8242460771527f772e6a3d174 Writing manifest to image destination Storing signatures Successfully pushed us.icr.io/mods15/vmac-openshift-app-registry@sha256:6847b889397704b9fb8c3122c84b505c3dc5f99a0669fb69f534d3504eec385d Push successful -
È possibile controllare lo stato dell'installazione e del servizio.
oc status -
Importare manualmente il flusso di immagini più recente per garantire che il deployment avvenga il più presto possibile.
oc import-image $PRIVREGÈ anche possibile utilizzare il comando se la distribuzione sta impiegando più tempo, fare riferimento a questo link per ulteriori informazioni.
-
Esponi il servizio per creare un nuovo instradamento.
oc expose service/$PRIVREG -
È possibile accedere all'applicazione tramite il dominio IBM. Eseguire il comando seguente per ottenere l' URL.
oc get route/$PRIVREG -
Copiate il valore dell'hostname sotto il valore HOST/PORT e incollate URL in un browser per vedere la vostra applicazione in azione su
http://<hostname>. Assicuratevi di utilizzarehttpnell' URL.Dovresti vedere la stessa applicazione esposta su una rotta differente e distribuita utilizzando l'immagine del contenitore memorizzata in un registro del contenitore privato.
(Facoltativo) Invia il codice a un repository IBM Cloud Git privato
In questo passo, si creerà un repository privato IBM Cloud Git e si eseguirà il push del codice dell'applicazione di esempio. Imparerete anche come costruire e distribuire automaticamente quando l'applicazione viene aggiornata.
Devi configurare una chiave SSH perché il push abbia esito positivo, controlla le istruzioni nelle sezioni Generate an SSH key pair e Add an SSH key to your GitLab account della documentazione qui
-
In un browser, apri IBM Cloud Git.
Il link precedente è per la regione
us-south. Per le altre regioni, eseguiibmcloud regionse sostituiscius-southnell'URL con il nome della regione. -
Fare clic su Nuovo progetto, fare clic su Crea progetto vuoto, quindi fornire
openshiftappcome nome del progetto. -
Impostare il Livello di visibilità su Privata.
-
In Configurazione progetto rimuovere il segno di spunta accanto a Inizializza repository con un README.
-
Fare clic su Crea progetto,
-
Segui le istruzioni riportate nelle sezioni Git global setup e Push an existing Git repository per configurare Git e per eseguire il push del codice dell'applicazione di esempio.
-
Una volta inviato il codice al repository privato, si dovrebbe vedere il codice di esempio nel progetto.
Crea un token di distribuzione Git
In questa sezione, si creerà un token di distribuzione Git per consentire l'accesso in sola lettura al repository.
Per generare un token di distribuzione:
- Nel pannello di navigazione della pagina Git repo, fare clic su Impostazioni > Repository.
- Fai clic su Expand accanto a Deploy Tokens.
- Nel campo Nome, immettere
foropenshifte quindi selezionare read_repository in Ambiti. Infine fai clic su Crea token di distribuzione. - Salvare il nome utente e la password generati per riferimento futuro.
- Nel campo Nome, immettere
- Nel pannello di navigazione, fare clic su Panoramica del progetto, quindi fare clic su Clone e copiare Clonare con HTTPS URL. Salva l'URL per riferimento futuro.
- Definire le variabili d'ambiente per il nome utente, la password e l' URL privato del repo Git, da usare con il file YAML più avanti nell'esercitazione
export GIT_TOKEN_USERNAME=<PRIVATE_GIT_DEPLOY_TOKEN_USERNAME> export GIT_TOKEN_PASSWORD=<PRIVATE_GIT_DEPLOY_TOKEN_PASSWORD> export REPO_URL=<PRIVATE_GIT_REPO_URL>
Distribuisci una nuova applicazione utilizzando il registro privato e il codice dal repository privato
-
Eseguire lo script bash riportato di seguito per aggiornare i segnaposto nel file
openshift.template.yamle generare il file openshift_private_repository.yaml../generate_yaml.sh use_private_repository -
Eseguire il comando di esportazione dall'output per impostare la variabile di ambiente
MYPROJECTesistente con il nuovo nome progetto. -
Oltre ai segnaposto del registro del contenitore privato, lo script sostituirà anche la specifica
REPO_URLinBuildConfigcon le variabili di ambiente impostate nel passo precedente,source: git: uri: $REPO_URL type: Git -
Creare una nuova applicazione openshift con un buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) utilizzando lo yaml aggiornato
oc apply -f openshift_private_repository.yaml -
È possibile controllare i log del builder.
oc logs -f bc/$PRIVREPO -
È possibile controllare lo stato dell'installazione e del servizio utilizzando.
oc status -
Importare manualmente il flusso di immagini più recente per garantire che il deployment avvenga il più presto possibile.
oc import-image $PRIVREPO -
Esponi il servizio per creare un nuovo instradamento.
oc expose service/$PRIVREPO -
È possibile accedere all'applicazione tramite il dominio IBM. Eseguire il comando seguente per ottenere l' URL.
oc get route/$PRIVREPO -
Copiate il valore dell'hostname sotto il valore HOST/PORT e incollate URL in un browser per vedere la vostra applicazione in azione su
http://<hostname>. Assicuratevi di utilizzarehttpnell' URL.Una nuova applicazione viene distribuita utilizzando il codice dal repository Git privato e l'immagine contenitore dallo spazio dei nomi del registro privato.
Aggiornare l'applicazione e distribuirla nuovamente
In questo passo, automatizzerai il processo di creazione e distribuzione. Ogni volta che aggiorni l'applicazione ed esegui il push delle modifiche al repository privato, viene eseguita una nuova build che genera una nuova versione dell'immagine del contenitore. Questa immagine viene quindi distribuita automaticamente.
-
Creerai un nuovo trigger Webhook GitLab. I trigger Webhook ti consentono di attivare una nuova build inviando una richiesta all'endpoint API Red Hat OpenShift on IBM Cloud Container Platform. Puoi definire questi trigger utilizzando GitHub, GitLab, Bitbucket o webhook generici.
oc set triggers bc $PRIVREPO --from-gitlab -
Per aggiungere un webhook sul repository GitLab, hai bisogno di un URL e di un segreto
- Per l'URL GitLab del webhook:
oc describe bc/$PRIVREPO | grep -A 1 "GitLab" - Per il segreto che deve essere passato nell'URL del webhook:
oc get bc/$PRIVREPO -o yaml | grep -A 3 "\- gitlab" - Sostituire
<secret>nel webhook GitLab URL con il valore segreto sotto gitlab nell'output del comando precedente.
- Per l'URL GitLab del webhook:
-
Aprire il repo git privato in un browser utilizzando il link Git repo HTTPS, quindi fare clic su Impostazioni e su Webhook.
-
Incollare l'URL, selezionare Eventi push come trigger e fare clic su Aggiungi webhook. Dovrebbe essere visualizzato il messaggio
Webhook was created. -
Aggiorna l'ImagePolicy del flusso di immagini per eseguire una query su Container Registry a un intervallo pianificato per sincronizzare i metadati di tag e immagine. Questa operazione aggiornerà la definizione di
tagsoc tag $MYREGISTRY/$MYNAMESPACE/${PRIVREPO}:latest ${PRIVREPO}:latest --scheduled=true -
Aprire il repository clonato in un IDE per aggiornare il tag
h1del file locale public/index.html e cambiarlo inCongratulations! <insert your name>. -
Salvare e inviare il codice al repository.
git add public/index.htmlgit commit -m "Updated with my name"git push -u origin master -
Puoi controllare l'avanzamento della creazione e della distribuzione con il comando
oc status. Una volta completata la distribuzione, aggiorna l'indirizzo HOST dell'instradamento per visualizzare l'applicazione web aggiornata.A volte, la distribuzione può richiedere fino a 15 minuti per importare il flusso di immagini più recente. È possibile attendere o importare manualmente con il comando
oc import-image $PRIVREPO. Per ulteriori informazioni, fare riferimento a questo link.
(Facoltativo) Utilizzare un dominio personalizzato
Questa sezione richiede che tu sia il proprietario di un dominio personalizzato e che tu possa modificare i record DNS del dominio. Dovrai creare un record CNAME che punta al dominio fornito da IBM.
La procedura per configurare il record CNAME varia a seconda del tuo provider DNS. Nella sezione DNS Management/Zone del tuo dominio, aggiungi un nuovo record CNAME, imposta Host(name) su openshiftapp o su qualsiasi dominio secondario che preferisci e imposta Points to sul dominio fornito da IBM senza HTTP o HTTPS
Con HTTP
- Creare una rotta che esponga il servizio a un nome di host, sostituendo
<HOSTNAME>con il proprio nome di host (ad esempio, www.example.com o openshiftapp.example.com ), in modo che i client esterni possano raggiungerlo per nome.oc expose svc/$PRIVREPO --hostname=<HOSTNAME> --name=$PRIVREPO-domain --port=3000 - Accedete alla vostra domanda su
http://<HOSTNAME>/
Con HTTPS
- Per creare un percorso HTTPS protetto, è possibile utilizzare il proprio certificato e i file delle chiavi di una CA come Let's Encrypt oppure ordinarli tramite Secrets Manager.
Passali con il comando
create routeQui, hai utilizzato la terminazione Edge. Per ulteriori informazioni su altri tipi di terminazione e altri instradamenti protetti come passthrough e ricrittografia, esegui il comandooc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000oc create route --help
Rimuovi le risorse
-
Eliminare tutti gli oggetti risorsa specifici di una applicazione:
oc delete all --selector app=$PRIVREPO oc delete all --selector app=$PRIVREG oc delete all --selector app=$MYPROJECTPer elencare i nomi applicazione nel progetto, eseguire
oc get svc | awk '{print $1}' -
Elimina il progetto:
oc delete project $MYPROJECT -
Eliminare il repository dell'applicazione:
- Nel pannello di navigazione della pagina del repository Git, fai clic su Settings > General.
- Fare clic su Espandi accanto a Avanzate.
- Fare clic su Elimina progetto e confermare l'eliminazione del progetto.
-
Elimina le immagini del container da Container Registry:
- Utilizzando il tuo browser, passa alla pagina dei repository per Container Registry.
- Selezionare le immagini create come parte di questa esercitazione ed eliminarle.
-
Elimina il cluster che hai creato.