IBM Cloud Docs
Aplicación web escalable en Red Hat OpenShift on IBM Cloud

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.

de arquitectura del

  1. 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.
  2. A partir del código se construye una imagen de contenedor.
  3. 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.
  4. La aplicación se despliega en un clúster Red Hat OpenShift on IBM Cloud extrayendo la imagen.
  5. 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)
  • 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 y Add 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.

Además, configure un espacio de nombres de registro.

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:

  1. Cree un clúster de Red Hat OpenShift on IBM Cloud desde el catálogo de IBM Cloud®.
  2. 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.
  3. 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.
  4. 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).
  5. Seleccione su licencia deOpenShift Container Platform (OCP).
  6. 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 ).
  7. En Detalles de clúster:
    • Establezca el nombre del clúster en myopenshiftcluster.
    • Seleccione un Grupo de recursos (si ha seleccionado infraestructura de VPC).
  8. 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.

  1. Cuando el clúster esté listo, haga clic en OpenShift web console para abrir la consola.
  2. 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.
  3. Copie el texto que aparece en Iniciar sesión con este token.
  4. 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.

  1. 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
    
  2. Cree un proyecto nuevo.
    oc new-project $MYPROJECT
    
    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 mandato 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.

  1. 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ón source. Siempre puede alterar temporalmente la estrategia de compilación estableciendo el distintivo --strategy.

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

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

  1. Cree una ruta ejecutando el siguiente comando en un terminal.

    oc expose service/$MYPROJECT
    
  2. 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
    
  3. 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 utilizar http en la URL.

  4. Establece una variable de entorno que apunte al nombre de host.

    export HOST=<hostname>
    

Proteger la ruta de dominio predeterminada proporcionada por IBM

  1. 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
    
  2. 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 utilizar https 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.

  1. 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
    
  2. En la consola web deOpenShift, cambie a la vista Administrador.
  3. En Observar, seleccione Métricas.
  4. 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)
    
  5. En Observar, seleccione Paneles de control.
  6. Pulse el desplegable Panel de control y seleccione Kubernetes /Compute Resources/Namespace (Workloads).
  7. Cambie Espacio de nombres por el proyecto.
  8. Establezca Rango de tiempo en Últimos 5 minutos.
  9. Compruebe el uso de CPU y memoria.
  10. Detenga el script anterior utilizando control+C.
  11. Para el registro, puede utilizar el mandato oc logs incorporado. Compruebe los registros de visualización de un recurso para conocer el uso de oc 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

  1. 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 despliegue
    oc scale dc/$MYPROJECT --replicas=2
    
  2. Puede ver que se suministra un nuevo pod ejecutando el mandato oc get pods.
  3. 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.

  1. 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.
    oc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mi
    
    Para verificarlo, ejecute oc describe dc/$MYPROJECT y busque Limits y Requests.
  2. 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
    
  3. Vuelva a ejecutar el paso Supervisión para generar carga en la aplicación.
  4. Puede ver los nuevos pods que se suministran ejecutando el mandato oc get pods --watch o consultando la aplicación en la consola web.
  5. 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.

  1. Para identificar su Container Registry URL, ejecute:

    ibmcloud cr region
    
  2. Defina una variable de entorno llamada MYREGISTRY que apunte al registro como:

    export MYREGISTRY=us.icr.io
    
  3. 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>
    
  4. Defina una variable de entorno llamada MYNAMESPACE que apunte al espacio de nombres de registro:

    export MYNAMESPACE=<REGISTRY_NAMESPACE>
    
  5. 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.

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

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

  1. 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
    
  2. Ejecute el mandato de exportación desde la salida para establecer la variable de entorno MYPROJECT existente con el nuevo nombre de aplicación. Ejecute echo $MYPROJECT para ver el nuevo nombre de aplicación.

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

  4. 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 bajo dockerImageRepository definición de spec 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

  5. Opcional Compruebe el valor spec en la sección BuildConfig para la salida establecido en un tipo de DockerImage así como los marcadores actualizados en name.

    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.

  6. Opcional Busque containers, compruebe la image y el name

    containers:
    - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest
      name: $MYPROJECT
    
  7. 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.

  1. 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
    
  2. 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
    
  3. Puede comprobar el estado del despliegue y del servicio.

    oc status
    
  4. 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.

  5. Exponga el servicio para crear una nueva ruta.

    oc expose service/$PRIVREG
    
  6. 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
    
  7. 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 utilizar http 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í

  1. En un navegador, abra IBM Cloud Git.

    El enlace anterior es para la región us-south. Para otras regiones, ejecute ibmcloud regions y sustituya us-south en el URL por el nombre de región.

  2. Pulse Nuevo proyecto, pulse Crear proyecto en blanco y, a continuación, proporcione openshiftapp como nombre de proyecto.

  3. Establezca el Nivel de visibilidad en Privado.

  4. En Configuración de proyecto, elimine la marca de selección situada junto a Inicializar repositorio con un README.

  5. Haga clic en Crear proyecto,

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

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

  1. En el panel de navegación de la página Git repo, haga clic en Configuración > Repositorio.
  2. Pulse sobre Expandir, junto a Señales de despliegue.
    1. En el campo Nombre, escriba foropenshift y, a continuación, seleccione read_repository bajo Ámbitos. Por último, pulse Crear señal de despliegue.
    2. Guarde el nombre de usuario y la contraseña que se han generado para futuras referencias.
  3. 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.
  4. 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

  1. 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
    
  2. Ejecute el mandato de exportación de la salida para establecer la variable de entorno MYPROJECT existente con el nuevo nombre de proyecto.

  3. Además de los marcadores del registro de contenedor privado, el script también sustituirá el REPO_URL bajo la especificación BuildConfig por las variables de entorno establecidas en el paso anterior,

     source:
       git:
         uri: $REPO_URL
       type: Git
    
  4. 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
    
  5. Puede comprobar los registros del constructor.

    oc logs -f bc/$PRIVREPO
    
  6. Puede comprobar el estado del despliegue y del servicio utilizando.

    oc status
    
  7. 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
    
  8. Exponga el servicio para crear una nueva ruta.

    oc expose service/$PRIVREPO
    
  9. 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
    
  10. 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 utilizar http 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.

  1. 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
    
  2. 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.
  3. 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.

  4. Pega la URL, selecciona Push events como Trigger y haz click en Add webhook. Debería ver el mensaje Webhook was created.

  5. 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
    
  6. Abra el repositorio clonado en un IDE para actualizar la etiqueta h1 del archivo local public/index.html y cambiarla por Congratulations! <insert your name>.

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

  1. 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
    
  2. Acceda a su aplicación en http://<HOSTNAME>/

Con HTTPS

  1. 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
    oc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000
    
    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 mandato 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.

Contenido relacionado