IBM Cloud Docs
了解Code Engine的数据可移植性

了解Code Engine的数据可移植性

数据可移植性涉及一系列命令,使客户能够导出在不同服务提供商或内部软件上实施类似工作负载和数据处理所需的数字工件。 它包括在客户自己的位置上导出服务客户内容的命令,包括服务用于存储和处理数据的相关配置。

职责

IBM Cloud服务提供界面和说明,指导客户在自己选定的位置复制和存储服务客户内容,包括相关配置。

客户负责使用导出的数据和配置,以便将数据移植到其他基础设施,其中包括

  • 规划和执行在不同云提供商或内部软件上建立替代基础架构,以提供与IBM服务类似的功能。
  • 在替代基础设施上移植所需应用代码的规划和执行,包括客户应用代码的调整、部署自动化等。
  • 将导出的数据和配置转换为替代基础设施和调整后的应用程序所需的格式。

有关您对Code Engine 的责任的更多信息,请参阅 了解您在使用Code Engine时的责任

数据导出程序

Code Engine提供了从源代码构建容器映像的机制。 源代码可以存储在本地或 Github 上。Code Engine不提供下载此类容器镜像的命令或工具。 相反,客户需要按照 IBM Cloud Container Registry数据导出程序 下载和存储这些图像。

Code Engine提供了导出用于处理客户内容的设置和配置的机制。

可以使用本节后面指定的命令导出以下Code Engine实体的配置数据:

  • 项目
  • 应用程序
  • 申请修订
  • 构建
  • 构建运行
  • configmaps
  • 密钥
  • 域映射
  • 事件订阅IBM Cloud Object Storage、"cron 和Kafka
  • 函数
  • 作业
  • 作业运行

导出数据所需的工具

要导出Code Engine数据,需要下载并安装以下命令行工具:

  • IBM CloudCLI 客户端
    • 访问IBM CloudCLI 入门页面,为操作系统安装 CLI 客户端。
  • Code EngineCLI 插件CLI 插件
    • 访问 "Code EngineCLI页面,其中有如何为 "IBM CloudCLI 安装 "Code Engine插件的说明。
  • Kubernetes CLI 客户端

导出 "project 配置

Code Engine中的项目是相关配置和工作负载的容器。 如果要导出项目,请使用以下 "ibmcloud resource 命令:

要列出所有Code Engine项目,请使用

ibmcloud resource service-instances --service-name codeengine

要列出特定区域内的所有Code Engine项目,请使用

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

确定要导出的Code Engine项目后,就可以使用了:

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

导出Code Engine项目只能导出项目实体本身的配置。 包含的配置实体和工作负载实体需要分别导出。

导出 "KUBECONFIG 以导出项目实体

确定要导出的项目后,必须导出一个“KUBECONFIG 环境变量,以便将本文档中描述的”kubectl 命令应用到该项目。

要获取 "KUBECONFIG 环境变量,请运行以下命令

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

这样就选择了项目,并打印出与下面类似的语句:

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"

将 "export KUBECONFIG=xxx 语句复制到终端提示符并运行。 以下所有 "kubectl 命令现在都适用于本项目。

导出 "application 配置

要导出项目中所有应用程序的配置,请运行以下 "kubectl 命令:

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

如果要导出单个应用程序的配置,请使用以下 "kubectl 命令:

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

导出 "application revision 配置

要导出项目中所有应用程序版本的配置,请运行以下 "kubectl 命令:

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

如果要导出单个应用程序修订版的配置,请使用以下 "kubectl 命令:

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

导出 "build 配置

要导出项目中所有构建的配置,请运行以下 "kubectl 命令:

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

如果要导出单次构建的配置,请使用以下 "kubectl 命令:

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

导出 "build run 配置

要导出项目中所有联编运行的配置,请运行以下 "kubectl 命令:

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

如果要导出单个编译运行的配置,请使用以下 "kubectl 命令:

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

导出 "configmap 配置

要导出项目中所有配置映射的内容,请运行以下 "kubectl 命令:

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

如果要导出单个配置图的内容,请使用以下 "kubectl 命令:

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

导出 "secret 配置

不要将机密内容导出到持久存储的文件中。

要导出项目中所有秘密的内容,请运行以下 "kubectl 命令:

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

如果要导出单个密文的内容,请使用下面的 "kubectl 命令:

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

存储在Code Engine秘密中的值通常是其他系统管理的值的副本,如IBM Cloud Secrets Manager。 因此,大多数情况下不需要导出机密。 如果仍需要从Code Engine 导出机密,则应选择导出单个机密,而不是导出所有机密,以避免无意中泄露敏感信息。

导出 "domain mapping 配置

要导出项目中所有域映射的配置,请运行以下 "kubectl 命令:

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

如果要导出单个域映射的配置,请使用以下 "kubectl 命令:

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

导出 "IBM Cloud Object Storage event subscription 配置

要导出项目中所有IBM Cloud Object Storage事件订阅的配置,请运行以下 "kubectl 命令:

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

如果要导出单个IBM Cloud Object Storage事件订阅的配置,请使用以下 "kubectl 命令:

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

导出 "cron event subscription 配置

要导出项目中所有“cron 事件订阅的配置,请运行以下”kubectl 命令:

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

如果要导出单个“cron 事件订阅的配置,请使用以下”kubectl 命令:

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

导出 "Kafka event subscription 配置

要导出项目中所有Kafka事件订阅的配置,请运行以下 "kubectl 命令:

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

如果要导出单个Kafka事件订阅的配置,请使用以下 "kubectl 命令:

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

导出 "function 配置

要导出项目中所有函数的配置,请运行以下 "kubectl 命令:

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

如果要导出单个函数的配置,请使用以下 "kubectl 命令:

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

导出 "job 配置

要导出项目中所有任务的配置,请运行以下 "kubectl 命令:

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

如果要导出单个任务的配置,请使用以下 "kubectl 命令:

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

导出 "job run 配置

要导出项目中所有运行任务的配置,请运行以下 "kubectl 命令:

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

如果要导出单个运行任务的配置,请使用以下 "kubectl 命令:

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

导出数据格式

Code Engine支持以下导出数据、配置和应用程序的数据格式和模式:

  • JSON

示例导出名称为“export-sample、格式为”JSON 的ConfigMap会产生以下 JSON 输出:

命令: kubectl get configmap export-sample -o json

输出:

{
    "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"
    }
}

所有使用“kubectl 命令和”-o json 选项的命令都会产生与Kubernetes 兼容的 JSON 输出。 其他命令(如 "ibmcloud resource 或 "ibmcloud code-engine)生成的 JSON 不能认为与Kubernetes兼容。

Code Engine不支持导出以下数据格式和导出数据、配置和应用程序的模式:

  • YAML

数据所有权

所有导出的数据都归类为客户内容。 应用 "IBM Cloud服务协议 中规定的全部客户所有权和许可权。