Parameters
Using Parameters in DAGs
Parameters allow you to make your workflows dynamic and reusable by injecting values at runtime.
Defining Parameters in DAGs
Here’s an example DAG with parameter definitions:
apiVersion: kontroler.greedykomodo/v1alpha1
kind: DAG
metadata:
name: dag-sample-event
spec:
parameters:
- name: first
defaultFromSecret: secret-name # Default value from a Kubernetes secret
- name: second
defaultValue: value # Static default value
task:
- name: "random"
image: "alpine:latest"
command: ["sh", "-c"]
args: ["if [ $((RANDOM%2)) -eq 0 ]; then echo $second; else exit 1; fi"]
parameters:
- first # Declare which parameters this task uses
- second
Parameter Types
-
Secret References:
parameters: - name: first defaultFromSecret: secret-name
- Securely fetch values from Kubernetes secrets
- Useful for credentials and sensitive data
-
Static Values:
parameters: - name: second defaultValue: value
- Hardcoded default values
- Can be overridden in DagRuns
Using Parameters in Tasks
Tasks must declare which parameters they use:
task:
- name: "task-name"
parameters:
- second # List parameters used by this task
Overriding Parameters in DagRuns
Create a DagRun to execute a DAG with custom parameter values:
apiVersion: kontroler.greedykomodo/v1alpha1
kind: DagRun
metadata:
name: dagrun-sample5
spec:
dagName: dag-sample1
parameters:
- name: first
fromSecret: secret-name-new # Override with different secret
- name: second
value: value_new # Override with new value
Parameter Override Types
-
Secret Override:
parameters: - name: first fromSecret: secret-name-new
-
Direct Value Override:
parameters: - name: second value: value_new
Best Practices
-
Security:
- Use secrets for sensitive information
- Avoid hardcoding credentials in DAG definitions
-
Naming:
- Use clear, descriptive parameter names
- Follow consistent naming conventions
-
Task Declaration:
- Always declare parameters used by tasks
- Only expose necessary parameters to tasks
-
Default Values:
- Provide sensible defaults when possible
- Document expected parameter formats
Parameter Scoping
- Parameters are available to tasks that explicitly declare them
- Each task can access only its declared parameters
- Parameter values are immutable during execution