了解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 客户端
- 访问 Kubernetes安装工具页面,为你的操作系统安装 "
kubectl
CLI 客户端。
- 访问 Kubernetes安装工具页面,为你的操作系统安装 "
导出 "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服务协议 中规定的全部客户所有权和许可权。