# Default values for deps. # This is a YAML-formatted file. # Declare variables to be passed into your templates. # MySQL configurations for helm dependency # you can find more details about this here https://artifacthub.io/packages/helm/bitnami/mysql global: security: allowInsecureImages: true cronJobLabels: {} mysql: enabled: true fullnameOverride: "mysql" architecture: standalone image: registry: docker.io repository: bitnamilegacy/mysql tag: 8.0.37-debian-12-r2 pullPolicy: "Always" auth: rootPassword: password # to be provided by CI/CD primary: extraFlags: "--sort_buffer_size=10M" persistence: size: 50Gi service: nodePort: 3306 initdbScripts: init_openmetadata_db_scripts.sql: | CREATE DATABASE openmetadata_db; CREATE USER 'openmetadata_user'@'%' IDENTIFIED BY 'openmetadata_password'; GRANT ALL PRIVILEGES ON openmetadata_db.* TO 'openmetadata_user'@'%' WITH GRANT OPTION; commit; init_airflow_db_scripts.sql: | CREATE DATABASE airflow_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'airflow_user'@'%' IDENTIFIED BY 'airflow_pass'; GRANT ALL PRIVILEGES ON airflow_db.* TO 'airflow_user'@'%' WITH GRANT OPTION; commit; # OpenSearch Helm Dependency # you can find more details about this here https://artifacthub.io/packages/helm/opensearch-project-helm-charts/opensearch/2.12.2 opensearch: enabled: true clusterName: opensearch fullnameOverride: opensearch nodeGroup: "" imagePullPolicy: Always opensearchJavaOpts: "-Xmx1g -Xms1g" persistence: size: 30Gi protocol: http config: opensearch.yml: | plugins.security.disabled: true indices.query.bool.max_clause_count: 4096 singleNode: true resources: requests: cpu: "100m" memory: "256M" limits: cpu: "2000m" memory: "2048M" # Airflow configurations for helm dependency # you can find more details about this here https://airflow.apache.org/docs/helm-chart/ airflow: enabled: true # Static secret key for Airflow webserver (strongly recommended for Airflow 3) # Without this, JWT token authentication may fail between Airflow components # Generate a new key with: openssl rand -hex 32 # Set to empty string (~) to auto-generate (not recommended for production) # Fernet key settings # Note: fernetKey can only be set during install, not upgrade fernetKey: ~ # Flask secret key for Airflow 3+ Api: `[api] secret_key` in airflow.cfg apiSecretKey: "a5f8c3e2d1b9a7f6e4c3b2a1f9e8d7c6b5a4f3e2d1c9b8a7f6e5d4c3b2a1f0e9" # Secret key used to encode and decode JWTs: `[api_auth] jwt_secret` in airflow.cfg jwtSecret: ~ # Use OpenMetadata Airflow image with Airflow 3 images: airflow: repository: docker.getcollate.io/openmetadata/ingestion tag: 1.13.5 pullPolicy: "IfNotPresent" # Use KubernetesExecutor for production deployments (recommended) # For local development (Docker Desktop/Minikube), use LocalExecutor instead # Note: KubernetesExecutor requires shared DAGs storage (RWX PVC) which isn't available in Docker Desktop executor: "KubernetesExecutor" # Environment variables for Airflow configuration env: # This is required for OpenMetadata UI to fetch status of DAGs - name: AIRFLOW__API__AUTH_BACKENDS value: "airflow.api.auth.backend.session,airflow.api.auth.backend.basic_auth" # OpenMetadata Airflow Apis Plugin DAGs Configuration - name: AIRFLOW__OPENMETADATA_AIRFLOW_APIS__DAG_GENERATED_CONFIGS value: "/opt/airflow/dags" # OpenMetadata Airflow Secrets Manager Configuration - name: AIRFLOW__OPENMETADATA_SECRETS_MANAGER__AWS_REGION value: "" - name: AIRFLOW__OPENMETADATA_SECRETS_MANAGER__AWS_ACCESS_KEY_ID value: "" - name: AIRFLOW__OPENMETADATA_SECRETS_MANAGER__AWS_ACCESS_KEY value: "" # Create admin user createUserJob: # Whether the create user job should be created enabled: true # The default user to create defaultUser: role: Admin username: admin email: spiderman@superhero.org firstName: Peter lastName: Parker password: admin # Airflow database migration job settings migrateDatabaseJob: enabled: true # Worker configuration for KubernetesExecutor (from 1.19.0 let's use workers.kubernetes) # Set replicas to 0 for LocalExecutor (local development) workers: kubernetes: # Resource configuration for pods created with pod-template-file resources: {} # limits: # cpu: 100m # memory: 128Mi # requests: # cpu: 100m # memory: 128Mi # Airflow scheduler settings scheduler: enabled: true # Amount of scheduler replicas (recommended to be set larger than 2 with MYSQL 8+ and Postgres 12+) replicas: 1 # API server needs access to DAGs volume for OpenMetadata dynamic DAG generation apiServer: enabled: true # Number of Airflow API servers in the deployment. # Omitted from the Deployment, when HPA is enabled. replicas: 1 extraVolumes: - name: dags persistentVolumeClaim: claimName: '{{ include "airflow.fullname" . }}-dags' extraVolumeMounts: - name: dags mountPath: /opt/airflow/dags # Airflow Triggerer Config triggerer: enabled: true # Number of airflow triggerers in the deployment replicas: 1 # Airflow Dag Processor Config dagProcessor: enabled: false # Number of airflow dag processors in the deployment replicas: 1 # Disable Flower when use KubernetesExecutor flower: enabled: false # StatsD settings statsd: enabled: true # Disable internal PostgreSQL, use external MySQL postgresql: enabled: false # Disable internal Redis when use KubernetesExecutor redis: enabled: false # Configure external MySQL database data: metadataConnection: user: airflow_user pass: airflow_pass protocol: mysql host: mysql port: 3306 db: airflow_db sslmode: disable # Service account configuration (required for KubernetesExecutor) # DAGs persistence configuration dags: persistence: enabled: true storageClassName: "" size: 1Gi # Logs persistence configuration logs: persistence: enabled: true storageClassName: "" size: 1Gi # Apache Jena Fuseki SPARQL server for the OpenMetadata RDF / Knowledge Graph feature. # Disabled by default. When enabled it deploys an in-cluster Fuseki (Deployment + # Service "fuseki" on port 3030 + optional PVC). Point OpenMetadata at it by setting # openmetadata.config.rdf in the openmetadata chart values, e.g.: # rdf: # enabled: true # remoteEndpoint: "http://fuseki:3030/openmetadata" # username: "admin" # dataset: "openmetadata" # password: # secretRef: fuseki-admin-credentials # secretKey: admin-password # Both the server (ADMIN_PASSWORD) and the app (RDF_REMOTE_PASSWORD) read the same # admin password secret. Create it before installing: # kubectl create secret generic fuseki-admin-credentials \ # --from-literal=admin-password= -n fuseki: enabled: false replicaCount: 1 image: repository: daschswiss/apache-jena-fuseki tag: "6.0.0" pullPolicy: IfNotPresent # Production BYOC resource recommendation. Override for smaller deployments. resources: requests: cpu: "1500m" memory: "10Gi" limits: cpu: "2500m" memory: "12Gi" adminPassword: secretName: "fuseki-admin-credentials" secretKey: "admin-password" jvmArgs: "-Xmx8g -Xms8g" service: type: ClusterIP port: 3030 persistence: enabled: true size: 100Gi # Empty string uses the cluster default StorageClass. Set e.g. "gp3" on AWS. storageClass: "" extraEnvs: [] serviceMonitor: enabled: false interval: 30s nodeSelector: {} tolerations: [] affinity: {}