From 07cc350eeaf2aae8d9db88a4ebdee4d2197f0b32 Mon Sep 17 00:00:00 2001 From: Katrina Rogan Date: Thu, 15 Jul 2021 20:58:17 -0700 Subject: [PATCH] Run sync cluster resources as a goroutine in sandbox (#1231) * sandbox Signed-off-by: Katrina Rogan * 1m Signed-off-by: Katrina Rogan * amazing progress Signed-off-by: Katrina Rogan --- deployment/eks/flyte_generated.yaml | 8 +- deployment/eks/flyte_helm_generated.yaml | 3 +- deployment/gcp/flyte_generated.yaml | 8 +- deployment/gcp/flyte_helm_generated.yaml | 3 +- deployment/sandbox/flyte_generated.yaml | 22 +++++- deployment/sandbox/flyte_helm_generated.yaml | 3 +- deployment/test/flyte_generated.yaml | 6 +- helm/README.md | 77 +++++++++---------- helm/values.yaml | 1 + .../config/admin/cluster_resources.yaml | 2 +- .../sandbox/flyte/admin/deployment.yaml | 17 ++++ 11 files changed, 89 insertions(+), 61 deletions(-) diff --git a/deployment/eks/flyte_generated.yaml b/deployment/eks/flyte_generated.yaml index 716f147265..7709f4d38f 100644 --- a/deployment/eks/flyte_generated.yaml +++ b/deployment/eks/flyte_generated.yaml @@ -8121,7 +8121,7 @@ data: value: "4" - projectQuotaMemory: value: "3000Mi" - refresh: 5m + refreshInterval: 1m db.yaml: | database: port: 5432 @@ -8218,7 +8218,7 @@ data: gpu: 1 kind: ConfigMap metadata: - name: flyte-admin-config-dck98m94b6 + name: flyte-admin-config-29g4dtt8tc namespace: flyte --- apiVersion: v1 @@ -8849,7 +8849,7 @@ spec: - emptyDir: {} name: shared-data - configMap: - name: flyte-admin-config-dck98m94b6 + name: flyte-admin-config-29g4dtt8tc name: config-volume - configMap: name: clusterresource-template-tkdkkt4cb5 @@ -9137,7 +9137,7 @@ spec: name: clusterresource-template-tkdkkt4cb5 name: resource-templates - configMap: - name: flyte-admin-config-dck98m94b6 + name: flyte-admin-config-29g4dtt8tc name: config-volume - name: db-pass secret: diff --git a/deployment/eks/flyte_helm_generated.yaml b/deployment/eks/flyte_helm_generated.yaml index ff29aa7e7b..d6fed85483 100644 --- a/deployment/eks/flyte_helm_generated.yaml +++ b/deployment/eks/flyte_helm_generated.yaml @@ -360,6 +360,7 @@ data: - defaultIamRole: value: arn:aws:iam:::role/flyte-user-role refresh: 5m + refreshInterval: 5m templatePath: /etc/flyte/clusterresource/templates --- # Source: flyte/templates/console/configmap.yaml @@ -1326,7 +1327,7 @@ spec: template: metadata: annotations: - configChecksum: "e3cc10b39ebf2bce3554ebe08cbca8d51feb2b142ae93f142fd81ffb2652f6c" + configChecksum: "4aa9a2abfee56b62e33c3ae4c82a2c67d897636ffe28692c8827c124d95f179" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte diff --git a/deployment/gcp/flyte_generated.yaml b/deployment/gcp/flyte_generated.yaml index 822e7611e8..0550651b67 100644 --- a/deployment/gcp/flyte_generated.yaml +++ b/deployment/gcp/flyte_generated.yaml @@ -8119,7 +8119,7 @@ data: value: "4" - projectQuotaMemory: value: "3000Mi" - refresh: 5m + refreshInterval: 1m db.yaml: | database: port: 5432 @@ -8217,7 +8217,7 @@ data: gpu: 1 kind: ConfigMap metadata: - name: flyte-admin-config-864hmfdc2m + name: flyte-admin-config-7g6ctk6762 namespace: flyte --- apiVersion: v1 @@ -8891,7 +8891,7 @@ spec: - emptyDir: {} name: shared-data - configMap: - name: flyte-admin-config-864hmfdc2m + name: flyte-admin-config-7g6ctk6762 name: config-volume - configMap: name: clusterresource-template-tkdkkt4cb5 @@ -9179,7 +9179,7 @@ spec: name: clusterresource-template-tkdkkt4cb5 name: resource-templates - configMap: - name: flyte-admin-config-864hmfdc2m + name: flyte-admin-config-7g6ctk6762 name: config-volume - name: db-pass secret: diff --git a/deployment/gcp/flyte_helm_generated.yaml b/deployment/gcp/flyte_helm_generated.yaml index ca2ee9470b..1af49abb0f 100644 --- a/deployment/gcp/flyte_helm_generated.yaml +++ b/deployment/gcp/flyte_helm_generated.yaml @@ -335,6 +335,7 @@ data: - defaultIamRole: value: "" refresh: 5m + refreshInterval: 5m templatePath: /etc/flyte/clusterresource/templates --- # Source: flyte/templates/console/configmap.yaml @@ -3124,7 +3125,7 @@ spec: template: metadata: annotations: - configChecksum: "070eecc1e9de938efe34f9cabbff7efcf30b20a133e4ede077b7bf6a5fde947" + configChecksum: "6f72a1386c2d09c4a5c7f64f10d8559f153470fe644f68bcf50d0feccfca35a" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte diff --git a/deployment/sandbox/flyte_generated.yaml b/deployment/sandbox/flyte_generated.yaml index 000a8963c6..ea5fab969c 100644 --- a/deployment/sandbox/flyte_generated.yaml +++ b/deployment/sandbox/flyte_generated.yaml @@ -2133,7 +2133,7 @@ data: value: "4" - projectQuotaMemory: value: "3000Mi" - refresh: 5m + refreshInterval: 1m db.yaml: | database: port: 5432 @@ -2222,7 +2222,7 @@ data: gpu: 1 kind: ConfigMap metadata: - name: flyte-admin-config-7gmg5ffhdd + name: flyte-admin-config-g49kfbhmdf namespace: flyte --- apiVersion: v1 @@ -2903,6 +2903,20 @@ spec: name: db-pass - mountPath: /etc/secrets/ name: auth + - command: + - flyteadmin + - --config + - /etc/flyte/config/*.yaml + - clusterresource + - run + image: cr.flyte.org/flyteorg/flyteadmin:v0.6.10 + imagePullPolicy: IfNotPresent + name: sync-cluster-resources-goroutine + volumeMounts: + - mountPath: /etc/flyte/clusterresource/templates + name: resource-templates + - mountPath: /etc/flyte/config + name: config-volume - command: - sh - -c @@ -3000,7 +3014,7 @@ spec: - emptyDir: {} name: shared-data - configMap: - name: flyte-admin-config-7gmg5ffhdd + name: flyte-admin-config-g49kfbhmdf name: config-volume - name: db-pass secret: @@ -3412,7 +3426,7 @@ spec: name: clusterresource-template-dtg8ff28mt name: resource-templates - configMap: - name: flyte-admin-config-7gmg5ffhdd + name: flyte-admin-config-g49kfbhmdf name: config-volume - name: db-pass secret: diff --git a/deployment/sandbox/flyte_helm_generated.yaml b/deployment/sandbox/flyte_helm_generated.yaml index 2e2643e2a9..36411c8104 100644 --- a/deployment/sandbox/flyte_helm_generated.yaml +++ b/deployment/sandbox/flyte_helm_generated.yaml @@ -432,6 +432,7 @@ data: - defaultIamRole: value: "" refresh: 5m + refreshInterval: 5m templatePath: /etc/flyte/clusterresource/templates --- # Source: flyte/templates/console/configmap.yaml @@ -3289,7 +3290,7 @@ spec: template: metadata: annotations: - configChecksum: "01022a541ec245fb382df6cb533da25e5a5c058ee59a7c4f804aeb3aaa5fd90" + configChecksum: "0330846fbb9f22cddfd65abeed5ec540bc78a6ac7dbb456338fff2f7be7ccfe" labels: app.kubernetes.io/name: flyteadmin app.kubernetes.io/instance: flyte diff --git a/deployment/test/flyte_generated.yaml b/deployment/test/flyte_generated.yaml index 0a033e3565..33935a7e9b 100644 --- a/deployment/test/flyte_generated.yaml +++ b/deployment/test/flyte_generated.yaml @@ -281,7 +281,7 @@ data: value: "4" - projectQuotaMemory: value: "3000Mi" - refresh: 5m + refreshInterval: 1m db.yaml: | database: port: 5432 @@ -370,7 +370,7 @@ data: gpu: 1 kind: ConfigMap metadata: - name: flyte-admin-config-g5mt4b25k8 + name: flyte-admin-config-kh795dtf68 namespace: flyte --- apiVersion: v1 @@ -854,7 +854,7 @@ spec: - emptyDir: {} name: shared-data - configMap: - name: flyte-admin-config-g5mt4b25k8 + name: flyte-admin-config-kh795dtf68 name: config-volume - name: db-pass secret: diff --git a/helm/README.md b/helm/README.md index e0bec699d9..47530f1b48 100644 --- a/helm/README.md +++ b/helm/README.md @@ -51,22 +51,24 @@ helm upgrade -f values-sandbox.yaml flyte . | Key | Type | Default | Description | |-----|------|---------|-------------| -| cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}},{"defaultIamRole":{"value":""}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]}],"refresh":"5m","templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | -| cluster_resource_manager.config | object | `{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}},{"defaultIamRole":{"value":""}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]}],"refresh":"5m","templatePath":"/etc/flyte/clusterresource/templates"}}` | Configmap for ClusterResource parameters | -| cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}},{"defaultIamRole":{"value":""}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]}],"refresh":"5m","templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | +| cluster_resource_manager | object | `{"config":{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}},{"defaultIamRole":{"value":""}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]}],"refresh":"5m","refreshInterval":"5m","templatePath":"/etc/flyte/clusterresource/templates"}},"enabled":true,"templates":[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]}` | Configuration for the Cluster resource manager component. This is an optional component, that enables automatic cluster configuration. This is useful to set default quotas, manage namespaces etc that map to a project/domain | +| cluster_resource_manager.config | object | `{"cluster_resources":{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}},{"defaultIamRole":{"value":""}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]}],"refresh":"5m","refreshInterval":"5m","templatePath":"/etc/flyte/clusterresource/templates"}}` | Configmap for ClusterResource parameters | +| cluster_resource_manager.config.cluster_resources | object | `{"customData":[{"production":[{"projectQuotaCpu":{"value":"5"}},{"projectQuotaMemory":{"value":"4000Mi"}},{"defaultIamRole":{"value":""}}]},{"staging":[{"projectQuotaCpu":{"value":"2"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]},{"development":[{"projectQuotaCpu":{"value":"4"}},{"projectQuotaMemory":{"value":"3000Mi"}},{"defaultIamRole":{"value":""}}]}],"refresh":"5m","refreshInterval":"5m","templatePath":"/etc/flyte/clusterresource/templates"}` | ClusterResource parameters Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. | | cluster_resource_manager.enabled | bool | `true` | Enables the Cluster resource manager component | | cluster_resource_manager.templates | list | `[{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"},{"key":"ab_project_resource_quota","value":"apiVersion: v1\nkind: ResourceQuota\nmetadata:\n name: project-quota\n namespace: {{ namespace }}\nspec:\n hard:\n limits.cpu: {{ projectQuotaCpu }}\n limits.memory: {{ projectQuotaMemory }}\n"}]` | Resource templates that should be applied | | cluster_resource_manager.templates[0] | object | `{"key":"aa_namespace","value":"apiVersion: v1\nkind: Namespace\nmetadata:\n name: {{ namespace }}\nspec:\n finalizers:\n - kubernetes\n"}` | Template for namespaces resources | +| common | object | `{"databaseSecret":{"name":"","secretManifest":{}},"flyteNamespaceTemplate":{"enabled":false},"ingress":{"albSSLRedirect":false,"annotations":{},"enabled":true,"separateGrpcIngress":false,"separateGrpcIngressAnnotations":{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"},"tls":{"enabled":false},"webpackHMR":false}}` | ---------------------------------------------- COMMON SETTINGS | | common.databaseSecret.name | string | `""` | Specify name of K8s Secret which contains Database password. Leave it empty if you don't need this Secret | | common.databaseSecret.secretManifest | object | `{}` | Specify your Secret (with sensitive data) or pseudo-manifest (without sensitive data). See https://github.com/godaddy/kubernetes-external-secrets | -| common.flyteNamespaceTemplate.enabled | bool | `false` | | -| common.ingress.albSSLRedirect | bool | `false` | | -| common.ingress.annotations | object | `{}` | | -| common.ingress.enabled | bool | `true` | | -| common.ingress.separateGrpcIngress | bool | `false` | | -| common.ingress.separateGrpcIngressAnnotations."nginx.ingress.kubernetes.io/backend-protocol" | string | `"GRPC"` | | -| common.ingress.tls.enabled | bool | `false` | | -| common.ingress.webpackHMR | bool | `false` | | +| common.flyteNamespaceTemplate.enabled | bool | `false` | - Enable or disable creating Flyte namespace in template. Enable when using helm as template-engine only. Disable when using `helm install ...`. | +| common.ingress.albSSLRedirect | bool | `false` | - albSSLRedirect adds a special route for ssl redirect. Only useful in combination with the AWS LoadBalancer Controller. | +| common.ingress.annotations | object | `{}` | - Ingress annotations applied to both HTTP and GRPC ingresses. | +| common.ingress.enabled | bool | `true` | - Enable or disable creating Ingress for Flyte. Relevant to disable when using e.g. Istio as ingress controller. | +| common.ingress.separateGrpcIngress | bool | `false` | - separateGrpcIngress puts GRPC routes into a separate ingress if true. Required for certain ingress controllers like nginx. | +| common.ingress.separateGrpcIngressAnnotations | object | `{"nginx.ingress.kubernetes.io/backend-protocol":"GRPC"}` | - Extra Ingress annotations applied only to the GRPC ingress. Only makes sense if `separateGrpcIngress` is enabled. | +| common.ingress.tls | object | `{"enabled":false}` | - Ingress hostname host: | +| common.ingress.webpackHMR | bool | `false` | - Enable or disable HMR route to flyteconsole. This is useful only for frontend development. | +| configmap | object | `{"admin":{"admin":{"clientId":"flytepropeller","clientSecretLocation":"/etc/secrets/client_secret","endpoint":"flyteadmin:81","insecure":true},"event":{"capacity":1000,"rate":500,"type":"admin"}},"adminServer":{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":1,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}},"catalog":{"catalog-cache":{"endpoint":"datacatalog:89","insecure":true,"type":"datacatalog"}},"console":{"BASE_URL":"/console","CONFIG_DIR":"/etc/flyte/config","DISABLE_AUTH":"1"},"copilot":{"plugins":{"k8s":{"co-pilot":{"image":"cr.flyte.org/lyft/flyteplugins/flytecopilot:dc4bdbd61cac88a39a5ff43e40f026bdbc2c78a2","name":"flyte-copilot-","start-timeout":"30s"}}}},"core":{"propeller":{"downstream-eval-duration":"30s","enable-admin-launcher":true,"leader-election":{"enabled":true,"lease-duration":"15s","lock-config-map":{"name":"propeller-leader","namespace":"flyte"},"renew-deadline":"10s","retry-period":"2s"},"limit-namespace":"all","max-workflow-retries":30,"metadata-prefix":"metadata/propeller","metrics-prefix":"flyte","prof-port":10254,"queue":{"batch-size":-1,"batching-interval":"2s","queue":{"base-delay":"5s","capacity":1000,"max-delay":"120s","rate":100,"type":"maxof"},"sub-queue":{"capacity":100,"rate":10,"type":"bucket"},"type":"batch"},"rawoutput-prefix":"s3://my-s3-bucket/","workers":4,"workflow-reeval-duration":"30s"},"webhook":{"certDir":"/etc/webhook/certs","serviceName":"flyte-pod-webhook"}},"datacatalogServer":{"application":{"grpcPort":8089,"grpcServerReflection":true,"httpPort":8080},"datacatalog":{"metrics-scope":"datacatalog","profiler-port":10254,"storage-prefix":"metadata/datacatalog"}},"domain":{"domains":[{"id":"development","name":"development"},{"id":"staging","name":"staging"},{"id":"production","name":"production"}]},"enabled_plugins":{"tasks":{"task-plugins":{"default-for-task-types":{"container":"container","container_array":"k8s-array","sidecar":"sidecar"},"enabled-plugins":["container","sidecar","k8s-array"]}}},"k8s":{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[],"default-memory":"100Mi"}}},"logger":{"logger":{"level":4,"show-source":true}},"remoteData":{"remoteData":{"region":"us-east-1","scheme":"local","signedUrls":{"durationMinutes":3}}},"resource_manager":{"propeller":{"resourcemanager":{"redis":{"hostKey":"mypassword","hostPath":"redis-resource-manager:6379"},"resourceMaxQuota":10000,"type":"redis"}}},"task_logs":{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":false}}},"task_resource_defaults":{"task_resources":{"defaults":{"cpu":"100m","memory":"100Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"8Gi","storage":"20Mi"}}}}` | ------------------------------------------------------------------ Specializing your deployment using configuration ------------------------------------------------------------------- CONFIGMAPS SETTINGS | | configmap.admin | object | `{"admin":{"clientId":"flytepropeller","clientSecretLocation":"/etc/secrets/client_secret","endpoint":"flyteadmin:81","insecure":true},"event":{"capacity":1000,"rate":500,"type":"admin"}}` | Admin Client configuration [structure](https://pkg.go.dev/github.com/flyteorg/flytepropeller/pkg/controller/nodes/subworkflow/launchplan#AdminConfig) | | configmap.adminServer | object | `{"auth":{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}},"flyteadmin":{"eventVersion":1,"metadataStoragePrefix":["metadata","admin"],"metricsScope":"flyte:","profilerPort":10254,"roleNameKey":"iam.amazonaws.com/role","testing":{"host":"http://flyteadmin"}},"server":{"grpcPort":8089,"httpPort":8088,"security":{"allowCors":true,"allowedHeaders":["Content-Type","flyte-authorization"],"allowedOrigins":["*"],"secure":false,"useAuth":false}}}` | FlyteAdmin server configuration | | configmap.adminServer.auth | object | `{"appAuth":{"thirdPartyConfig":{"flyteClient":{"clientId":"flytectl","redirectUri":"http://localhost:53593/callback","scopes":["offline","all"]}}},"authorizedUris":["https://localhost:30081","http://flyteadmin:80","http://flyteadmin.flyte.svc.cluster.local:80"],"userAuth":{"openId":{"baseUrl":"https://accounts.google.com","clientId":"657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com","scopes":["profile","openid"]}}}` | Authentication configuration | @@ -86,29 +88,26 @@ helm upgrade -f values-sandbox.yaml flyte . | configmap.k8s | object | `{"plugins":{"k8s":{"default-cpus":"100m","default-env-vars":[],"default-memory":"100Mi"}}}` | Kubernetes specific Flyte configuration | | configmap.k8s.plugins.k8s | object | `{"default-cpus":"100m","default-env-vars":[],"default-memory":"100Mi"}` | Configuration section for all K8s specific plugins [Configuration structure](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/pluginmachinery/flytek8s/config) | | configmap.logger | object | `{"logger":{"level":4,"show-source":true}}` | Logger configuration | -| configmap.remoteData.remoteData.region | string | `"us-east-1"` | | -| configmap.remoteData.remoteData.scheme | string | `"local"` | | -| configmap.remoteData.remoteData.signedUrls.durationMinutes | int | `3` | | | configmap.resource_manager | object | `{"propeller":{"resourcemanager":{"redis":{"hostKey":"mypassword","hostPath":"redis-resource-manager:6379"},"resourceMaxQuota":10000,"type":"redis"}}}` | Resource manager configuration | | configmap.resource_manager.propeller | object | `{"resourcemanager":{"redis":{"hostKey":"mypassword","hostPath":"redis-resource-manager:6379"},"resourceMaxQuota":10000,"type":"redis"}}` | resource manager configuration | | configmap.task_logs | object | `{"plugins":{"logs":{"cloudwatch-enabled":false,"kubernetes-enabled":false}}}` | Section that configures how the Task logs are displayed on the UI. This has to be changed based on your actual logging provider. Refer to [structure](https://pkg.go.dev/github.com/lyft/flyteplugins/go/tasks/logs#LogConfig) to understand how to configure various logging engines | | configmap.task_logs.plugins.logs.cloudwatch-enabled | bool | `false` | One option is to enable cloudwatch logging for EKS, update the region and log group accordingly | | configmap.task_resource_defaults | object | `{"task_resources":{"defaults":{"cpu":"100m","memory":"100Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"8Gi","storage":"20Mi"}}}` | Task default resources configuration Refer to the full [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#TaskResourceConfiguration). | | configmap.task_resource_defaults.task_resources | object | `{"defaults":{"cpu":"100m","memory":"100Mi","storage":"5Mi"},"limits":{"cpu":2,"gpu":1,"memory":"8Gi","storage":"20Mi"}}` | Task default resources parameters | +| contour | object | `{"affinity":{},"contour":{"resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"10m","memory":"50Mi"}}},"enabled":true,"envoy":{"resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"10m","memory":"50Mi"}}},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"serviceAccountAnnotations":{},"tolerations":[]}` | CONTOUR SETTINGS | | contour.affinity | object | `{}` | affinity for Contour deployment | | contour.contour.resources | object | `{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"10m","memory":"50Mi"}}` | Default resources requests and limits for Contour | -| contour.enabled | bool | `true` | | +| contour.enabled | bool | `true` | - enable or disable Contour deployment installation | | contour.envoy.resources | object | `{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"10m","memory":"50Mi"}}` | Default resources requests and limits for Envoy | | contour.nodeSelector | object | `{}` | nodeSelector for Contour deployment | | contour.podAnnotations | object | `{}` | Annotations for Contour pods | | contour.replicaCount | int | `1` | Replicas count for Contour deployment | | contour.serviceAccountAnnotations | object | `{}` | Annotations for ServiceAccount attached to Contour pods | | contour.tolerations | list | `[]` | tolerations for Contour deployment | +| datacatalog | object | `{"affinity":{},"configPath":"/etc/datacatalog/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/datacatalog","tag":"v0.3.5"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","ephemeral-storage":"100Mi","memory":"500Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"NodePort"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":{}},"tolerations":[]}` | DATACATALOG SETTINGS | | datacatalog.affinity | object | `{}` | affinity for Datacatalog deployment | | datacatalog.configPath | string | `"/etc/datacatalog/config/*.yaml"` | Default regex string for searching configuration files | -| datacatalog.image.pullPolicy | string | `"IfNotPresent"` | | | datacatalog.image.repository | string | `"cr.flyte.org/flyteorg/datacatalog"` | Docker image for Datacatalog deployment | -| datacatalog.image.tag | string | `"v0.3.5"` | | | datacatalog.nodeSelector | object | `{}` | nodeSelector for Datacatalog deployment | | datacatalog.podAnnotations | object | `{}` | Annotations for Datacatalog pods | | datacatalog.replicaCount | int | `1` | Replicas count for Datacatalog deployment | @@ -137,22 +136,19 @@ helm upgrade -f values-sandbox.yaml flyte . | flyteadmin.serviceAccount.create | bool | `true` | Should a service account be created for flyteadmin | | flyteadmin.serviceAccount.imagePullSecrets | object | `{}` | ImapgePullSecrets to automatically assign to the service account | | flyteadmin.tolerations | list | `[]` | tolerations for Flyteadmin deployment | +| flyteconsole | object | `{"affinity":{},"image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flyteconsole","tag":"v0.20.1"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"250Mi"},"requests":{"cpu":"10m","memory":"50Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]}` | FLYTECONSOLE SETTINGS | | flyteconsole.affinity | object | `{}` | affinity for Flyteconsole deployment | -| flyteconsole.image.pullPolicy | string | `"IfNotPresent"` | | | flyteconsole.image.repository | string | `"cr.flyte.org/flyteorg/flyteconsole"` | Docker image for Flyteconsole deployment | -| flyteconsole.image.tag | string | `"v0.20.1"` | | | flyteconsole.nodeSelector | object | `{}` | nodeSelector for Flyteconsole deployment | | flyteconsole.podAnnotations | object | `{}` | Annotations for Flyteconsole pods | | flyteconsole.replicaCount | int | `1` | Replicas count for Flyteconsole deployment | | flyteconsole.resources | object | `{"limits":{"cpu":"500m","memory":"250Mi"},"requests":{"cpu":"10m","memory":"50Mi"}}` | Default resources requests and limits for Flyteconsole deployment | | flyteconsole.service | object | `{"annotations":{},"type":"ClusterIP"}` | Service settings for Flyteconsole | | flyteconsole.tolerations | list | `[]` | tolerations for Flyteconsole deployment | +| flytepropeller | object | `{"affinity":{},"cacheSizeMbs":0,"configPath":"/etc/flyte/config/*.yaml","image":{"pullPolicy":"IfNotPresent","repository":"cr.flyte.org/flyteorg/flytepropeller","tag":"v0.12.9"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","ephemeral-storage":"100Mi","memory":"200Mi"},"requests":{"cpu":"10m","ephemeral-storage":"50Mi","memory":"50Mi"}},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":{}},"tolerations":[]}` | FLYTEPROPELLER SETTINGS | | flytepropeller.affinity | object | `{}` | affinity for Flytepropeller deployment | -| flytepropeller.cacheSizeMbs | int | `0` | | | flytepropeller.configPath | string | `"/etc/flyte/config/*.yaml"` | Default regex string for searching configuration files | -| flytepropeller.image.pullPolicy | string | `"IfNotPresent"` | | | flytepropeller.image.repository | string | `"cr.flyte.org/flyteorg/flytepropeller"` | Docker image for Flytepropeller deployment | -| flytepropeller.image.tag | string | `"v0.12.9"` | | | flytepropeller.nodeSelector | object | `{}` | nodeSelector for Flytepropeller deployment | | flytepropeller.podAnnotations | object | `{}` | Annotations for Flytepropeller pods | | flytepropeller.replicaCount | int | `1` | Replicas count for Flytepropeller deployment | @@ -162,34 +158,31 @@ helm upgrade -f values-sandbox.yaml flyte . | flytepropeller.serviceAccount.create | bool | `true` | Should a service account be created for FlytePropeller | | flytepropeller.serviceAccount.imagePullSecrets | object | `{}` | ImapgePullSecrets to automatically assign to the service account | | flytepropeller.tolerations | list | `[]` | tolerations for Flytepropeller deployment | -| kubernetes-dashboard.enabled | bool | `false` | | +| kubernetes-dashboard | object | `{"enabled":false}` | KUBERNETES DASHBOARD | +| minio | object | `{"affinity":{},"enabled":true,"image":{"pullPolicy":"IfNotPresent","repository":"minio/minio","tag":"RELEASE.2020-12-16T05-05-17Z"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"200m","memory":"512Mi"},"requests":{"cpu":"10m","memory":"128Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]}` | MINIO SETTINGS | | minio.affinity | object | `{}` | affinity for Minio deployment | -| minio.enabled | bool | `true` | | -| minio.image.pullPolicy | string | `"IfNotPresent"` | | +| minio.enabled | bool | `true` | - enable or disable Minio deployment installation | | minio.image.repository | string | `"minio/minio"` | Docker image for Minio deployment | -| minio.image.tag | string | `"RELEASE.2020-12-16T05-05-17Z"` | | | minio.nodeSelector | object | `{}` | nodeSelector for Minio deployment | | minio.podAnnotations | object | `{}` | Annotations for Minio pods | | minio.replicaCount | int | `1` | Replicas count for Minio deployment | | minio.resources | object | `{"limits":{"cpu":"200m","memory":"512Mi"},"requests":{"cpu":"10m","memory":"128Mi"}}` | Default resources requests and limits for Minio deployment | | minio.service | object | `{"annotations":{},"type":"ClusterIP"}` | Service settings for Minio | | minio.tolerations | list | `[]` | tolerations for Minio deployment | +| postgres | object | `{"affinity":{},"enabled":true,"image":{"pullPolicy":"IfNotPresent","repository":"postgres","tag":"10.16"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"1000m","memory":"512Mi"},"requests":{"cpu":"10m","memory":"128Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]}` | POSTGRES SETTINGS | | postgres.affinity | object | `{}` | affinity for Postgres deployment | -| postgres.enabled | bool | `true` | | -| postgres.image.pullPolicy | string | `"IfNotPresent"` | | +| postgres.enabled | bool | `true` | - enable or disable Postgres deployment installation | | postgres.image.repository | string | `"postgres"` | Docker image for Postgres deployment | -| postgres.image.tag | string | `"10.16"` | | | postgres.nodeSelector | object | `{}` | nodeSelector for Postgres deployment | | postgres.podAnnotations | object | `{}` | Annotations for Postgres pods | | postgres.replicaCount | int | `1` | Replicas count for Postgres deployment | | postgres.resources | object | `{"limits":{"cpu":"1000m","memory":"512Mi"},"requests":{"cpu":"10m","memory":"128Mi"}}` | Default resources requests and limits for Postgres deployment | | postgres.service | object | `{"annotations":{},"type":"ClusterIP"}` | Service settings for Postgres | | postgres.tolerations | list | `[]` | tolerations for Postgres deployment | +| pytorchoperator | object | `{"affinity":{},"enabled":true,"image":{"pullPolicy":"IfNotPresent","repository":"gcr.io/kubeflow-images-public/pytorch-operator","tag":"v1.0.0-g047cf0f"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"500m","memory":"1000M"},"requests":{"cpu":"10m","memory":"50M"}},"service":{"annotations":{},"type":"ClusterIP"},"serviceAccountAnnotations":{},"tolerations":[]}` | -------------------- Distributed Pytorch execution using the K8s Pytorch operator | | pytorchoperator.affinity | object | `{}` | affinity for Pytorchoperator deployment | -| pytorchoperator.enabled | bool | `true` | | -| pytorchoperator.image.pullPolicy | string | `"IfNotPresent"` | | +| pytorchoperator.enabled | bool | `true` | - enable or disable Pytorchoperator deployment installation | | pytorchoperator.image.repository | string | `"gcr.io/kubeflow-images-public/pytorch-operator"` | Docker image for Pytorchoperator | -| pytorchoperator.image.tag | string | `"v1.0.0-g047cf0f"` | | | pytorchoperator.nodeSelector | object | `{}` | nodeSelector for Pytorchoperator deployment | | pytorchoperator.podAnnotations | object | `{}` | Annotations for Pytorchoperator pods | | pytorchoperator.replicaCount | int | `1` | Replicas count for Pytorchoperator deployment | @@ -197,32 +190,33 @@ helm upgrade -f values-sandbox.yaml flyte . | pytorchoperator.service | object | `{"annotations":{},"type":"ClusterIP"}` | Service settings for Pytorchoperator | | pytorchoperator.serviceAccountAnnotations | object | `{}` | Annotations for ServiceAccount attached to Pytorchoperator pods | | pytorchoperator.tolerations | list | `[]` | tolerations for Pytorchoperator deployment | +| redis | object | `{"affinity":{},"enabled":true,"image":{"pullPolicy":"IfNotPresent","repository":"docker.io/bitnami/redis","tag":"4.0.2-r1"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"1000m","memory":"1Gi"},"requests":{"cpu":"10m","memory":"50Mi"}},"service":{"annotations":{},"type":"ClusterIP"},"tolerations":[]}` | -------------------------------------------- Sandbox Configuration Sandbox allows to run flyte without any cloud dependencies and can be run even locally on your laptop. This is achieved by replacing cloud service dependencies by k8s local alternatives. These may not be ideal for a high performance setup, but are great to try out flyte ----------------------------------------------- REDIS SETTINGS | | redis.affinity | object | `{}` | affinity for Redis Statefulset | -| redis.enabled | bool | `true` | | -| redis.image.pullPolicy | string | `"IfNotPresent"` | | +| redis.enabled | bool | `true` | - enable or disable Redis Statefulset installation | | redis.image.repository | string | `"docker.io/bitnami/redis"` | Docker image for Redis Statefulset | -| redis.image.tag | string | `"4.0.2-r1"` | | | redis.nodeSelector | object | `{}` | nodeSelector for Redis Statefulset | | redis.podAnnotations | object | `{}` | Annotations for Redis pods | | redis.replicaCount | int | `1` | Replicas count for Redis Statefulset | | redis.resources | object | `{"limits":{"cpu":"1000m","memory":"1Gi"},"requests":{"cpu":"10m","memory":"50Mi"}}` | Default resources requests and limits for Redis Statefulset | | redis.service | object | `{"annotations":{},"type":"ClusterIP"}` | Service settings for Redis | | redis.tolerations | list | `[]` | tolerations for Redis Statefulset | -| sagemaker.enabled | bool | `false` | | -| sagemaker.plugin_config.plugins.sagemaker.region | string | `""` | | -| sagemaker.plugin_config.plugins.sagemaker.roleArn | string | `""` | | -| sparkoperator.enabled | bool | `true` | | +| sagemaker | object | `{"enabled":false,"plugin_config":{"plugins":{"sagemaker":{"region":"","roleArn":""}}}}` | --------------- -- Training on AWS Sagemaker using AWS Sagemaker operator. To actually install the operator, please follow instructions [here](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master/hack/charts/installer/rolebased) Use the config section here to just enable sagemaker plugin in Flyte, after you have installed the operator using the information | +| sparkoperator | object | `{"enabled":true,"image":{"tag":"v1beta2-1.2.0-3.0.0"},"plugin_config":{"plugins":{"spark":{"spark-config-default":[{"spark.hadoop.fs.s3a.aws.credentials.provider":"com.amazonaws.auth.DefaultAWSCredentialsProviderChain"},{"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version":"2"},{"spark.kubernetes.allocation.batch.size":"50"},{"spark.hadoop.fs.s3a.acl.default":"BucketOwnerFullControl"},{"spark.hadoop.fs.s3n.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3n.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3a.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3a.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3a.multipart.threshold":"536870912"},{"spark.blacklist.enabled":"true"},{"spark.blacklist.timeout":"5m"},{"spark.task.maxfailures":"8"}]}}},"replicaCount":1,"resources":{"limits":{"cpu":"1000m","memory":"500M"},"requests":{"cpu":"10m","memory":"50M"}}}` | ------------------------------------------------------ Optional Plugins -------------------------------------------------------- -- Optional: Spark Plugin using the Spark Operator | +| sparkoperator.enabled | bool | `true` | - enable or disable Sparkoperator deployment installation | | sparkoperator.image.tag | string | `"v1beta2-1.2.0-3.0.0"` | Docker image for Sparkoperator | | sparkoperator.plugin_config | object | `{"plugins":{"spark":{"spark-config-default":[{"spark.hadoop.fs.s3a.aws.credentials.provider":"com.amazonaws.auth.DefaultAWSCredentialsProviderChain"},{"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version":"2"},{"spark.kubernetes.allocation.batch.size":"50"},{"spark.hadoop.fs.s3a.acl.default":"BucketOwnerFullControl"},{"spark.hadoop.fs.s3n.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3n.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3a.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3a.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3a.multipart.threshold":"536870912"},{"spark.blacklist.enabled":"true"},{"spark.blacklist.timeout":"5m"},{"spark.task.maxfailures":"8"}]}}}` | Spark plugin configuration | | sparkoperator.plugin_config.plugins.spark.spark-config-default | list | `[{"spark.hadoop.fs.s3a.aws.credentials.provider":"com.amazonaws.auth.DefaultAWSCredentialsProviderChain"},{"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version":"2"},{"spark.kubernetes.allocation.batch.size":"50"},{"spark.hadoop.fs.s3a.acl.default":"BucketOwnerFullControl"},{"spark.hadoop.fs.s3n.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3n.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3a.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem"},{"spark.hadoop.fs.AbstractFileSystem.s3a.impl":"org.apache.hadoop.fs.s3a.S3A"},{"spark.hadoop.fs.s3a.multipart.threshold":"536870912"},{"spark.blacklist.enabled":"true"},{"spark.blacklist.timeout":"5m"},{"spark.task.maxfailures":"8"}]` | Spark default configuration | +| sparkoperator.plugin_config.plugins.spark.spark-config-default[0] | object | `{"spark.hadoop.fs.s3a.aws.credentials.provider":"com.amazonaws.auth.DefaultAWSCredentialsProviderChain"}` | it can use the serviceAccount based IAM role or ec2 metadata based. This is more in line with how AWS works | | sparkoperator.replicaCount | int | `1` | Replicas count for Sparkoperator deployment | | sparkoperator.resources | object | `{"limits":{"cpu":"1000m","memory":"500M"},"requests":{"cpu":"10m","memory":"50M"}}` | Default resources requests and limits for Sparkoperator | +| storage | object | `{"bucketName":"my-s3-bucket","custom":{},"gcs":null,"s3":{"region":"us-east-1"},"type":"sandbox"}` | --------------------------------------------------- Core dependencies that should be configured for Flyte to work on any platform Specifically 2 - Storage (s3, gcs etc), Production RDBMS - Aurora, CloudSQL etc ------------------------------------------------------ STORAGE SETTINGS | | storage.bucketName | string | `"my-s3-bucket"` | bucketName defines the storage bucket flyte will use. Required for all types except for sandbox. | | storage.custom | object | `{}` | GCP project ID. Required for storage type gcs. projectId: -- Settings for storage type custom. See https://github:com/graymeta/stow for supported storage providers/settings. | | storage.gcs | string | `nil` | settings for storage type gcs | | storage.s3 | object | `{"region":"us-east-1"}` | settings for storage type s3 | | storage.type | string | `"sandbox"` | Sets the storage type. Supported values are sandbox, s3, gcs and custom. | -| tf_operator.enabled | bool | `false` | | +| tf_operator | object | `{"enabled":false}` | -------------------- -- Distributed tensorflow training using the TF-Operator. This can be installed as explained [here](https://github.com/kubeflow/tf-operator) There is no helm chart maintained and hence it might need an independent installation | +| webhook | object | `{"enabled":true,"service":{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"},"serviceAccount":{"annotations":{},"create":true,"imagePullSecrets":{}}}` | WEBHOOK SETTINGS | | webhook.enabled | bool | `true` | enable or disable secrets webhook | | webhook.service | object | `{"annotations":{"projectcontour.io/upstream-protocol.h2c":"grpc"},"type":"ClusterIP"}` | Service settings for the webhook | | webhook.serviceAccount | object | `{"annotations":{},"create":true,"imagePullSecrets":{}}` | Configuration for service accounts for the webhook | @@ -230,5 +224,4 @@ helm upgrade -f values-sandbox.yaml flyte . | webhook.serviceAccount.create | bool | `true` | Should a service account be created for the webhook | | webhook.serviceAccount.imagePullSecrets | object | `{}` | ImapgePullSecrets to automatically assign to the service account | | workflow_notifications | object | `{"config":{},"enabled":false}` | **Optional Component** Workflow notifications module is an optional dependency. Flyte uses cloud native pub-sub systems to notify users of various events in their workflows | -| workflow_scheduler.config | object | `{}` | | -| workflow_scheduler.enabled | bool | `false` | | +| workflow_scheduler | object | `{"config":{},"enabled":false}` | -------------------------------------------------------------- Optional Modules Flyte built extensions that enable various additional features in Flyte. All these features are optional, but are critical to run certain features ------------------------------------------------------------------------ -- **Optional Component** Flyte uses a cloud hosted Cron scheduler to run workflows on a schedule. The following module is optional. Without, this module, you will not have scheduled launchplans / workflows. Docs: https://docs.flyte.org/en/latest/howto/enable_and_use_schedules.html#setting-up-scheduled-workflows | diff --git a/helm/values.yaml b/helm/values.yaml index 12e70a842c..64781d438a 100755 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -700,6 +700,7 @@ cluster_resource_manager: # -- ClusterResource parameters # Refer to the [structure](https://pkg.go.dev/github.com/lyft/flyteadmin@v0.3.37/pkg/runtime/interfaces#ClusterResourceConfig) to customize. cluster_resources: + refreshInterval: 5m templatePath: "/etc/flyte/clusterresource/templates" customData: - production: diff --git a/kustomize/base/single_cluster/headless/config/admin/cluster_resources.yaml b/kustomize/base/single_cluster/headless/config/admin/cluster_resources.yaml index 1766e21228..bd2f1dc9d6 100644 --- a/kustomize/base/single_cluster/headless/config/admin/cluster_resources.yaml +++ b/kustomize/base/single_cluster/headless/config/admin/cluster_resources.yaml @@ -16,4 +16,4 @@ cluster_resources: value: "4" - projectQuotaMemory: value: "3000Mi" - refresh: 5m + refreshInterval: 1m diff --git a/kustomize/overlays/sandbox/flyte/admin/deployment.yaml b/kustomize/overlays/sandbox/flyte/admin/deployment.yaml index 5a30adeb68..c38cc874a7 100644 --- a/kustomize/overlays/sandbox/flyte/admin/deployment.yaml +++ b/kustomize/overlays/sandbox/flyte/admin/deployment.yaml @@ -72,6 +72,23 @@ spec: memory: "200Mi" cpu: "0.1" ephemeral-storage: "100Mi" + - name: sync-cluster-resources-goroutine + image: flyteadmin:v0.4.13 + imagePullPolicy: IfNotPresent + command: + [ + "flyteadmin", + "--config", + "/etc/flyte/config/*.yaml", + "clusterresource", + "run", + ] + volumeMounts: + - name: resource-templates + mountPath: /etc/flyte/clusterresource/templates + - name: config-volume + mountPath: /etc/flyte/config + --- apiVersion: v1 kind: Service