Start here
Your first Helm deployment on kind
In this tutorial we'll run DeltaGlider Proxy on Kubernetes — a real chart on a real (if disposable) cluster. We'll boot a local kind cluster, install the official Helm chart, and prove the whole thing works: the admin UI loads, the health probe answers, and a file round-trips through the S3 API. Then we'll delete the cluster and leave nothing behind.
You'll need the DeltaGlider Proxy repository checked out locally (the chart ships inside it), plus Docker, kind, kubectl, helm, and the aws CLI.
If you don't have the repository yet:
git clone https://github.com/beshu-tech/deltaglider_proxy.git
cd deltaglider_proxy
One thing to know before we start: the chart ships with intentionally public development credentials so it can be smoke-tested out of the box. That's exactly what we're doing here — and it's why a default install must never be exposed beyond localhost.
Step 1: create a disposable cluster
kind create cluster --name dgp-hello
kubectl cluster-info --context kind-dgp-hello
You should see the cluster answer:
Kubernetes control plane is running at https://127.0.0.1:...
CoreDNS is running at https://127.0.0.1:.../api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Step 2: install the chart
From the repository root:
helm upgrade --install dgp ./charts/deltaglider-proxy \
--namespace dgp \
--create-namespace \
--set persistence.size=1Gi \
--kube-context kind-dgp-hello
You should see Helm report the release:
Release "dgp" does not exist. Installing it now.
NAME: dgp
NAMESPACE: dgp
STATUS: deployed
This installs the default filesystem-backed configuration: one Deployment, one Service, and a 1 Gi PVC under /data for object data and the encrypted IAM database. Wait for the pod to come up:
kubectl --context kind-dgp-hello -n dgp rollout status deploy/dgp-deltaglider-proxy
kubectl --context kind-dgp-hello -n dgp get pods,pvc,svc
You should see the rollout succeed, the pod at 1/1 Running, the PVC Bound, and the service exposing port 9000:
deployment "dgp-deltaglider-proxy" successfully rolled out
NAME READY STATUS RESTARTS AGE
pod/dgp-deltaglider-proxy-6b9f... 1/1 Running 0 45s
...
Step 3: port-forward the service
Keep this running in a separate terminal:
kubectl --context kind-dgp-hello -n dgp port-forward svc/dgp-deltaglider-proxy 19090:9000
Now open the admin UI in your browser:
http://127.0.0.1:19090/_/
You should see the DeltaGlider Proxy connect screen. The chart's development bootstrap password is change-me-in-production — it exists so the chart is testable out of the box, and it's the first thing to override anywhere that isn't a throwaway cluster.
Step 4: verify health and login
Let's confirm the same things a load balancer and an operator would check. First the health probe:
curl -fsS http://127.0.0.1:19090/_/health
You should see a healthy JSON response:
{"status":"healthy","backend":"ready", ...}
Then the bootstrap login:
curl -fsS -X POST http://127.0.0.1:19090/_/api/admin/login \
-H 'content-type: application/json' \
--data '{"password":"change-me-in-production"}'
{"ok":true}
Notice we've now verified the two endpoints that matter for operations: the probe Kubernetes uses to decide the pod is alive, and the credential a human uses to get in.
Step 5: round-trip a file through the S3 API
The chart also creates development SigV4 credentials (admin / change-me-in-production). Let's push a file through the proxy and pull it back:
export AWS_ACCESS_KEY_ID=admin
export AWS_SECRET_ACCESS_KEY=change-me-in-production
export AWS_DEFAULT_REGION=us-east-1
aws configure set s3.addressing_style path
aws --endpoint-url http://127.0.0.1:19090 s3 mb s3://hello
printf 'hello from kind\n' > /tmp/dgp-hello.txt
aws --endpoint-url http://127.0.0.1:19090 s3 cp /tmp/dgp-hello.txt s3://hello/hello.txt
aws --endpoint-url http://127.0.0.1:19090 s3 cp s3://hello/hello.txt -
You should see the bucket created, the upload confirmed, and — the line that proves the whole pipeline — your file's content echoed back from the cluster:
hello from kind
Step 6: run the chart's own test
The chart ships a Helm test hook that spins up a small curl pod and fails unless /_/health returns success:
helm test dgp -n dgp --kube-context kind-dgp-hello
You should see the suite pass:
NAME: dgp
...
TEST SUITE: dgp-deltaglider-proxy-test-health
... Phase: Succeeded
Step 7: tear it down
kind delete cluster --name dgp-hello
Deleting cluster "dgp-hello" ...
Cluster, PVC, and the development credentials are all gone.
What you built
You took the official chart from zero to verified in seven steps: a running pod with persistent storage, a reachable admin UI, a passing health probe, a working bootstrap login, and a file that round-tripped through the S3 API on Kubernetes. Just as importantly, you've now seen exactly which defaults (change-me-in-production, everywhere) must be replaced before this leaves your laptop.
Where next
- Deploy on Kubernetes — the production version of what you just did: credentials in a real Secret, S3 backends, Ingress with TLS, and the chart values that matter.
- Securing your first proxy — the security walkthrough, if you haven't done it yet.