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)
  • 関数
  • ジョブ
  • ジョブ実行

データのエクスポートに必要なツール

Code Engine データをエクスポートするには、以下のコマンドラインツールをダウンロードしてインストールする必要があります:

  • このCLIクライアントは、IBM Cloudクライアントです。CLIクライアント
    • IBM Cloudをご覧ください。CLI 入門ページ を参照して、お使いのオペレーティングシステム用のCLIクライアントをインストールしてください。
  • Code EngineCLIプラグインCLIプラグイン
    • Visit the Code EngineCLIページ which has instructions on how to install the Code Engine plug-in for the IBM Cloud CLI.
  • 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 エクスポート

エクスポートしたいプロジェクトが決まったら、このドキュメントで説明されている「kubectl コマンドをそのプロジェクトにスコープするために、「KUBECONFIG 環境変数をエクスポートしなければならない。

この環境変数「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

1つのアプリケーション・リビジョンの設定をエクスポートしたい場合は、次の「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

単一のbuildrunのコンフィギュレーションをエクスポートしたい場合は、以下の'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

1つの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 設定のエクスポート

プロジェクト内のすべてのjobrunの設定をエクスポートするには、次の'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サービス契約」に記載されている通り、顧客の所有権とライセンス権を全面的に適用する。