Install Dexter
Dexter runs as its own Helm release in its own namespace, configured by one values file.
It does not have to share a cluster with Kloudfuse: it reads your telemetry through the Kloudfuse MCP server.
Prerequisites
-
A Kubernetes cluster with a default StorageClass, and
kubectlaccess to it. -
Helm 3.8 or later.
-
The
token.jsonthat Kloudfuse provided for your Kloudfuse install. -
An Anthropic API key, or a Claude Max OAuth token.
-
A Kloudfuse cluster with the remote MCP server enabled, and a service account token for it.
-
To serve Dexter on your own domain (step 6): cert-manager installed in the cluster, and a DNS name you can point at a load balancer.
1. Log in to the Helm registry
cat token.json | helm registry login -u _json_key --password-stdin us-east1-docker.pkg.dev
2. Create the namespace and image pull secret
Dexter pulls its image with this secret, the same one a Kloudfuse install creates in its own namespace.
kubectl create namespace dexter
kubectl create secret docker-registry kfuse-image-pull-credentials \
--namespace dexter --docker-server us.gcr.io --docker-username _json_key \
--docker-password="$(cat token.json)"
3. Create the values file
The defaults install Dexter privately, with sign-in required. Only the first sub-step is required; the others change a default.
-
Create the file in the directory you run Helm from:
touch dexter-values.yaml -
To give Dexter’s data more room than the default 2 GiB, set the volume size. Set it before you install: whether the volume can grow later depends on your StorageClass.
persistence: size: 10Giyaml -
If your image pull secret is not named
kfuse-image-pull-credentials, name yours:image: pullSecrets: - <PULL_SECRET>yaml
Download dexter-values.yaml for a commented copy of these settings and the public-access ones in step 6.
|
4. Install Dexter
helm install dexter oci://us-east1-docker.pkg.dev/mvp-demo-301906/kfuse-helm/dexter \
--namespace dexter \
--version 0.9.0 \
-f dexter-values.yaml
kubectl -n dexter rollout status deployment/dexter
This installs Dexter 0.9.0, the current release. To see the latest version, run helm show chart oci://us-east1-docker.pkg.dev/mvp-demo-301906/kfuse-helm/dexter.
5. Sign in
On first start, Dexter creates a super admin account, admin, with a generated password. Dexter asks for a new password at the first sign-in.
-
Read the initial password:
kubectl -n dexter exec deployment/dexter -- cat /data/settings/initial-admin-passwordIt works only for the first sign-in.
helm installprints this command too. -
Open Dexter through a port-forward:
kubectl -n dexter port-forward svc/dexter 3000:3000 -
Sign in at
http://localhost:3000asadminwith the initial password. -
When prompted, enter the initial password as the current password and choose a new one of at least 12 characters.
To change the password later, click your avatar at the bottom of the sidebar and choose Change password.
To sign in through Okta, Google, or Azure AD, add the provider under Admin > Identity providers.
|
Lost the admin password? Delete the account file and restart Dexter. It recreates
|
6. Serve Dexter on your domain
Skip this step to keep Dexter private and reach it through a port-forward.
-
Add the ingress settings to
dexter-values.yaml, withhostset to the DNS name for Dexter:ingress: enabled: true host: <HOST>yaml -
If you already have a static IP address for Dexter, set it in the same file. Otherwise, skip to the next step and let the cloud assign one.
ingress-nginx: controller: service: loadBalancerIP: <STATIC_IP>yamlThe address must be a regional static IP in the cluster’s region. A global address, the kind a GCE Ingress uses, cannot be assigned to a load balancer Service.
-
Apply the change. Dexter gets its own load balancer and HTTPS with a Let’s Encrypt certificate:
helm upgrade dexter oci://us-east1-docker.pkg.dev/mvp-demo-301906/kfuse-helm/dexter \ --namespace dexter \ --version 0.9.0 \ -f dexter-values.yaml -
Find the load balancer’s
EXTERNAL-IP. If you setloadBalancerIP, it is that address:kubectl -n dexter get svc -l app.kubernetes.io/instance=dexter,app.kubernetes.io/component=controller -
Create a DNS
Arecord that points<HOST>at that address.cert-manager issues the certificate a minute or two after the name resolves. When
READYshowsTrue, HTTPS serves it within a few seconds:kubectl -n dexter get certificate
If the cluster already runs an ingress controller, use it instead: add ingress-nginx.enabled: false to the values file and set ingress.className to that controller’s IngressClass.
|
7. Connect Anthropic and Kloudfuse
-
Open Dexter at
https://<HOST>;, or athttp://localhost:3000through the port-forward if you skipped step 6, and sign in. -
Under Admin > Integrations, connect:
-
Anthropic: your Anthropic API key or Claude Max OAuth token.
-
Kloudfuse: the MCP address of your Kloudfuse cluster,
https://<KLOUDFUSE_HOST>/mcp, and its service account token.
-