IBM Cloud Docs
Despliegue de microservicios con Red Hat OpenShift on IBM Cloud

Despliegue de microservicios con 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.

Esta guía de aprendizaje muestra cómo desplegar aplicaciones en Red Hat OpenShift on IBM Cloud. Red Hat OpenShift on IBM Cloud proporciona una gran experiencia a los desarrolladores para desplegar aplicaciones de software y a los administradores del sistema para escalar y observar las aplicaciones en producción.

Objetivos

  • Implementar un Red Hat OpenShift on IBM Cloud grupo
  • Desplegar un microservicio
  • Escalar el microservicio
  • Utilizar un operador para desplegar IBM Cloudant y enlazar con un microservicio
  • Observar el clúster mediante IBM Cloud Logs
  • Observar el clúster mediante IBM Cloud Monitoring

de arquitectura del

  1. Un desarrollador inicializa una aplicación Red Hat OpenShift con un repositorio URL resultando en un Builder, DeploymentConfig, y Service.
  2. El Compilador clona el origen, crea una imagen, la envía al registro de Red Hat OpenShift para el suministro de una Configuración de despliegue.
  3. Los usuarios acceden a la aplicación frontal.
  4. La instancia de base de datos de IBM Cloudant se suministra mediante un servicio de operador de IBM Cloud.
  5. La aplicación de programa de fondo se conecta a la base de datos con un enlace de operador de IBM Cloud.
  6. IBM Cloud Logs se suministra y se despliega en el agente.
  7. Monitoring se suministra y se despliega en el agente.
  8. Un administrador supervisa la app con IBM Cloud Logs y Monitoring.

Existen scripts que realizarán algunos de los pasos que se indican a continuación. Se describe en README.md. Si tiene algún problema y desea volver a comenzar, simplemente ejecute el script destroy.sh y vaya secuencialmente por los scripts correspondientes a los pasos de recuperación.

Antes de empezar

Esta guía de aprendizaje requiere:

  • CLI de IBM Cloud,
    • plugin de IBM Cloud Kubernetes Service (kubernetes-service),
  • oc para interactuar con OpenShift.

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.12.x). Si no coinciden, instale la versión coincidente siguiendo estas instrucciones.

Crear un clúster 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. Los clústeres de Red Hat OpenShift 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 Red Hat OpenShift on IBM Cloud desde el catálogo IBM Cloud®.
  2. Configure el servicio Orchestration en la versión 4.12.x de Red Hat OpenShift on IBM Cloud.
  3. Seleccione la titularidad de OCP.
  4. En Infraestructura elija clásica o VPC
    • Para Red Hat OpenShift en la infraestructura de VPC, es necesario tener un VPC y una subred antes de crear el clúster de Red Hat OpenShift on IBM Cloud. Cree o inspeccione una VPC deseada teniendo en cuenta lo siguiente (consulte las instrucciones proporcionadas en Creación de un clúster VPC estándar):
      • Una subred que se puede utilizar para esta guía de aprendizaje, tome nota de la zona y el nombre de la subred
      • La pasarela pública está conectada a la subred
    • Seleccione un servicio existente de Cloud Object Storage o cree uno si es necesario
  5. En Ubicación
    • Para Red Hat OpenShift en la infraestructura de VPC
      • Seleccione un Grupo de recursos
      • Deseleccione las zonas que no se pueden aplicar
      • 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 en la infraestructura clásica, siga las instrucciones de Creación de un clúster clásico estándar.
      • Seleccione un Grupo de recursos
      • Seleccione una Geografía
      • Seleccione Zona única como Disponibilidad
      • Elija un centro de datos
  6. En Agrupación de nodos trabajadores,
    • Seleccione 4 vCPU y 16 GB de memoria como tipo
    • Seleccione 2 nodos trabajadores por centro de datos para esta guía de aprendizaje (solo clásica: dejar Cifrar disco local)
  7. En Integraciones, habilite y configure Registro y Supervisión.
  8. En Detalles de recursos, establezca el nombre del clúster como -myopenshiftcluster sustituyendo <your-initials> por sus propias iniciales.
  9. Pulse Crear para suministrar un clúster 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.

Inicialización de un Cloud Shell

La CLI de Red Hat OpenShift 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.

Para evitar que se instalen las herramientas de línea de mandatos, el método recomendado es utilizar IBM Cloud Shell.

El shell de IBM Cloud es un espacio de trabajo de shell basado en la nube al que puede acceder a través del navegador. Está preconfigurado con la CLI de IBM Cloud completa y multitud de plugins y herramientas que puede utilizar para gestionar aplicaciones, recursos y la infraestructura.

En este paso, utilizará el shell de IBM Cloud y configurará oc de modo que apunte al clúster que tiene asignado.

  1. Cuando el clúster esté listo, pulse el botón (junto a su cuenta) de la esquina superior derecha para iniciar un Cloud shell. Asegúrese de no cerrar esta ventana/pestaña.

  2. Compruebe la versión de la CLI de OpenShift:

    oc version
    

    La versión debe ser como mínimo 4.12.x, de lo contrario instale la última versión siguiendo estas instrucciones.

  3. Validar el clúster se muestra cuando se listan todos los clústeres:

    ibmcloud oc clusters
    
  4. Inicialice el entorno de comandos oc sustituyendo el marcador de posición <nombre-de-clúster>:

    ibmcloud oc cluster config -c <your-cluster-name> --admin
    
  5. Verifique que el mandato oc funciona:

    oc get projects
    

Despliegue de una aplicación

En esta sección, desplegará una aplicación de Node.js Express denominada patient-health-frontend, una interfaz de usuario para un sistema de registros sanitarios de pacientes para mostrar las prestaciones de Red Hat OpenShift. Encontrará el repositorio de GitHub de aplicaciones de ejemplo aquí: https://github.com/IBM-Cloud/patient-health-frontend

Crear proyecto

Un proyecto es una colección de recursos gestionados por un equipo de DevOps. Un administrador creará el proyecto y los desarrolladores pueden crear aplicaciones que se puedan compilar y desplegar.

  1. Navegue a la consola web Red Hat OpenShift haciendo clic en el botón de la consola web OpenShift en el Cluster seleccionado.
  2. En el panel de navegación de la izquierda, bajo la perspectiva Administrator, seleccione Inicio > Proyectos para visualizar todos los proyectos.
  3. Cree un nuevo proyecto pulsando Crear proyecto. En la ventana emergente Nombre del proyecto example-health, deje Nombre de visualización y Descripción en blanco y pulse Crear.
  4. Se muestra la página Detalles de proyecto del nuevo proyecto. Observe que su contexto es Administrador > Inicio > Proyectos en la izquierda y Proyectos > Detalles del proyecto > example-health en la parte superior.

Creación y despliegue de una aplicación

  1. Pase de la perspectiva Administrador a la perspectiva Desarrollador. Su contexto debe ser Desarrollador > +Añadir a la izquierda y Proyecto: example-health en la parte superior.
    Vista de proyecto
    Vista de proyecto
  2. Creación y despliegue de la aplicación seleccionando Importar de Git.
  3. Especifique el repositorio https://github.com/IBM-Cloud/patient-health-frontend.git en el campo URL de repositorio Git.
    • Anote la comprobación verde Builder image detected y Node.js 16 (UBI 8).
    • Tenga en cuenta que la imagen del creador ha detectado automáticamente el lenguaje Node.js. Si no se ha detectado, seleccione Node.js en la lista proporcionada.
    • Versión de imagen de constructor se deja en el valor predeterminado.
    • En Nombre de aplicación, suprima todos los caracteres y déjelos en blanco (se adoptará el Nombre como valor predeterminado)
    • Nombre: patient-health-frontend.
    • Pulse el enlace Tipo de recurso y elija DeploymentConfig.
    • Deje los valores predeterminados en las demás selecciones.
  4. Pulse Crear en la parte inferior de la ventana para crear y desplegar la aplicación.

Ver aplicación

  1. Debería ver la app que acaba de desplegar. Observe que está en la vista Topología de proyecto example-health en la perspectiva Desarrollador. Se muestran todas las aplicaciones del proyecto.

  2. Seleccione el nodo patient-health-frontend para ver los detalles de la DeploymentConfig. Observe las letras DC que hay junto a patient-health-frontend. Se pueden ver los Pods, las Compilaciones, los Servicios y las Rutas.

    Detalles de la aplicación
    Detalles de la aplicación

    • Pods: sus contenedores de aplicaciones Node.js
    • Compilaciones: la compilación generada automáticamente que ha creado una imagen de Docker a partir del código fuente de Node.js, la ha desplegado en el registro de contenedores de Red Hat OpenShift y ha activado la configuración del despliegue
    • Servicios: indica a Red Hat OpenShift cómo acceder a los Pods agrupándolos como un servicio y definiendo el puerto en el que se debe escuchar
    • Rutas: expone los servicios al mundo exterior utilizando el servicio LoadBalancer que proporciona la red de IBM Cloud
  3. Pulse Ver registros junto a la compilación completada. Se mostrará el proceso que ha realizado Red Hat OpenShift para instalar las dependencias correspondientes a la aplicación Node.js se crea y se envía una imagen de Docker. La última entrada debería parecerse a la siguiente:

    Successfully pushed image-registry.openshift-image-registry.svc:5000/example-health/patient-health-frontend@sha256:f9385e010144f36353a74d16b6af10a028c12d005ab4fc0b1437137f6bd9e20a
    Push successful
    
  4. Pulse Topología y vuelva a seleccionar la app.

  5. Pulse el URL bajo Rutas para visitar la aplicación. Especifique cualquier serie de nombre de usuario y contraseña, por ejemplo test:test porque la app se está ejecutando en modalidad de demostración.

La app Node.js se ha desplegado en Red Hat OpenShift Container Platform. En resumen:

  • La aplicación Node.js "Example Health" (ejemplo de salud) se ha desplegado directamente desde GitHub en el clúster.
  • La aplicación se ha examinado en la consola de Red Hat OpenShift on IBM Cloud.
  • Se ha creado una Configuración de compilación: se puede crear y desplegar una nueva confirmación pulsando Iniciar compilación en la sección Compilaciones de los detalles de la aplicación.

Registro y supervisión

En esta sección se estudian las prestaciones de registro y supervisión listas para ser utilizadas que se ofrecen en Red Hat OpenShift on IBM Cloud.

Simulación de una carga en la aplicación

Cree un script para simular la carga.

  1. Asegúrese de que está conectado al proyecto donde ha desplegado la app.
    oc project example-health
    
  2. Recupere la ruta pública para acceder a la aplicación:
    oc get routes
    
    La salida se parece a la siguiente; anote el valor correspondiente a Host:
    NAME         HOST/PORT                                                                                                 PATH      SERVICES     PORT       TERMINATION   WILDCARD
    patient-health-frontend   patient-health-frontend-example-health.roks07-872b77d77f69503584da5a379a38af9c-0000.eu-de.containers.appdomain.cloud             patient-health-frontend   8080-tcp                 None
    
  3. Defina una variable con el host:
    HOST=$(oc get routes -o json | jq -r '.items[0].spec.host')
    
  4. Verifique el acceso a la aplicación. Se muestra información sobre un paciente:
    curl -s -L http://$HOST/info
    
    La salida se debería parecer a la siguiente:
    $ curl -s -L http://$HOST/info
    {"personal":{"name":"Ralph DAlmeida","age":38,"gender":"male","street":"34 Main Street","city":"Toronto","zipcode":"M5H 1T1"},"medications":["Metoprolol","ACE inhibitors","Vitamin D"],"appointments":["2018-01-15 1:00 - Dentist","2018-02-14 4:00 - Internal Medicine","2018-09-30 8:00 - Pediatry"]}
    
  5. Ejecute el script siguiente, que enviará de forma indefinida solicitudes a la aplicación y generará tráfico:
    while sleep 0.2; do curl --max-time 2 -s -L http://$HOST/info >/dev/null; echo -n "."
    done
    
    Para detener el script, pulse CTRL + c en el teclado

Registro de Red Hat OpenShift on IBM Cloud

Puesto que solo hay un pod, ver los registros de la aplicación será sencillo.

  1. Asegúrese de que está en la vista Topología de la perspectiva Desarrollador.

  2. Vaya a su Pod seleccionando su aplicación.

  3. Pulse Ver registros junto al nombre del Pod bajo Pods para ver los registros de modalidad continua de la aplicación en ejecución. Si todavía está generando tráfico, debería ver mensajes de registro para cada solicitud que se realice.

    Registros de pod
    Registros de pod

Terminal de Red Hat OpenShift on IBM Cloud

Una de las principales ventajas de Kubernetes es la posibilidad de depurar rápidamente los pods de la aplicación con terminales SSH. Esto es genial para el desarrollo, pero generalmente no se recomienda en entornos de producción. Red Hat OpenShift hace que sea aún más fácil, ya que le permite lanzar un terminal directamente en el tablero de instrumentos.

  1. Vaya del separador Registros al separador Terminal.
  2. Especifique los siguientes mandatos de Shell:
Ejemplos de mandatos de shell para ejecutar
Mandato Descripción
ls Ver los archivos del proyecto.
ps aux Ver los procesos en ejecución.
cat /etc/redhat-release Mostrar el SO subyacente.
curl localhost:8080/info Salida del proceso del nodo app.js

Supervisión de Red Hat OpenShift on IBM Cloud

Cuando se despliegan nuevas apps, se realizan cambios de configuración o simplemente se inspecciona el estado de un clúster, el panel de control de ámbito de proyecto proporciona una visión clara para el desarrollador.

  1. Acceda al panel en la perspectiva de desarrollador haciendo clic en Observar en el menú lateral izquierdo.
  2. También puede profundizar un poco más pulsando el separador Sucesos. Los Sucesos resultan útiles para identificar la línea de tiempo y a hallar mensajes de los posibles errores. Cuando realice el seguimiento del estado de un nuevo despliegue, gestione activos existentes o simplemente haga algo tan simple como exponer una ruta, la vista Sucesos resulta básica para identificar el progreso de la actividad. Esto resulta aún más útil si se tiene en cuenta que puede haber varios operadores trabajando sobre un solo clúster.

Casi todas las acciones de Red Hat OpenShift dan como resultado la activación de un suceso en esta vista. Como se actualiza en tiempo real, constituye un método excelente para realizar el seguimiento de los cambios de estado.

Métricas y paneles de control

En esta sección se exploran los paneles de control y métricas incluidos en Red Hat OpenShift.

Paneles de control

Red Hat OpenShift se suministra con paneles de control predefinidos para supervisar los proyectos.

  1. Para empezar, pase de la perspectiva Desarrollador a la perspectiva Administrador:
  2. Vaya a Observar > Paneles de control en la barra de la izquierda.
  3. Seleccione Kubernetes / Recursos de cálculo / Espacio de nombres (Pods) en el desplegable y Espacio de nombres en example-health.
  4. Observe el uso de CPU y de memoria para la aplicación. En entornos de producción, esto resulta útil para identificar la cantidad media de CPU o de memoria que utiliza la aplicación, especialmente porque puede fluctuar durante el día. El escalado automático es una forma de manejar las fluctuaciones y se mostrará un poco más adelante.

Métricas

Red Hat OpenShift proporciona una interfaz web para ejecutar consultas y examinar las métricas visualizadas en un gráfico. Esta funcionalidad proporciona una amplia visión general del estado del clúster y le permite resolver problemas.

  1. Vaya a Observar > Métricas.

  2. Especifique la expresión siguiente y pulse Ejecutar consultas. Debería ver el valor y el gráfico asociados a la consulta.

    sum(container_cpu_usage_seconds_total{container="patient-health-frontend"})
    

    Gráfico de métricas
    Gráfico de métricas

Escalado de la aplicación

En esta sección, se pueden utilizar las métricas observadas en la sección anterior para escalar la aplicación de IU en respuesta a la carga.

Habilitación de límites de recursos

Antes del escalado automático, hay que establecer límites máximos de recursos de CPU y de memoria.

Los paneles de control anteriores mostraban que la carga consumía entre ".002" y ".02" núcleos. Esto significa 2-20 "milinúcleos". Para garantizar la carga, vamos a definir 30 milinúcleos. Además, los datos mostraban que la aplicación consume aproximadamente 25-65 MB de RAM. En los pasos siguientes se establecerán los límites de recursos de la configuración de despliegue.

  1. Asegúrese de que el script para generar tráfico esté en ejecución.

  2. Cambie a la perspectiva Administrador.

  3. Vaya a Cargas de trabajo > DeploymentConfigs.

  4. Seleccione el proyecto example-health.

  5. En el menú Acciones (los tres puntos verticales) de patient-health-frontend, elija Editar DeploymentConfig.

    Despliegues
    Despliegues

  6. En la vista YAML, busque la sección spec > template > spec > containers, añada los siguientes límites de recurso a los recursos vacíos. Sustituya resources {} y asegúrese de que el espaciado sea correcto: YAML utiliza un sangrado estricto.

              resources:
                limits:
                  cpu: 30m
                  memory: 100Mi
                requests:
                  cpu: 3m
                  memory: 40Mi
    

    Este es el fragmento de código después de realizar los cambios:

           ports:
             - containerPort: 8080
               protocol: TCP
           resources:
             limits:
               cpu: 30m
               memory: 100Mi
             requests:
               cpu: 3m
               memory: 40Mi
           terminationMessagePath: /dev/termination-log
    
  7. Guardar para aplicar los cambios.

  8. Verifique que el controlador de réplica se ha cambiado yendo a la pestaña Sucesos:

    Límites de recursos
    Límites de recursos

Habilitación del programa de escalado automático

Ahora que se han configurado los límites de recursos, se puede habilitar el programa de escalado automático de pod.

De forma predeterminada, el programa de escalado automático le permite escalar en función de la CPU o de la memoria. Los pods se equilibran entre el número mínimo y máximo de pods que especifique. Con el programa de escalado automático, los pods se crean o se suprimen automáticamente para garantizar que el uso de CPU promedio de los pods esté por debajo del destino de la solicitud de CPU definido. En general, lo más probable es que empiece a aumentar el número de pods cuando se acerca al 50-90 % del uso de CPU de un pod. En nuestro caso, se puede utilizar un 1 % con la carga suministrada.

  1. Vaya a la perspectiva Administrador Cargas de trabajo > HorizontalPodAutoscalers y luego pulse Crear HorizontalPodAutoscaler.

    HPA
    HPA

    Sustituya el contenido del editor por este yaml:

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: patient-hpa
      namespace: example-health
    spec:
      scaleTargetRef:
        apiVersion: apps.openshift.io/v1
        kind: DeploymentConfig
        name: patient-health-frontend
      minReplicas: 1
      maxReplicas: 10
      metrics:
        - type: Resource
          resource:
            name: cpu
            target:
              averageUtilization: 1
              type: Utilization
    
  2. Pulse Crear.

Programa de escalado automático de prueba

Si no ejecuta el script para simular la carga, el número de pods debería seguir siendo 1.

  1. Para comprobarlo, abra la página Visión general de la configuración de despliegue. Pulse Carga de trabajo > Configuraciones de despliegue y pulse patient-health y asegúrese de que el panel Detalles está seleccionado.

  2. Empiece a simular la carga (consulte la sección anterior para simular la carga en la aplicación).

    Escalado a 4/10 pods
    Escalado a 4/10 pods

    El programa de escalado automático puede tardar unos minutos en realizar los ajustes.

Eso es todo. Ahora dispone de una aplicación front-end Node.js de alta disponibilidad y escalado automático. Red Hat OpenShift está escalando automáticamente los pods de su aplicación ya que el uso de CPU de los pods superó con creces 1% del límite de recursos, 30 millicores.

Escalado automático desde la línea de mandatos

También puede suprimir y crear recursos como programas de escalado automático con la línea de mandatos.

  1. Para empezar, verifique que el contexto sea su proyecto:
    oc project example-health
    
  2. Obtenga el programa de escalado automático que se ha creado anteriormente:
    oc get hpa
    
  3. Suprima el programa de escalado automático realizado anteriormente:
    oc delete hpa/patient-hpa
    
  4. Cree un nuevo programa de escalado automático con un máximo de 9 pods:
    oc autoscale deploymentconfig/patient-health-frontend --name patient-hpa --min 1 --max 9 --cpu-percent=1
    
  5. Vuelva a visitar la página de detalles Cargas de trabajo > DeploymentConfigs del despliegue patient-health-frontend y observe cómo funciona.

Utilización de IBM Cloud Operator para crear una base de datos Cloudant

Actualmente, la app sanitaria de ejemplo patient-health-frontend utiliza un paciente ficticio que tiene en memoria. En este ejercicio, creará un servicio de Cloudant en IBM Cloud y lo llenará con datos del paciente. Cloudant es una base de datos como servicio NoSQL basada en CouchDB.

Habilitación del operador de IBM Cloud

Vamos a ver cómo funcionan los operadores. En el primer ejercicio, ha utilizado un constructor para desplegar una aplicación simple utilizando DeploymentConfig un tipo de recurso predeterminado que se suministra con Red Hat OpenShift. Una definición de recurso personalizada permite crear tipos de recursos que no vienen preinstalados en Red Hat OpenShift on IBM Cloud, como el servicio IBM Cloud. Los operadores gestionan el ciclo de vida de los recursos y crean descriptores de recursos personalizados, CRD, le permiten gestionar los recursos personalizados de la forma de "Kubernetes" nativa.

  1. En la perspectiva de Administrador, pulse Operadores > OperatorHub.
  2. Busque el Operador de IBM Cloud y pulse Instalar.
  3. Mantenga las opciones predeterminadas y pulse Instalar.
  4. Después de unos segundos, se debe visualizar installed operator - ready for use.

Creación de un servicio Cloudant y enlace mediante CRD

Pulse para abrirlo. Desplácese hasta la sección Requisitos previos.

En esta sección se necesita una clave de API con los permisos adecuados para crear una base de datos de IBM Cloudant. La clave de API se va a almacenar en un recurso de secreto de Kubernetes. Esto se deberá realizar con el shell. En la sección Requisitos previos del operador instalado encontrará instrucciones. Pasos:

  1. Utilice el mismo grupo de recursos y la misma región que están asociados al clúster.

    ibmcloud target -g <resource_group> -r <region>
    

    Para ver los grupos de recursos de su cuenta, ejecute el mandato ibmcloud resource groups

  2. Verifique que el grupo de recursos y la región coinciden con el clúster. El mandato siguiente debe devolver el clúster.

    ibmcloud oc cluster ls
    

El resultado se parece al siguiente:

$ ibmcloud oc cluster ls
OK
Name      ID                     State    Created        Workers   Location   Version                  Resource Group Name   Provider
osmicro   ck68svdd0vvcfs6ad9ag   normal   18 hours ago   2         Dallas     4.12.26_1562_openshift   default               vpc-gen2
  1. Utilice el script de ayuda que proporciona IBM para crear los siguientes recursos:

    • Clave de API de IBM Cloud que le representa a usted a sus permisos para utilizar IBM Cloud
    • Secreto de Kubernetes llamado secret-ibm-cloud-operator en el espacio de nombres default. Este secreto tiene las claves api-key y region. El operador utilizará estos datos para crear la instancia de servicio de cloudant.
    • Recurso ConfigMap de Kubernetes llamado config-ibm-cloud-operator en el espacio de nombres default que albergará la región y el grupo de recursos

    Utilice el mandato curl suministrado:

    curl -sL https://raw.githubusercontent.com/IBM/cloud-operators/master/hack/configure-operator.sh | bash
    
  2. Vuelva a la consola web de Red Hat OpenShift, pulse Crear servicio en el separador Servicio en Operadores instalados de la página Operador de IBM Cloud y seleccione Vista YAML para que se muestre el editor de yaml.

  3. Realice las sustituciones recomendadas, donde serviceClass es cloudantnosqldb y el plan puede ser lite o standard (solo se permite un plan lite por cuenta). Sustituya <your-initials>:

    apiVersion: ibmcloud.ibm.com/v1
    kind: Service
    metadata:
      annotations:
       ibmcloud.ibm.com/self-healing: enabled
      name: <your-initials>-cloudant-service
      namespace: example-health
    spec:
      serviceClass: cloudantnosqldb
      plan: standard
    
  4. Pulse Crear para crear una instancia de base de datos de IBM Cloudant. El contexto debería ser Operadores > Operadores instalados > Operador de IBM Cloud en la perspectiva Administrador con el proyecto: example-health en el panel Servicio.

  5. Haga clic en el servicio que acaba de crear, -cloudant-servicio y con el tiempo el campo de estado cambiará de aprovisionamiento a Online lo que significa que está listo para funcionar.

  6. Cree un recurso de enlace (Binding) y un recurso de secreto (Secret) para el recurso de servicio de cloudant que acaba de crear. Vuelva al separador Operadores > Operadores instalados > Operador de IBM Cloud > Enlaces. Abra el separador Enlaces, pulse Crear enlace y seleccione Vista YAML. Cree un enlace de cloudant asociado con el serviceName <your-initials>-cloudant-service (este es el nombre proporcionado para el Servicio creado anteriormente).

    apiVersion: ibmcloud.ibm.com/v1
    kind: Binding
    metadata:
      name: cloudant-binding
      namespace: example-health
    spec:
      serviceName: <your-initials>-cloudant-service
    
  7. Si lo desea, puede profundizar para comprender la relación entre los recursos de Red Hat OpenShift: Servicio, Enlace de servicios, Secreto de enlace y los recursos de IBM Cloud: Servicio, Instancia de servicio y Credenciales de servicio de la instancia. Utilización del cloud shell:

    ibmcloud resource service-instances --service-name cloudantnosqldb
    
    YOURINITIALS=<your-initials>
    
    ibmcloud resource service-instance $YOURINITIALS-cloudant-service
    
    ibmcloud resource service-keys --instance-name $YOURINITIALS-cloudant-service --output json
    

    El resultado se parece al siguiente:

    youyou@cloudshell:~$ ibmcloud resource service-instances --service-name cloudantnosqldb
    Retrieving instances with type service_instance in all resource groups in all locations under ..
    OK
    Name                           Location   State    Type
    <your-initials>-cloudant-service               us-south   active   service_instance
    youyou@cloudshell:~$ ibmcloud resource service-instance <your-initials>-cloudant-service
    Retrieving service instance <your-initials>-cloudant-service in all resource groups under ...
    OK
    
    Name:                  <your-initials>-cloudant-service
    ID:                    crn:v1:bluemix:public:cloudantnosqldb:us-south:a/0123456789507a53135fe6793c37cc74:SECRET
    GUID:                  SECRET
    Location:              us-south
    Service Name:          cloudantnosqldb
    Service Plan Name:     standard
    Resource Group Name:   Default
    State:                 active
    Type:                  service_instance
    Sub Type:
    Created at:            2020-05-06T22:39:25Z
    Created by:            youyou@us.ibm.com
    Updated at:            2020-05-06T22:40:03Z
    Last Operation:
                        Status       create succeeded
                        Message      Provisioning is complete
                        Updated At   2020-05-06 22:40:03.04469305 +0000 UTC
    
    youyou@cloudshell:~$ ibmcloud resource service-keys --instance-name $YOURINITIALS-cloudant-service --output json
    [
        {
            "guid": "01234560-902d-4078-9a7f-20446a639aeb",
            "id": "crn:v1:bluemix:public:cloudantnosqldb:us-south:a/0123456789507a53135fe6793c37cc74:SECRET",
            "url": "/v2/resource_keys/01234560-902d-4078-9a7f-20446a639aeb",
            "created_at": "2020-05-06T23:03:43.484872077Z",
            "updated_at": "2020-05-06T23:03:43.484872077Z",
            "deleted_at": null,
            "name": "cloudant-binding",
            "account_id": "0123456789507a53135fe6793c37cc74",
            "resource_group_id": "01234567836d49029966ab5be7fe50b5",
            "source_crn": "crn:v1:bluemix:public:cloudantnosqldb:us-south:a/0123456789507a53135fe6793c37cc74:SECRET",
            "state": "active",
            "credentials": {
                "apikey": "SECRET",
                "host": "SECRET",
                "iam_apikey_description": "Auto-generated for key SECRET",
                "iam_apikey_name": "cloudant-binding",
                "iam_role_crn": "SECRET",
                "iam_serviceid_crn": "SECRET",
                "password": "SECRET",
                "port": 443,
                "url": "https://01234SECRET",
                "username": "01234567-SECRET"
            },
            "iam_compatible": true,
            "resource_instance_url": "/v2/resource_instances/SECRET",
            "crn": "crn:v1:bluemix:public:cloudantnosqldb:us-south:a/0123456789507a53135fe6793c37cc74:SECRET"
        }
    ]
    

Despliegue de la app de base de datos de fondo de pacientes de Node.js

Ahora creará la app Node.js que llenará la base de datos de Cloudant con datos de pacientes. También ofrecerá datos a la aplicación frontal desplegada anteriormente.

  1. Asegúrese de que su contexto es el proyecto de example-health:
    oc project example-health
    
  2. El siguiente mandato new-app creará una configuración de compilación y una configuración de despliegue. A continuación se muestra la invocación desde la CLI de la adición de la aplicación (recuerde utilizar la consola de la GUI para la aplicación frontal):
    oc new-app --name=patient-health-backend --as-deployment-config registry.access.redhat.com/ubi9/nodejs-20-minimal:latest~https://github.com/IBM-Cloud/patient-health-backend
    
  3. De nuevo en la consola, y en la vista Topología de la perspectiva de Desarrollador, abra la app de patient-health-backend y espere a que se complete la compilación. Observe que el Pod no se puede iniciar. Pulse los registros del Pod para ver:
    > node app.js
    
    /opt/app-root/src/app.js:23
             throw("Cannot find Cloudant credentials, set CLOUDANT_URL.")
             ^
    Cannot find Cloudant credentials, set CLOUDANT_URL.
    
  4. Vamos a solucionarlo definiendo la variable de entorno de DeploymentConfig en el secreto cloudant-binding creado antes en la sección de enlace del operador. Vaya a la configuración de despliegue para la aplicación patient-health-backend pulsando la aplicación y, a continuación, seleccione el nombre junto a DC:
    Configuración de despliegue
    Configuración de despliegue
  5. Vaya a la pestaña Entorno, pulse Añadir desde mapa de configuración o secreto y cree la variable de entorno CLOUDANT_URL. Elija el secreto cloudant-binding y luego elija url para la clave. Pulse Guardar.
    Entorno del secreto
    Entorno del secreto
  6. Vuelva al separador Topología y pulse patient-health-backend. Compruebe la sección Pods, que en breve debería indicar En ejecución. Pulse Ver registros junto al pod en ejecución y fíjese en la base de datos creada.

Configuración de la app frontal de salud de los pacientes para utilizar la app de fondo de salud de los pacientes

La aplicación patient-health-frontend tiene una variable de entorno para el url del microservicio de fondo.

  1. Establezca la variable de entorno API_URL a predeterminado en la DeploymentConfig del frontend. Vaya a la configuración de despliegue correspondiente a la app patient-health-frontend pulsando la app frontal en la vista Topología y seleccione el nombre que hay junto a DC:

  2. Vaya al separador Entorno y, en la sección Un solo valor (ent), añada un nombre API_URL y un valor default. Pulse Guardar y luego Recargar. Esto dará lugar a una conexión con http://patient-health-backend:8080/, que puede verificar mirando los registros del pod. Puede verificar que es el puerto correcto buscando la salida Pod Template / Containers / Port de este mandato:

    oc describe dc/patient-health-backend
    

Ahora la aplicación está respaldada por los datos de los pacientes simulados en la base de datos de Cloudant. Ahora se puede iniciar la sesión utilizando cualquier id de usuario/contraseña en la base de datos Cloudant, utilice "opall:opall".

  1. En una aplicación real, estas contraseñas no se deben almacenar como texto sin formato. Para revisar los pacientes (y los inicios de sesión alternativos) en la base de datos Cloudant, vaya a los services de la lista de recursosde IBM Cloud. Pulse < su-iniciales> -cloudant-service.
  2. Inicie el panel de control de Cloudant pulsando el botón Iniciar panel de control y pulse en la base de datos patients.
  3. Haz clic en los distintos pacientes con los que puedes iniciar sesión.

Enviar Red Hat OpenShift on IBM Cloud registros y monitorización a los servicios de IBM

Los registros del clúster pueden reenviarse al IBM Cloud® servicio de registros e integrarse en un completo entorno de análisis y almacenamiento de registros para la nube - véase Registro para clusters. Las métricas del clúster pueden integrarse con el sistema de supervisión de la nube - Supervisión del estado del clúster

Los datos de registro y métrica pueden tardar unos minutos en fluir a través de los sistemas de análisis, por lo que es mejor conectar ambos en este momento para su uso posterior.

Supervisión del clúster

IBM Cloud Monitoring es un servicio de gestión inteligente de contenedores nativo de la nube que puede incluir como parte de la arquitectura de IBM Cloud. Utilícelo para obtener visibilidad operativa sobre el rendimiento y el estado de las aplicaciones, los servicios y las plataformas. Ofrece a los administradores, a los equipos de DevOps y a los desarrolladores telemetría de pila completa con prestaciones avanzadas para supervisar y resolver problemas de rendimiento, definir alertas y diseñar paneles de control personalizados. Más información.

En los pasos siguientes aprenderá a utilizar los paneles de control y las métricas para supervisar el estado de la aplicación.

Visualización de vistas y paneles de control de supervisión predefinidos

Utilice vistas y paneles de control para supervisar la infraestructura, las aplicaciones y los servicios. Puede utilizar paneles de control predefinidos. También puede crear paneles de control personalizados mediante la interfaz de usuario web o mediante programación. Puede realizar copias de seguridad y restaurar paneles de control mediante scripts Python.

En la tabla siguiente se muestran los distintos tipos de paneles de control predefinidos:

Subconjunto de paneles de control predefinidos existentes
Tipo Descripción
Estado y rendimiento de la carga de trabajo Paneles de control que puede utilizar para supervisar los pods.
Node Situación y resultados Paneles de control que se pueden utilizar para supervisar la utilización de recursos y la actividad del sistema en los hosts y en los contenedores.
Red Paneles de control que puede utilizar para supervisar las conexiones y la actividad de red.

Visualización del panel de control de Monitoring

  1. Vaya a Clústeres de Red Hat OpenShift on IBM Cloud y observe los clústeres de Red Hat OpenShift
  2. Pulse en el clúster y verifique que esté seleccionado el separador Visión general de la izquierda
  3. En la sección Integraciones junto a Supervisión, pulse el botón Iniciar.

Es posible que los datos iniciales NO estén disponibles en las instancias de Supervisión que acaba de crear.

  • Transcurridos unos minutos, se mostrarán datos sin formato
  • Transcurrida aproximadamente una hora, la indexación proporcionará el detalle necesario para continuar con esta guía de aprendizaje
  1. En la sección Dashboards, seleccione Kubernetes > Pod Status & Performance para ver las métricas sin procesar de todas las cargas de trabajo que se ejecutan en el clúster.
  2. Establezca el filtro namespace en example-health para centrarse en los pods de la aplicación.
  3. En Paneles de control en el panel izquierdo, expanda Aplicaciones en Plantillas del panel de control. Luego seleccione HTTP para obtener una vista global de la carga HTTP del clúster.

Exploración del clúster y de la capacidad de nodo

  1. Seleccione Paneles de control, extraiga las dos plantillas del panel de control:

    • Contenedores > Uso de recurso de contenedor
    • Infraestructura de host > Uso de recurso de host
  2. Seleccione la plantilla Kubernetes > Pod Rightsizing & Workload Capacity Optimization. Este panel de control le ayuda a optimizar la infraestructura y a controlar mejor el gasto del clúster asegurándose de que los pods se dimensionen correctamente. Comprenda si puede liberar recursos reduciendo las solicitudes de memoria y/o CPU.

Explorar la aplicación

  1. Seleccione Paneles de control y la plantilla Kubernetes > Estado y rendimiento de carga de trabajo.

    Un panel de instrumentos detallado que muestra todos los pods del clúster.

  2. Cree un panel de control personalizado y luego dele el ámbito de un determinado espacio de nombres.

    • En la parte superior derecha, pulse Copiar en mis paneles de instrumentos y póngnele el nombre Workload Status & Performanceapp example-health
    • Pulse Crear y abrir para crear su propio panel de control.
    • Edite el ámbito del panel de control.
    • Establezca el filtro para kube_namespace_name, is, example-health.
    • Pulse Guardar.

    El panel de control ahora muestra información centrada en el espacio de nombres de salud de ejemplo.

    Desplácese hasta los TimeCharts de Solicitudes HTTP, Latencia, Error, ... para comprender el rendimiento de la aplicación.

    Tráfico de red personalizado y ancho de banda
    Tráfico de red personalizado y ancho de banda

Encontrará más información sobre IBM Cloud Monitoring en la documentación de IBM Cloud.

Eliminación de recursos

En la Lista de recursos, localice y suprima los recursos que desee eliminar:

  • Suprima el clúster de Red Hat OpenShift on IBM Cloud
  • Para suprimir los recursos de Red Hat OpenShift sin suprimir el clúster, ejecute los mandatos siguientes:
    oc delete all --all --namespace example-health
    oc delete project/example-health
    
  • Suprima la instancia de IBM Cloud Logs
  • Suprimir IBM Cloud Monitoring
  • Suprima IBM Cloudant y enlace con un microservicio
  • Servicio de IBM Cloudant

En función del recurso, es posible que no se suprima de inmediato sino que se retenga (durante 7 días de forma predeterminada). Puede reclamar el recurso suprimiéndolo de forma permanente o lo puede restaurar dentro del periodo de retención. Consulte este documento sobre cómo utilizar una reclamación de recurso.

Contenido relacionado