Values¶
Learn deployKF values (configs) and how to configure them.
Overview¶
All aspects of your deployKF platform are configured with YAML-based configs named "values". There are a very large number of values (more than 1500), but as deployKF supports in-place upgrades you can start with a few important ones, and then grow your values file over time.
See the configuring deployKF page for guides that explain common configuration tasks.
Custom Values¶
When you set a value, you are overriding its default. The defaults may vary between deployKF versions, and are found in the corresponding default_values.yaml
file.
For example, to connect Kubeflow Pipelines to an external MySQL database, you might set the following values in your custom-values.yaml
file:
kubeflow_tools:
pipelines:
mysql:
useExternal: true
host: "mysql.example.com"
port: 3306
auth:
## WARNING: in the real world, read the credentials from a secret
## see https://www.deploykf.org/guides/external/mysql/
username: my-username
password: my-password
YAML Syntax
For a refresher on YAML syntax, we recommend the following resources:
Sample Values¶
Each version of deployKF has a corresponding sample-values.yaml
file with all supported ML & Data tools enabled, along with some sensible security defaults. We recommend using these samples as a starting point for your custom values.
There are two main ways to use the sample values file:
- Directly: Copy the
sample-values.yaml
file and make changes directly to that file. - Overrides: Include the default
sample-values.yaml
file first, and then include one or more "overrides" files that only contain the values you want to change.
The following command will download the sample values for the latest deployKF version:
curl -fL -o "sample-values-0.1.5.yaml" \
"https://raw.githubusercontent.com/deployKF/deployKF/v0.1.5/sample-values.yaml"
We provide sample-values-overrides.yaml
as an example of how you might structure an "overrides" file for the sample values.
Additional Values
The sample-values.yaml
file is a great starting point, but it does NOT include all possible values. For your reference, ALL values and their defaults are listed on the values reference page, which is generated from the full default_values.yaml
file of the latest deployKF version.
Merging Values¶
You may define your custom values in one or more files, which together form the complete "desired state" of your deployKF platform.
When multiple values files are used, they are merged together in the order they are passed to the deploykf
command or plugin. This means that if a value is defined in multiple files, the last one wins.
Merging Lists
List values are NOT merged. If a list is redefined, the new list will replace the old one in full.
Example¶
This example shows how values are merged together, including both map-type and list-type values.
Consider the following two values files:
values-1.yaml
deploykf_core:
deploykf_auth:
dex:
staticPasswords:
- email: "user1@example.com"
password:
value: "password1"
- email: "user2@example.com"
password:
value: "password2"
kubeflow_tools:
pipelines:
mysql:
host: "mysql_OLD.example.com"
values-2.yaml
deploykf_core:
deploykf_auth:
dex:
staticPasswords:
- email: "user3@example.com"
password:
value: "password3"
kubeflow_tools:
pipelines:
mysql:
host: "mysql_NEW.example.com"
How you pass these files to deployKF will depend on the mode of operation you are using.
In ArgoCD plugin mode, if you pass these files under values_files
in the following order:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: deploykf-app-of-apps
namespace: argocd
labels:
app.kubernetes.io/name: deploykf-app-of-apps
app.kubernetes.io/part-of: deploykf
spec:
project: "default"
source:
## source git repo configuration
##
repoURL: "https://github.com/<EXAMPLE_ORG>/<EXAMPLE_REPO>.git"
targetRevision: "main"
path: "."
## plugin configuration
##
plugin:
name: "deploykf"
parameters:
## the deployKF generator version
##
- name: "source_version"
string: "0.1.5"
## paths to values files within the `repoURL` repository
##
- name: "values_files"
array:
- "./sample-values-0.1.5.yaml"
- "./values-1.yaml"
- "./values-2.yaml"
## a string containing the contents of a values file
## - we are not using this in this example
## - values defined here have the highest precedence
##
#- name: "values"
# string: |
# ...
# values file contents
# ...
destination:
server: "https://kubernetes.default.svc"
namespace: "argocd"
In manifests repo mode, if you pass these files to the deploykf
command in the following order:
deploykf generate \
--source-version "0.1.5" \
--values ./values-1.yaml \
--values ./values-2.yaml \
--output-dir ./GENERATOR_OUTPUT
The resulting "merged" values will be as follows (with the default values omitted for brevity):
deploykf_core:
deploykf_auth:
dex:
## NOTE: list values are NOT merged, they are replaced in full
staticPasswords:
- email: "user3@example.com"
password:
value: "password3"
kubeflow_tools:
pipelines:
mysql:
## NOTE: for map values, the last one wins
host: "mysql_NEW.example.com"
Created: 2024-03-14