v1alpha6 to v1beta1
This guide documents how to upgrade pipelines.kubeflow.org
resources from v1alpha6
to v1beta1
.
Follow the steps below for every Pipeline
, RunConfiguration
, Experiment
, Run
, RunSchedule
, and Provider
you deploy yourself.
Pipeline
- Change the
apiVersion
frompipelines.kubeflow.org/v1alpha6
topipelines.kubeflow.org/v1beta1
. - Ensure that the
spec.provider
field includes the namespace that the Provider resource is deployed in. - Add
spec.frameworks
, which is an object withname
andparameters
fields.parameters
are framework specific parameters, such ascomponents
andbeamArgs
. To use thetfx
framework that was the only option under versionsv1alpha6
and below, set thename
field totfx
, add the path to the function that returns the tfx components underspec.frameworks.components
, and add any required beamArgs like the example below. - Remove
spec.tfxComponents
. - Remove
spec.beamArgs
.
Example
The example below shows the required changes for migrating a Pipeline resource from v1alpha6
to v1beta1
.
- apiVersion: pipelines.kubeflow.org/v1alpha6
+ apiVersion: pipelines.kubeflow.org/v1beta1
kind: Pipeline
metadata:
name: my-training-pipeline
namespace: my-namespace
spec:
- provider: vai
+ provider: my-provider-namespace/vai
image: registry/mypipelineimage
- tfxComponents: pipeline.create_components
+ frameworks:
+ name: tfx
+ parameters:
+ components: base_pipeline.create_components
+ beamArgs:
+ - name: anArg
+ value: aValue
- beamArgs:
- - name: anArg
- value: aValue
RunConfiguration
- Change the
apiVersion
frompipelines.kubeflow.org/v1alpha6
topipelines.kubeflow.org/v1beta1
. - Ensure that the
spec.run.provider
field includes the namespace that the Provider resource is deployed in. - Change the
spec.run.runtimeParameters
field tospec.run.parameters
if set.
Example
The example below shows the required changes for migrating a RunConfiguration resource from v1alpha6
to v1beta1
.
- apiVersion: pipelines.kubeflow.org/v1alpha6
+ apiVersion: pipelines.kubeflow.org/v1beta1
kind: RunConfiguration
metadata:
name: my-run-config
namespace: my-namespace
spec:
run:
- provider: vai
+ provider: my-provider-namespace/vai
pipeline: my-training-pipeline
- runtimeParameters:
+ parameters:
- name: TRAINING_RUNS
value: '100'
triggers:
schedules:
- cronExpression: 0 * * * *
Experiment
- Change the
apiVersion
frompipelines.kubeflow.org/v1alpha6
topipelines.kubeflow.org/v1beta1
. - Ensure that the
spec.provider
field includes the namespace that the Provider resource is deployed in.
Example
The example below shows the required changes for migrating an Experiment resource from v1alpha6
to v1beta1
.
- apiVersion: pipelines.kubeflow.org/v1alpha6
+ apiVersion: pipelines.kubeflow.org/v1beta1
kind: Experiment
metadata:
name: my-experiment
namespace: my-namespace
spec:
- provider: vai
+ provider: my-provider-namespace/vai
description: 'An experiment'
Run
In general, we expect users to deploy RunConfigurations to configure the lifecycle of their runs, leaving the management of
Runs
to the operator. However, if users are deployingRuns
themselves, they can follow the below steps to migrate the resource version.
- Change the
apiVersion
frompipelines.kubeflow.org/v1alpha6
topipelines.kubeflow.org/v1beta1
. - Ensure that the
spec.provider
field includes the namespace that the Provider resource is deployed in. - Change the
spec.runtimeParameters
field tospec.parameters
if set.
Example
The example below shows the required changes for migrating a Run resource from v1alpha5
to v1alpha6
.
- apiVersion: pipelines.kubeflow.org/v1alpha6
+ apiVersion: pipelines.kubeflow.org/v1beta1
kind: Run
metadata:
generateName: penguin-pipeline-run-
spec:
- provider: vai
+ provider: my-provider-namespace/vai
pipeline: penguin-pipeline
experimentName: penguin-experiment
- runtimeParameters:
+ parameters:
- name: TRAINING_RUNS
value: '100'
- name: EXAMPLES
valueFrom:
runConfigurationRef:
name: base-namespace/penguin-pipeline-example-generator-runconfiguration
outputArtifact: examples
artifacts:
- name: serving-model
path: 'Pusher:pushed_model:0[pushed == 1]'
RunSchedule
In general, we expect users to deploy RunConfigurations to configure the lifecycle of their runs, leaving the management of
RunSchedules
to the operator. However, if users are deployingRunSchedules
themselves, they can follow the below steps to migrate the resource version.
- Change the
apiVersion
frompipelines.kubeflow.org/v1alpha5
topipelines.kubeflow.org/v1alpha6
. - Set
spec.provider
to the value of thepipelines.kubeflow.org/provider
annotation inmetadata.annotations
. - Remove the
pipelines.kubeflow.org/provider
annotation frommetadata.annotations
. - Change
spec.schedule
from being a cron expression string to an object which containscronExpression
. If required, users can also set thestartTime
andendTime
fields on the same object to define when the schedule should start or stop. - Change the
spec.runtimeParameters
field tospec.parameters
if set.
Example
The example below shows the required changes for migrating a RunSchedule resource from v1alpha5
to v1alpha6
.
- apiVersion: pipelines.kubeflow.org/v1alpha6
+ apiVersion: pipelines.kubeflow.org/v1beta1
kind: RunSchedule
metadata:
generateName: penguin-pipeline-run-
spec:
- provider: vai
+ provider: my-provider-namespace/vai
pipeline: penguin-pipeline
experimentName: penguin-experiment
- runtimeParameters:
+ parameters:
- name: TRAINING_RUNS
value: '100'
- name: EXAMPLES
valueFrom:
runConfigurationRef:
name: base-namespace/penguin-pipeline-example-generator-runconfiguration
outputArtifact: examples
artifacts:
- name: serving-model
path: 'Pusher:pushed_model:0[pushed == 1]'
schedule:
cronExpression: 0 * * * *
Provider
- Change the
apiVersion
frompipelines.kubeflow.org/v1alpha6
topipelines.kubeflow.org/v1beta1
. - Add a list of frameworks supported by the provider in question, including the
name
andimage
of the compiler image.patches
can be used to perform a patch operation on Pipeline resources, which can be used to provide defaults such as defaultBeamArgs. See the example below and reference guide for more detail. - If required, add a list of namespaces that resources can reference this provider from under
spec.allowedNamespaces
. See the example below and reference guide for more detail. - Remove
spec.image
- this was the image of the provider CLI which has now been removed. - Remove
spec.defaultBeamArgs
.
Example
The example below shows the required changes for migrating a Provider resource from v1alpha6
to v1beta1
.
- apiVersion: pipelines.kubeflow.org/v1alpha6
+ apiVersion: pipelines.kubeflow.org/v1beta1
kind: Provider
metadata:
name: vai
namespace: my-provider-namespace
spec:
serviceImage: kfp-operator-kfp-provider-service:<version>
- image: kfp-operator-vai-provider:<version>
- defaultBeamArgs:
- - name: project
- value: <project>
executionMode: v2
pipelineRootStorage: gs://<storage_location>
serviceAccount: kfp-operator-vai
parameters:
eventsourcePipelineEventsSubscription: kfp-operator-vai-run-events-eventsource
maxConcurrentRunCount: 1
pipelineBucket: pipeline-storage-bucket
vaiJobServiceAccount: kfp-operator-vai@<project>.iam.gserviceaccount.com
vaiLocation: europe-west2
vaiProject: <project>
+ frameworks:
+ - name: tfx
+ image: ghcr.io/kfp-operator/kfp-operator-tfx-compiler:version-tag
+ patches:
+ - type: json
+ patch: |
+ [
+ {
+ "op": "add",
+ "path": "/framework/parameters/beamArgs/0",
+ "value": {
+ "name": "project",
+ "value": "<project>"
+ }
+ }
+ ]
+ allowedNamespaces:
+ - default
+ - my-namespace