Repository for dip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
ychangkim f6f3dd53c5 update 3 weeks ago
..
charts update 3 weeks ago
ci update 3 weeks ago
opa-bridge/v0.11/policies update 3 weeks ago
templates update 3 weeks ago
BUILD-README.md update 3 weeks ago
CUSTOM-README.md update 3 weeks ago
Changelog.md update 3 weeks ago
Chart.lock update 3 weeks ago
Chart.yaml update 3 weeks ago
README.md update 3 weeks ago
README.md.gotmpl update 3 weeks ago
custom-values.yaml update 3 weeks ago
dip-questions.yaml update 3 weeks ago
dip-values.yaml update 3 weeks ago
values.yaml update 3 weeks ago

README.md

Official Lakekeeper Helm-Chart

Helm Chart for Lakekeeper - a rust native Iceberg Rest Catalog

Artifact Hub Version: 0.8.0 Type: application AppVersion: 0.10.2

Please check our Documentation, the Lakekeeper Repository and the values.yaml for more information.

Important Notice: Migration from Bitnami to groundhog2k

This Chart used to rely on the Bitnami PostgreSQL Helm chart for postgres for both Lakekeeper and OpenFGA. Due to the Bitnami Secure Images initiative, this was no longer possible. We now moved to groundhog2k/posgres with Chart Version 0.8.0.

Changes:

  • Version 0.7.1: Transition from Bitnami images to self-hosted images on Quay.io to ensure deployment stability
  • Version 0.8.0: Migration to groundhog2k/posgres.

Important notes:

  • No automatic migration will be provided by this chart
  • Back up your database before updating to prevent data loss
  • As noted in the installation section and Production Checklist, the databases included with this chart are not production-ready

Installing the Chart

To install the chart with the release name my-release:

helm repo add lakekeeper https://lakekeeper.github.io/lakekeeper-charts/
helm install my-lakekeeper lakekeeper/lakekeeper

This chart by default deploys the "postgresql" subchart. This setup is not production ready. For production deployments, please deploy an external database, set postgresql.enabled to false and use the externalDatabase.* parameters to configure the connection. To deploy production ready Databases on Kubernetes, we recommend to use the CloudNativePGOperator.

For potential additional steps that are required for upgrades, please check the Changelog

Requirements

Repository Name Version
https://groundhog2k.github.io/helm-charts/ postgresql(postgres) 1.5.8
https://openfga.github.io/helm-charts openfga(openfga) 0.2.44

Values

Key Type Default Description
additionalLabels object {} Additional labels to add to all resources
auth.k8s.audience string "" The expected Audience of the Kubernetes Service Account. The aud (audience) claim of the JWT token must match this value. If oauth2 and kubernetes authentication are enabled, this value must be specified. Most clusters can use the default value of https://kubernetes.default.svc.
auth.k8s.createClusterRoleBinding bool true If true and auth.k8s.enabled is true, a ClusterRoleBinding is created that allows lakekeeper to introspect tokens.
auth.k8s.enabled bool false If true, kubernetes service accounts can authenticate to Lakekeeper. This option is compatible with auth.oauth2 - multiple IdPs (OIDC and Kubernetes) can be enabled simultaneously.
auth.k8s.legacyEnabled bool false If true, will set LAKEKEEPER__KUBERNETES_AUTHENTICATION_ACCEPT_LEGACY_SERVICEACCOUNT to true This option will allow accepting tokens with iss claim set to kubernetes/serviceaccount
auth.oauth2 object {"additionalIssuers":[],"audience":"","providerUri":"","ui":{"clientID":"","resource":"","scopes":""}} Configuration for the authentication of the catalog. If auth.oauth2.providerUri is not set and auth.kubernetes.enabled is false, authentication is disabled.
auth.oauth2.additionalIssuers list [] Additional allow OIDC issuers. The issuer defined in the issuer field of the .well-known/openid-configuration is always trusted. additionalIssuers has no effect if providerUri is not set.
auth.oauth2.audience string "" The expected Audience of the OIDC App of lakekeeper. The aud (audience) claim of the JWT token must match this value. Typically this is the Client ID.
auth.oauth2.providerUri string "" If set, access to rest endpoints is secured via an external OIDC-capable IdP. The IdP must expose {provider_url}/.well-known/openid-configuration and the openid-configuration needs to have the jwks_uri and issuer defined. For keycloak set: https://keycloak.local/realms/test For Entra-ID set: https://login.microsoftonline.com/{your-tenant-id}/v2.0
auth.oauth2.ui.clientID string "" Client ID used for the Authorization Code Flow of the UI. Required if Authentication is enabled.
auth.oauth2.ui.resource string "" Resource to request
auth.oauth2.ui.scopes string "" Space separated scopes to request
authz.backend string "allowall" type of the authorization backend. Available values: "openfga", "allowall" Authorization must not change after bootstrapping! If type "openfga" is chose, consider setting internalOpenFGA to true to deploy an OpenFGA instance as a subchart.
authz.openfga.apiKey string "" API Key used to authenticate with OpenFGA. This is used for pre-shared key authentication.cc If clientId is set, the apiKey is ignored.
authz.openfga.clientId string "" Client ID used to authenticate with OpenFGA. This is used for OIDC authentication.
authz.openfga.clientIdSecret string "" the name of a pre-created secret containing the OIDC Client ID
authz.openfga.clientIdSecretKey string "client-id" the key within openfga.clientIdSecret containing the client-id string
authz.openfga.clientSecret string "" Client Secret used to authenticate with OpenFGA. This is used for OIDC authentication.
authz.openfga.clientSecretSecret string "" the name of a pre-created secret containing the OIDC Client Secret
authz.openfga.clientSecretSecretKey string "client-secret" the key within openfga.clientSecretSecret containing the client-secret string
authz.openfga.endpoint string "" OpenFGA Endpoint (gRPC) Set automatically if internalOpenFGA is true.
authz.openfga.store string "" Name of the Store to use in OpenFGA Defaults to "lakekeeper"
authz.openfga.tokenEndpoint string "" OIDC token endpoint used to authenticate with OpenFGA. Used when exchanging client credentials for an access token for OpenFGA. Required if Client ID is set.
catalog.affinity object {} affinity for the catalog Pods
catalog.annotations object {} Annotations for the catalog Deployment
catalog.autoscaling.enabled bool false if the HorizontalPodAutoscaler is enabled for the catalog Pods
catalog.autoscaling.maxReplicas int 2 maximum number of replicas for the catalog Pods
catalog.autoscaling.metrics list [] metrics for the HorizontalPodAutoscaler
catalog.command list [] Overwrite the command of the catalog container. If not set, the default entrypoint of the image is used
catalog.config object {} Configuration options for the catalog. Please check the documentation for the available options. https://docs.lakekeeper.io/docs/nightly/configuration/ Configuration items are mounted as environment variables.
catalog.containerSecurityContext <html>podsecuritycontext-v1-core</html> {} security context for the catalog container. runAsUser is ignored, please set with catalog.image.uid, runAsGroup is ignored, please set with catalog.image.gid
catalog.dbMigrations.annotations object {} Annotations for the migration job
catalog.dbMigrations.enabled bool true if the db-migrations Job is created. if false, you have to MANUALLY run airflow db upgrade when required
catalog.dbMigrations.extraInitContainers <html>container</html> [] extra init-containers for the migration Pod
catalog.dbMigrations.labels object {} Labels for the catalog migration job
catalog.dbMigrations.podAnnotations object {} Annotations for the migration pod
catalog.dbMigrations.podLabels object {} Labels for the migration pod
catalog.dbMigrations.resources <html>resource requirements</html> {} resources for the catalog container of the catalog pod
catalog.extraContainers list of <html>containers</html> [] extra containers for the catalog Pods
catalog.extraEnv list of <html>envvar-v1-core</html> [] extra variables for the catalog Pods
catalog.extraEnvFrom list of <html>envfromsource-v1-core</html> [] extra variables for the catalog Pods
catalog.extraInitContainers <html>container</html> [] extra init-containers for the catalog Pods
catalog.extraVolumeMounts <html>volume mount</html> [] extra VolumeMounts for the catalog Pods
catalog.extraVolumes <html>volume</html> [] extra Volumes for the catalog Pods
catalog.image.gid int 65534 65534 = nobody of google container distroless
catalog.image.pullPolicy string "IfNotPresent" The image pull policy
catalog.image.repository string nil The image repository to pull from
catalog.image.tag string nil The image tag to pull
catalog.image.uid int 65532 65532 = nonroot of google container distroless
catalog.ingress.annotations object {} annotations for the catalog Ingress
catalog.ingress.enabled bool false if we should deploy Ingress resources
catalog.ingress.host string "" the hostname for the catalog Ingress. For example, data.example.com.
catalog.ingress.ingressClassName string "" the Ingress Class for the catalog Ingress
catalog.ingress.labels object {} additional labels for the catalog Ingress
catalog.ingress.path string "" the path for the catalog Ingress. To host the catalog at the url https://data.example.com/iceberg-catalog, set path: "/iceberg-catalog". If a path is set, the ingress must strip the path before forwarding to the service! This helm-chart does not take care of this, as it depends on the type of Ingress Controller used. For example, for NGINX Ingress Controller, set the annotation nginx.ingress.kubernetes.io/rewrite-target: /
catalog.ingress.tls.enabled bool false enable TLS termination for the catalog Ingress
catalog.ingress.tls.secretName string "" the name of a pre-created Secret containing a TLS private key and certificate
catalog.initContainers.checkDb.resources <html>resource requirements</html> {} resource requests/limits for the "check-db" init-containers
catalog.labels object {} Labels for the catalog Deployment
catalog.livenessProbe.enabled bool true if the liveness probes of the catalog Pods are enabled
catalog.livenessProbe.failureThreshold int 5
catalog.livenessProbe.initialDelaySeconds int 1
catalog.livenessProbe.periodSeconds int 5
catalog.livenessProbe.timeoutSeconds int 5
catalog.nodeSelector <html> {} node selector configs for the catalog Pods
catalog.podAnnotations object {} Pod annotations for the catalog Deployment
catalog.podDisruptionBudget.enabled bool false if a PodDisruptionBudget resource is created for the catalog
catalog.podDisruptionBudget.maxUnavailable string "" the maximum unavailable pods/percentage for the catalog
catalog.podDisruptionBudget.minAvailable string "" the minimum available pods/percentage for the catalog
catalog.podLabels object {} Pod labels for the catalog Deployment
catalog.podSecurityContext <html>podsecuritycontext-v1-core</html> {} security context for the catalog Pods. runAsUser and runAsGroup are ignored for the catalog container, please set with catalog.image.uid and catalog.image.gid
catalog.priorityClassName string nil Kubernetes priority class for scheduling
catalog.prometheus.setScrapeAnnotations bool false Adds the prometheus.io/port and prometheus.io/scrape annotations to the catalog Pods.
catalog.readinessProbe.enabled bool true if the readiness probes of the catalog Pods are enabled
catalog.readinessProbe.failureThreshold int 5
catalog.readinessProbe.initialDelaySeconds int 1
catalog.readinessProbe.periodSeconds int 5
catalog.readinessProbe.timeoutSeconds int 5
catalog.replicas int 1 Number of replicas to deploy. Replicas are stateless.
catalog.resources <html>resource requirements</html> {} resources for the catalog container of the catalog pod
catalog.safeToEvict bool true if we add the annotation: "cluster-autoscaler.kubernetes.io/safe-to-evict" = "true"
catalog.service.annotations object {} catalog service annotations
catalog.service.externalPort int 8181 catalog service external port
catalog.service.loadBalancerIP string "" catalog service ip of the load balancer service. Only used when type: LoadBalancer
catalog.service.loadBalancerSourceRanges list [] Source ip ranges for the catalog services. Only used when type: LoadBalancer
catalog.service.nodePort object {"http":""} catalog service node port Only used when type: NodePort
catalog.service.sessionAffinity string "None" catalog service session affinity
catalog.service.sessionAffinityConfig object {} catalog service session affinity config
catalog.service.type string "ClusterIP" catalog service type
catalog.terminationPeriod int 60 how many seconds to wait after SIGTERM before SIGKILL of the catalog. Default is 60 seconds.
catalog.tolerations <html>toleration</html> [] tolerations for the catalog Pods
catalog.topologySpreadConstraints <html>topologySpreadConstraints</html> [] topology spread constraints the catalog Pods
clusterDomain string "cluster.local" kubernetes cluster domain name. Used for service discovery in the catalog.
externalDatabase.database string "catalog"
externalDatabase.host_read string "localhost" hostname to use for read instances of the external database
externalDatabase.host_write string "localhost" hostname to use for write instances of the external database. For single read/write instances, this should be the same as host_read
externalDatabase.password string ""
externalDatabase.passwordSecret string ""
externalDatabase.passwordSecretKey string "postgresql-password"
externalDatabase.port int 5432
externalDatabase.type string "postgres" the type of external database. allowed values: "postgres"
externalDatabase.user string "catalog"
externalDatabase.userSecret string ""
externalDatabase.userSecretKey string "postgresql-user"
fullnameOverride string <release-name>-<chart-name> Override the fully qualified chart name.
helmWait bool false If true, set the annotation helm-hook-enabled: "false" for jobs that need to run before the catalog is started. If this is false, helm install --wait will not work.
imagePullSecrets list of <html>image pull secrets</html> [] pull secrets for private repositories
internalOpenFGA bool false if an OpenFGA instance is deployed as a subchart. When setting internalOpenFGA to true, the openfga subchart is deployed.
lakekeeper.edition string "core" Lakekeeper Edition to use (core
lakekeeper.licenseKey string "" License key for Lakekeeper Plus. We strongly recommend using a Kubernetes secret instead by setting lakekeeper.useLicenseSecret: true and creating the secret separately. If both licenseKey and useLicenseSecret are set, the secret takes precedence.
lakekeeper.licenseSecretKey string "license-key" Key within the secret to store the license key. Only used if lakekeeper.useLicenseSecret is true.
lakekeeper.licenseSecretName string "lakekeeper-license" Name of the secret to store the license key. Only used if lakekeeper.useLicenseSecret is true.
lakekeeper.useLicenseSecret bool true If true, the license key is stored in a Kubernetes secret. If false, the license key is passed as an environment variable. We recommend setting this to true.
nameOverride string <chart-name> Override the name of the chart.
openfga.datastore.engine string "postgres"
openfga.datastore.migrationType string "initContainer"
openfga.datastore.uriSecret string "lakekeeper-openfga-pg-svcbind-postgres"
openfga.image.tag string "v1.8.16"
openfga.migrate.annotations."argocd.argoproj.io/hook" string "Sync"
openfga.migrate.annotations."argocd.argoproj.io/sync-wave" string "0"
openfga.migrate.annotations."helm.sh/hook" string "post-install, post-upgrade, post-rollback"
openfga.postgresql.enabled bool true
openfga.postgresql.extraEnvVars[0].name string "OPENFGA_CACHE_CONTROLLER_ENABLED"
openfga.postgresql.extraEnvVars[0].value string "true"
openfga.postgresql.extraEnvVars[1].name string "OPENFGA_CHECK_QUERY_CACHE_ENABLED"
openfga.postgresql.extraEnvVars[1].value string "true"
openfga.postgresql.extraEnvVars[2].name string "OPENFGA_CHECK_ITERATOR_CACHE_ENABLED"
openfga.postgresql.extraEnvVars[2].value string "true"
openfga.postgresql.extraEnvVars[3].name string "OPENFGA_LIST_OBJECTS_ITERATOR_CACHE_ENABLED"
openfga.postgresql.extraEnvVars[3].value string "false"
openfga.postgresql.fullnameOverride string "lakekeeper-openfga-pg"
openfga.postgresql.global.security.allowInsecureImages bool true
openfga.postgresql.image.registry string "quay.io"
openfga.postgresql.image.repository string "lakekeeper/postgresql"
openfga.postgresql.image.tag string "15.4.0-debian-11-r45"
openfga.postgresql.serviceBindings.enabled bool true
openfga.replicaCount int 1
postgresql.enabled bool true if the groundhog2k/postgres chart is used. [WARNING] embedded Postgres is NOT recommended for production. Use an external database instead. set to false if using externalDatabase.*
postgresql.nameOverride string "lakekeeper-pg"
postgresql.service.port int 5432
postgresql.settings.existingSecret string nil Optional existing secret for the Postgrest superuser
postgresql.settings.superuser.secretKey string nil Key of existingSecret for the Superuser name
postgresql.settings.superuser.value string nil Superuser name (if no existingSecret was specified) - defaults to "postgres"
postgresql.settings.superuserPassword.secretKey string nil Key of existingSecret for the Superuser password
postgresql.settings.superuserPassword.value string "password" Password of Superuser (if no existingSecret was specified)
postgresql.storage.accessModes[0] string "ReadWriteOnce"
postgresql.storage.className string nil the StorageClass used by the PVC
postgresql.storage.requestedSize string "5Gi" Size for new PVC, when no existing PVC is used if null, data will be LOST as postgres Pods restart
postgresql.userDatabase.existingSecret string nil Optional existing secret with database name, user and password
postgresql.userDatabase.name.secretKey string nil Key of the existingSecret with database name
postgresql.userDatabase.name.value string "lakekeeper" Name of the user database (if no existingSecret was specified) - defaults to "lakekeeper"
postgresql.userDatabase.password.secretKey string nil Key of the existingSecret with password of created user
postgresql.userDatabase.password.value string "password" Password of created user (if no existingSecret was specified) - defaults to "password"
postgresql.userDatabase.user.secretKey string nil Key of the existingSecret with database user
postgresql.userDatabase.user.value string "lakekeeper" User name with full access to user database (if no existingSecret was specified) - defaults to "lakekeeper"
secretBackend.kv2.password string "" password for authentication consider using a secret for the password
secretBackend.kv2.passwordSecret string "" the name of a pre-created secret containing the KV2 password
secretBackend.kv2.passwordSecretKey string "password" the key within kv2.passwordSecret containing the password string
secretBackend.kv2.secretMount string "kv/data/iceberg" path to the secret mount in the KV2 secret store.
secretBackend.kv2.url string "" the URL of the KV2 secret store
secretBackend.kv2.user string "" user name for authentication
secretBackend.kv2.userSecret string "" the name of a pre-created secret containing the KV2 user
secretBackend.kv2.userSecretKey string "username" the key within kv2.userSecret containing the user string
secretBackend.postgres.encryptionKeySecret string "" Name of the secret containing the encryption key. If not set, a random key is generated and stored in a secret. We recommend setting this to a pre-existing secret. If you loose the key, you loose access to all secrets. If this secret is not set here, we use helm's lookup function to not change the key on every upgrade. This is incompatible with some kubernetes tools such as ArgoCD: https://github.com/argoproj/argo-cd/issues/5202 Please ensure that you have the encryptionKeySecret field set if helm's lookup is not supported in your tool.
secretBackend.postgres.encryptionKeySecretKey string "encryptionKey" Name of the key within encryptionKeySecret containing the encryption key string
secretBackend.type string "Postgres" the type of secret store to use. Available values: "Postgres", "KV2"
serviceAccount.annotations object {} Annotations to add to the service account
serviceAccount.automount bool true Option to opt-out of the default behavior of service account token auto-mounting.
serviceAccount.create bool true Specifies whether a service account should be created. If false, you must create the you must create the service account outside this chart with name: serviceAccount.name
serviceAccount.name string "" Name of the service account to use. If not set and create is true, a name is generated using the fullname

Autogenerated from chart metadata using helm-docs v1.14.2