Entendendo a portabilidade de dados para Code Engine

A portabilidade de dados envolve um conjunto de comandos que permite aos clientes exportar os artefatos digitais necessários para implementar cargas de trabalho e processamento de dados semelhantes em diferentes provedores de serviços ou softwares locais. Inclui comandos para exportar o conteúdo do cliente do serviço, incluindo a configuração relacionada que é usada pelo serviço para armazenar e processar os dados, no próprio local do cliente.

Responsabilidades

os serviços IBM Cloud fornecem interfaces e instruções para orientar o cliente a copiar e armazenar o conteúdo do cliente do serviço, incluindo a configuração relacionada, em seu próprio local selecionado.

O cliente é responsável pelo uso dos dados exportados e pela configuração da portabilidade de dados para outras infraestruturas, o que inclui:

  • O planejamento e a execução para configurar uma infraestrutura alternativa em diferentes provedores de nuvem ou software local que forneça recursos semelhantes aos serviços IBM.
  • O planejamento e a execução da portabilidade do código do aplicativo necessário na infraestrutura alternativa, incluindo a adaptação do código do aplicativo do cliente, a automação da implantação e assim por diante.
  • A conversão dos dados e da configuração exportados para o formato exigido pela infraestrutura alternativa e pelos aplicativos adaptados.

Para obter mais informações sobre suas responsabilidades em relação ao Code Engine, consulte Entendendo suas responsabilidades ao usar o Code Engine.

Procedimentos de exportação de dados

Code Engine fornece mecanismos para criar imagens de contêineres a partir do código-fonte. O código-fonte pode ser armazenado localmente ou no Github. Code Engine não fornece comandos ou ferramentas para baixar essas imagens de contêiner. Em vez disso, os clientes precisam fazer download e armazenar essas imagens seguindo os procedimentos de exportação de dados para IBM Cloud Container Registry.

Code Engine fornece mecanismos para exportar definições e configurações que são usadas para processar o conteúdo do cliente.

Os dados de configuração das seguintes entidades Code Engine podem ser exportados usando os comandos especificados posteriormente nesta seção:

  • Projetos
  • Aplicativos
  • Revisões de aplicativos
  • Compilações
  • Execuções de compilação
  • Configmaps
  • Segredos
  • Mapeamentos de domínio
  • Assinaturas de eventosIBM Cloud Object Storage, ' cron e Kafka)
  • Funções
  • Tarefas
  • Execuções de tarefas

Ferramentas necessárias para exportar dados

Para exportar os dados do Code Engine, você precisa fazer o download e instalar as seguintes ferramentas de linha de comando:

  • O IBM Cloud Cliente CLI
  • O Code Engine Plug-in da CLI
    • Visite a página Code Engine Que contém instruções sobre como instalar o plug-in Code Engine para a IBM Cloud CLI.
  • O cliente CLI Kubernetes

Exportação da configuração " project

Um projeto em Code Engine é um contêiner de configurações e cargas de trabalho relacionadas. Se você quiser exportar um projeto, use os seguintes comandos ' ibmcloud resource:

Para listar todos os projetos Code Engine, use:

ibmcloud resource service-instances --service-name codeengine

Para listar todos os projetos Code Engine em uma região específica, use:

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

Quando você tiver identificado o projeto Code Engine que deseja exportar, use-o:

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

A exportação de um projeto Code Engine exporta apenas a configuração da própria entidade do projeto. As entidades de configuração contidas e as entidades de carga de trabalho precisam ser exportadas separadamente.

Exportação de um " KUBECONFIG para exportar entidades do projeto

Depois de identificar um projeto que deseja exportar, é necessário exportar uma variável de ambiente ' KUBECONFIG para que os comandos ' kubectl descritos neste documento sejam aplicados a esse projeto.

Para obter essa variável de ambiente " KUBECONFIG, execute os seguintes comandos

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

Isso seleciona o projeto e imprime uma declaração semelhante à seguinte:

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"

Copie a instrução ' export KUBECONFIG=xxx para o prompt do terminal e execute-a. Todos os comandos " kubectl a seguir têm agora o escopo desse projeto.

Exportação da configuração " application

Para exportar a configuração de todos os aplicativos em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar a configuração de um único aplicativo, use o seguinte comando ' kubectl:

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

Exportação da configuração " application revision

Para exportar a configuração de todas as revisões de aplicativos em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar a configuração de uma única revisão de aplicativo, use o seguinte comando ' kubectl:

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

Exportação da configuração " build

Para exportar a configuração de todas as compilações em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar a configuração de uma única compilação, use o seguinte comando ' kubectl:

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

Exportação da configuração " build run

Para exportar a configuração de todas as execuções de compilação em seu projeto, execute o seguinte comando kubectl:

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

Se você quiser exportar a configuração de um único buildrun, use o seguinte comando ' kubectl:

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

Exportação da configuração " configmap

Para exportar o conteúdo de todos os configmaps em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar o conteúdo de um único configmap, use o seguinte comando ' kubectl:

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

Exportação da configuração " secret

Não exporte o conteúdo dos segredos para um arquivo em um armazenamento persistente.

Para exportar o conteúdo de todos os segredos em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar o conteúdo de um único segredo, use o seguinte comando ' kubectl:

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

Os valores armazenados nos segredos de Code Engine geralmente são cópias de valores gerenciados em outros sistemas, como IBM Cloud Secrets Manager. Portanto, na maioria das vezes, não é necessário exportar segredos. Se você ainda precisar exportar segredos do site Code Engine, deverá escolher exportar segredos individuais em vez de exportar todos os segredos para evitar a divulgação não intencional de informações confidenciais.

Exportação da configuração " domain mapping

Para exportar a configuração de todos os mapeamentos de domínio em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar a configuração de um único mapeamento de domínio, use o seguinte comando ' kubectl:

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

Exportação da configuração " IBM Cloud Object Storage event subscription

Para exportar a configuração de todas as assinaturas de eventos IBM Cloud Object Storage em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar a configuração de uma única assinatura de evento IBM Cloud Object Storage, use o seguinte comando ' kubectl:

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

Exportação da configuração " cron event subscription

Para exportar a configuração de todas as assinaturas de eventos " cron em seu projeto, execute o seguinte comando " kubectl:

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

Se você quiser exportar a configuração de uma única assinatura de evento " cron, use o seguinte comando " kubectl:

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

Exportação da configuração " Kafka event subscription

Para exportar a configuração de todas as assinaturas de eventos do Kafka em seu projeto, execute o seguinte comando " kubectl:

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

Se você quiser exportar a configuração de uma única assinatura de evento Kafka, use o seguinte comando " kubectl:

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

Exportação da configuração " function

Para exportar a configuração de todas as funções em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar a configuração de uma única função, use o seguinte comando ' kubectl:

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

Exportação da configuração " job

Para exportar a configuração de todos os trabalhos em seu projeto, execute o seguinte comando " kubectl:

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

Se você quiser exportar a configuração de um único trabalho, use o seguinte comando ' kubectl:

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

Exportação da configuração " job run

Para exportar a configuração de todos os jobruns em seu projeto, execute o seguinte comando ' kubectl:

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

Se você quiser exportar a configuração de um único jobrun, use o seguinte comando ' kubectl:

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

Formatos de dados exportados

Code Engine suporta o seguinte formato de dados e esquema dos dados, da configuração e do aplicativo exportados:

  • JSON

Exemplo: A exportação de um ConfigMap com o nome " export-sample e o formato " JSON resulta na seguinte saída JSON:

Comando: kubectl get configmap export-sample -o json

Saída:

{
    "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 os comandos que usam o comando " kubectl com a opção " -o json produzem uma saída JSON compatível com o Kubernetes. Não se pode presumir que o JSON produzido por outros comandos, como " ibmcloud resource ou " ibmcloud code-engine, seja compatível com o Kubernetes como está.

Code Engine não é compatível com a exportação do seguinte formato de dados e esquema dos dados, da configuração e do aplicativo exportados:

  • YAML

Propriedade dos dados

Todos os dados exportados são classificados como conteúdo do cliente. Aplicar os direitos totais de propriedade e licenciamento do cliente, conforme declarado no IBM Cloud Contrato de Serviço.