pipelines/kubernetes_platform/proto/kubernetes_executor_config....

117 lines
4.1 KiB
Protocol Buffer

// Copyright 2023 The Kubeflow Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package kfp_kubernetes;
import "google/protobuf/struct.proto";
option go_package = "github.com/kubeflow/pipelines/kubernetes_platform/go/kubernetesplatform";
message KubernetesExecutorConfig {
repeated SecretAsVolume secret_as_volume = 1;
repeated SecretAsEnv secret_as_env = 2;
repeated PvcMount pvc_mount = 3;
NodeSelector node_selector = 4;
}
message SecretAsVolume {
// Name of the Secret.
string secret_name = 1;
// Container path to mount the Secret data.
string mount_path = 2;
}
message SecretAsEnv {
// Name of the Secret.
string secret_name = 1;
message SecretKeyToEnvMap {
// Corresponds to a key of the Secret.data field.
string secret_key = 1;
// Env var to which secret_key's data should be set.
string env_var = 2;
}
repeated SecretKeyToEnvMap key_to_env = 2;
}
// Represents an upstream task's output parameter.
message TaskOutputParameterSpec {
// The name of the upstream task which produces the output parameter that
// matches with the `output_parameter_key`.
string producer_task = 1;
// The key of [TaskOutputsSpec.parameters][] map of the producer task.
string output_parameter_key = 2;
}
message PvcMount {
// Identifier for the PVC.
// Used like TaskInputsSpec.InputParameterSpec.kind.
oneof pvc_reference {
// Output parameter from an upstream task.
TaskOutputParameterSpec task_output_parameter = 1;
// A constant value.
string constant = 2;
// Pass the input parameter from parent component input parameter.
string component_input_parameter = 3;
}
// Container path to which the PVC should be mounted.
string mount_path = 4;
}
message CreatePvc {
oneof name {
// Name of the PVC, if not dynamically generated.
string pvc_name = 1;
// Suffix for a dynamically generated PVC name of the form
// {{workflow.name}}-<pvc_name_suffix>.
string pvc_name_suffix = 2;
}
// Corresponds to PersistentVolumeClaim.spec.accessMode field.
repeated string access_modes = 3;
// Corresponds to PersistentVolumeClaim.spec.resources.requests.storage field.
string size = 4;
// If true, corresponds to omitted PersistentVolumeClaim.spec.storageClassName.
bool default_storage_class = 5;
// Corresponds to PersistentVolumeClaim.spec.storageClassName string field.
// Should only be used if default_storage_class is false.
string storage_class_name = 6;
// Corresponds to PersistentVolumeClaim.spec.volumeName field.
string volume_name = 7;
// Corresponds to PersistentVolumeClaim.metadata.annotations field.
google.protobuf.Struct annotations = 8;
}
message DeletePvc {
// Identifier for the PVC.
// Used like TaskInputsSpec.InputParameterSpec.kind.
oneof pvc_reference {
// Output parameter from an upstream task.
TaskOutputParameterSpec task_output_parameter = 1;
// A constant value.
string constant = 2;
// Pass the input parameter from parent component input parameter.
string component_input_parameter = 3;
}
}
message NodeSelector {
// map of label key to label value
// corresponds to Pod.spec.nodeSelector field https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling
map<string, string> labels = 1;
}