Skip to content

Commit fd6ebee

Browse files
authored
docs: Update documentation for deployment (#218)
1 parent 76b4bd1 commit fd6ebee

10 files changed

+940
-12
lines changed

README.md

Lines changed: 103 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,89 @@
11
# Getting started
22

3-
Official helm charts for deploying datafold into k8s.
3+
Official helm charts for deploying Datafold into Kubernetes.
44

5-
This repository is in development and the instructions for installation and
6-
upgrades will be added later.
5+
## Preferred Method: Deploy with Datafold Operator
6+
7+
The recommended way to deploy Datafold is using our operator, which provides a simpler and more manageable deployment experience.
8+
9+
### Prerequisites
10+
11+
You'll need two files from Datafold:
12+
- `datafold-operator-secrets.yaml` - Contains application secrets and configuration
13+
- `datafold-docker-secret.yaml` - Contains Docker registry credentials
14+
15+
### Step 1: Create Namespace
16+
17+
Create a namespace for your Datafold deployment:
18+
19+
```shell
20+
kubectl create namespace datafold-apps
21+
kubectl config set-context --current --namespace=datafold-apps
22+
```
23+
24+
### Step 2: Deploy Docker Secrets
25+
26+
Deploy the Docker registry secret to allow pulling private Datafold images:
27+
28+
```shell
29+
kubectl apply -f datafold-docker-secret.yaml
30+
```
31+
32+
### Step 3: Configure and Deploy Application Secrets
33+
34+
Update the `datafold-operator-secrets.yaml` file with your specific configuration (namespace, keys,
35+
email server password, etc.) and deploy it:
36+
37+
```shell
38+
kubectl apply -f datafold-operator-secrets.yaml
39+
```
40+
41+
### Step 4: Add Helm Repository
42+
43+
Add the Datafold Helm repository:
44+
45+
```shell
46+
helm repo add datafold https://charts.datafold.com
47+
helm repo update
48+
```
49+
50+
### Step 5: Deploy the Operator
51+
52+
Deploy the Datafold operator using the datafold-manager chart:
53+
54+
```shell
55+
helm upgrade --install datafold-manager datafold/datafold-manager \
56+
--namespace datafold-apps \
57+
--set namespace.name=datafold-apps
58+
```
59+
60+
### Step 6: Create DatafoldApplication
61+
62+
Create a `DatafoldApplication` custom resource to define your Datafold deployment. See the `examples/` directory for configuration templates:
63+
64+
```shell
65+
kubectl apply -f examples/datafold-application-full.yaml
66+
```
67+
68+
The operator will automatically deploy and manage your Datafold application based on the `DatafoldApplication` specification.
69+
70+
### Configuration Examples
71+
72+
The `examples/` directory contains various `DatafoldApplication` configuration templates for different deployment scenarios:
73+
74+
- `datafold-application-full.yaml` - Complete production configuration with all components
75+
- `datafold-application-minimal.yaml` - Minimal configuration for development/testing
76+
- `datafold-application-aws-lb.yaml` - AWS-specific configuration with load balancer
77+
- `datafold-application-gcp-lb.yaml` - GCP-specific configuration with load balancer
78+
- `datafold-application-signoz.yaml` - Configuration with SigNoz monitoring
79+
- `datafold-application-datadog.yaml` - Configuration with Datadog monitoring
80+
81+
Choose the example that best matches your environment and customize it as needed.
82+
83+
## Alternative Method: Direct Helm Charts Deployment
84+
85+
For users who prefer the traditional Helm charts approach or need more direct control over the deployment.
86+
This method is significantly harder and more complex.
787

888
### Prepare your shell environment
989

@@ -32,23 +112,34 @@ kubectl create secret docker-registry datafold-docker-secret \
32112
--docker-email=support@datafold.com
33113
```
34114

115+
### Create a values.yaml file
116+
117+
The helm chart requires a complete `values.yaml` file that merges configuration from multiple sources. You can use our example as a starting point:
118+
119+
```shell
120+
# Copy and customize the example values file
121+
cp examples/old-method-values-example.yaml values.yaml
122+
123+
# Edit values.yaml with your specific configuration:
124+
# - Update serverName, clusterName, and other global settings
125+
# - Configure your database connection details
126+
# - Set up AWS load balancer ARNs and target groups
127+
# - Adjust resource limits and worker counts as needed
128+
```
129+
130+
The example file is based on a real dedicated cloud deployment and includes all necessary configuration sections.
131+
35132
### Install from our helm repo
36133

37134
Make sure to use the latest release from the helm-charts from our release list:
38135

39136
https://github.com/datafold/helm-charts/releases
40137

41-
(replace 0.6.84 with the most recent release number)
42-
43-
```
138+
```shell
44139
helm repo add datafold https://charts.datafold.com
140+
helm repo update
45141
helm upgrade --install datafold datafold/datafold \
46-
--version 0.6.84 \
47-
--set global.datafoldVersion="<version_tag>" \
48-
--set global.serverName="<access-url-on-lb>" \
49-
--set global.cloudProvider="aws" \
50-
--set global.awsTargetGroupArn="<replace-with-target-group-arn>" \
51-
--set global.awsLbCtrlArn="<replace-with-load-balancer-controller-role-arn>"
142+
--values values.yaml
52143

53144
## Development and Validation
54145

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: datafold.datafold.com/v1alpha1
2+
kind: DatafoldApplication
3+
metadata:
4+
name: datafold-deploy
5+
namespace: datafold
6+
spec:
7+
global:
8+
serverName: datafold.example.com
9+
environment: production
10+
clusterName: datafold-cluster
11+
portalUrl: https://portal.datafold.com
12+
deployment: datafold-production
13+
# AWS Existing Load Balancer Configuration
14+
ingress:
15+
deployLoadBalancer: false # Use existing load balancer
16+
internal: false
17+
aws:
18+
# Target Group ARN of the existing load balancer
19+
targetGroupArn: "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/existing-target-group/1234567890123456"
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
apiVersion: datafold.datafold.com/v1alpha1
2+
kind: DatafoldApplication
3+
metadata:
4+
name: datafold-deploy
5+
namespace: datafold
6+
spec:
7+
global:
8+
serverName: datafold.example.com
9+
environment: production
10+
clusterName: datafold-cluster
11+
portalUrl: https://portal.datafold.com
12+
deployment: datafold-production
13+
# AWS Load Balancer Configuration
14+
ingress:
15+
deployLoadBalancer: true
16+
internal: false
17+
aws:
18+
# Subnets for the load balancer (public subnets for external LB)
19+
subnets: "subnet-12345678,subnet-87654321"
20+
# Security groups for the load balancer
21+
securityGroups: "sg-12345678,sg-87654321"
22+
# Optional: Ingress group configuration for shared load balancers
23+
ingressGroupName: "datafold-ingress-group"
24+
ingressGroupOrder: 1
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
apiVersion: datafold.datafold.com/v1alpha1
2+
kind: DatafoldApplication
3+
metadata:
4+
name: datafold-deploy
5+
namespace: datafold
6+
spec:
7+
global:
8+
serverName: datafold.example.com
9+
environment: production
10+
clusterName: datafold-cluster
11+
portalUrl: https://portal.datafold.com
12+
deployment: datafold-production
13+
# Datadog Monitoring Configuration
14+
monitoring:
15+
type: datadog
16+
monitoringApiKey:
17+
secretName: datafold-operator-secrets
18+
keyName: monitoringApiKey
19+
datadog:
20+
# Application Performance Monitoring
21+
apm: true
22+
# PostgreSQL monitoring
23+
monitorPostgres: true
24+
# Network Performance Monitoring
25+
npm:
26+
enabled: true
27+
dnsstats: true
28+
# Datadog client token (public token)
29+
clientToken: "pub1234567890abcdef1234567890abcdef"
30+
# Datadog application ID
31+
applicationId: "12345678-1234-1234-1234-123456789012"

0 commit comments

Comments
 (0)