Skip to content

dreamfactorysoftware/df-helm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DreamFactory

Helm Chart for DreamFactory 6.x

Get Started GuideTry OnlineContributeCommunity SupportDocs

Table of Contents

Prerequisites

Install Helm

Installing the DreamFactory Helm Chart

1) Clone the df-helm repo

cd ~/repos (or wherever you want the clone of the repo to be)
git clone https://github.com/dreamfactorysoftware/df-helm.git
cd df-helm

2) Edit values.yaml

Update the MySQL root password value to a secure password

3) Start the pods

helm install dreamfactory .

4) Ensure pods are running

kubectl get pods

You can expect to see 2 DreamFactory pods, 1 MySQL pod for system config storage, and 1 Redis pod for caching.

5) Access the Admin UI (Without Ingress)

kubectl port-forward svc/dreamfactory-dreamfactory 8080:80 Go to 127.0.0.1:8080 in your browser. It will take some time upon building, but you will be asked to create your first admin user.

6) Access the Admin UI (Ingress)

To access DreamFactory through an ingress controller, update the ingress section in your values.yaml:

dreamfactory:
  ingress:
    enabled: true
    ingressClass: nginx  # or your preferred ingress controller
    annotations:
      # Add any required annotations for your ingress controller
      kubernetes.io/ingress.class: nginx
      cert-manager.io/cluster-issuer: letsencrypt-prod  # if using cert-manager
    hosts:
      - your-domain.example.com
    tls: true

Then apply the configuration (if dreamfactory has already been installed):

helm upgrade dreamfactory . -f values.yaml

Example configurations for common use cases:

Basic HTTP Setup (Existing NGINX Ingress with no TLS)

dreamfactory:
  ingress:
    enabled: true
    ingressClass: nginx
    hosts:
      - df.example.com
    tls: false
    pathType: Prefix

HTTPS with TLS (Existing NGINX Ingress with TLS)

dreamfactory:
  ingress:
    enabled: true
    ingressClass: nginx
    annotations:
      cert-manager.io/cluster-issuer: letsencrypt-issuer-name
    hosts:
      - df.example.com
    tls: true
    pathType: Prefix

AWS ALB Setup (AWS Load Balancer Controller needs to be installed) ( Instructions Here)

dreamfactory:
  ingress:
    enabled: true
    ingressClass: alb
    annotations:
      alb.ingress.kubernetes.io/scheme: internet-facing
      alb.ingress.kubernetes.io/target-type: ip
      alb.ingress.kubernetes.io/ssl-redirect: '443'
      alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
      alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS-1-2-2017-01
      alb.ingress.kubernetes.io/certificate-arn: '' #Certificate needs to exist in AWS Certificate Manager, ALB does not work with letsencrypt
      # ALB also does auto discovery which should be supported out of the box with the ingress definition based on the documentation found at https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/ingress/cert_discovery/
  hosts:
      - df.example.com
    tls: false
    pathType: Prefix

Contour Ingress Setup

dreamfactory:
  ingress:
    enabled: true
    ingressClass: contour
    annotations:
      ingress.kubernetes.io/force-ssl-redirect: "true"
      projectcontour.io/max-connections: "1024"
      projectcontour.io/response-timeout: 30s
      projectcontour.io/websocket-routes: /
    hosts:
      - df.example.com
    tls: true
    pathType: Prefix (could be ImplementationSpecific depends on your setup)

GCP Ingress Setup (Google Managed Certificates)

dreamfactory:
  ingress:
    enabled: true
    ingressClass: gce
    annotations:
      kubernetes.io/ingress.global-static-ip-name: "dreamfactory-ip"  # Optional: if you want a static IP
      # Still need frontend config for SSL redirect
      networking.gke.io/v1beta1.FrontendConfig: "dreamfactory-ssl-redirect"
      networking.gke.io/managed-certificates: "dreamfactory-cert"
    hosts:
      - df.example.com
    tls: false
    pathType: Prefix

GCP Ingress Setup (LetsEncrypt)

dreamfactory:
  ingress:
    enabled: true
    ingressClass: gce
    annotations:
      kubernetes.io/ingress.global-static-ip-name: "dreamfactory-ip"  # Optional: if you want a static IP
      # Still need frontend config for SSL redirect
      networking.gke.io/v1beta1.FrontendConfig: "dreamfactory-ssl-redirect"
      cert-manager.io/cluster-issuer: letsencrypt-issuer-name
    hosts:
      - df.example.com
    tls: true
    pathType: Prefix

After applying the configuration:

  1. Wait for the ingress to be created: kubectl get ingress
  2. Ensure your DNS is configured to point to the ingress controller's address
  3. Access DreamFactory at the configured host (e.g., https://df.example.com)

Note: TLS configuration requires either cert-manager installed in your cluster or manually created TLS secrets.

Obtaining the APP Key value

After you have spun up your DreamFactory instance, take the APP_KEY value from the .env file in /opt/dreamfactory. This can be done with the following command:
kubectl exec -it <pod-name> -- env | grep APP_KEY

Uninstalling the pods

helm uninstall dreamfactory

This will stop and uninstall all DreamFactory pods.

Documentation

Learn more about DreamFactory's many features by reading our Getting Started Guide. Additional platform documentation can be found on the DreamFactory wiki.

Commercial Licenses

In need of official technical support? Desire access to REST API generators for SQL Server, Oracle, SOAP, or mobile push notifications? Require API limiting and/or auditing? Schedule a demo with our team!

Feedback and Contributions

Feedback is welcome on our forum or in the form of pull requests and/or issues. Contributions should follow the strategy outlined in "Contributing to a project".

About

DreamFactory Helm Chart

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages