diff --git a/Makefile b/Makefile index 36596f188..409d6fa7c 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ test-argo: $(MAKE) -C argo/kfp-compiler test $(MAKE) -C argo/providers test -test-all: test helm-test-operator helm-test-provider test-argo +test-all: test helm-test test-argo integration-test-all: integration-test $(MAKE) -C argo/kfp-compiler integration-test @@ -133,35 +133,19 @@ kustomize: ## Download kustomize locally if necessary. $(call go-install,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v4@v4.5.2) ##@ Package -helm-package-operator: helm-cmd helm-test-operator - $(HELM) package helm/kfp-operator --version $(VERSION) --app-version $(VERSION) -d dist - -helm-package-provider: helm-cmd helm-test-provider - $(HELM) package helm/provider --version $(VERSION) --app-version $(VERSION) -d dist -helm-package: helm-package-operator helm-package-provider +helm-package: helm-cmd helm-test + $(HELM) package helm/kfp-operator --version $(VERSION) --app-version $(VERSION) -d dist -helm-install-operator: helm-package-operator values.yaml +helm-install: helm-package values.yaml $(HELM) install -f values.yaml kfp-operator dist/kfp-operator-$(VERSION).tgz -helm-uninstall-operator: +helm-uninstall: $(HELM) uninstall kfp-operator -helm-upgrade-operator: helm-package-operator values.yaml +helm-upgrade: helm-package values.yaml $(HELM) upgrade -f values.yaml kfp-operator dist/kfp-operator-$(VERSION).tgz -# NAME needs to be passed as an argument to the make target to point at the specific values file for the provider being installed -helm-install-provider: helm-package-provider - $(HELM) install -f $(NAME).yaml provider-$(NAME) dist/provider-$(VERSION).tgz - -# NAME needs to be passed as an argument to the make target to point at the specific values file for the provider being installed -helm-uninstall-provider: - $(HELM) uninstall provider-$(NAME) - -# NAME needs to be passed as an argument to the make target to point at the specific values file for the provider being installed -helm-upgrade-provider: helm-package-provider - $(HELM) upgrade -f $(NAME).yaml provider-$(NAME) dist/provider-$(VERSION).tgz - ifeq ($(HELM_REPOSITORIES)$(OSS_HELM_REPOSITORIES),) helm-publish: $(error OSS_HELM_REPOSITORIES or HELM_REPOSITORIES must be provided as space-separated lists of URLs) @@ -177,17 +161,15 @@ define helm-upload @echo "Publishing Helm chart to $(1)" @if [[ "$(1)" == "oci://"* ]]; then \ helm push dist/kfp-operator-$(VERSION).tgz $(1)/kfp-operator; \ - helm push dist/provider-$(VERSION).tgz $(1)/provider; \ else \ curl --fail --netrc-file $(NETRC_FILE) -T dist/kfp-operator-$(VERSION).tgz $(1); \ - curl --fail --netrc-file $(NETRC_FILE) -T dist/provider-$(VERSION).tgz $(1); \ fi $(NEWLINE) endef endif INDEXED_YAML := $(YQ) e '{([.metadata.name, .kind] | join("-")): .}' -helm-test-operator: manifests helm-cmd kustomize yq dyff +helm-test: manifests helm-cmd kustomize yq dyff $(eval TMP := $(shell mktemp -d)) # Create yaml files with helm and kustomize. @@ -199,10 +181,6 @@ helm-test-operator: manifests helm-cmd kustomize yq dyff $(DYFF) between --set-exit-code $(TMP)/helm_indexed $(TMP)/kustomize_indexed rm -rf $(TMP) -helm-test-provider: helm-cmd - $(eval TMP := $(shell mktemp -d)) - $(HELM) template helm/provider -f helm/provider/test/values.yaml > $(TMP)/helm - ##@ Containers include docker-targets.mk diff --git a/config/manager/controller_manager_config.yaml b/config/manager/controller_manager_config.yaml index 678794a3b..33ad7c49a 100644 --- a/config/manager/controller_manager_config.yaml +++ b/config/manager/controller_manager_config.yaml @@ -11,6 +11,10 @@ controller: leaderElect: true resourceName: kfp-operator-lock spec: + defaultBeamArgs: + - name: project + value: ${DATAFLOW_PROJECT} multiversion: true + pipelineStorage: ${PIPELINE_STORAGE} workflowNamespace: kfp-operator-system workflowTemplatePrefix: kfp-operator- diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 50771a0ff..42980197a 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -1,5 +1,6 @@ resources: - manager.yaml +- providers.yaml - workflows/common.yaml - workflows/compiled.yaml - workflows/rbac.yaml diff --git a/config/manager/providers.yaml b/config/manager/providers.yaml new file mode 100644 index 000000000..c1bce15ca --- /dev/null +++ b/config/manager/providers.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: providers + namespace: kfp-operator-system +data: diff --git a/docs-gen/content/docs/getting-started/installation.md b/docs-gen/content/docs/getting-started/installation.md index a6eef431c..74e25c169 100644 --- a/docs-gen/content/docs/getting-started/installation.md +++ b/docs-gen/content/docs/getting-started/installation.md @@ -11,12 +11,9 @@ This guide assumes you are familiar with [Helm](https://helm.sh/). - [Argo 3.1.6-3.3](https://argoproj.github.io/argo-workflows/installation/) installed cluster-wide or into the namespace where the operator's workflows run (see [configuration](../../reference/configuration)). - [Argo-Events 1.7.4+](https://argoproj.github.io/argo-events/installation/) installed cluster-wide (see [configuration](../../reference/configuration)). +- The KFP-Operator supports configurable provider backends. Currently, Kubeflow Pipelines and Vertex AI are supported. Please refer to the [respective configuration section](../../reference/configuration/#provider-configuration) before proceeding. -## KFP-Operator - -To get a working installation you will need to install both the KFP-Operator and at least one provider ([see below]({{< ref "#providers" >}} "Providers")) - -### Build and Install +## Build and Install Create basic `values.yaml` with the following content: @@ -32,7 +29,8 @@ helm install oci://ghcr.io/kfp-operator/kfp-operator -f values.yaml You will need to configure service accounts and roles required by your chosen `Provider`, [see here for reference]({{< ref "#provider-rbac" >}} "Provider RBAC Reference"). -### Configuration Values + +## Configuration Values Valid configuration options to override the [Default `values.yaml`]({{< ghblob "/helm/kfp-operator/values.yaml" >}}) are: @@ -67,39 +65,21 @@ Valid configuration options to override the [Default `values.yaml`]({{< ghblob " | `manager.provider.type` | Provider type (`kfp` for Kubeflow Pipelines or `vai` for Vertex AI Pipelines) | | `manager.provider.configuration` | Configuration block for the specific provider (see [Provider Configuration](../../reference/configuration#provider-configuration)), automatically mounted as a file | | `logging.verbosity` | Logging verbosity for all components - see the [logging documentation]({{< param "github_project_repo" >}}/blob/master/CONTRIBUTING.md#logging) for valid values | -| `statusFeedback.enabled` | Whether run completion eventing and status update feedback loop should be installed - defaults to `false` | +| `eventsourceServer.metadata` | [Object Metadata](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta) for the eventsource server's pods | +| `eventsourceServer.rbac.create` | Create roles and rolebindings for the eventsource server | +| `eventsourceServer.serviceAccount.name` | Eventsource server's service account | +| `eventsourceServer.serviceAccount.create` | Create the eventsource server's service account or expect it to be created externally | +| `eventsourceServer.resources` | Eventsource server resources as per [k8s documentation](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#resources) | +| `providers` | Dictionary of providers (see below) | Examples for these values can be found in the [test configuration]({{< ghblob "/helm/kfp-operator/test/values.yaml" >}}) -## Providers - -Supported providers are: -- Kubeflow Pipelines -- Vertex AI - -Install one or more by following these instructions. Please refer to the [respective configuration section](../../reference/configuration/#provider-configuration) before proceeding. - -### Build and Install - -Create basic `kfp.yaml` value file with the following content: - -```yaml -{{% readfile file="includes/quickstart/resources/kfp.yaml" %}} -``` - -Install the latest version of the provider - -```sh -helm install oci://ghcr.io/kfp-operator/provider -f kfp.yaml -``` +### Providers -### Configuration - -The `provider` block contains provider configurations: +The `providers` block contains a dictionary of provider names to provider configurations: | Parameter name | Description | |---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `name` | Name given to this provider | | `type` | Provider type (`kfp` or `vai`) | | `serviceAccount.name` | Name of the service account to run provider-specific operations | | `serviceAccount.create` | Create the service account (or assume it has been created externally) | @@ -109,13 +89,23 @@ The `provider` block contains provider configurations: Example: ```yaml -provider: - name: kfp-provider - type: kfp - executionMode: v1 - serviceAccount: - name: kfp-operator-kfp - create: false +providers: + kfp: + type: kfp + serviceAccount: + name: kfp-operator-kfp + create: false + configuration: + ... + vai: + type: vai + serviceAccount: + name: kfp-operator-kfp + create: true + metadata: + annotations: + iam.gke.io/gcp-service-account: kfp-operator-vai@my-project.iam.gserviceaccount.com + configuration: ... ``` diff --git a/docs-gen/content/docs/getting-started/overview.md b/docs-gen/content/docs/getting-started/overview.md index edcf29851..367f7b6ba 100644 --- a/docs-gen/content/docs/getting-started/overview.md +++ b/docs-gen/content/docs/getting-started/overview.md @@ -48,7 +48,7 @@ The Kubeflow Pipelines operator can optionally be installed with [Argo-Events](h Currently, we support the following eventsources: -- [Run Completion Eventsource](../../reference/run-completion) +- [Run Completion Eventsource](../reference/run-completion) ## Architecture Overview diff --git a/docs-gen/includes/quickstart/resources/kfp.yaml b/docs-gen/includes/quickstart/resources/kfp.yaml deleted file mode 100644 index 22cd56fc8..000000000 --- a/docs-gen/includes/quickstart/resources/kfp.yaml +++ /dev/null @@ -1,16 +0,0 @@ -provider: - name: kfp-provider - type: kfp - executionMode: v1 - serviceAccount: - name: kfp-operator-kfp - create: false - configuration: - kfpNamespace: kubeflow - restKfpApiUrl: http://ml-pipeline.kubeflow:8888 - grpcMetadataStoreAddress: metadata-grpc-service.kubeflow:8080 - grpcKfpApiAddress: ml-pipeline.kubeflow:8887 - defaultBeamArgs: - - name: project - value: ${DATAFLOW_PROJECT} - pipelineRootStorage: ${PIPELINE_STORAGE} diff --git a/docs-gen/includes/quickstart/resources/values.yaml b/docs-gen/includes/quickstart/resources/values.yaml index 031554d60..d6b414c83 100644 --- a/docs-gen/includes/quickstart/resources/values.yaml +++ b/docs-gen/includes/quickstart/resources/values.yaml @@ -4,3 +4,11 @@ manager: serviceAccount: pipeline-runner configuration: defaultExperiment: Default + pipelineStorage: {STORAGE_LOCATION} + provider: + type: kfp + configuration: + kfpNamespace: kubeflow + restKfpApiUrl: http://ml-pipeline.kubeflow:8888 + grpcKfpApiAddress: ml-pipeline.kubeflow:8887 + grpcMetadataStoreAddress: metadata-grpc-service.kubeflow:8080 diff --git a/docs/docs/getting-started/index.xml b/docs/docs/getting-started/index.xml index 6df81e769..b0c5216ec 100644 --- a/docs/docs/getting-started/index.xml +++ b/docs/docs/getting-started/index.xml @@ -49,7 +49,7 @@ A provider is a runtime environment for managing and executing ML pipelines and <p>The Kubeflow Pipelines operator can optionally be installed with <a href="https://argoproj.github.io/argo-events/">Argo-Events</a> eventsources which lets users react to events.</p> <p>Currently, we support the following eventsources:</p> <ul> -<li><a href="../../reference/run-completion">Run Completion Eventsource</a></li> +<li><a href="../reference/run-completion">Run Completion Eventsource</a></li> </ul> <h2 id="architecture-overview">Architecture Overview</h2> <p>To do.</p>Docs: Installationhttps://sky-uk.github.io/kfp-operator/docs/getting-started/installation/Mon, 01 Jan 0001 00:00:00 +0000https://sky-uk.github.io/kfp-operator/docs/getting-started/installation/ @@ -59,10 +59,9 @@ A provider is a runtime environment for managing and executing ML pipelines and <ul> <li><a href="https://argoproj.github.io/argo-workflows/installation/">Argo 3.1.6-3.3</a> installed cluster-wide or into the namespace where the operator&rsquo;s workflows run (see <a href="../../reference/configuration">configuration</a>).</li> <li><a href="https://argoproj.github.io/argo-events/installation/">Argo-Events 1.7.4+</a> installed cluster-wide (see <a href="../../reference/configuration">configuration</a>).</li> +<li>The KFP-Operator supports configurable provider backends. Currently, Kubeflow Pipelines and Vertex AI are supported. Please refer to the <a href="../../reference/configuration/#provider-configuration">respective configuration section</a> before proceeding.</li> </ul> -<h2 id="kfp-operator">KFP-Operator</h2> -<p>To get a working installation you will need to install both the KFP-Operator and at least one provider (<a href="#providers" title="Providers">see below</a>)</p> -<h3 id="build-and-install">Build and Install</h3> +<h2 id="build-and-install">Build and Install</h2> <p>Create basic <code>values.yaml</code> with the following content:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">fullnameOverride</span>: <span style="color:#ae81ff">kfp-operator</span> </span></span><span style="display:flex;"><span><span style="color:#f92672">manager</span>: @@ -70,10 +69,18 @@ A provider is a runtime environment for managing and executing ML pipelines and </span></span><span style="display:flex;"><span> <span style="color:#f92672">serviceAccount</span>: <span style="color:#ae81ff">pipeline-runner</span> </span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: </span></span><span style="display:flex;"><span> <span style="color:#f92672">defaultExperiment</span>: <span style="color:#ae81ff">Default</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">pipelineStorage</span>: {<span style="color:#ae81ff">STORAGE_LOCATION}</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">provider</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">kfp</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">kfpNamespace</span>: <span style="color:#ae81ff">kubeflow</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">restKfpApiUrl</span>: <span style="color:#ae81ff">http://ml-pipeline.kubeflow:8888</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">grpcKfpApiAddress</span>: <span style="color:#ae81ff">ml-pipeline.kubeflow:8887</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">grpcMetadataStoreAddress</span>: <span style="color:#ae81ff">metadata-grpc-service.kubeflow:8080</span> </span></span></code></pre></div><p>Install the latest version of the operator</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>helm install oci://ghcr.io/kfp-operator/kfp-operator -f values.yaml </span></span></code></pre></div><p>You will need to configure service accounts and roles required by your chosen <code>Provider</code>, <a href="#provider-rbac" title="Provider RBAC Reference">see here for reference</a>.</p> -<h3 id="configuration-values">Configuration Values</h3> +<h2 id="configuration-values">Configuration Values</h2> <p>Valid configuration options to override the <a href="https://github.com/sky-uk/kfp-operator/blob/master/helm/kfp-operator/values.yaml ">Default <code>values.yaml</code></a> are:</p> <table> @@ -201,42 +208,35 @@ A provider is a runtime environment for managing and executing ML pipelines and <td>Logging verbosity for all components - see the <a href="https://github.com/sky-uk/kfp-operator/blob/master/CONTRIBUTING.md#logging">logging documentation</a> for valid values</td> </tr> <tr> -<td><code>statusFeedback.enabled</code></td> -<td>Whether run completion eventing and status update feedback loop should be installed - defaults to <code>false</code></td> +<td><code>eventsourceServer.metadata</code></td> +<td><a href="https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta">Object Metadata</a> for the eventsource server&rsquo;s pods</td> +</tr> +<tr> +<td><code>eventsourceServer.rbac.create</code></td> +<td>Create roles and rolebindings for the eventsource server</td> +</tr> +<tr> +<td><code>eventsourceServer.serviceAccount.name</code></td> +<td>Eventsource server&rsquo;s service account</td> +</tr> +<tr> +<td><code>eventsourceServer.serviceAccount.create</code></td> +<td>Create the eventsource server&rsquo;s service account or expect it to be created externally</td> +</tr> +<tr> +<td><code>eventsourceServer.resources</code></td> +<td>Eventsource server resources as per <a href="https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#resources">k8s documentation</a></td> +</tr> +<tr> +<td><code>providers</code></td> +<td>Dictionary of providers (see below)</td> </tr> </tbody> </table> <p>Examples for these values can be found in the <a href="https://github.com/sky-uk/kfp-operator/blob/master/helm/kfp-operator/test/values.yaml ">test configuration</a></p> -<h2 id="providers">Providers</h2> -<p>Supported providers are:</p> -<ul> -<li>Kubeflow Pipelines</li> -<li>Vertex AI</li> -</ul> -<p>Install one or more by following these instructions. Please refer to the <a href="../../reference/configuration/#provider-configuration">respective configuration section</a> before proceeding.</p> -<h3 id="build-and-install-1">Build and Install</h3> -<p>Create basic <code>kfp.yaml</code> value file with the following content:</p> -<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">provider</span>: -</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-provider</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">kfp</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">executionMode</span>: <span style="color:#ae81ff">v1</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">serviceAccount</span>: -</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-operator-kfp</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">create</span>: <span style="color:#66d9ef">false</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: -</span></span><span style="display:flex;"><span> <span style="color:#f92672">kfpNamespace</span>: <span style="color:#ae81ff">kubeflow</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">restKfpApiUrl</span>: <span style="color:#ae81ff">http://ml-pipeline.kubeflow:8888</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">grpcMetadataStoreAddress</span>: <span style="color:#ae81ff">metadata-grpc-service.kubeflow:8080</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">grpcKfpApiAddress</span>: <span style="color:#ae81ff">ml-pipeline.kubeflow:8887</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">defaultBeamArgs</span>: -</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">project</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">value</span>: <span style="color:#ae81ff">${DATAFLOW_PROJECT}</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">pipelineRootStorage</span>: <span style="color:#ae81ff">${PIPELINE_STORAGE}</span> -</span></span></code></pre></div><p>Install the latest version of the provider</p> -<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>helm install oci://ghcr.io/kfp-operator/provider -f kfp.yaml -</span></span></code></pre></div><h3 id="configuration">Configuration</h3> -<p>The <code>provider</code> block contains provider configurations:</p> +<h3 id="providers">Providers</h3> +<p>The <code>providers</code> block contains a dictionary of provider names to provider configurations:</p> <table> <thead> <tr> @@ -246,10 +246,6 @@ A provider is a runtime environment for managing and executing ML pipelines and </thead> <tbody> <tr> -<td><code>name</code></td> -<td>Name given to this provider</td> -</tr> -<tr> <td><code>type</code></td> <td>Provider type (<code>kfp</code> or <code>vai</code>)</td> </tr> @@ -272,13 +268,23 @@ A provider is a runtime environment for managing and executing ML pipelines and </tbody> </table> <p>Example:</p> -<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">provider</span>: -</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-provider</span> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">providers</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">kfp</span>: </span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">kfp</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">executionMode</span>: <span style="color:#ae81ff">v1</span> </span></span><span style="display:flex;"><span> <span style="color:#f92672">serviceAccount</span>: </span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-operator-kfp</span> </span></span><span style="display:flex;"><span> <span style="color:#f92672">create</span>: <span style="color:#66d9ef">false</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: +</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">...</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">vai</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">vai</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">serviceAccount</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-operator-kfp</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">create</span>: <span style="color:#66d9ef">true</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">metadata</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">annotations</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">iam.gke.io/gcp-service-account</span>: <span style="color:#ae81ff">kfp-operator-vai@my-project.iam.gserviceaccount.com</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: </span></span><span style="display:flex;"><span> <span style="color:#ae81ff">...</span> </span></span></code></pre></div><h2 id="provider-rbac">Role-based access control (RBAC) for providers</h2> <p>When using a provider, you should create the necessary <code>ServiceAccount</code>, <code>RoleBinding</code> and <code>ClusterRoleBinding</code> resources required for the providers being used. diff --git a/docs/docs/getting-started/installation/index.html b/docs/docs/getting-started/installation/index.html index 8325040d2..ad315fcf2 100644 --- a/docs/docs/getting-started/installation/index.html +++ b/docs/docs/getting-started/installation/index.html @@ -1,48 +1,46 @@ Installation | KFP-Operator

Installation

We recommend the installation using Helm as it allows a declarative approach to managing Kubernetes resources.

This guide assumes you are familiar with Helm.

Prerequisites

Build and Install

Create basic values.yaml with the following content:

fullnameOverride: kfp-operator
 manager:
   argo:
     serviceAccount: pipeline-runner
   configuration:
     defaultExperiment: Default
+    pipelineStorage: {STORAGE_LOCATION}
+  provider:
+    type: kfp
+    configuration:
+      kfpNamespace: kubeflow
+      restKfpApiUrl: http://ml-pipeline.kubeflow:8888
+      grpcKfpApiAddress: ml-pipeline.kubeflow:8887
+      grpcMetadataStoreAddress: metadata-grpc-service.kubeflow:8080
 

Install the latest version of the operator

helm install oci://ghcr.io/kfp-operator/kfp-operator -f values.yaml
-

You will need to configure service accounts and roles required by your chosen Provider, see here for reference.

Configuration Values

Valid configuration options to override the Default values.yaml are:

Parameter nameDescription
containerRegistryContainer Registry base path for all container images
namespace.createCreate the namespace for the operator
namespace.nameOperator namespace name
manager.argo.containerDefaultsContainer Spec defaults to be used for Argo workflow pods created by the operator
manager.argo.metadataContainer Metadata defaults to be used for Argo workflow pods created by the operator
manager.argo.ttlStrategyTTL Strategy used for all Argo Workflows
manager.argo.stepTimeoutSeconds.compileTimeout in seconds for compiler steps - defaults to 1800 (30m)
manager.argo.stepTimeoutSeconds.defaultDefault timeout in seconds for workflow steps - defaults to 300 (5m)
manager.argo.serviceAccount.nameThe k8s service account used to run Argo workflows
manager.argo.serviceAccount.createCreate the Argo Workflows service account (or assume it has been created externally)
manager.argo.serviceAccount.metadataOptional Argo Workflows service account default metadata
manager.metadataObject Metadata for the manager’s pods
manager.rbac.createCreate roles and rolebindings for the operator
manager.serviceAccount.nameManager service account’s name
manager.serviceAccount.createCreate the manager’s service account or expect it to be created externally
manager.replicasNumber of replicas for the manager deployment
manager.resourcesManager resources as per k8s documentation
manager.configurationManager configuration as defined in Configuration (note that you can omit compilerImage and kfpSdkImage when specifying containerRegistry as default values will be applied)
manager.monitoring.createCreate the manager’s monitoring resources
manager.monitoring.rbacSecuredEnable addtional RBAC-based security
manager.monitoring.serviceMonitor.createCreate a ServiceMonitor for the Prometheus Operator
manager.monitoring.serviceMonitor.endpointConfigurationAdditional configuration to be used in the service monitor endpoint (path, port and scheme are provided)
manager.multiversion.enabledEnable multiversion API. Should be used in production to allow version migration, disable for simplified installation
manager.webhookCertificates.providerK8s conversion webhook TLS certificate provider - choose cert-manager for Helm to deploy certificates if cert-manager is available or custom otherwise (see below)
manager.webhookCertificates.secretNameName of a K8s secret deployed into the operator namespace to secure the webhook endpoint with, required if the custom provider is chosen
manager.webhookCertificates.caBundleCA bundle of the certificate authority that has signed the webhook’s certificate, required if the custom provider is chosen
manager.provider.typeProvider type (kfp for Kubeflow Pipelines or vai for Vertex AI Pipelines)
manager.provider.configurationConfiguration block for the specific provider (see Provider Configuration), automatically mounted as a file
logging.verbosityLogging verbosity for all components - see the logging documentation for valid values
statusFeedback.enabledWhether run completion eventing and status update feedback loop should be installed - defaults to false

Examples for these values can be found in the test configuration

Providers

Supported providers are:

  • Kubeflow Pipelines
  • Vertex AI

Install one or more by following these instructions. Please refer to the respective configuration section before proceeding.

Build and Install

Create basic kfp.yaml value file with the following content:

provider:
-  name: kfp-provider
-  type: kfp
-  executionMode: v1
-  serviceAccount:
-    name: kfp-operator-kfp
-    create: false
-  configuration:
-    kfpNamespace: kubeflow
-    restKfpApiUrl: http://ml-pipeline.kubeflow:8888
-    grpcMetadataStoreAddress: metadata-grpc-service.kubeflow:8080
-    grpcKfpApiAddress: ml-pipeline.kubeflow:8887
-    defaultBeamArgs:
-      - name: project
-        value: ${DATAFLOW_PROJECT}
-    pipelineRootStorage: ${PIPELINE_STORAGE}
-

Install the latest version of the provider

helm install oci://ghcr.io/kfp-operator/provider -f kfp.yaml
-

Configuration

The provider block contains provider configurations:

Parameter nameDescription
nameName given to this provider
typeProvider type (kfp or vai)
serviceAccount.nameName of the service account to run provider-specific operations
serviceAccount.createCreate the service account (or assume it has been created externally)
serviceAccount.metadataOptional service account default metadata
configurationSee Provider Configuration for all available providers and their respective configuration options

Example:

provider:
-  name: kfp-provider
-  type: kfp
-  executionMode: v1
-  serviceAccount:
-    name: kfp-operator-kfp
-    create: false
+

You will need to configure service accounts and roles required by your chosen Provider, see here for reference.

Configuration Values

Valid configuration options to override the Default values.yaml are:

Parameter nameDescription
containerRegistryContainer Registry base path for all container images
namespace.createCreate the namespace for the operator
namespace.nameOperator namespace name
manager.argo.containerDefaultsContainer Spec defaults to be used for Argo workflow pods created by the operator
manager.argo.metadataContainer Metadata defaults to be used for Argo workflow pods created by the operator
manager.argo.ttlStrategyTTL Strategy used for all Argo Workflows
manager.argo.stepTimeoutSeconds.compileTimeout in seconds for compiler steps - defaults to 1800 (30m)
manager.argo.stepTimeoutSeconds.defaultDefault timeout in seconds for workflow steps - defaults to 300 (5m)
manager.argo.serviceAccount.nameThe k8s service account used to run Argo workflows
manager.argo.serviceAccount.createCreate the Argo Workflows service account (or assume it has been created externally)
manager.argo.serviceAccount.metadataOptional Argo Workflows service account default metadata
manager.metadataObject Metadata for the manager’s pods
manager.rbac.createCreate roles and rolebindings for the operator
manager.serviceAccount.nameManager service account’s name
manager.serviceAccount.createCreate the manager’s service account or expect it to be created externally
manager.replicasNumber of replicas for the manager deployment
manager.resourcesManager resources as per k8s documentation
manager.configurationManager configuration as defined in Configuration (note that you can omit compilerImage and kfpSdkImage when specifying containerRegistry as default values will be applied)
manager.monitoring.createCreate the manager’s monitoring resources
manager.monitoring.rbacSecuredEnable addtional RBAC-based security
manager.monitoring.serviceMonitor.createCreate a ServiceMonitor for the Prometheus Operator
manager.monitoring.serviceMonitor.endpointConfigurationAdditional configuration to be used in the service monitor endpoint (path, port and scheme are provided)
manager.multiversion.enabledEnable multiversion API. Should be used in production to allow version migration, disable for simplified installation
manager.webhookCertificates.providerK8s conversion webhook TLS certificate provider - choose cert-manager for Helm to deploy certificates if cert-manager is available or custom otherwise (see below)
manager.webhookCertificates.secretNameName of a K8s secret deployed into the operator namespace to secure the webhook endpoint with, required if the custom provider is chosen
manager.webhookCertificates.caBundleCA bundle of the certificate authority that has signed the webhook’s certificate, required if the custom provider is chosen
manager.provider.typeProvider type (kfp for Kubeflow Pipelines or vai for Vertex AI Pipelines)
manager.provider.configurationConfiguration block for the specific provider (see Provider Configuration), automatically mounted as a file
logging.verbosityLogging verbosity for all components - see the logging documentation for valid values
eventsourceServer.metadataObject Metadata for the eventsource server’s pods
eventsourceServer.rbac.createCreate roles and rolebindings for the eventsource server
eventsourceServer.serviceAccount.nameEventsource server’s service account
eventsourceServer.serviceAccount.createCreate the eventsource server’s service account or expect it to be created externally
eventsourceServer.resourcesEventsource server resources as per k8s documentation
providersDictionary of providers (see below)

Examples for these values can be found in the test configuration

Providers

The providers block contains a dictionary of provider names to provider configurations:

Parameter nameDescription
typeProvider type (kfp or vai)
serviceAccount.nameName of the service account to run provider-specific operations
serviceAccount.createCreate the service account (or assume it has been created externally)
serviceAccount.metadataOptional service account default metadata
configurationSee Provider Configuration for all available providers and their respective configuration options

Example:

providers:
+  kfp:
+    type: kfp
+    serviceAccount:
+      name: kfp-operator-kfp
+      create: false
+    configuration:
+      ...
+  vai:
+    type: vai
+    serviceAccount: 
+      name: kfp-operator-kfp
+      create: true
+      metadata:
+        annotations:
+          iam.gke.io/gcp-service-account: kfp-operator-vai@my-project.iam.gserviceaccount.com
+    configuration:
       ...
 

Role-based access control (RBAC) for providers

When using a provider, you should create the necessary ServiceAccount, RoleBinding and ClusterRoleBinding resources required for the providers being used. An example configuration is provided below for reference:

---
diff --git a/docs/docs/getting-started/overview/index.html b/docs/docs/getting-started/overview/index.html
index d91e04022..0dee9db39 100644
--- a/docs/docs/getting-started/overview/index.html
+++ b/docs/docs/getting-started/overview/index.html
@@ -10,7 +10,7 @@
  Create child page
  Create documentation issue
  Create project issue

Overview

The Kubeflow Pipelines Operator provides a declarative API for managing and running ML pipelines with Resource Definitions on multiple providers. -A provider is a runtime environment for managing and executing ML pipelines and related resources.

Compatibility

The operator currently supports

  • TFX Pipelines with Python 3.7 and 3.9 - pipelines created using the KFP DSL are not supported yet
  • KFP standalone (a full KFP installation is not supported yet) and Vertex AI

TFX Pipelines and Components

Unlike imperative Kubeflow Pipelines deployments, the operator takes care of providing all environment-specific configuration and setup for the pipelines. Pipeline creators therefore don’t have to provide DAG runners, metadata configs, serving directories, etc. Furthermore, pusher is not required and the operator can extend the pipeline with this very environment-specific component.

For running a pipeline using the operator, only the list of TFX components needs to be returned. Everything else is done by the operator. See the penguin pipeline for an example.

Lifecycle phases and Parameter types

TFX Pipelines go through certain lifecycle phases that are unique to this technology. It is helpful to understand where these differ and where they are executed.

Development: Creating the components definition as code.

Compilation: Applying compile-time parameters and defining the execution runtime (aka DAG runner) for the pipeline to be compiled into a deployable artifact.

Deployment: Creating a pipeline representation in the target environment.

Running: Instantiating the pipeline, applying runtime parameters and running all pipeline steps involved to completion.

Note: Local runners usually skip compilation and deployment and run the pipeline straight away.

TFX allows the parameterization of Pipelines in most lifecycle stages:

Parameter typeDescriptionExample
Named ConstantsCode constantsANN layer size
Compile-time parameterParameters that are unlikely to change between pipeline runs supplied as environment variabels to the pipeline functionBigquery dataset
Runtime parameterParameters exposed as TFX RuntimeParameter which can be overridden at runtime allow simplified experimentation without having to recompile the pipelineNumber of training runs

The pipeline operator supports the application of compile time and runtime parameters through its custom resources. We strongly encourage the usage of both of these parameter types to speed up development and experimentation lifecycles. Note that Runtime parameters can initialised to default values from both constants and compile-time parameters

Eventing Support

The Kubeflow Pipelines operator can optionally be installed with Argo-Events eventsources which lets users react to events.

Currently, we support the following eventsources:

Architecture Overview

To do.

+A provider is a runtime environment for managing and executing ML pipelines and related resources.

Compatibility

The operator currently supports

  • TFX Pipelines with Python 3.7 and 3.9 - pipelines created using the KFP DSL are not supported yet
  • KFP standalone (a full KFP installation is not supported yet) and Vertex AI

TFX Pipelines and Components

Unlike imperative Kubeflow Pipelines deployments, the operator takes care of providing all environment-specific configuration and setup for the pipelines. Pipeline creators therefore don’t have to provide DAG runners, metadata configs, serving directories, etc. Furthermore, pusher is not required and the operator can extend the pipeline with this very environment-specific component.

For running a pipeline using the operator, only the list of TFX components needs to be returned. Everything else is done by the operator. See the penguin pipeline for an example.

Lifecycle phases and Parameter types

TFX Pipelines go through certain lifecycle phases that are unique to this technology. It is helpful to understand where these differ and where they are executed.

Development: Creating the components definition as code.

Compilation: Applying compile-time parameters and defining the execution runtime (aka DAG runner) for the pipeline to be compiled into a deployable artifact.

Deployment: Creating a pipeline representation in the target environment.

Running: Instantiating the pipeline, applying runtime parameters and running all pipeline steps involved to completion.

Note: Local runners usually skip compilation and deployment and run the pipeline straight away.

TFX allows the parameterization of Pipelines in most lifecycle stages:

Parameter typeDescriptionExample
Named ConstantsCode constantsANN layer size
Compile-time parameterParameters that are unlikely to change between pipeline runs supplied as environment variabels to the pipeline functionBigquery dataset
Runtime parameterParameters exposed as TFX RuntimeParameter which can be overridden at runtime allow simplified experimentation without having to recompile the pipelineNumber of training runs

The pipeline operator supports the application of compile time and runtime parameters through its custom resources. We strongly encourage the usage of both of these parameter types to speed up development and experimentation lifecycles. Note that Runtime parameters can initialised to default values from both constants and compile-time parameters

Eventing Support

The Kubeflow Pipelines operator can optionally be installed with Argo-Events eventsources which lets users react to events.

Currently, we support the following eventsources:

Architecture Overview

To do.

\ No newline at end of file diff --git a/docs/docs/index.xml b/docs/docs/index.xml index 234462617..f17dcb45b 100644 --- a/docs/docs/index.xml +++ b/docs/docs/index.xml @@ -244,7 +244,7 @@ A provider is a runtime environment for managing and executing ML pipelines and <p>The Kubeflow Pipelines operator can optionally be installed with <a href="https://argoproj.github.io/argo-events/">Argo-Events</a> eventsources which lets users react to events.</p> <p>Currently, we support the following eventsources:</p> <ul> -<li><a href="../../reference/run-completion">Run Completion Eventsource</a></li> +<li><a href="../reference/run-completion">Run Completion Eventsource</a></li> </ul> <h2 id="architecture-overview">Architecture Overview</h2> <p>To do.</p>
Docs: Pipelinehttps://sky-uk.github.io/kfp-operator/docs/reference/resources/pipeline/Mon, 01 Jan 0001 00:00:00 +0000https://sky-uk.github.io/kfp-operator/docs/reference/resources/pipeline/ @@ -597,10 +597,9 @@ In this example we are updating a serving component with the location of the new <ul> <li><a href="https://argoproj.github.io/argo-workflows/installation/">Argo 3.1.6-3.3</a> installed cluster-wide or into the namespace where the operator&rsquo;s workflows run (see <a href="../../reference/configuration">configuration</a>).</li> <li><a href="https://argoproj.github.io/argo-events/installation/">Argo-Events 1.7.4+</a> installed cluster-wide (see <a href="../../reference/configuration">configuration</a>).</li> +<li>The KFP-Operator supports configurable provider backends. Currently, Kubeflow Pipelines and Vertex AI are supported. Please refer to the <a href="../../reference/configuration/#provider-configuration">respective configuration section</a> before proceeding.</li> </ul> -<h2 id="kfp-operator">KFP-Operator</h2> -<p>To get a working installation you will need to install both the KFP-Operator and at least one provider (<a href="#providers" title="Providers">see below</a>)</p> -<h3 id="build-and-install">Build and Install</h3> +<h2 id="build-and-install">Build and Install</h2> <p>Create basic <code>values.yaml</code> with the following content:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">fullnameOverride</span>: <span style="color:#ae81ff">kfp-operator</span> </span></span><span style="display:flex;"><span><span style="color:#f92672">manager</span>: @@ -608,10 +607,18 @@ In this example we are updating a serving component with the location of the new </span></span><span style="display:flex;"><span> <span style="color:#f92672">serviceAccount</span>: <span style="color:#ae81ff">pipeline-runner</span> </span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: </span></span><span style="display:flex;"><span> <span style="color:#f92672">defaultExperiment</span>: <span style="color:#ae81ff">Default</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">pipelineStorage</span>: {<span style="color:#ae81ff">STORAGE_LOCATION}</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">provider</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">kfp</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">kfpNamespace</span>: <span style="color:#ae81ff">kubeflow</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">restKfpApiUrl</span>: <span style="color:#ae81ff">http://ml-pipeline.kubeflow:8888</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">grpcKfpApiAddress</span>: <span style="color:#ae81ff">ml-pipeline.kubeflow:8887</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">grpcMetadataStoreAddress</span>: <span style="color:#ae81ff">metadata-grpc-service.kubeflow:8080</span> </span></span></code></pre></div><p>Install the latest version of the operator</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>helm install oci://ghcr.io/kfp-operator/kfp-operator -f values.yaml </span></span></code></pre></div><p>You will need to configure service accounts and roles required by your chosen <code>Provider</code>, <a href="#provider-rbac" title="Provider RBAC Reference">see here for reference</a>.</p> -<h3 id="configuration-values">Configuration Values</h3> +<h2 id="configuration-values">Configuration Values</h2> <p>Valid configuration options to override the <a href="https://github.com/sky-uk/kfp-operator/blob/master/helm/kfp-operator/values.yaml ">Default <code>values.yaml</code></a> are:</p> <table> @@ -739,42 +746,35 @@ In this example we are updating a serving component with the location of the new <td>Logging verbosity for all components - see the <a href="https://github.com/sky-uk/kfp-operator/blob/master/CONTRIBUTING.md#logging">logging documentation</a> for valid values</td> </tr> <tr> -<td><code>statusFeedback.enabled</code></td> -<td>Whether run completion eventing and status update feedback loop should be installed - defaults to <code>false</code></td> +<td><code>eventsourceServer.metadata</code></td> +<td><a href="https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/object-meta/#ObjectMeta">Object Metadata</a> for the eventsource server&rsquo;s pods</td> +</tr> +<tr> +<td><code>eventsourceServer.rbac.create</code></td> +<td>Create roles and rolebindings for the eventsource server</td> +</tr> +<tr> +<td><code>eventsourceServer.serviceAccount.name</code></td> +<td>Eventsource server&rsquo;s service account</td> +</tr> +<tr> +<td><code>eventsourceServer.serviceAccount.create</code></td> +<td>Create the eventsource server&rsquo;s service account or expect it to be created externally</td> +</tr> +<tr> +<td><code>eventsourceServer.resources</code></td> +<td>Eventsource server resources as per <a href="https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#resources">k8s documentation</a></td> +</tr> +<tr> +<td><code>providers</code></td> +<td>Dictionary of providers (see below)</td> </tr> </tbody> </table> <p>Examples for these values can be found in the <a href="https://github.com/sky-uk/kfp-operator/blob/master/helm/kfp-operator/test/values.yaml ">test configuration</a></p> -<h2 id="providers">Providers</h2> -<p>Supported providers are:</p> -<ul> -<li>Kubeflow Pipelines</li> -<li>Vertex AI</li> -</ul> -<p>Install one or more by following these instructions. Please refer to the <a href="../../reference/configuration/#provider-configuration">respective configuration section</a> before proceeding.</p> -<h3 id="build-and-install-1">Build and Install</h3> -<p>Create basic <code>kfp.yaml</code> value file with the following content:</p> -<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">provider</span>: -</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-provider</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">kfp</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">executionMode</span>: <span style="color:#ae81ff">v1</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">serviceAccount</span>: -</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-operator-kfp</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">create</span>: <span style="color:#66d9ef">false</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: -</span></span><span style="display:flex;"><span> <span style="color:#f92672">kfpNamespace</span>: <span style="color:#ae81ff">kubeflow</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">restKfpApiUrl</span>: <span style="color:#ae81ff">http://ml-pipeline.kubeflow:8888</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">grpcMetadataStoreAddress</span>: <span style="color:#ae81ff">metadata-grpc-service.kubeflow:8080</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">grpcKfpApiAddress</span>: <span style="color:#ae81ff">ml-pipeline.kubeflow:8887</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">defaultBeamArgs</span>: -</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">project</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">value</span>: <span style="color:#ae81ff">${DATAFLOW_PROJECT}</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">pipelineRootStorage</span>: <span style="color:#ae81ff">${PIPELINE_STORAGE}</span> -</span></span></code></pre></div><p>Install the latest version of the provider</p> -<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>helm install oci://ghcr.io/kfp-operator/provider -f kfp.yaml -</span></span></code></pre></div><h3 id="configuration">Configuration</h3> -<p>The <code>provider</code> block contains provider configurations:</p> +<h3 id="providers">Providers</h3> +<p>The <code>providers</code> block contains a dictionary of provider names to provider configurations:</p> <table> <thead> <tr> @@ -784,10 +784,6 @@ In this example we are updating a serving component with the location of the new </thead> <tbody> <tr> -<td><code>name</code></td> -<td>Name given to this provider</td> -</tr> -<tr> <td><code>type</code></td> <td>Provider type (<code>kfp</code> or <code>vai</code>)</td> </tr> @@ -810,13 +806,23 @@ In this example we are updating a serving component with the location of the new </tbody> </table> <p>Example:</p> -<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">provider</span>: -</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-provider</span> +<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">providers</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">kfp</span>: </span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">kfp</span> -</span></span><span style="display:flex;"><span> <span style="color:#f92672">executionMode</span>: <span style="color:#ae81ff">v1</span> </span></span><span style="display:flex;"><span> <span style="color:#f92672">serviceAccount</span>: </span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-operator-kfp</span> </span></span><span style="display:flex;"><span> <span style="color:#f92672">create</span>: <span style="color:#66d9ef">false</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: +</span></span><span style="display:flex;"><span> <span style="color:#ae81ff">...</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">vai</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">type</span>: <span style="color:#ae81ff">vai</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">serviceAccount</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">name</span>: <span style="color:#ae81ff">kfp-operator-kfp</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">create</span>: <span style="color:#66d9ef">true</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">metadata</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">annotations</span>: +</span></span><span style="display:flex;"><span> <span style="color:#f92672">iam.gke.io/gcp-service-account</span>: <span style="color:#ae81ff">kfp-operator-vai@my-project.iam.gserviceaccount.com</span> +</span></span><span style="display:flex;"><span> <span style="color:#f92672">configuration</span>: </span></span><span style="display:flex;"><span> <span style="color:#ae81ff">...</span> </span></span></code></pre></div><h2 id="provider-rbac">Role-based access control (RBAC) for providers</h2> <p>When using a provider, you should create the necessary <code>ServiceAccount</code>, <code>RoleBinding</code> and <code>ClusterRoleBinding</code> resources required for the providers being used. diff --git a/helm/kfp-operator/templates/_helpers.tpl b/helm/kfp-operator/templates/_helpers.tpl index 58adbf434..495d8b836 100644 --- a/helm/kfp-operator/templates/_helpers.tpl +++ b/helm/kfp-operator/templates/_helpers.tpl @@ -1,3 +1,10 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "kfp-operator.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + {{/* Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). @@ -7,7 +14,7 @@ If release name contains chart name it will be used as a full name. {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} -{{- $name := .Chart.Name }} +{{- $name := default .Chart.Name .Values.nameOverride }} {{- if contains $name .Release.Name }} {{- .Release.Name | trunc 63 | trimSuffix "-" }} {{- else }} @@ -41,6 +48,10 @@ Remove trailing '/' characters from .Values.containerRegistry. {{- end }} {{- end }} +{{- define "kfp-operator.providerImage" -}} +{{ include "kfp-operator.trimmedContainerRegistry" . }}kfp-operator-{{ .Provider.type }}-provider:{{ .Chart.AppVersion }} +{{- end }} + {{- define "kfp-operator.compilerImage" -}} {{ if .Values.manager.argo.compilerImage -}} {{ include "kfp-operator.trimmedContainerRegistry" . }}{{ .Values.manager.argo.compilerImage }}:{{ .Chart.AppVersion }} diff --git a/helm/kfp-operator/templates/eventing/_helpers.tpl b/helm/kfp-operator/templates/eventing/_helpers.tpl new file mode 100644 index 000000000..c9e6ed89a --- /dev/null +++ b/helm/kfp-operator/templates/eventing/_helpers.tpl @@ -0,0 +1,7 @@ +{{/* +Common labels +*/}} +{{- define "kfp-operator.eventsourceServer.labels" -}} +app: {{ include "kfp-operator.fullname" . }}-run-completion-eventsource-server +provider: {{ .ProviderName }} +{{- end }} diff --git a/helm/kfp-operator/templates/eventing/eventsource.yaml b/helm/kfp-operator/templates/eventing/eventsource.yaml new file mode 100644 index 000000000..8e66a0ca9 --- /dev/null +++ b/helm/kfp-operator/templates/eventing/eventsource.yaml @@ -0,0 +1,67 @@ +{{- range $providerName, $providerBlock := .Values.providers }} +--- +apiVersion: argoproj.io/v1alpha1 +kind: EventSource +metadata: + name: {{ include "kfp-operator.fullname" $ }}-{{ $providerName }}-events + namespace: {{ include "kfp-operator.argoNamespace" $ }} +spec: + generic: + events: + insecure: true + url: '{{ include "kfp-operator.fullname" $ }}-{{ $providerName }}-eventsource-server:8080' + config: |- + {{ $providerBlock.configuration | toYaml | nindent 8 }} +{{- end }} +{{- if gt (len .Values.providers) 0 }} +--- +apiVersion: argoproj.io/v1alpha1 +kind: Sensor +metadata: + name: {{ include "kfp-operator.fullname" $ }}-aggregate-events + namespace: {{ include "kfp-operator.argoNamespace" . }} +spec: + dependencies: +{{- range $providerName, $providerBlock := .Values.providers }} + - eventName: events + eventSourceName: {{ include "kfp-operator.fullname" $ }}-{{ $providerName }}-events + name: "{{ $providerName }}-events" + transform: + jq: .body = (.body | @base64d | fromjson) +{{- end }} + triggers: +{{- range $providerName, $providerBlock := .Values.providers }} + - template: + conditions: "{{ $providerName }}-events" + name: "publish-{{ $providerName }}" + nats: + payload: + - dest: specversion + src: + value: "1.0" + dependencyName: "{{ $providerName }}-events" + - dest: id + src: + contextKey: id + dependencyName: "{{ $providerName }}-events" + - dest: source + src: + value: "{{ $providerName }}" + dependencyName: "{{ $providerName }}-events" + - dest: type + src: + value: "org.kubeflow.pipelines.run-completion" + dependencyName: "{{ $providerName }}-events" + - dest: datacontenttype + src: + value: "application/json" + dependencyName: "{{ $providerName }}-events" + - dest: data + src: + useRawData: true + dataKey: body + dependencyName: "{{ $providerName }}-events" + subject: events + url: eventbus-kfp-operator-events-stan-svc:4222 +{{- end }} +{{- end -}} diff --git a/helm/provider/templates/runcompletion/eventsource_server.yaml b/helm/kfp-operator/templates/eventing/eventsource_server.yaml similarity index 62% rename from helm/provider/templates/runcompletion/eventsource_server.yaml rename to helm/kfp-operator/templates/eventing/eventsource_server.yaml index dc0be292a..fe6d460f0 100644 --- a/helm/provider/templates/runcompletion/eventsource_server.yaml +++ b/helm/kfp-operator/templates/eventing/eventsource_server.yaml @@ -1,10 +1,11 @@ -{{- $providerName := .Values.provider.name }} -{{- $labels := include "kfp-operator-provider.eventsourceServer.labels" $ }} +{{- range $providerName, $providerBlock := .Values.providers -}} +{{- $labels := include "kfp-operator.eventsourceServer.labels" (merge (dict "ProviderName" $providerName) $ ) }} +--- apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "kfp-operator-provider.resource-prefix" $ }}-{{ $providerName }}-eventsource-server - namespace: {{ include "kfp-operator-provider.namespace" $ }} + name: {{ include "kfp-operator.fullname" $ }}-{{ $providerName }}-eventsource-server + namespace: {{ include "kfp-operator.argoNamespace" $ }} labels: {{- $labels | nindent 4 }} spec: @@ -27,7 +28,7 @@ spec: - /provider-config.yaml - eventsource-server - --port=50051 - image: {{ include "kfp-operator-provider.image" $ }} + image: {{ include "kfp-operator.providerImage" (merge (dict "Provider" $providerBlock) $ ) }} securityContext: allowPrivilegeEscalation: false resources: @@ -38,20 +39,20 @@ spec: protocol: TCP volumeMounts: - mountPath: /provider-config.yaml - name: provider-config + name: provider-configs subPath: {{ $providerName }} volumes: - - name: provider-config + - name: provider-configs configMap: - name: {{ include "kfp-operator-provider.resource-prefix" $ }}-{{ $providerName }}-config - serviceAccountName: {{ .Values.provider.serviceAccount.name }} + name: {{ include "kfp-operator.fullname" $ }}-providers + serviceAccountName: {{ $providerBlock.serviceAccount.name }} terminationGracePeriodSeconds: 10 --- apiVersion: v1 kind: Service metadata: - name: {{ include "kfp-operator-provider.resource-prefix" $ }}-{{ $providerName }}-eventsource-server - namespace: {{ include "kfp-operator-provider.namespace" $ }} + name: {{ include "kfp-operator.fullname" $ }}-{{ $providerName }}-eventsource-server + namespace: {{ include "kfp-operator.argoNamespace" $ }} labels: {{- $labels | nindent 4 }} spec: @@ -62,3 +63,4 @@ spec: port: {{ $.Values.eventsourceServer.port }} protocol: TCP targetPort: grpc +{{ end }} diff --git a/helm/kfp-operator/templates/eventing/internal_eventbus.yaml b/helm/kfp-operator/templates/eventing/internal_eventbus.yaml index 4c49f13ca..5e5999d54 100644 --- a/helm/kfp-operator/templates/eventing/internal_eventbus.yaml +++ b/helm/kfp-operator/templates/eventing/internal_eventbus.yaml @@ -1,4 +1,4 @@ -{{- if .Values.statusFeedback.enabled }} +{{- if gt (len .Values.providers) 0 }} apiVersion: argoproj.io/v1alpha1 kind: EventBus metadata: diff --git a/helm/kfp-operator/templates/eventing/public_eventbus.yaml b/helm/kfp-operator/templates/eventing/public_eventbus.yaml index 8cd5e7eef..85241a549 100644 --- a/helm/kfp-operator/templates/eventing/public_eventbus.yaml +++ b/helm/kfp-operator/templates/eventing/public_eventbus.yaml @@ -1,4 +1,4 @@ -{{- if .Values.statusFeedback.enabled }} +{{- if gt (len .Values.providers) 0 }} apiVersion: argoproj.io/v1alpha1 kind: EventBus metadata: diff --git a/helm/kfp-operator/templates/eventing/rbac.yaml b/helm/kfp-operator/templates/eventing/rbac.yaml index 1497b8182..cc613edc6 100644 --- a/helm/kfp-operator/templates/eventing/rbac.yaml +++ b/helm/kfp-operator/templates/eventing/rbac.yaml @@ -1,4 +1,4 @@ -{{- if .Values.statusFeedback.enabled }} +{{- if gt (len .Values.providers) 0 }} --- apiVersion: v1 kind: ServiceAccount diff --git a/helm/kfp-operator/templates/eventing/status-updater.yaml b/helm/kfp-operator/templates/eventing/status-updater.yaml index ee2e8d98b..24090fb42 100644 --- a/helm/kfp-operator/templates/eventing/status-updater.yaml +++ b/helm/kfp-operator/templates/eventing/status-updater.yaml @@ -1,4 +1,4 @@ -{{- if .Values.statusFeedback.enabled }} +{{- if gt (len .Values.providers) 0 }} --- apiVersion: argoproj.io/v1alpha1 kind: WorkflowTemplate diff --git a/helm/kfp-operator/templates/providers.yaml b/helm/kfp-operator/templates/providers.yaml new file mode 100644 index 000000000..a17b1871a --- /dev/null +++ b/helm/kfp-operator/templates/providers.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "kfp-operator.fullname" . }}-providers + namespace: {{ include "kfp-operator.argoNamespace" . }} +data: +{{- range $providerName, $providerBlock := .Values.providers }} + {{ $providerName }}: | + name: {{ $providerName }} + image: {{ include "kfp-operator.providerImage" (merge (dict "Provider" $providerBlock) $ ) }} + executionMode: {{ if eq $providerBlock.type "kfp" }}v1{{ else }}v2{{ end }} + serviceAccount: {{ $providerBlock.serviceAccount.name }} + {{- if not (empty $providerBlock.configuration) -}} + {{- $providerBlock.configuration | toYaml | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/helm/kfp-operator/templates/workflows/common.yaml b/helm/kfp-operator/templates/workflows/common.yaml index 9afcd7c4f..8b98e3829 100644 --- a/helm/kfp-operator/templates/workflows/common.yaml +++ b/helm/kfp-operator/templates/workflows/common.yaml @@ -76,18 +76,8 @@ metadata: spec: volumes: - name: providers-config - {{- if and (.Values.providers) (gt (len .Values.providers) 0) }} - projected: - sources: - {{- range $providerName := .Values.providers }} - - configMap: - name: provider-{{ $providerName }}-config - optional: true - {{- end }} - {{- else }} configMap: name: {{ include "kfp-operator.fullname" . }}-providers - {{- end }} ttlStrategy: {{- .Values.manager.argo.ttlStrategy | toYaml | nindent 4 }} arguments: diff --git a/helm/kfp-operator/templates/workflows/compiled.yaml b/helm/kfp-operator/templates/workflows/compiled.yaml index cb1989db0..c007d31c7 100644 --- a/helm/kfp-operator/templates/workflows/compiled.yaml +++ b/helm/kfp-operator/templates/workflows/compiled.yaml @@ -143,18 +143,8 @@ metadata: spec: volumes: - name: providers-config - {{- if and (.Values.providers) (gt (len .Values.providers) 0) }} - projected: - sources: - {{- range $providerName := .Values.providers }} - - configMap: - name: provider-{{ $providerName }}-config - optional: true - {{- end }} - {{- else }} configMap: name: {{ include "kfp-operator.fullname" . }}-providers - {{- end }} ttlStrategy: {{- .Values.manager.argo.ttlStrategy | toYaml | nindent 4 }} arguments: @@ -222,18 +212,8 @@ metadata: spec: volumes: - name: providers-config - {{- if and (.Values.providers) (gt (len .Values.providers) 0) }} - projected: - sources: - {{- range $providerName := .Values.providers }} - - configMap: - name: provider-{{ $providerName }}-config - optional: true - {{- end }} - {{- else }} configMap: name: {{ include "kfp-operator.fullname" . }}-providers - {{- end }} ttlStrategy: {{- .Values.manager.argo.ttlStrategy | toYaml | nindent 4 }} arguments: diff --git a/helm/kfp-operator/templates/workflows/simple.yaml b/helm/kfp-operator/templates/workflows/simple.yaml index 4ebac6a14..06d566102 100644 --- a/helm/kfp-operator/templates/workflows/simple.yaml +++ b/helm/kfp-operator/templates/workflows/simple.yaml @@ -90,18 +90,8 @@ metadata: spec: volumes: - name: providers-config - {{- if and (.Values.providers) (gt (len .Values.providers) 0) }} - projected: - sources: - {{- range $providerName := .Values.providers }} - - configMap: - name: provider-{{ $providerName }}-config - optional: true - {{- end }} - {{- else }} configMap: name: {{ include "kfp-operator.fullname" . }}-providers - {{- end }} ttlStrategy: {{- .Values.manager.argo.ttlStrategy | toYaml | nindent 4 }} arguments: @@ -154,18 +144,8 @@ metadata: spec: volumes: - name: providers-config - {{- if and (.Values.providers) (gt (len .Values.providers) 0) }} - projected: - sources: - {{- range $providerName := .Values.providers }} - - configMap: - name: provider-{{ $providerName }}-config - optional: true - {{- end }} - {{- else }} configMap: name: {{ include "kfp-operator.fullname" . }}-providers - {{- end }} ttlStrategy: {{- .Values.manager.argo.ttlStrategy | toYaml | nindent 4 }} arguments: diff --git a/helm/kfp-operator/test/values.yaml b/helm/kfp-operator/test/values.yaml index d6b1b5e1a..de41bfda1 100644 --- a/helm/kfp-operator/test/values.yaml +++ b/helm/kfp-operator/test/values.yaml @@ -3,6 +3,11 @@ containerRegistry: "" manager: argo: containerDefaults: {} + configuration: + pipelineStorage: ${PIPELINE_STORAGE} + defaultBeamArgs: + - name: project + value: ${DATAFLOW_PROJECT} monitoring: create: true rbacSecured: true @@ -16,5 +21,7 @@ manager: enabled: true webhookCertificates: provider: cert-manager -statusFeedback: - enabled: false +providers: {} + +eventsourceServer: + create: false diff --git a/helm/kfp-operator/values.yaml b/helm/kfp-operator/values.yaml index 3a682028d..b57063421 100644 --- a/helm/kfp-operator/values.yaml +++ b/helm/kfp-operator/values.yaml @@ -2,6 +2,7 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. +nameOverride: "" fullnameOverride: "" containerRegistry: "ghcr.io/kfp-operator" @@ -49,8 +50,19 @@ manager: webhookCertificates: provider: cert-manager -statusFeedback: - enabled: false +providers: {} logging: verbosity: # info + +eventsourceServer: + create: false + metadata: {} + port: 8080 + resources: + limits: + cpu: 100m + memory: 300Mi + requests: + cpu: 100m + memory: 200Mi diff --git a/helm/provider/Chart.yaml b/helm/provider/Chart.yaml deleted file mode 100644 index 94f816060..000000000 --- a/helm/provider/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v2 -name: provider -description: A Helm chart for a provider to be used by KFP-Operator - -type: application - -# Set at packaging time -version: 0.0.0 - -# Set at packaging time -appVersion: "latest" diff --git a/helm/provider/templates/_helpers.tpl b/helm/provider/templates/_helpers.tpl deleted file mode 100644 index 0ffc00ece..000000000 --- a/helm/provider/templates/_helpers.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{{/* -Remove trailing '/' characters from .Values.containerRegistry. -*/}} -{{- define "kfp-operator-provider.trimmedContainerRegistry" -}} -{{ if .Values.containerRegistry -}} -{{ (trimSuffix "/" .Values.containerRegistry) }}/ -{{- else -}} - -{{- end }} -{{- end }} - -{{/* -Namespace for provider resources. -*/}} -{{- define "kfp-operator-provider.namespace" -}} -{{ default .Values.namespace.name .Values.provider.namespace }} -{{- end -}} - -{{/* -Prefix for provider resources, allows for override with .Values.prefixOverride -*/}} -{{- define "kfp-operator-provider.resource-prefix" -}} -{{- if .Values.prefixOverride }} -{{- .Values.prefixOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- .Chart.Name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Generate docker image location for the provider -*/}} -{{- define "kfp-operator-provider.image" -}} -{{ include "kfp-operator-provider.trimmedContainerRegistry" . }}kfp-operator-{{ .Values.provider.type }}-provider:{{ .Chart.AppVersion }} -{{- end }} diff --git a/helm/provider/templates/config-map.yaml b/helm/provider/templates/config-map.yaml deleted file mode 100644 index 6a06b35e9..000000000 --- a/helm/provider/templates/config-map.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- $providerName := .Values.provider.name }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kfp-operator-provider.resource-prefix" . }}-{{ $providerName }}-config - namespace: {{ include "kfp-operator-provider.namespace" . }} -data: - {{ $providerName }}: | - name: {{ $providerName }} - image: {{ include "kfp-operator-provider.image" $ }} - executionMode: {{ .Values.provider.executionMode }} - serviceAccount: {{ .Values.provider.serviceAccount.name }} - {{- if not (empty .Values.provider.configuration) -}} - {{- .Values.provider.configuration | toYaml | nindent 4 }} - {{- end }} diff --git a/helm/provider/templates/runcompletion/_helpers.tpl b/helm/provider/templates/runcompletion/_helpers.tpl deleted file mode 100644 index 88acf6afb..000000000 --- a/helm/provider/templates/runcompletion/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{/* -Common labels -*/}} -{{- define "kfp-operator-provider.eventsourceServer.labels" -}} -app: {{ include "kfp-operator-provider.resource-prefix" . }}-run-completion-eventsource-server -provider: {{ .Values.provider.name }} -{{- end }} diff --git a/helm/provider/templates/runcompletion/eventsource.yaml b/helm/provider/templates/runcompletion/eventsource.yaml deleted file mode 100644 index 1add865bf..000000000 --- a/helm/provider/templates/runcompletion/eventsource.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- $providerName := .Values.provider.name }} -apiVersion: argoproj.io/v1alpha1 -kind: EventSource -metadata: - name: {{ include "kfp-operator-provider.resource-prefix" $ }}-{{ $providerName }}-events - namespace: {{ include "kfp-operator-provider.namespace" $ }} -spec: - generic: - events: - insecure: true - url: '{{ include "kfp-operator-provider.resource-prefix" $ }}-{{ $providerName }}-eventsource-server:{{ $.Values.eventsourceServer.port }}' - {{- if not (empty .Values.provider.configuration) }} - config: |- - {{- .Values.provider.configuration | toYaml | nindent 8 }} - {{- end }} diff --git a/helm/provider/templates/runcompletion/sensor.yaml b/helm/provider/templates/runcompletion/sensor.yaml deleted file mode 100644 index c8ec9f19a..000000000 --- a/helm/provider/templates/runcompletion/sensor.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- $providerName := .Values.provider.name }} -apiVersion: argoproj.io/v1alpha1 -kind: Sensor -metadata: - name: {{ include "kfp-operator-provider.resource-prefix" $ }}-{{ $providerName }}-publish-events - namespace: {{ include "kfp-operator-provider.namespace" . }} -spec: - dependencies: - - eventName: events - eventSourceName: {{ include "kfp-operator-provider.resource-prefix" $ }}-{{ $providerName }}-events - name: events - transform: - jq: .body = (.body | @base64d | fromjson) - triggers: - - template: - name: "publish" - nats: - payload: - - dest: specversion - src: - value: "1.0" - dependencyName: events - - dest: id - src: - contextKey: id - dependencyName: events - - dest: source - src: - value: "{{ $providerName }}" - dependencyName: events - - dest: type - src: - value: "org.kubeflow.pipelines.run-completion" - dependencyName: events - - dest: datacontenttype - src: - value: "application/json" - dependencyName: events - - dest: data - src: - useRawData: true - dataKey: body - dependencyName: events - subject: events - url: eventbus-{{ .Values.kfpOperator.fullname }}-events-stan-svc:4222 diff --git a/helm/provider/test/values.yaml b/helm/provider/test/values.yaml deleted file mode 100644 index 55628907f..000000000 --- a/helm/provider/test/values.yaml +++ /dev/null @@ -1,4 +0,0 @@ -provider: - name: test-provider - serviceAccount: - name: test-provider-sa diff --git a/helm/provider/values.yaml b/helm/provider/values.yaml deleted file mode 100644 index 4f4170cfa..000000000 --- a/helm/provider/values.yaml +++ /dev/null @@ -1,30 +0,0 @@ -# Default values for provider. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -containerRegistry: "ghcr.io/kfp-operator" - -namespace: - create: true - name: kfp-operator-system - metadata: {} - -kfpOperator: - fullname: kfp-operator - -provider: {} - -logging: - verbosity: # info - -eventsourceServer: - create: false - metadata: {} - port: 8080 - resources: - limits: - cpu: 100m - memory: 300Mi - requests: - cpu: 100m - memory: 200Mi