了解Code Engine的資料可攜性

資料可攜性涉及一組命令,使客戶能夠匯出在不同服務提供者或本機軟體上實施類似工作負載和資料處理所需的數位工件。 它包括用於匯出服務客戶內容的命令,包括服務用於在客戶自己的位置儲存和處理資料的相關配置。

責任

IBM Cloud服務提供介面和說明來引導客戶在自己選擇的位置複製和儲存服務客戶內容(包括相關配置)。

客戶負責使用匯出的資料和配置將資料移植到其他基礎設施,其中包括:

  • 規劃並執行在不同的雲端供應商或本機軟體上設定替代基礎架構,提供與IBM服務類似的功能。
  • 規劃和執行在替代基礎架構上移植所需應用程式程式碼,包括客戶應用程式程式碼的適配、部署自動化等。
  • 將匯出的資料和配置轉換為替代基礎架構和改編應用程式所需的格式。

有關您對Code Engine的責任的更多信息,請參閱 了解使用Code Engine時的責任。

數據導出流程

Code Engine提供了從原始碼建立容器映像的機制。 原始碼可以儲存在本地或 Github 上。Code Engine不提供下載此類容器映像的指令或工具。 相反,客戶需要按照 IBM Cloud Container Registry的資料匯出程序 下載並儲存這些影像。

Code Engine提供匯出用於處理客戶內容的設定和設定的機制。

可以使用本節後面指定的命令匯出以下Code Engine實體的設定資料:

  • 專案
  • 應用程式
  • 申請修訂
  • 建置
  • 建置執行
  • 配置對映
  • 密碼
  • 網域對映
  • 事件訂閱( IBM Cloud Object Storage、cron 和Kafka )
  • Functions
  • 工作
  • 工作執行

匯出資料所需的工具

若要匯出 Code Engine 資料,您需要下載並安裝下列命令列工具:

  • IBM Cloud CLI 用戶端
    • 造訪IBM Cloud CLI 入門頁面, 為您的作業系統安裝 CLI 用戶端。
  • Code Engine CLI 插件
    • 造訪 Code Engine CLI 頁面,其中包含有關如何為Code Engine安裝IBM Cloud插件的說明命令列介面。
  • 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、格式為 JSONConfigMap會產生以下 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服務協議 中所述。