Comprender la portabilidad de datos para Code Engine

La portabilidad de datos implica un conjunto de comandos que permiten a los clientes exportar los artefactos digitales necesarios para implementar una carga de trabajo y un procesamiento de datos similares en diferentes proveedores de servicios o software local. Incluye comandos para exportar el contenido del cliente del servicio, incluida la configuración relacionada que utiliza el servicio para almacenar y procesar los datos, en la propia ubicación del cliente.

Responsabilidades

los servicios IBM Cloud proporcionan interfaces e instrucciones para guiar al cliente a copiar y almacenar el contenido del cliente del servicio, incluida la configuración relacionada, en su propia ubicación seleccionada.

El cliente es responsable del uso de los datos exportados y de la configuración para la portabilidad de datos a otras infraestructuras, lo que incluye:

  • La planificación y ejecución para configurar infraestructuras alternativas en diferentes proveedores de nube o software local que proporcionen capacidades similares a los servicios IBM.
  • La planificación y ejecución de la migración del código de aplicación necesario a la infraestructura alternativa, incluida la adaptación del código de aplicación del cliente, la automatización del despliegue, etc.
  • La conversión de los datos y la configuración exportados al formato requerido por la infraestructura alternativa y las aplicaciones adaptadas.

Para más información sobre sus responsabilidades para " Code Engine, consulte " Responsabilidades al utilizar " Code Engine.

Procedimientos de exportación de datos

Code Engine proporciona mecanismos para construir imágenes de contenedores a partir del código fuente. El código fuente puede almacenarse localmente o en Github. Code Engine no proporciona comandos o herramientas para descargar dichas imágenes contenedoras. En su lugar, los clientes deben descargar y almacenar esas imágenes siguiendo los procedimientos de exportación de datos para IBM Cloud Container Registry.

Code Engine proporciona mecanismos para exportar ajustes y configuraciones que se utilizan para procesar el contenido del cliente.

Los datos de configuración de las siguientes entidades Code Engine pueden exportarse utilizando los comandos especificados más adelante en esta sección:

  • Proyectos
  • Aplicaciones
  • Revisiones de aplicaciones
  • Compilaciones
  • Ejecuciones de compilación
  • Mapas de configuración
  • Secretos
  • Correlaciones de dominios
  • Suscripciones a eventosIBM Cloud Object Storage, ' cron, y Kafka)
  • Funciones
  • Trabajos
  • Ejecuciones de trabajos

Herramientas necesarias para exportar datos

Para exportar los datos de Code Engine, debe descargar e instalar las siguientes herramientas de comando :

Exportación de la configuración de ' project

Un proyecto en Code Engine es un contenedor de configuraciones y cargas de trabajo relacionadas. Si desea exportar un proyecto, utilice los siguientes comandos ' ibmcloud resource ':

Para listar todos los proyectos Code Engine utilice:

ibmcloud resource service-instances --service-name codeengine

Para obtener una lista de todos los proyectos Code Engine en una región específica, utilice:

ibmcloud resource service-instances --service-name codeengine --location us-south

Cuando haya identificado el proyecto Code Engine que desea exportar, utilícelo:

ibmcloud resource service-instance <project-name> -o json >project-name.json

La exportación de un proyecto Code Engine sólo exporta la configuración de la propia entidad del proyecto. Las entidades de configuración contenidas y las entidades de carga de trabajo deben exportarse por separado.

Exportar un " KUBECONFIG " para exportar entidades de proyecto

Cuando hayas identificado un proyecto que quieras exportar, tienes que exportar una variable de entorno ' KUBECONFIG ' para que los comandos ' kubectl ' descritos en este documento se apliquen a ese proyecto.

Para obtener esta variable de entorno " KUBECONFIG ", ejecute los siguientes comandos

ibmcloud code-engine project select -n <project-name>
ibmcloud code-engine project current

Esto selecciona el proyecto e imprime una sentencia similar a la siguiente:

Getting the current project context...
OK

Name:       <project-name>
ID:         123a4cbc-567d-8e90-1f2b-032d33d931ba
Subdomain:  1abc2defi34
Domain:     us-south.codeengine.appdomain.cloud
Region:     us-south

Kubernetes Config:
Context:               1abc2defi34
Environment Variable:  export KUBECONFIG="/Users/<username>/.bluemix/plugins/code-engine/<project-name>-123a4cbc-567d-8e90-1f2b-032d33d931ba.yaml"

Copia la sentencia ' export KUBECONFIG=xxx ' en tu terminal y ejecútala. Todos los siguientes comandos ' kubectl ' están ahora asignados a este proyecto.

Exportación de la configuración de ' application

Para exportar la configuración de todas las aplicaciones de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get service -o json >project-name_application-configurations.json

Si desea exportar la configuración de una sola aplicación, utilice el siguiente comando ' kubectl ':

kubectl get service <application-name> -o json >project-name-application-name_application-configuration.json

Exportación de la configuración de ' application revision

Para exportar la configuración de todas las revisiones de la aplicación en su proyecto, ejecute el siguiente comando ' kubectl ':

kubectl get revision -o json >project-name_application-revisions.json

Si desea exportar la configuración de una única revisión de la aplicación, utilice el siguiente comando ' kubectl ':

kubectl get revision <application-revision-name> -o json >project-name-application-revision-name_revision.json

Exportación de la configuración de ' build

Para exportar la configuración de todas las compilaciones de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get build -o json >project-name_build-configurations.json

Si desea exportar la configuración de una única compilación, utilice el siguiente comando ' kubectl ':

kubectl get build <build-name> -o json >project-name-build-name_build-configuration.json

Exportación de la configuración de ' build run

Para exportar la configuración de todas las ejecuciones de compilación de su proyecto, ejecute el siguiente comando kubectl:

kubectl get buildrun -o json >project-name_buildrun-configurations.json

Si desea exportar la configuración de un único buildrun, utilice el siguiente comando ' kubectl ':

kubectl get buildrun <buildrun-name> -o json >project-name-buildrun-name_buildrun-configuration.json

Exportación de la configuración de ' configmap

Para exportar el contenido de todos los configmaps de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get configmap -o json >project-name_configmaps.json

Si desea exportar el contenido de un único configmap, utilice el siguiente comando ' kubectl ':

kubectl get configmap <configmap-name> -o json >project-name-configmap-name_configmap.json

Exportación de la configuración de ' secret

No exporte el contenido de los secretos a un archivo en un almacenamiento persistente.

Para exportar el contenido de todos los secretos de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get secret -o json >project-name_secrets.json

Si desea exportar el contenido de un único secreto, utilice el siguiente comando " kubectl ":

kubectl get secret <secret-name> -o json >project-name-secret-name_secret.json

Los valores almacenados en Code Engine secrets suelen ser copias de valores gestionados en otros sistemas, como IBM Cloud Secrets Manager. Por lo tanto, la mayoría de las veces no es necesario exportar secretos. Si aún así necesita exportar secretos de Code Engine, debe elegir exportar secretos individuales en lugar de exportar todos los secretos para evitar la divulgación involuntaria de información confidencial.

Exportación de la configuración de ' domain mapping

Para exportar la configuración de todos los mapeos de dominio de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get domainmapping -o json >project-name_domainmappings.json

Si desea exportar la configuración de un único mapeo de dominio, utilice el siguiente comando ' kubectl ':

kubectl get domainmapping <domainmapping-name> -o json >project-name-domainmapping-name_domainmapping.json

Exportación de la configuración de ' IBM Cloud Object Storage event subscription

Para exportar la configuración de todas las suscripciones a eventos IBM Cloud Object Storage de su proyecto, ejecute el siguiente comando ' kubectl:

kubectl get cossource -o json >project-name_cos-event-subscriptions.json

Si desea exportar la configuración de una única suscripción a eventos IBM Cloud Object Storage, utilice el siguiente comando ' kubectl:

kubectl get cossource <cos-event-subscription-name> -o json >project-name-cos-event-subscription-name_cos-event-subscription.json

Exportación de la configuración de ' cron event subscription

Para exportar la configuración de todas las suscripciones a eventos ' cron ' de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get pingsource -o json >project-name_cron-event-subscriptions.json

Si desea exportar la configuración de una única suscripción de eventos " cron ", utilice el siguiente comando " kubectl ":

kubectl get pingsource <cron-event-subscription-name> -o json >project-name-cron-event-subscription-name_cron-event-subscription.json

Exportación de la configuración de ' Kafka event subscription

Para exportar la configuración de todas las suscripciones a eventos Kafka de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get kafkasource -o json >project-name_kafka-event-subscriptions.json

Si desea exportar la configuración de una única suscripción a eventos Kafka, utilice el siguiente comando ' kubectl ':

kubectl get kafkasource <cron-event-subscription-name> -o json >project-name-kafka-event-subscription-name_kafka-event-subscription.json

Exportación de la configuración de ' function

Para exportar la configuración de todas las funciones de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get function -o json >project-name_functions.json

Si desea exportar la configuración de una única función, utilice el siguiente comando ' kubectl ':

kubectl get function <function-name> -o json >project-name-function-name_function.json

Exportación de la configuración de ' job

Para exportar la configuración de todos los trabajos de tu proyecto, ejecuta el siguiente comando ' kubectl ':

kubectl get jobdefinition -o json >project-name_jobs.json

Si desea exportar la configuración de un único trabajo, utilice el siguiente comando ' kubectl ':

kubectl get jobdefinition <function-name> -o json >project-name-job-name_job.json

Exportación de la configuración de ' job run

Para exportar la configuración de todos los jobruns de su proyecto, ejecute el siguiente comando ' kubectl ':

kubectl get jobrun -o json >project-name_jobruns.json

Si desea exportar la configuración de un solo jobrun, utilice el siguiente comando ' kubectl ':

kubectl get jobrun <function-name> -o json >project-name-jobrun-name_jobrun.json

Formatos de datos exportados

Code Engine admite el siguiente formato de datos y esquema de los datos, la configuración y la aplicación exportados:

  • JSON

Ejemplo: Exportar un ConfigMap con nombre ' export-sample y formato ' JSON ' da como resultado la siguiente salida JSON:

Mandato: kubectl get configmap export-sample -o json

Salida:

{
    "apiVersion": "v1",
    "data": {
        "APP_OWNER": "John Doe",
        "NUM_DATASETS": "24",
        "foo": "bar"
    },
    "kind": "ConfigMap",
    "metadata": {
        "creationTimestamp": "2024-10-15T09:12:47Z",
        "name": "export-sample",
        "namespace": "7yuw2furi55",
        "resourceVersion": "9162003517",
        "uid": "12962640-a294-4e1f-a006-a875f119df43"
    }
}

Todos los comandos que utilizan el comando " kubectl " con la opción " -o json " producen una salida JSON compatible con Kubernetes. No se puede asumir que el JSON producido por otros comandos, como ' ibmcloud resource o ' ibmcloud code-engine ' sea compatible con Kubernetes tal cual.

Code Engine no admite la exportación del siguiente formato de datos y esquema de los datos exportados, configuración y aplicación:

  • YAML

Propiedad de los datos

Todos los datos exportados se clasifican como contenido del cliente. Aplicar los plenos derechos de propiedad y licencia del cliente, tal y como se establece en el IBM Cloud Contrato de servicio.