Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
126d5e8
Add Helm charts for FASTDB deployment
fifteen3 Jan 29, 2026
5d9f8e9
Add deploy script, Helm-managed registry secret, and documentation
fifteen3 Jan 29, 2026
87f182d
Add a script for configuring kubectl to access the SLAC desc-fastdb v…
fifteen3 Jan 30, 2026
f1cd6da
Add --external-url flag for subdirectory frontend builds
fifteen3 Jan 30, 2026
0bfe9ba
Update HELM_HOWTO.md to be consistent with helm-deploy.sh
fifteen3 Feb 2, 2026
294611a
Clarify helm-deploy.sh is a convenience script, not required
fifteen3 Feb 2, 2026
f2c96ac
Add --context and --create-cluster flags to helm-deploy.sh
fifteen3 Feb 3, 2026
4e5c6bc
Make shared PVC access modes configurable, fix Kind local deploy
fifteen3 Feb 3, 2026
db29720
fix: Add / as the value for EXTERNAL URL so that javacsript imports …
fifteen3 Feb 3, 2026
e4275b1
Add podman support, --load-images flag, and MetalLB annotation
Feb 4, 2026
15703d4
Add HOWTO_LOGIN.md for user creation and password-reset workflow
Feb 4, 2026
6aa19db
Add Kind cluster config for local Helm deploys.
elvinpoole Jul 21, 2026
411f198
Improve Helm deployment runtime handling
elvinpoole Jul 23, 2026
ef35f3e
Expose local MailHog port in Kind
elvinpoole Jul 29, 2026
c5d7354
Add configurable single-broker ingestion
elvinpoole Jul 29, 2026
64f66c4
Add local Helm workflow scripts
elvinpoole Jul 29, 2026
c59d373
Build local shell image before running makeinstall
elvinpoole Aug 20, 2026
2d02f9f
Simplify local Kind Helm installation
elvinpoole Aug 24, 2026
35393b4
Restart FASTDB services after local reinstall
elvinpoole Aug 24, 2026
cca49ce
added first pass at k8s setup for ubuntu
elvinpoole Sep 3, 2026
acc0a46
Add Arbutus development Helm deployment
elvinpoole Sep 3, 2026
9503b7f
Prepare Arbutus build dependencies before installation
elvinpoole Sep 3, 2026
2e47e84
Reduce disk usage during K3s image import
elvinpoole Sep 4, 2026
c9a1f89
Pass PostgreSQL password to migration job
elvinpoole Sep 4, 2026
282c7d3
Enable portable LASS ingestion on Arbutus
elvinpoole Sep 4, 2026
7704a26
Reuse existing images during Arbutus installation
elvinpoole Sep 10, 2026
41bfa68
Allow PostgreSQL initialization to finish before liveness checks
elvinpoole Sep 11, 2026
9c3a907
added comments to install script
elvinpoole Sep 15, 2026
083f91b
Add Harbor image option to Arbutus installer
elvinpoole Sep 18, 2026
ff2b27b
Separate Arbutus image preparation from installation
elvinpoole Sep 18, 2026
621f2f5
renamed arbutus values file
elvinpoole Sep 18, 2026
b93c5c6
comments
elvinpoole Sep 18, 2026
4a47a28
update comments
elvinpoole Sep 18, 2026
1c9abcc
delete ingestion-processing-version from a re-install before running …
elvinpoole Sep 18, 2026
b6c2067
added strategy: type: Recreate to mongo and postgres so a re-install …
elvinpoole Sep 18, 2026
faa1e54
Clear rolling update settings for database deployments
elvinpoole Sep 18, 2026
e508e37
Remove invalid rolling update fields from database deployments
elvinpoole Sep 18, 2026
b95e6f9
Generalize prebuilt image registry support
elvinpoole Sep 18, 2026
bf0a71e
Document the single-node Helm installation workflow
elvinpoole Sep 24, 2026
3635022
Focus Helm deployment on single-node workflows
elvinpoole Sep 24, 2026
38610a8
Document user creation for supported Helm workflows
elvinpoole Sep 24, 2026
210abac
removed slac login script
elvinpoole Sep 24, 2026
55c9b38
Merge branch 'main' into u/elvinpoole/helm-arbutus
elvinpoole Sep 24, 2026
b1c6bd6
Merge branch 'main' into u/elvinpoole/helm
elvinpoole Sep 24, 2026
a575730
Merge remote-tracking branch 'origin/u/elvinpoole/helm-arbutus' into …
elvinpoole Sep 24, 2026
065baa2
changed lsdb and hats version from dev branch to latest release
elvinpoole Sep 30, 2026
816f756
changed helm timeout from 10m to 30m
elvinpoole Oct 16, 2026
b2bcf2c
Allow MongoDB to finish startup before liveness checks
elvinpoole Oct 16, 2026
944bbe1
Wait for database migrations before starting ingestion
elvinpoole Oct 16, 2026
69128c1
helm: change the default path for the k3s provisioner to use the ceph…
mef51 Oct 20, 2026
1826962
Merge pull request #11 from CanDIAPL/u/mchamma/helm-pr
elvinpoole Oct 21, 2026
3d843d2
updated helm documentation to describe full installation process
elvinpoole Oct 22, 2026
26734b8
Merge pull request #13 from CanDIAPL/u/elvinpoole/webap-build-bugfix
elvinpoole Oct 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ tests/load_snana_fits_reconstruct_indexes_constraints.sql

# Env file
/.env
/helm/fastdb/*secrets*.yaml

# Emacs backup files
**~
95 changes: 95 additions & 0 deletions HOWTO_LOGIN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# How to Create a User and Log In

FASTDB uses challenge-response authentication (RKAuth). A user record must
contain an RSA public key and an encrypted private key before that user can log
in. The Helm deployment provides two ways to create those credentials:

1. Use a password-reset email captured by MailHog. This is the intended local
Kind workflow.
2. Generate the credentials locally and insert them directly into PostgreSQL.
This is the intended single-node VM workflow.

## Local Kind: create a user through MailHog

The local workflow exercises the same browser-based password-reset process a
normal web user would use. MailHog captures the email locally instead of
sending it to a real address.

First install FASTDB using the local Kind helpers:

```bash
./helm/scripts/create-local-cluster.sh
./helm/scripts/install-local-fastdb.sh
```

Then run:

```bash
./helm/scripts/create-user-local.sh
```

The script:

1. Creates the fixed development account `test_user` in PostgreSQL.
2. Requests a password-reset email from FASTDB.
3. Reads the reset link from MailHog.
4. Opens FASTDB, the reset page, and MailHog in the browser.

Enter the desired password on the reset page. The browser generates the RSA
key pair, encrypts the private key with the password, and stores the resulting
credentials in FASTDB.

The local services are available at:

| Service | URL |
|---|---|
| FASTDB | `http://localhost:8080` |
| MailHog | `http://localhost:8025` |

If `test_user` already exists, use the **Request Password Reset** option on the
FASTDB login page rather than trying to create the account again.

## Single-node VM: insert a user directly

A VM may not have browser access or a public route to its FASTDB and MailHog
services. In that case, create a complete user record directly from the VM:

```bash
./helm/scripts/create-user-singlenode.sh
```

By default, the script operates in the `fastdb-arbutus-dev` namespace. Set a
different namespace when necessary:

```bash
FASTDB_NAMESPACE=<namespace> ./helm/scripts/create-user-singlenode.sh
```

The script prompts for the username, display name, email, and password. It
then:

1. Uses the FASTDB shell image to generate the RKAuth keys and SQL.
2. Sends the generated SQL directly to PostgreSQL through `kubectl exec`.
3. Removes the password and generated SQL from its shell variables.

The password is read without displaying it and is not included in the SQL or
passed as a command-line argument. This workflow does not require MailHog or a
browser-accessible password-reset link.

After either workflow completes, log in with the username and password that
were created. Applications using the FASTDB Python client will also need those
credentials in their own `.fastdb.ini` configuration or secret-management
system; neither user-creation script creates client configuration.

## Manual MailHog reset

To reset an existing user's password manually:

1. Open the FASTDB login page.
2. Select **Request Password Reset**.
3. Enter the username or email address.
4. Open MailHog and follow the link in the captured message.
5. Enter and confirm the new password.

This requires `mailhog.enabled: true` and network access to both FASTDB and the
MailHog web interface.
28 changes: 28 additions & 0 deletions admin/local/kind-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Kind cluster config for local FASTDB Helm deployment.
#
# Used by helm/scripts/create-local-cluster.sh. The script replaces ${PWD} with
# the repo root path before passing this file to `kind create cluster`.
#
# extraMounts expose the host build tree inside the Kind node so pods can
# mount /fastdb-install and /fastdb-db via hostPath (values-local.yaml:
# volumes.codeHostPath: true).
#
# extraPortMappings map the webap NodePort (30080) to localhost:8080 and the
# MailHog HTTP NodePort (30025) to localhost:8025.

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraMounts:
- hostPath: ${PWD}/install
containerPath: /fastdb-install
- hostPath: ${PWD}/db
containerPath: /fastdb-db
extraPortMappings:
- containerPort: 30080
hostPort: 8080
protocol: TCP
- containerPort: 30025
hostPort: 8025
protocol: TCP
8 changes: 2 additions & 6 deletions docker/webserver/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ RUN source /venv/bin/activate && \
"confluent_kafka==2.15.0,<3.0.0" \
"fastavro>=1.10.0,<2.0.0" \
"fink-client>=10.1,<11.0" \
"hats==0.11.0" \
"healpy>=1.20.0,<2.0.0" \
"lsdb==0.11.0" \
"nested-pandas>=0.7.1,<0.8.0" \
"numpy>=2.5.1,<3.0.0" \
"pandas>=3.0.5,<4.0.0" \
Expand Down Expand Up @@ -149,12 +151,6 @@ RUN git clone https://github.com/mongodb/mongo-tools.git \
&& cd .. \
&& rm -rf mongo-tools

# lsdb in PyPi requires older versions of pandas and nested_pandas than
# we want. This dev branch has updates in pyproject.toml
RUN source /venv/bin/activate \
&& pip --no-cache install "hats @ git+https://github.com/astronomy-commons/hats.git@pandas3" \
"lsdb @ git+https://github.com/astronomy-commons/lsdb.git@pandas3"

# ======================================================================
# This is for interaction. It runs something that will stay up that you can exec a shell on.
FROM base AS shell
Expand Down
43 changes: 43 additions & 0 deletions helm/LOCAL_KIND.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Local Kind development

This optional workflow runs FASTDB on a laptop using Kind. For a single-VM
benchmark deployment, follow the [main guide](README.md).

Install Docker, Docker Compose, Kind, Helm and kubectl. From the FASTDB
repository root, initialize submodules and run:

```bash
git submodule update --init --recursive
./helm/scripts/create-local-cluster.sh
./helm/scripts/install-local-fastdb.sh
kubectl --context kind-fastdb-local get pods,pvc -n fastdb-local
```

The first script creates the cluster. The second builds and loads the images,
generates `install/`, and installs the chart using
[values-local.yaml](fastdb/values-local.yaml). It uses a different workflow and
image configuration from the single-VM installer.

Rerun `install-local-fastdb.sh` after changing application code, migrations,
images or chart settings; it updates the existing installation without
deliberately deleting database storage. Verify the configured image tags match
the images actually built by Compose if you change its defaults.

For local account creation, use:

```bash
./helm/scripts/create-user-local.sh
```

This is the browser/MailHog password-reset workflow described in
[HOWTO_LOGIN.md](../HOWTO_LOGIN.md), rather than the direct user-creation helper
used on a VM.

To delete the Kind cluster and all FASTDB data stored within it:

```bash
./helm/scripts/stop-local.sh
```

This is a destructive reset, not a pause. The next cluster creation starts a
fresh environment.
Loading
Loading