Aplicación web escalable en Red Hat OpenShift on IBM Cloud
Esta guía de aprendizaje puede incurrir en costes. Utilice Estimador de costes para generar una estimación del coste basada en el uso previsto.
Este tutorial le guiará a través de cómo desplegar una aplicación a un Red Hat OpenShift on IBM Cloud cluster desde un repositorio remoto Git, exponer la aplicación en una ruta, monitorizar la salud del entorno y escalar la aplicación. Además, aprenderá a utilizar un registro de contenedores privado, desplegar una aplicación desde un repositorio privado de Git y vincular un dominio personalizado a la aplicación.
Con Red Hat OpenShift on IBM Cloud, puede crear clústeres de Kubernetes con nodos trabajadores que se proporcionan instalados con OpenShift Container Platform. Para más información sobre la arquitectura de OpenShift Container Platform, consulte la documentación de Red Hat OpenShift. Obtiene todas las ventajas de un servicio gestionado para el clúster.
Objetivos
- Despliegue de una aplicación en el clúster de Red Hat OpenShift on IBM Cloud.
- Enlace de un dominio personalizado.
- Supervisión de los registros y del estado del clúster.
- Escalado de pods de Red Hat OpenShift on IBM Cloud.

- El desarrollador despliega una aplicación web utilizando el código de un repositorio Git remoto. Opcionalmente, el desarrollador también puede enviar el código a un repositorio privado de Git en IBM Cloud.
- A partir del código se construye una imagen de contenedor.
- La imagen se envía a un registro de contenedores local que viene con el clúster o a un espacio de nombres en IBM Cloud Container Registry.
- La aplicación se despliega en un clúster Red Hat OpenShift on IBM Cloud extrayendo la imagen.
- Los usuarios acceden a la aplicación a través de una ruta pública.
Antes de empezar
Esta guía de aprendizaje requiere:
- CLI de IBM Cloud,
- plugin de IBM Cloud Kubernetes Service (
kubernetes-service
), - (opcional) Container Registry plugin (
container-registry
)
- plugin de IBM Cloud Kubernetes Service (
- Motor de Docker,
oc
para interactuar con Red Hat OpenShift on IBM Cloud,git
para clonar el repositorio de código fuente,- (opcional) IBM Cloud GitLab configurado con su clave SSH. Consulte las instrucciones en las secciones
Generate an SSH key pair
yAdd an SSH key to your GitLab account
de la documentación de aquí
Encontrará instrucciones para descargar e instalar estas herramientas para su entorno operativo en la guía de Iniciación a las guías de aprendizaje.
Para evitar tener que instalar estas herramientas, también puede utilizar Cloud Shell desde la consola de IBM Cloud. Utilice oc version
para asegurarse de que la versión de la CLI de Red Hat OpenShift on IBM
Cloud coincide con la versión del clúster (4.13.x
). Si no coinciden, instale la versión coincidente siguiendo estas instrucciones.
Creación de un clúster de Red Hat OpenShift on IBM Cloud
Con Red Hat OpenShift on IBM Cloud, dispone de una forma rápida y segura de contenerizar e implantar cargas de trabajo empresariales en clústeres de Kubernetes. Los clústeres de Red Hat OpenShift on IBM Cloud se basan en la orquestación de contenedores de Kubernetes, que ofrece coherencia y flexibilidad para sus operaciones del ciclo de vida de desarrollo.
En esta sección, suministrará un clúster de Red Hat OpenShift on IBM Cloud en una (1) zona con dos (2) nodos trabajadores:
- Cree un clúster de Red Hat OpenShift on IBM Cloud desde el catálogo de IBM Cloud®.
- En Infraestructura, elija VPC o Clásico,
- Para Red Hat OpenShift on IBM Cloud en una infraestructura VPC, es necesario crear una VPC y una subred antes de crear el clúster. Cree o utilice una VPC existente teniendo en cuenta los siguientes requisitos:
- Una subred que se puede utilizar para esta guía de aprendizaje. Tome nota de la zona y el nombre de esa subred.
- Hay una pasarela pública conectada a la subred. Para obtener más detalles, consulte Creación de clústeres de VPC.
- Para Red Hat OpenShift on IBM Cloud en una infraestructura VPC, es necesario crear una VPC y una subred antes de crear el clúster. Cree o utilice una VPC existente teniendo en cuenta los siguientes requisitos:
- En Ubicación:
- Para Red Hat OpenShift on IBM Cloud en la infraestructura de VPC
- Desmarque las zonas y subredes no aplicables.
- En la zona deseada, verifique el nombre de subred deseado y, si no está presente, pulse el lápiz de edición para seleccionar el nombre de subred deseado
- Para Red Hat OpenShift on IBM Cloud en la infraestructura clásica:
- Seleccione un Grupo de recursos.
- Seleccione una Geografía.
- Seleccione Zona única como Disponibilidad.
- Elija una zona Trabajador.
- Para obtener más detalles, consulte las instrucciones Creación de clústeres clásicos.
- Para Red Hat OpenShift on IBM Cloud en la infraestructura de VPC
- Establezca la versión de OpenShift en 4.13.x (Nota: si elige utilizar una versión de 4.15.xx y superior, debe desactivar la protección del tráfico de salida).
- Seleccione su licencia deOpenShift Container Platform (OCP).
- En Agrupación de nodos trabajadores,
- Seleccione 4 vCPU y 16GB de memoria como tipo.
- Seleccione 2 nodos de Trabajador por centro de datos para este tutorial (si seleccionó infraestructura clásica: Deje Cifrar disco local ).
- En Detalles de clúster:
- Establezca el nombre del clúster en
myopenshiftcluster
. - Seleccione un Grupo de recursos (si ha seleccionado infraestructura de VPC).
- Establezca el nombre del clúster en
- Pulse Crear clúster para suministrar un clúster de Red Hat OpenShift on IBM Cloud.
Anote el grupo de recursos seleccionado anteriormente. Este grupo de recursos se utilizará para todos los recursos de este lab.
Configurar la CLI
En este paso, configurará oc
para que haga referencia al clúster que acaba de crear. La CLI de Red Hat OpenShift on IBM Cloud Container Platform expone comandos para gestionar sus aplicaciones, así como herramientas de nivel inferior para interactuar con cada componente de su sistema. La CLI está disponible utilizando el mandato oc
.
- Cuando el clúster esté listo, haga clic en OpenShift web console para abrir la consola.
- En la consola web, en el menú desplegable de la parte superior derecha de la página, pulse Copiar mandato de inicio de sesión y luego pulse el enlace Visualizar señal.
- Copie el texto que aparece en Iniciar sesión con este token.
- Una vez iniciada la sesión con el comando
oc login
, ejecute el siguiente comando para ver todos los espacios de nombres de su clúster.oc get ns
Creación de una nueva aplicación Red Hat OpenShift on IBM Cloud
En esta sección, creará un proyecto Red Hat OpenShift on IBM Cloud y, a continuación, desplegará una aplicación desde un repositorioGitHub. El código para esta aplicación es una página de destino simple de Node.js y dos puntos finales de API para empezar. Siempre puede ampliar esta aplicación basándose en sus propios requisitos de exploración.
Crear un proyecto
Un espacio de nombres de Kubernetes proporciona un mecanismo para definir el ámbito de los recursos de un clúster. En Red Hat OpenShift on IBM Cloud, un proyecto es un espacio de nombres de Kubernetes con anotaciones adicionales.
- Defina una variable de entorno denominada
MYPROJECT
y establezca el nombre de la aplicación sustituyendo<your-initials>
por sus propias iniciales:export MYPROJECT=<your-initials>-openshiftapp
- Cree un proyecto nuevo.
Después de crear un proyecto utilizando el mandato anterior, se conmuta automáticamente a dicho proyecto y todos los mandatos siguientes se ejecutan en el contexto de dicho proyecto. Si necesita conmutar proyectos o volver a ese proyecto en una etapa posterior, utilice el mandatooc new-project $MYPROJECT
oc project $MYPROJECT
.
Despliegue una aplicación
Con el mandato oc new-app
puede crear aplicaciones a partir del código fuente en un repositorio Git local o remoto.
-
Cree una aplicación utilizando la estrategia de compilación de
docker
para crear una imagen de contenedor desde un archivo Dockerfile en el repositorio. Está estableciendo el nombre de la aplicación en el nombre del proyecto para simplificar.oc new-app https://github.com/IBM-Cloud/openshift-node-app --name=$MYPROJECT --strategy=docker --as-deployment-config
Si existe un archivo Jenkins en el directorio de contexto raíz especificado del repositorio de origen al crear una nueva aplicación, Red Hat OpenShift on IBM Cloud genera una estrategia de compilación de
pipeline
. De lo contrario, genera una estrategia de compilaciónsource
. Siempre puede alterar temporalmente la estrategia de compilación estableciendo el distintivo--strategy
. -
Para comprobar la creación de la imagen del contenedor builder y su envío a la página interna Red Hat OpenShift on IBM Cloud Container Registry (OCR), ejecute el siguiente comando.
oc logs -f buildconfig/$MYPROJECT
El clúster se configura con el Red Hat OpenShift on IBM Cloud Container Registry interno para que Red Hat OpenShift on IBM Cloud pueda crear, desplegar y gestionar automáticamente el ciclo de vida de la aplicación desde dentro del clúster.
-
Espere a que la compilación se realice correctamente y se envíe la imagen. Puede comprobar el estado del despliegue y el servicio ejecutando el mandato siguiente.
oc status
Acceda a la aplicación a través del dominio IBM proporcionado
Para acceder a la aplicación, es necesario crear una ruta. Una ruta anuncia su servicio al mundo.
-
Cree una ruta ejecutando el siguiente comando en un terminal.
oc expose service/$MYPROJECT
-
Puede acceder a la aplicación a través de un dominio proporcionado por IBM. Ejecute el siguiente comando para obtener la URL.
oc get route/$MYPROJECT
-
Copie el valor del nombre de host en el valor HOST/PORT y pegue el URL en un navegador para ver su aplicación en acción en
http://<hostname>
. Asegúrese de utilizarhttp
en la URL. -
Establece una variable de entorno que apunte al nombre de host.
export HOST=<hostname>
Proteger la ruta de dominio predeterminada proporcionada por IBM
- Para crear una ruta HTTPS segura cifrada con el certificado predeterminado para Red Hat OpenShift on IBM Cloud, puede utilizar el mandato
create route
.oc create route edge $MYPROJECT-https --service=$MYPROJECT --port=3000
- Para el URL de HOST HTTPS, ejecute
oc get routes
. Copie y pegue el URL con HTTPS (https://<HOST>
) junto a la ruta $MYPROJECT-https en un navegador. Esta vez puede utilizarhttps
en la URL.
Supervisar la app
En esta sección, aprenderá a supervisar el estado y el rendimiento de la aplicación. OpenShift Container Platform se suministra con una pila de alertas y supervisión preconfigurada y de autoactualización.
- Desde un terminal, ejecute el comando con la URL la ruta para generar una carga. El mandato enviará indefinidamente solicitudes a la aplicación.
while sleep 1; do curl --max-time 2 -s http://$HOST/load/50; done
- En la consola web deOpenShift, cambie a la vista Administrador.
- En Observar, seleccione Métricas.
- En el recuadro de expresión, especifique la expresión siguiente, sustituya
<MYPROJECT>
por el nombre de proyecto y pulse Ejecutar consultas para ver el uso total de CPU de contenedor en segundos en un gráfico.sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="<MYPROJECT>"}) by (container)
- En Observar, seleccione Paneles de control.
- Pulse el desplegable Panel de control y seleccione Kubernetes /Compute Resources/Namespace (Workloads).
- Cambie Espacio de nombres por el proyecto.
- Establezca Rango de tiempo en Últimos 5 minutos.
- Compruebe el uso de CPU y memoria.
- Detenga el script anterior utilizando
control+C
. - Para el registro, puede utilizar el mandato
oc logs
incorporado. Compruebe los registros de visualización de un recurso para conocer el uso deoc logs
.
También puede suministrar y utilizar los servicios IBM Cloud Logs y IBM Cloud Monitoring para registrar y supervisar su aplicación Red Hat OpenShift on IBM Cloud. Siga las instrucciones indicadas en este enlace para configurar los complementos de registro y supervisión para supervisar el estado del clúster.
Escalar la app
En esta sección, aprenderá a escalar manual y automáticamente la aplicación.
Escalado manual
- Puede lograr el escalado manual de los pods con el mandato
oc scale
. El mandato establece un nuevo tamaño para un controlador de réplica o una configuración de despliegueoc scale dc/$MYPROJECT --replicas=2
- Puede ver que se suministra un nuevo pod ejecutando el mandato
oc get pods
. - Vuelva a ejecutar el paso Supervisión para ver las métricas actualizadas.
Escalado automático
Puede utilizar un escalado automático de pod horizontal (HPA) para especificar cómo Red Hat OpenShift on IBM Cloud debe aumentar o disminuir automáticamente la escala de una configuración de despliegue (dc) o un controlador de réplica (rc),
en función de las métricas recopiladas de los pods que pertenecen a dicha dc
o rc
.
- Antes de poder configurar el escalado automático de los pods, primero tiene que establecer límites de recursos en los pods que se ejecutan en el clúster. Los límites le permiten elegir el uso de memoria y de CPU mínimo y máximo para un pod.
Puede establecer los límites y las solicitudes de un contenedor mediante el mandato
oc set resources
.
Para verificarlo, ejecuteoc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mi
oc describe dc/$MYPROJECT
y busqueLimits
yRequests
. - Para crear un escalador automático, debe ejecutar el mandato
oc autoscale
con los límites inferior (mín.) y superior (máx.) del número de pods que puede establecer el escalador automático y el promedio de utilización de CPU de destino (representado como un porcentaje de CPU solicitada) en todos los pods. Para las pruebas, se establece--cpu-percent
en el 5%.oc autoscale dc/$MYPROJECT \ --min=1 \ --max=5 \ --cpu-percent=5
- Vuelva a ejecutar el paso Supervisión para generar carga en la aplicación.
- Puede ver los nuevos pods que se suministran ejecutando el mandato
oc get pods --watch
o consultando la aplicación en la consola web. - Elimine el escalador automático:
oc delete hpa/$MYPROJECT
(Opcional) Crear y enviar la imagen del contenedor a Container Registry
En esta sección, aprenderá a utilizar un Container Registry privado remoto para almacenar las imágenes de contenedor creadas.
IBM Cloud Container Registry proporciona un registro de imágenes privado, cifrado, multiarrendatario, escalable y de alta disponibilidad que IBM aloja y gestiona. Puede utilizar IBM Cloud Container Registry configurando su propio espacio de nombres de imágenes y enviando las imágenes del contenedor al espacio de nombres.
-
Para identificar su Container Registry URL, ejecute:
ibmcloud cr region
-
Defina una variable de entorno llamada
MYREGISTRY
que apunte al registro como:export MYREGISTRY=us.icr.io
-
Elija uno de los espacios de nombres de registro existentes o cree uno nuevo. Para ver una lista de los espacios de nombres existentes, utilice:
ibmcloud cr namespaces
Para crear un espacio de nombres nuevo:
ibmcloud cr namespace-add <REGISTRY_NAMESPACE>
-
Defina una variable de entorno llamada
MYNAMESPACE
que apunte al espacio de nombres de registro:export MYNAMESPACE=<REGISTRY_NAMESPACE>
-
Defina un nombre de variable de entorno
API_KEY
que apunte a una clave de API de IAM de IBM Cloud:export API_KEY=<YOUR_API_KEY>
Para crear una clave de API, consulte este enlace.
-
Para automatizar el acceso a los espacios de nombres del registro y enviar la imagen de contenedor del compilador generada a Container Registry, cree un secreto:
oc create secret docker-registry push-secret --docker-username=iamapikey --docker-password=$API_KEY --docker-server=$MYREGISTRY
-
Copie y parchee el secreto de extracción de imágenes del proyecto
default
en su proyecto:oc get secret all-icr-io -n default -o yaml | sed 's/default/'$MYPROJECT'/g' | oc -n $MYPROJECT create -f -
-
Para que el secreto de extracción de imágenes surta efecto, debe añadirlo en la cuenta de servicio
default
:oc secrets link serviceaccount/default secrets/all-icr-io --for=pull
Clonar una aplicación de ejemplo
En esta sección, clonará un repositorio GitHub que se suministra con un archivo de plantilla y un script de shell para generar un archivo yaml
a partir de las variables de entorno creadas anteriormente. El archivo generado se
utiliza para crear una imagen de contenedor, enviar la imagen al registro privado de contenedores y desplegar una nueva aplicación.
- En un terminal, ejecute el siguiente comando para clonar el repositorio GitHub en su máquina:
git clone https://github.com/IBM-Cloud/openshift-node-app
- Cambie al directorio de la aplicación:
cd openshift-node-app
Actualizar BuildConfig y enviar la imagen de compilador a Container Registry
En este paso, ejecutará un script para actualizar las secciones del archivo openshift.template.yaml
y generar un nuevo archivo yaml
que apunte al espacio de nombres Container Registry.
-
Ejecute el script bash siguiente para actualizar los marcadores en el archivo
openshift.template.yaml
y para generar el archivo openshift_private_registry.yaml../generate_yaml.sh use_private_registry
-
Ejecute el mandato de exportación desde la salida para establecer la variable de entorno
MYPROJECT
existente con el nuevo nombre de aplicación. Ejecuteecho $MYPROJECT
para ver el nuevo nombre de aplicación. -
Opcionalmente, compruebe el archivo
openshift_private_registry.yaml
generado para ver si todos los marcadores se actualizan con las variables de entorno respectivas. A continuación se indican 3 lugares donde realizar una comprobación rápida. Puede saltar a la siguiente sección. -
Opcional Localice el objeto ImageStream con el atributo name establecido en su proyecto (
$MYPROJECT
) y compruebe si los marcadores de posición$MYREGISTRY
,$MYNAMESPACE
, y$MYPROJECT
bajodockerImageRepository
definición despec
están actualizados- 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: ""
Una secuencia de imagen y sus etiquetas asociadas proporcionan una abstracción para hacer referencia a imágenes de contenedor desde dentro de Red Hat OpenShift on IBM Cloud Container Platform
-
Opcional Compruebe el valor
spec
en la secciónBuildConfig
para la salida establecido en un tipo deDockerImage
así como los marcadores actualizados enname
.spec: nodeSelector: null output: to: kind: DockerImage name: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest pushSecret: name: push-secret
Una compilación es el proceso de transformar parámetros de entrada en un objeto resultante. La mayoría de las veces, el proceso se utiliza para transformar parámetros de entrada o código fuente en una imagen ejecutable. Un objeto
BuildConfig
es la definición del proceso completo de compilación. -
Opcional Busque
containers
, compruebe laimage
y elname
containers: - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest name: $MYPROJECT
-
Si se actualiza, guarde el archivo YAML.
Despliegue la aplicación utilizando el IBM Cloud Container Registry
En esta sección, desplegará la aplicación en el clúster utilizando el archivo openshift_private_registry.yaml generado. Una vez desplegada, accederá a la aplicación creando una ruta.
-
Cree una nueva aplicación OpenShift junto con un buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) utilizando el yaml actualizado.
oc apply -f openshift_private_registry.yaml
-
Para comprobar la creación de la imagen del contenedor builder y su envío a Container Registry, ejecute el siguiente comando.
oc logs -f bc/$PRIVREG
En los registros, debería ver el siguiente mensaje si la imagen del contenedor se envía al registro de contenedores privados.
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
-
Puede comprobar el estado del despliegue y del servicio.
oc status
-
Importe manualmente el flujo de imágenes más reciente para garantizar que la implantación tenga lugar lo antes posible.
oc import-image $PRIVREG
También puede utilizar el comando si el despliegue está tomando más tiempo, consulte este enlace para obtener más información.
-
Exponga el servicio para crear una nueva ruta.
oc expose service/$PRIVREG
-
Puede acceder a la aplicación a través del dominio IBM proporcionado. Ejecute el siguiente comando para obtener la URL.
oc get route/$PRIVREG
-
Copie el valor del nombre de host en el valor HOST/PORT y pegue el URL en un navegador para ver su aplicación en acción en
http://<hostname>
. Asegúrese de utilizarhttp
en la URL.Debería ver la misma aplicación expuesta en una ruta distinta y desplegada utilizando la imagen de contenedor almacenada en un registro de contenedor privado.
(Opcional) Envíe el código a un repositorio de IBM Cloud Git privado
En este paso, crearás un repositorio privado IBM Cloud Git y empujarás el código de la aplicación de ejemplo. También aprenderá a compilar y volver a desplegar automáticamente cuando se actualice la aplicación.
Es necesario configurar una clave SSH para que el push se realice correctamente, revise las instrucciones en las secciones Generate an SSH key pair
y Add an SSH key to your GitLab account
de la documentación aquí
-
En un navegador, abra IBM Cloud Git.
El enlace anterior es para la región
us-south
. Para otras regiones, ejecuteibmcloud regions
y sustituyaus-south
en el URL por el nombre de región. -
Pulse Nuevo proyecto, pulse Crear proyecto en blanco y, a continuación, proporcione
openshiftapp
como nombre de proyecto. -
Establezca el Nivel de visibilidad en Privado.
-
En Configuración de proyecto, elimine la marca de selección situada junto a Inicializar repositorio con un README.
-
Haga clic en Crear proyecto,
-
Siga las instrucciones de las secciones Configuración global de Git y Empujar un repositorio existente de Git para configurar Git y empujar el código de la aplicación de ejemplo.
-
Una vez que empuje el código al repositorio privado, debería ver el código de ejemplo en el proyecto.
Crear una señal de despliegue de Git
En esta sección, va a crear una señal de despliegue de Git para permitir el acceso de solo lectura al repositorio.
Para generar una señal de despliegue:
- En el panel de navegación de la página Git repo, haga clic en Configuración > Repositorio.
- Pulse sobre Expandir, junto a Señales de despliegue.
- En el campo Nombre, escriba
foropenshift
y, a continuación, seleccione read_repository bajo Ámbitos. Por último, pulse Crear señal de despliegue. - Guarde el nombre de usuario y la contraseña que se han generado para futuras referencias.
- En el campo Nombre, escriba
- En el panel de navegación, haga clic en Visión general del proyecto, luego en Clonar y copie Clonar con HTTPS URL. Guarde el URL para hacer referencia al mismo en el futuro.
- Defina las variables de entorno para el nombre de usuario, la contraseña y el URL del repositorio Git que se van a utilizar con el archivo YAML más adelante en esta guía de aprendizaje
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>
Desplegar una nueva aplicación utilizando el registro privado y el código del repositorio privado
-
Ejecute el script bash siguiente para actualizar los marcadores en el archivo
openshift.template.yaml
y para generar el archivo openshift_private_repository.yaml../generate_yaml.sh use_private_repository
-
Ejecute el mandato de exportación de la salida para establecer la variable de entorno
MYPROJECT
existente con el nuevo nombre de proyecto. -
Además de los marcadores del registro de contenedor privado, el script también sustituirá el
REPO_URL
bajo la especificaciónBuildConfig
por las variables de entorno establecidas en el paso anterior,source: git: uri: $REPO_URL type: Git
-
Crear una nueva aplicación openshift junto con un buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) utilizando el yaml actualizado
oc apply -f openshift_private_repository.yaml
-
Puede comprobar los registros del constructor.
oc logs -f bc/$PRIVREPO
-
Puede comprobar el estado del despliegue y del servicio utilizando.
oc status
-
Importe manualmente el flujo de imágenes más reciente para garantizar que la implantación tenga lugar lo antes posible.
oc import-image $PRIVREPO
-
Exponga el servicio para crear una nueva ruta.
oc expose service/$PRIVREPO
-
Puede acceder a la aplicación a través del dominio IBM proporcionado. Ejecute el siguiente comando para obtener la URL.
oc get route/$PRIVREPO
-
Copie el valor del nombre de host en el valor HOST/PORT y pegue el URL en un navegador para ver su aplicación en acción en
http://<hostname>
. Asegúrese de utilizarhttp
en la URL.Se despliega una nueva aplicación utilizando el código del repositorio Git privado y la imagen de contenedor del espacio de nombres del registro privado.
Actualice la aplicación y vuelva a desplegarla
En este paso, automatizará el proceso de compilación y despliegue. Siempre que actualice la aplicación y envíe los cambios al repositorio privado, se ejecutará una nueva compilación generando una nueva versión de la imagen de contenedor. A continuación, esta imagen se despliega automáticamente.
-
Creará un nuevo desencadenante de Webhook GitLab. Los desencadenantes de webhook le permiten desencadenar una nueva compilación enviando una solicitud al punto final de API de Red Hat OpenShift on IBM Cloud Container Platform. Puede definir estos desencadenantes utilizando webhooks de GitHub, GitLab, Bitbucket o genéricos.
oc set triggers bc $PRIVREPO --from-gitlab
-
Para añadir un webhook en el repositorio GitLab, necesita un URL y un secreto
- Para el URL de GitLab del webhook,
oc describe bc/$PRIVREPO | grep -A 1 "GitLab"
- Para el secreto que se debe pasar en el URL del webhook,
oc get bc/$PRIVREPO -o yaml | grep -A 3 "\- gitlab"
- Sustituya
<secret>
en el URL de webhook de GitLab con el valor del secreto bajo gitlab en la salida del mandato anterior.
- Para el URL de GitLab del webhook,
-
Abra su repositorio git privado en un navegador utilizando el enlace Git repo HTTPS luego haga clic en Configuración y haga clic en Webhooks.
-
Pega la URL, selecciona Push events como Trigger y haz click en Add webhook. Debería ver el mensaje
Webhook was created
. -
Actualice la política de imagen (ImagePolicy) de la secuencia de imágenes para consultar Container Registry en un intervalo planificado para sincronizar los metadatos de etiqueta y de imagen. Esto actualizará la definición de
tags
oc tag $MYREGISTRY/$MYNAMESPACE/${PRIVREPO}:latest ${PRIVREPO}:latest --scheduled=true
-
Abra el repositorio clonado en un IDE para actualizar la etiqueta
h1
del archivo local public/index.html y cambiarla porCongratulations! <insert your name>
. -
Guarda el código y envíalo al repositorio.
git add public/index.html
git commit -m "Updated with my name"
git push -u origin master
-
Puede comprobar el progreso de la compilación y despliegue con el mandato
oc status
. Una vez que el despliegue se haya realizado correctamente, renueve la dirección de HOST de ruta para ver la app web actualizada.A veces, es posible que el despliegue tarde hasta 15 minutos en importar la secuencia de imágenes más reciente. Puede esperar o importar manualmente utilizando el comando
oc import-image $PRIVREPO
. Consulte este enlace para obtener más información.
(Opcional) Utilizar su propio dominio personalizado
Esta sección requiere que sea propietario de un dominio personalizado y que sea capaz de modificar los registros DNS del dominio. Necesitará crear un registro CNAME
que apunte al dominio proporcionado por IBM.
Los pasos para configurar el registro CNAME varían en función del proveedor de DNS. Bajo Gestión de DNS/Zona del dominio, añada un nuevo registro de CNAME
, establezca Host (nombre) en openshiftapp
o
cualquier subdominio que desee y establezca Puntos en en el dominio proporcionado por IBM sin HTTP ni HTTPS
Con HTTP
- Cree una ruta que exponga el servicio en un nombre de host sustituyendo
<HOSTNAME>
por su nombre de host (por ejemplo, www.example.com u openshiftapp.example.com), para que los clientes externos puedan acceder al mismo por su nombre.oc expose svc/$PRIVREPO --hostname=<HOSTNAME> --name=$PRIVREPO-domain --port=3000
- Acceda a su aplicación en
http://<HOSTNAME>/
Con HTTPS
- Para crear una ruta HTTPS segura, puede utilizar su propio certificado y archivos de claves de una CA como Let's Encrypt o solicítelo a través de Secrets Manager.
Páselos con el mandato
create route
Aquí, ha utilizado la terminación de Edge. Para obtener información sobre otras rutas seguras y otros tipos de terminación como paso a través y recifrado, ejecute el mandatooc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000
oc create route --help
.
Eliminación de recursos
-
Suprimir todos los objetos de recurso específicos de una aplicación:
oc delete all --selector app=$PRIVREPO oc delete all --selector app=$PRIVREG oc delete all --selector app=$MYPROJECT
Para listar los nombres de aplicación en el proyecto, ejecute
oc get svc | awk '{print $1}'
-
Suprima el proyecto:
oc delete project $MYPROJECT
-
Suprima el repositorio de aplicaciones:
- En el panel de navegación de la página de repositorio Git, pulse Valores > General.
- Pulse Expandir junto a Avanzado.
- Pulse Suprimir proyecto y confirme la supresión del proyecto.
-
Suprimir imágenes de contenedor de Container Registry:
- Utilizando el navegador, vaya a la página de repositorios de Container Registry.
- Seleccione las imágenes creadas como parte de esta guía de aprendizaje y suprímalas.
-
Suprima el clúster que ha creado.